diff options
Diffstat (limited to 'gtk/src')
-rw-r--r-- | gtk/src/audiohandler.c | 9 | ||||
-rw-r--r-- | gtk/src/callbacks.c | 1 | ||||
-rw-r--r-- | gtk/src/hb-backend.c | 71 | ||||
-rw-r--r-- | gtk/src/hb-backend.h | 3 | ||||
-rw-r--r-- | gtk/src/makedeps.c | 8 | ||||
-rw-r--r-- | gtk/src/resource_data.h | 8 | ||||
-rw-r--r-- | gtk/src/resources.plist | 8 | ||||
-rw-r--r-- | gtk/src/widget_reverse_deps | 8 |
8 files changed, 78 insertions, 38 deletions
diff --git a/gtk/src/audiohandler.c b/gtk/src/audiohandler.c index 3c369566b..7967870de 100644 --- a/gtk/src/audiohandler.c +++ b/gtk/src/audiohandler.c @@ -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); } } diff --git a/gtk/src/callbacks.c b/gtk/src/callbacks.c index ab4cc6fb6..3e10696c1 100644 --- a/gtk/src/callbacks.c +++ b/gtk/src/callbacks.c @@ -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) diff --git a/gtk/src/hb-backend.c b/gtk/src/hb-backend.c index 78651d3bb..501fe7781 100644 --- a/gtk/src/hb-backend.c +++ b/gtk/src/hb-backend.c @@ -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; diff --git a/gtk/src/hb-backend.h b/gtk/src/hb-backend.h index 057bea693..508ea5ce1 100644 --- a/gtk/src/hb-backend.h +++ b/gtk/src/hb-backend.h @@ -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( diff --git a/gtk/src/makedeps.c b/gtk/src/makedeps.c index dc6d66714..d3711645e 100644 --- a/gtk/src/makedeps.c +++ b/gtk/src/makedeps.c @@ -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}, diff --git a/gtk/src/resource_data.h b/gtk/src/resource_data.h index fdbf9ff7f..53334463b 100644 --- a/gtk/src/resource_data.h +++ b/gtk/src/resource_data.h @@ -12692,7 +12692,7 @@ " <array>\n" " <array>\n" " <string>AudioEncoder</string>\n" -" <string>ac3</string>\n" +" <string>ac3|dts</string>\n" " <true />\n" " </array>\n" " </array>\n" @@ -12700,7 +12700,7 @@ " <array>\n" " <array>\n" " <string>AudioEncoder</string>\n" -" <string>ac3</string>\n" +" <string>ac3|dts</string>\n" " <true />\n" " </array>\n" " </array>\n" @@ -12708,7 +12708,7 @@ " <array>\n" " <array>\n" " <string>AudioEncoder</string>\n" -" <string>ac3</string>\n" +" <string>ac3|dts</string>\n" " <true />\n" " </array>\n" " </array>\n" @@ -12716,7 +12716,7 @@ " <array>\n" " <array>\n" " <string>AudioEncoder</string>\n" -" <string>ac3</string>\n" +" <string>ac3|dts</string>\n" " <true />\n" " </array>\n" " </array>\n" diff --git a/gtk/src/resources.plist b/gtk/src/resources.plist index b0c415ae7..5f1166612 100644 --- a/gtk/src/resources.plist +++ b/gtk/src/resources.plist @@ -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> diff --git a/gtk/src/widget_reverse_deps b/gtk/src/widget_reverse_deps index f4abad270..0c767d5d0 100644 --- a/gtk/src/widget_reverse_deps +++ b/gtk/src/widget_reverse_deps @@ -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> |