]> granicus.if.org Git - handbrake/commitdiff
LinGui: fix how an audio is chosen after a source is scanned or the preset
authorjstebbins <jstebbins.hb@gmail.com>
Sat, 24 Jan 2009 19:26:05 +0000 (19:26 +0000)
committerjstebbins <jstebbins.hb@gmail.com>
Sat, 24 Jan 2009 19:26:05 +0000 (19:26 +0000)
selection changes.  It wasn't honoring the preferred language or matching
the codec when passthru is selected.

Also checking in the ui changes needed for dts pasthru.  The option is
disabled until we get libhb support.

git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@2094 b64f7644-9d1e-0410-96f1-a4d463321fa5

gtk/src/audiohandler.c
gtk/src/callbacks.c
gtk/src/hb-backend.c
gtk/src/hb-backend.h
gtk/src/makedeps.c
gtk/src/resource_data.h
gtk/src/resources.plist
gtk/src/widget_reverse_deps

index 3c369566b2bf3c516981c0dd2b3c1d22d8a54685..7967870ded561c3f09261dc67aec67fccffdfcae 100644 (file)
@@ -127,7 +127,8 @@ ghb_set_pref_audio(gint titleindex, signal_user_data_t *ud)
                else
                        index = *(gint*)iptr;
 
-               track = ghb_find_audio_track(titleindex, source_lang, index);
+               track = ghb_find_audio_track(titleindex, source_lang, 
+                                                                       acodec_code, index);
                // Check to see if:
                // 1. pref codec is ac3
                // 2. source codec is not ac3
@@ -135,7 +136,7 @@ ghb_set_pref_audio(gint titleindex, signal_user_data_t *ud)
                if (ghb_get_audio_info (&ainfo, titleindex, track) && 
                        ghb_audio_is_passthru (acodec_code))
                {
-                       if (!ghb_audio_is_passthru(ainfo.codec))
+                       if (ainfo.codec != acodec_code)
                        {
                                acodec_code = ghb_get_default_acodec();
                                // If there's more audio to process, or we've already
@@ -511,15 +512,11 @@ audio_list_selection_changed_cb(GtkTreeSelection *selection, signal_user_data_t
                ghb_ui_update(ud, "AudioTrackDRCSlider", ghb_double_value(drc));
                widget = GHB_WIDGET (ud->builder, "audio_remove");
                gtk_widget_set_sensitive(widget, TRUE);
-               //widget = GHB_WIDGET (ud->builder, "audio_update");
-               //gtk_widget_set_sensitive(widget, TRUE);
        }
        else
        {
                widget = GHB_WIDGET (ud->builder, "audio_remove");
                gtk_widget_set_sensitive(widget, FALSE);
-               //widget = GHB_WIDGET (ud->builder, "audio_update");
-               //gtk_widget_set_sensitive(widget, FALSE);
        }
 }
 
index ab4cc6fb6b37292d1c27523dee017a9d797d609a..3e10696c14e551171a9f10f79bd9da14bd20ab20 100644 (file)
@@ -1708,6 +1708,7 @@ ghb_backend_events(signal_user_data_t *ud)
        else if (status.queue.state & GHB_STATE_SCANDONE)
        {
                ghb_clear_queue_state(GHB_STATE_SCANDONE);
+               usleep(2000000);
                submit_job(ud->current_job);
        }
        else if (status.queue.state & GHB_STATE_PAUSED)
index 78651d3bb9279dce10ef145f4097ab61c7a72e38..501fe7781af3a3bb2d5e3e26e660a1e1de5c4235 100644 (file)
@@ -135,6 +135,7 @@ static options_map_t d_acodec_opts[] =
        {"MP3 (lame)",      "lame",   HB_ACODEC_LAME, "lame"},
        {"Vorbis",          "vorbis", HB_ACODEC_VORBIS, "vorbis"},
        {"AC3 (pass-thru)", "ac3",    HB_ACODEC_AC3, "ac3"},
+//     {"DTS (pass-thru)", "dts",    HB_ACODEC_DCA, "dts"},
 };
 combo_opts_t acodec_opts =
 {
@@ -990,15 +991,21 @@ ghb_grey_combo_options(GtkBuilder *builder)
        if (allow_ac3)
        {
                grey_combo_box_item(builder, "AudioEncoder", HB_ACODEC_AC3, FALSE);
+               grey_combo_box_item(builder, "AudioEncoder", HB_ACODEC_DCA, FALSE);
        }
        else
        {
                grey_combo_box_item(builder, "AudioEncoder", HB_ACODEC_AC3, TRUE);
+               grey_combo_box_item(builder, "AudioEncoder", HB_ACODEC_DCA, TRUE);
        }
        if (audio && audio->in.codec != HB_ACODEC_AC3)
        {
                grey_combo_box_item(builder, "AudioEncoder", HB_ACODEC_AC3, TRUE);
        }
+       if (audio && audio->in.codec != HB_ACODEC_DCA)
+       {
+               grey_combo_box_item(builder, "AudioEncoder", HB_ACODEC_DCA, TRUE);
+       }
        grey_combo_box_item(builder, "VideoEncoder", HB_VCODEC_THEORA, FALSE);
 
        widget = GHB_WIDGET (builder, "AudioEncoder");
@@ -1598,7 +1605,11 @@ ghb_longest_title()
 }
 
 gint
-ghb_find_audio_track(gint titleindex, const gchar *lang, gint index)
+ghb_find_audio_track(
+       gint titleindex, 
+       const gchar *lang, 
+       gint acodec,
+       gint index)
 {
        hb_list_t  * list;
        hb_title_t * title;
@@ -1609,16 +1620,35 @@ ghb_find_audio_track(gint titleindex, const gchar *lang, gint index)
        gint match = 0;
        
        g_debug("find_audio_track ()\n");
-       if (h_scan != NULL)
+       if (h_scan == NULL) return -1;
+       list = hb_get_titles( h_scan );
+    title = (hb_title_t*)hb_list_item( list, titleindex );
+       if (title != NULL)
        {
-               list = hb_get_titles( h_scan );
-           title = (hb_title_t*)hb_list_item( list, titleindex );
-               if (title != NULL)
+               count = hb_list_count( title->list_audio );
+       }
+       if (count > 10) count = 10;
+       if (acodec == HB_ACODEC_AC3 || acodec == HB_ACODEC_DCA)
+       {
+               for (ii = 0; ii < count; ii++)
                {
-                       count = hb_list_count( title->list_audio );
+               audio = (hb_audio_config_t*)hb_list_audio_config_item( 
+                                                                                                       title->list_audio, ii );
+                       if ((audio->in.codec == acodec) &&
+                               ((strcmp(lang, audio->lang.iso639_2) == 0) ||
+                               (strcmp(lang, "und") == 0)))
+                       {
+                               if (index == match)
+                               {
+                                       track = ii;
+                                       break;
+                               }
+                               match++;
+                       }
                }
        }
-       if (count > 10) count = 10;
+       if (track > -1) return track;
+       match = 0;
        for (ii = 0; ii < count; ii++)
        {
         audio = (hb_audio_config_t*)hb_list_audio_config_item( title->list_audio, ii );
@@ -1633,7 +1663,7 @@ ghb_find_audio_track(gint titleindex, const gchar *lang, gint index)
                        match++;
                }
        }
-       if (match) return track;
+       if (track > -1) return track;
        if (index < count)
                track = index;
        return track;
@@ -2288,8 +2318,7 @@ gboolean
 ghb_audio_is_passthru(gint acodec)
 {
        g_debug("ghb_audio_is_passthru () \n");
-       g_debug("acodec %d\n", acodec);
-       return (acodec == HB_ACODEC_AC3);
+       return (acodec == HB_ACODEC_AC3) || (acodec == HB_ACODEC_DCA);
 }
 
 gint
@@ -2740,13 +2769,16 @@ ghb_validate_audio(signal_user_data_t *ud)
                gint codec = ghb_settings_combo_int(asettings, "AudioEncoder");
         taudio = (hb_audio_config_t *) hb_list_audio_config_item(
                                                                                        title->list_audio, track );
-               if ((taudio->in.codec != HB_ACODEC_AC3) && (codec == HB_ACODEC_AC3))
+               if ((taudio->in.codec != HB_ACODEC_AC3 && codec == HB_ACODEC_AC3) ||
+                   (taudio->in.codec != HB_ACODEC_DCA && codec == HB_ACODEC_DCA))
                {
                        // Not supported.  AC3 is passthrough only, so input must be AC3
+                       char *str;
+                       str = (codec == HB_ACODEC_AC3) ? "AC-3" : "DTS";
                        message = g_strdup_printf(
-                                               "The source does not support AC3 Pass-Thru.\n\n"
+                                               "The source does not support %s Pass-Thru.\n\n"
                                                "You should choose a different audio codec.\n"
-                                               "If you continue, one will be chosen for you.");
+                                               "If you continue, one will be chosen for you.", str);
                        if (!ghb_message_dialog(GTK_MESSAGE_WARNING, message, "Cancel", "Continue"))
                        {
                                g_free(message);
@@ -2810,6 +2842,11 @@ ghb_validate_audio(signal_user_data_t *ud)
                                a_unsup = "AC-3";
                                codec = HB_ACODEC_VORBIS;
                        }
+                       if (codec == HB_ACODEC_DCA)
+                       {
+                               a_unsup = "DTS";
+                               codec = HB_ACODEC_VORBIS;
+                       }
                }
                if (a_unsup)
                {
@@ -3226,7 +3263,10 @@ add_job(hb_handle_t *h, GValue *js, gint unique_id, gint titleindex)
                audio.out.codec = ghb_settings_combo_int(asettings, "AudioEncoder");
         taudio = (hb_audio_config_t *) hb_list_audio_config_item(
                                                                        title->list_audio, audio.in.track );
-               if ((taudio->in.codec != HB_ACODEC_AC3) && (audio.out.codec == HB_ACODEC_AC3))
+               if ((taudio->in.codec != HB_ACODEC_AC3 && 
+             audio.out.codec == HB_ACODEC_AC3) ||
+                   (taudio->in.codec != HB_ACODEC_DCA && 
+                        audio.out.codec == HB_ACODEC_DCA))
                {
                        // Not supported.  AC3 is passthrough only, so input must be AC3
                        if (job->mux == HB_MUX_AVI)
@@ -3255,7 +3295,8 @@ printf("switching to faac\n");
                }
                if ((job->mux == HB_MUX_OGM) && 
                        ((audio.out.codec == HB_ACODEC_FAAC) ||
-                       (audio.out.codec == HB_ACODEC_AC3)))
+                       (audio.out.codec == HB_ACODEC_AC3) ||
+                       (audio.out.codec == HB_ACODEC_DCA)))
                {
                        // ogm/faac|ac3 combination is not supported.
                        audio.out.codec = HB_ACODEC_VORBIS;
index 057bea693689de0f25b4ab7fd02ec6b7b662b659..508ea5ce1ca21705b51ae11d718d26b208f909ed 100644 (file)
@@ -130,7 +130,8 @@ void ghb_set_default_bitrate_opts(GtkBuilder *builder, gint last_rate);
 void ghb_grey_combo_options(GtkBuilder *builder);
 void ghb_update_ui_combo_box(
        GtkBuilder *builder, const gchar *name, gint user_data, gboolean all);
-gint ghb_find_audio_track(gint titleindex, const gchar *lang, gint index);
+gint ghb_find_audio_track(
+       gint titleindex, const gchar *lang, gint acodec, gint index);
 gint ghb_longest_title(void);
 gchar* ghb_build_x264opts_string(GValue *settings);
 GdkPixbuf* ghb_get_preview_image(
index dc6d66714c0cff860377713de6e6db3031bd4b6f..d3711645ef01b4ce7ea13bc1fbbb42ea77621ea1 100644 (file)
@@ -52,10 +52,10 @@ static dependency_t dep_map[] =
        {"VideoEncoder", "x264_tab_label", "x264", FALSE},
        {"VideoEncoder", "Mp4iPodCompatible", "x264", FALSE},
        {"VideoEncoder", "directqp", "x264|ffmpeg", FALSE},
-       {"AudioEncoder", "AudioBitrate", "ac3", TRUE},
-       {"AudioEncoder", "AudioSamplerate", "ac3", TRUE},
-       {"AudioEncoder", "AudioMixdown", "ac3", TRUE},
-       {"AudioEncoder", "AudioTrackDRCSlider", "ac3", TRUE},
+       {"AudioEncoder", "AudioBitrate", "ac3|dts", TRUE},
+       {"AudioEncoder", "AudioSamplerate", "ac3|dts", TRUE},
+       {"AudioEncoder", "AudioMixdown", "ac3|dts", TRUE},
+       {"AudioEncoder", "AudioTrackDRCSlider", "ac3|dts", TRUE},
        {"x264_bframes", "x264_weighted_bframes", "0", TRUE},
        {"x264_bframes", "x264_bpyramid", "<2", TRUE},
        {"x264_bframes", "x264_direct", "0", TRUE},
index fdbf9ff7f9fe6f6e368e86c6224719c22d9f1caf..53334463b2e5d893677e9049c6bdd56a4135ed6a 100644 (file)
 "              <array>\n"
 "                      <array>\n"
 "                              <string>AudioEncoder</string>\n"
-"                              <string>ac3</string>\n"
+"                              <string>ac3|dts</string>\n"
 "                              <true />\n"
 "                      </array>\n"
 "              </array>\n"
 "              <array>\n"
 "                      <array>\n"
 "                              <string>AudioEncoder</string>\n"
-"                              <string>ac3</string>\n"
+"                              <string>ac3|dts</string>\n"
 "                              <true />\n"
 "                      </array>\n"
 "              </array>\n"
 "              <array>\n"
 "                      <array>\n"
 "                              <string>AudioEncoder</string>\n"
-"                              <string>ac3</string>\n"
+"                              <string>ac3|dts</string>\n"
 "                              <true />\n"
 "                      </array>\n"
 "              </array>\n"
 "              <array>\n"
 "                      <array>\n"
 "                              <string>AudioEncoder</string>\n"
-"                              <string>ac3</string>\n"
+"                              <string>ac3|dts</string>\n"
 "                              <true />\n"
 "                      </array>\n"
 "              </array>\n"
index b0c415ae712b3accf54c791d19f3b5932d8043b0..5f11666126b275e7b73cae4e322c4d146a2a11d4 100644 (file)
@@ -7191,7 +7191,7 @@ R2RrUAAABBgBAQACAAAAQAAAABAAAAAQ////AP///wD///8A////AP///wD///8A////AP///wD///8A
                <array>
                        <array>
                                <string>AudioEncoder</string>
-                               <string>ac3</string>
+                               <string>ac3|dts</string>
                                <true />
                        </array>
                </array>
@@ -7199,7 +7199,7 @@ R2RrUAAABBgBAQACAAAAQAAAABAAAAAQ////AP///wD///8A////AP///wD///8A////AP///wD///8A
                <array>
                        <array>
                                <string>AudioEncoder</string>
-                               <string>ac3</string>
+                               <string>ac3|dts</string>
                                <true />
                        </array>
                </array>
@@ -7207,7 +7207,7 @@ R2RrUAAABBgBAQACAAAAQAAAABAAAAAQ////AP///wD///8A////AP///wD///8A////AP///wD///8A
                <array>
                        <array>
                                <string>AudioEncoder</string>
-                               <string>ac3</string>
+                               <string>ac3|dts</string>
                                <true />
                        </array>
                </array>
@@ -7215,7 +7215,7 @@ R2RrUAAABBgBAQACAAAAQAAAABAAAAAQ////AP///wD///8A////AP///wD///8A////AP///wD///8A
                <array>
                        <array>
                                <string>AudioEncoder</string>
-                               <string>ac3</string>
+                               <string>ac3|dts</string>
                                <true />
                        </array>
                </array>
index f4abad27020c53921bb161c824028b31fd48ab1d..0c767d5d0cdc87061c52e972e58af9975171efa1 100644 (file)
@@ -6,7 +6,7 @@
        <array>
                <array>
                        <string>AudioEncoder</string>
-                       <string>ac3</string>
+                       <string>ac3|dts</string>
                        <true />
                </array>
        </array>
@@ -14,7 +14,7 @@
        <array>
                <array>
                        <string>AudioEncoder</string>
-                       <string>ac3</string>
+                       <string>ac3|dts</string>
                        <true />
                </array>
        </array>
@@ -22,7 +22,7 @@
        <array>
                <array>
                        <string>AudioEncoder</string>
-                       <string>ac3</string>
+                       <string>ac3|dts</string>
                        <true />
                </array>
        </array>
@@ -30,7 +30,7 @@
        <array>
                <array>
                        <string>AudioEncoder</string>
-                       <string>ac3</string>
+                       <string>ac3|dts</string>
                        <true />
                </array>
        </array>