OSDN Git Service

LinGui: fix incorrect marking of CC track as forced or burned
authorjstebbins <jstebbins@b64f7644-9d1e-0410-96f1-a4d463321fa5>
Wed, 30 Sep 2009 15:34:07 +0000 (15:34 +0000)
committerjstebbins <jstebbins@b64f7644-9d1e-0410-96f1-a4d463321fa5>
Wed, 30 Sep 2009 15:34:07 +0000 (15:34 +0000)
git-svn-id: svn://localhost/HandBrake/trunk@2855 b64f7644-9d1e-0410-96f1-a4d463321fa5

gtk/src/hb-backend.c
gtk/src/hb-backend.h
gtk/src/subtitlehandler.c

index 5d19466..5aa1f63 100644 (file)
@@ -2193,10 +2193,12 @@ ghb_find_cc_track(gint titleindex)
 
 gint
 ghb_find_subtitle_track(
-       gint titleindex, 
-       const gchar *lang, 
-       gint source,
-       GHashTable *track_indices)
+       gint          titleindex, 
+       const gchar * lang, 
+       gboolean      burn,
+       gboolean      force,
+       gint          source,
+       GHashTable  * track_indices)
 {
        hb_list_t  * list;
        hb_title_t * title;
@@ -2241,8 +2243,9 @@ ghb_find_subtitle_track(
                                continue;
 
                        subtitle = (hb_subtitle_t*)hb_list_item( title->list_subtitle, ii );
-                       if ((strcmp(lang, subtitle->iso639_2) == 0) ||
-                               (strcmp(lang, "und") == 0))
+                       if (((burn || force) && (subtitle->source == VOBSUB)) &&
+                               ((strcmp(lang, subtitle->iso639_2) == 0) ||
+                                (strcmp(lang, "und") == 0)))
                        {
                                used[ii] = TRUE;
                                return ii;
index 9c1359f..e2470da 100644 (file)
@@ -143,7 +143,8 @@ gint ghb_find_audio_track(
 void ghb_add_all_subtitles(signal_user_data_t *ud, gint titleindex);
 gint ghb_find_pref_subtitle_track(const gchar *lang);
 gint ghb_find_subtitle_track(
-       gint titleindex, const gchar *lang, gint source, GHashTable *track_indices);
+       gint titleindex, const gchar *lang, gboolean burn, 
+       gboolean force, gint source, GHashTable *track_indices);
 gint ghb_pick_subtitle_track(signal_user_data_t *ud);
 gint ghb_find_cc_track(gint titleindex);
 gint ghb_longest_title(void);
index f263039..b781cfb 100644 (file)
@@ -329,14 +329,18 @@ ghb_set_pref_subtitle(gint titleindex, signal_user_data_t *ud)
        for (ii = 0; ii < count; ii++)
        {
                gint source;
+               gboolean force, burn;
 
                subtitle = ghb_array_get_nth(pref_subtitle, ii);
                lang = ghb_settings_get_string(subtitle, "SubtitleLanguage");
                source = ghb_settings_get_int(subtitle, "SubtitleSource");
+               burn = ghb_settings_get_boolean(subtitle, "SubtitleBurned");
+               force = ghb_settings_get_boolean(subtitle, "SubtitleForced");
                // If there are multiple subtitles using the same language, then
                // select sequential tracks for each.  The hash keeps track 
                // of the tracks used for each language.
-               track = ghb_find_subtitle_track(titleindex, lang, source, track_indices);
+               track = ghb_find_subtitle_track(titleindex, lang, burn, 
+                                                                               force, source, track_indices);
                g_free(lang);
                if (track >= -1)
                {
@@ -366,7 +370,7 @@ ghb_set_pref_subtitle(gint titleindex, signal_user_data_t *ud)
                GValue *settings;
                gboolean burn;
 
-               track = ghb_find_subtitle_track(titleindex, pref_lang, VOBSUB, track_indices);
+               track = ghb_find_subtitle_track(titleindex, pref_lang, FALSE, FALSE, VOBSUB, track_indices);
                if (track >= -1)
                {
                        burn = mustBurn(ud, track);