+ if (track >= -1)
+ {
+ GValue *dup = ghb_value_dup(subtitle);
+ lang = ghb_subtitle_track_lang(ud, track);
+ ghb_settings_set_int(dup, "SubtitleTrack", track);
+ if (foreign_lang_index < 0 && pref_lang != NULL &&
+ strcmp(lang, pref_lang) == 0)
+ {
+ foreign_lang_index = jj;
+ ghb_settings_take_value(dup, "SubtitleForced",
+ ghb_boolean_value_new(FALSE));
+ ghb_settings_take_value(dup, "SubtitleDefaultTrack",
+ ghb_boolean_value_new(TRUE));
+ }
+ source = ghb_subtitle_track_source(ud, track);
+ ghb_settings_set_int(dup, "SubtitleSource", source);
+ if (source == CC608SUB || source == CC708SUB)
+ found_cc = TRUE;
+ ghb_add_subtitle(ud, dup);
+ jj++;
+ g_free(lang);
+ }
+ }
+ if (foreign_lang_index < 0 && pref_lang != NULL)
+ {
+ // Subtitle for foreign language audio not added yet
+ GValue *settings;
+ gboolean burn;
+
+ track = ghb_find_subtitle_track(titleindex, pref_lang, FALSE, FALSE, VOBSUB, track_indices);
+ if (track >= -1)
+ {
+ int source;
+
+ settings = ghb_dict_value_new();
+ ghb_settings_set_int(settings, "SubtitleTrack", track);
+ source = ghb_subtitle_track_source(ud, track);
+ ghb_settings_set_int(settings, "SubtitleSource", source);
+ burn = mustBurn(ud, settings);
+ ghb_settings_take_value(settings, "SubtitleForced",
+ ghb_boolean_value_new(FALSE));
+ ghb_settings_take_value(settings, "SubtitleBurned",
+ ghb_boolean_value_new(burn));
+ ghb_settings_take_value(settings, "SubtitleDefaultTrack",
+ ghb_boolean_value_new(TRUE));
+
+ ghb_add_subtitle(ud, settings);
+ foreign_lang_index = jj;
+ }
+ }
+ if (foreign_lang_index >= 0)
+ {
+ GValue *subtitle_list;
+ gboolean burn, def;
+
+ subtitle_list = ghb_settings_get_value(ud->settings, "subtitle_list");
+ subtitle = ghb_array_get_nth(subtitle_list, foreign_lang_index);
+
+ burn = ghb_settings_get_boolean(subtitle, "SubtitleBurned");
+ def = ghb_settings_get_boolean(subtitle, "SubtitleDefaultTrack");
+ if (burn)
+ ghb_subtitle_exclusive_burn(ud, foreign_lang_index);
+ if (def)
+ ghb_subtitle_exclusive_default(ud, foreign_lang_index);
+ ghb_log("adding subtitle for foreign language audio: %s", audio_lang);
+ }
+ if (ghb_settings_get_boolean(ud->settings, "AddCC") && !found_cc)
+ {
+ // Subtitle for foreign language audio not added yet
+ GValue *settings;
+
+ track = ghb_find_cc_track(titleindex);
+ if (track >= 0)
+ {
+ int source;
+
+ settings = ghb_dict_value_new();
+ ghb_settings_set_int(settings, "SubtitleTrack", track);
+ source = ghb_subtitle_track_source(ud, track);
+ ghb_settings_set_int(settings, "SubtitleSource", source);
+ ghb_settings_take_value(settings, "SubtitleForced",
+ ghb_boolean_value_new(FALSE));
+ ghb_settings_take_value(settings, "SubtitleBurned",
+ ghb_boolean_value_new(FALSE));
+ ghb_settings_take_value(settings, "SubtitleDefaultTrack",
+ ghb_boolean_value_new(FALSE));
+
+ ghb_add_subtitle(ud, settings);
+ ghb_log("adding Closed Captions: %s", audio_lang);
+ }