Normalize VobSub .sub to .idx for embedding, add EncodingHelper tests

Move the .sub to .idx path normalization outside the burn-in check so
it applies to subtitle embedding as well. ffmpeg requires the .idx file
to read VobSub subtitles.

Add unit tests for GetMapArgs and GetInputArgument covering internal
subs, external SRT, multi-file SRT, multi-stream MKS containers, and
VobSub .sub/.idx path normalization.
This commit is contained in:
Piotr Niełacny
2026-03-24 14:26:25 +01:00
parent a15b426e73
commit 405d987557
2 changed files with 51 additions and 12 deletions

View File

@@ -1272,18 +1272,14 @@ namespace MediaBrowser.Controller.MediaEncoding
var subtitlePath = state.SubtitleStream.Path;
var isGraphicalBurnIn = ShouldEncodeSubtitle(state) && !state.SubtitleStream.IsTextSubtitleStream;
if (isGraphicalBurnIn)
// dvdsub/vobsub graphical subtitles use .sub+.idx pairs
var subtitleExtension = Path.GetExtension(subtitlePath.AsSpan());
if (subtitleExtension.Equals(".sub", StringComparison.OrdinalIgnoreCase))
{
var subtitleExtension = Path.GetExtension(subtitlePath.AsSpan());
// dvdsub/vobsub graphical subtitles use .sub+.idx pairs
if (subtitleExtension.Equals(".sub", StringComparison.OrdinalIgnoreCase))
var idxFile = Path.ChangeExtension(subtitlePath, ".idx");
if (File.Exists(idxFile))
{
var idxFile = Path.ChangeExtension(subtitlePath, ".idx");
if (File.Exists(idxFile))
{
subtitlePath = idxFile;
}
subtitlePath = idxFile;
}
}