diff --git a/resources/language/resource.language.de/strings.po b/resources/language/resource.language.de/strings.po index 49e1786..e1d6c6f 100644 --- a/resources/language/resource.language.de/strings.po +++ b/resources/language/resource.language.de/strings.po @@ -1329,3 +1329,19 @@ msgstr "Abspielen mit Track-Auswahl" msgctxt "#30702" msgid "Nur Forced-Untertitel auswählen (keine normalen)" msgstr "Nur Forced-Untertitel auswählen (keine normalen)" + +msgctxt "#30703" +msgid "Untertitel-Codec-Präferenz" +msgstr "Untertitel-Codec-Präferenz" + +msgctxt "#30704" +msgid "PGS bevorzugt (bessere Qualität beim Brennen)" +msgstr "PGS bevorzugt (bessere Qualität beim Brennen)" + +msgctxt "#30705" +msgid "SRT bevorzugt (flexibel, kann gestreamt werden)" +msgstr "SRT bevorzugt (flexibel, kann gestreamt werden)" + +msgctxt "#30706" +msgid "Keine Präferenz" +msgstr "Keine Präferenz" diff --git a/resources/language/resource.language.en_gb/strings.po b/resources/language/resource.language.en_gb/strings.po index 64abb6b..2a5a170 100644 --- a/resources/language/resource.language.en_gb/strings.po +++ b/resources/language/resource.language.en_gb/strings.po @@ -1320,3 +1320,19 @@ msgstr "Play with track selection" msgctxt "#30702" msgid "Only select forced subtitles (no regular subs)" msgstr "Only select forced subtitles (no regular subs)" + +msgctxt "#30703" +msgid "Subtitle codec preference" +msgstr "Subtitle codec preference" + +msgctxt "#30704" +msgid "Prefer PGS (better quality when burned)" +msgstr "Prefer PGS (better quality when burned)" + +msgctxt "#30705" +msgid "Prefer SRT (flexible, can be streamed)" +msgstr "Prefer SRT (flexible, can be streamed)" + +msgctxt "#30706" +msgid "No preference" +msgstr "No preference" diff --git a/resources/lib/play_utils.py b/resources/lib/play_utils.py index 0d9cb72..38fa283 100644 --- a/resources/lib/play_utils.py +++ b/resources/lib/play_utils.py @@ -811,7 +811,13 @@ def audio_subs_pref(url, list_item, media_source, item_id, audio_stream_index, s prefer_forced = settings.getSetting("prefer_forced_subtitles") == "true" only_forced = settings.getSetting("only_forced_subtitles") == "true" - prefer_srt = settings.getSetting("prefer_srt_over_pgs") == "true" + + # Subtitle codec preference: 0=PGS, 1=SRT, 2=No preference + codec_pref_index = int(settings.getSetting("subtitle_codec_preference") or "0") + prefer_pgs = codec_pref_index == 0 + prefer_srt = codec_pref_index == 1 + # codec_pref_index == 2 means no preference (both prefer_pgs and prefer_srt are False) + auto_no_subs = settings.getSetting("auto_no_subtitles_if_no_match") == "true" # Language code mapping for better matching @@ -966,8 +972,8 @@ def audio_subs_pref(url, list_item, media_source, item_id, audio_stream_index, s auto_selected = None best_score = -1 - log.debug("Auto-selecting subtitle: preferred_lang={0}, prefer_forced={1}, only_forced={2}, prefer_srt={3}".format( - preferred_sub_lang, prefer_forced, only_forced, prefer_srt)) + log.debug("Auto-selecting subtitle: preferred_lang={0}, prefer_forced={1}, only_forced={2}, prefer_pgs={3}, prefer_srt={4}".format( + preferred_sub_lang, prefer_forced, only_forced, prefer_pgs, prefer_srt)) for stream in subtitle_streams_data: score = 0 @@ -990,10 +996,10 @@ def audio_subs_pref(url, list_item, media_source, item_id, audio_stream_index, s if prefer_forced and is_forced: score += 50 - # Bonus for SRT if preferred - if prefer_srt and codec in ['subrip', 'srt']: + # Bonus for codec preference + if prefer_pgs and codec in ['hdmv_pgs_subtitle', 'pgs']: score += 30 - elif not prefer_srt and codec in ['hdmv_pgs_subtitle', 'pgs']: + elif prefer_srt and codec in ['subrip', 'srt']: score += 30 # Small bonus for default diff --git a/resources/settings.xml b/resources/settings.xml index 1abe36f..f289cce 100644 --- a/resources/settings.xml +++ b/resources/settings.xml @@ -55,7 +55,7 @@ - +