Ticket #6395: avfd_langprefs.070809.diff
File avfd_langprefs.070809.diff, 3.4 KB (added by , 15 years ago) |
---|
-
libs/libmythtv/avformatdecoder.cpp
3108 3108 if (selTrack < 0 && numStreams) 3109 3109 { 3110 3110 VERBOSE(VB_AUDIO, LOC + "Trying to select audio track (w/lang)"); 3111 selTrack = -1; 3112 3113 // try to get the language track matching the frontend language. 3114 QString language_key_convert = iso639_str2_to_str3(GetMythUI()->GetLanguage()); 3115 uint language_key = iso639_str3_to_key(language_key_convert); 3116 uint canonical_key = iso639_key_to_canonical_key(language_key); 3117 3118 vector<int> flang = filter_lang(atracks, canonical_key); 3119 3120 selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_TRUEHD); 3121 3122 if (selTrack < 0) 3123 selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_EAC3); 3124 3125 if (allow_dts_passthru && !transcoding && selTrack < 0) 3126 selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_DTS); 3127 3128 if (selTrack < 0) 3129 selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_AC3); 3130 3131 if (selTrack < 0) 3132 selTrack = filter_max_ch(ic, atracks, flang); 3133 3111 3134 // try to get best track for most preferred language 3112 selTrack = -1; 3113 vector<int>::const_iterator it = languagePreference.begin(); 3114 for (; it != languagePreference.end() && selTrack<0; ++it) 3135 // Set by the "Guide Data" language prefs in Appearance. 3136 if (selTrack < 0) 3115 3137 { 3116 vector<int> flang = filter_lang(atracks, *it); 3138 vector<int>::const_iterator it = languagePreference.begin(); 3139 for (; it != languagePreference.end() && selTrack<0; ++it) 3140 { 3141 vector<int> flang = filter_lang(atracks, *it); 3117 3142 3118 if (allow_dts_passthru && !transcoding) 3119 selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_DTS); 3143 selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_TRUEHD); 3120 3144 3121 if (selTrack < 0)3122 selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_AC3);3145 if (selTrack < 0) 3146 selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_EAC3); 3123 3147 3124 if (selTrack < 0) 3125 selTrack = filter_max_ch(ic, atracks, flang); 3148 if (allow_dts_passthru && !transcoding && selTrack < 0) 3149 selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_DTS); 3150 3151 if (selTrack < 0) 3152 selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_AC3); 3153 3154 if (selTrack < 0) 3155 selTrack = filter_max_ch(ic, atracks, flang); 3156 } 3126 3157 } 3127 3158 // try to get best track for any language 3128 3159 if (selTrack < 0) … … 3130 3161 VERBOSE(VB_AUDIO, LOC + "Trying to select audio track (wo/lang)"); 3131 3162 vector<int> flang = filter_lang(atracks, -1); 3132 3163 3133 if (allow_dts_passthru && !transcoding) 3164 selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_TRUEHD); 3165 3166 if (selTrack < 0) 3167 selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_EAC3); 3168 3169 if (allow_dts_passthru && !transcoding && selTrack < 0) 3134 3170 selTrack = filter_max_ch(ic, atracks, flang, CODEC_ID_DTS); 3135 3171 3136 3172 if (selTrack < 0)