Backport pull request #12149 from jellyfin/release-10.9.z

Fix MicroDVD being recognized as DVDSUB subtitles

Original-merge: 6010bc01c3

Merged-by: crobibero <cody@robibe.ro>

Backported-by: Joshua M. Boniface <joshua@boniface.me>
This commit is contained in:
nyanmisaka 2024-06-23 11:40:59 -04:00 committed by Joshua M. Boniface
parent 81e38e772b
commit d37c5d8921
3 changed files with 18 additions and 14 deletions

View file

@ -1209,8 +1209,8 @@ namespace MediaBrowser.Controller.MediaEncoding
var subtitlePath = state.SubtitleStream.Path; var subtitlePath = state.SubtitleStream.Path;
var subtitleExtension = Path.GetExtension(subtitlePath.AsSpan()); var subtitleExtension = Path.GetExtension(subtitlePath.AsSpan());
if (subtitleExtension.Equals(".sub", StringComparison.OrdinalIgnoreCase) // dvdsub/vobsub graphical subtitles use .sub+.idx pairs
|| subtitleExtension.Equals(".sup", StringComparison.OrdinalIgnoreCase)) if (subtitleExtension.Equals(".sub", StringComparison.OrdinalIgnoreCase))
{ {
var idxFile = Path.ChangeExtension(subtitlePath, ".idx"); var idxFile = Path.ChangeExtension(subtitlePath, ".idx");
if (File.Exists(idxFile)) if (File.Exists(idxFile))

View file

@ -624,15 +624,19 @@ namespace MediaBrowser.MediaEncoding.Probing
{ {
if (string.Equals(codec, "dvb_subtitle", StringComparison.OrdinalIgnoreCase)) if (string.Equals(codec, "dvb_subtitle", StringComparison.OrdinalIgnoreCase))
{ {
codec = "dvbsub"; codec = "DVBSUB";
} }
else if ((codec ?? string.Empty).Contains("PGS", StringComparison.OrdinalIgnoreCase)) else if (string.Equals(codec, "dvb_teletext", StringComparison.OrdinalIgnoreCase))
{ {
codec = "PGSSUB"; codec = "DVBTXT";
} }
else if ((codec ?? string.Empty).Contains("DVD", StringComparison.OrdinalIgnoreCase)) else if (string.Equals(codec, "dvd_subtitle", StringComparison.OrdinalIgnoreCase))
{ {
codec = "DVDSUB"; codec = "DVDSUB"; // .sub+.idx
}
else if (string.Equals(codec, "hdmv_pgs_subtitle", StringComparison.OrdinalIgnoreCase))
{
codec = "PGSSUB"; // .sup
} }
return codec; return codec;

View file

@ -656,14 +656,14 @@ namespace MediaBrowser.Model.Entities
{ {
string codec = format ?? string.Empty; string codec = format ?? string.Empty;
// sub = external .sub file // microdvd and dvdsub/vobsub share the ".sub" file extension, but it's text-based.
return !codec.Contains("pgs", StringComparison.OrdinalIgnoreCase) return codec.Contains("microdvd", StringComparison.OrdinalIgnoreCase)
&& !codec.Contains("dvd", StringComparison.OrdinalIgnoreCase) || (!codec.Contains("pgs", StringComparison.OrdinalIgnoreCase)
&& !codec.Contains("dvbsub", StringComparison.OrdinalIgnoreCase) && !codec.Contains("dvdsub", StringComparison.OrdinalIgnoreCase)
&& !string.Equals(codec, "sub", StringComparison.OrdinalIgnoreCase) && !codec.Contains("dvbsub", StringComparison.OrdinalIgnoreCase)
&& !string.Equals(codec, "sup", StringComparison.OrdinalIgnoreCase) && !string.Equals(codec, "sup", StringComparison.OrdinalIgnoreCase)
&& !string.Equals(codec, "dvb_subtitle", StringComparison.OrdinalIgnoreCase); && !string.Equals(codec, "sub", StringComparison.OrdinalIgnoreCase));
} }
public bool SupportsSubtitleConversionTo(string toCodec) public bool SupportsSubtitleConversionTo(string toCodec)