Fix BDMV PGS subtitles with TrueHD

Add myself CONTRIBUTORS.md
This commit is contained in:
Oskar Bali
2026-08-19 11:29:52 +02:00
parent 17221057bc
commit 0b20d7a05b
3 changed files with 21 additions and 3 deletions
@@ -6311,7 +6311,7 @@ namespace MediaBrowser.Controller.MediaEncoding
string.Join(',', overlayFilters));
var mapPrefix = Convert.ToInt32(state.SubtitleStream.IsExternal);
var subtitleStreamIndex = FindIndex(state.MediaSource.MediaStreams, state.SubtitleStream);
var subtitleStreamIndex = GetSubtitleStreamIndexForFfmpeg(state.MediaSource, state.SubtitleStream);
var videoStreamIndex = FindIndex(state.MediaSource.MediaStreams, state.VideoStream);
if (hasSubs)
@@ -7943,6 +7943,23 @@ namespace MediaBrowser.Controller.MediaEncoding
return -1;
}
public static int GetSubtitleStreamIndexForFfmpeg(MediaSourceInfo mediaSource, MediaStream subtitleStream)
{
var index = FindIndex(mediaSource.MediaStreams, subtitleStream);
if (index == -1 || mediaSource.VideoType != VideoType.BluRay)
{
return index;
}
var hiddenStreamsBefore = mediaSource.MediaStreams.Count(s =>
s.Type == MediaStreamType.Audio
&& (string.Equals(s.Codec, "truehd", StringComparison.OrdinalIgnoreCase)
|| string.Equals(s.Codec, "atmos", StringComparison.OrdinalIgnoreCase))
&& s.Index < subtitleStream.Index);
return index + hiddenStreamsBefore;
}
public static bool IsCopyCodec(string codec)
{
return string.Equals(codec, "copy", StringComparison.OrdinalIgnoreCase);