X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=gtk%2Fsrc%2Faudiohandler.c;h=176f7d9cfb0bcfa3fbea3e77bf82b5d6625b6a19;hb=61c0e9c10ba95847f39e1610d52257ac42162b20;hp=17d0a3414afcf976acf631338d7ae9c3352bce34;hpb=4a8e68f3c579df8a2dbb25739f8da08bf847a360;p=handbrake-jp%2Fhandbrake-jp-git.git diff --git a/gtk/src/audiohandler.c b/gtk/src/audiohandler.c index 17d0a341..176f7d9c 100644 --- a/gtk/src/audiohandler.c +++ b/gtk/src/audiohandler.c @@ -63,6 +63,7 @@ ghb_adjust_audio_rate_combos(signal_user_data_t *ud) ghb_ui_update(ud, "AudioSamplerate", ghb_int64_value(0)); ghb_ui_update(ud, "AudioMixdown", ghb_int64_value(0)); } + ghb_ui_update(ud, "AudioTrackDRCSlider", ghb_double_value(0)); } else if (acodec == HB_ACODEC_FAAC && mix != HB_AMIXDOWN_6CH) { @@ -135,7 +136,8 @@ 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 (ainfo.codec != acodec_code) + // HB_ACODEC_* are bit fields. Treat acodec_code as mask + if (!(ainfo.codec & acodec_code)) { acodec_code = ghb_get_default_acodec(); // If there's more audio to process, or we've already @@ -146,6 +148,10 @@ ghb_set_pref_audio(gint titleindex, signal_user_data_t *ud) acodec_code = 0; } } + else + { + acodec_code &= ainfo.codec; + } } if (titleindex >= 0 && track < 0) acodec_code = 0; @@ -225,8 +231,8 @@ audio_list_refresh_selected(signal_user_data_t *ud) if (gtk_tree_selection_get_selected(selection, &store, &iter)) { const gchar *track, *codec, *br, *sr, *mix; - gchar *drc, *s_track, *s_codec, *s_br, *s_sr, *s_mix; - gdouble s_drc; + gchar *s_drc, *s_track, *s_codec, *s_br, *s_sr, *s_mix; + gdouble drc; // Get the row number treepath = gtk_tree_model_get_path (store, &iter); indices = gtk_tree_path_get_indices (treepath); @@ -250,11 +256,11 @@ audio_list_refresh_selected(signal_user_data_t *ud) s_br = ghb_settings_get_string(asettings, "AudioBitrate"); s_sr = ghb_settings_get_string(asettings, "AudioSamplerate"); s_mix = ghb_settings_get_string(asettings, "AudioMixdown"); - s_drc = ghb_settings_get_double(asettings, "AudioTrackDRCSlider"); - if (s_drc < 0.1) - drc = g_strdup("Off"); + drc = ghb_settings_get_double(asettings, "AudioTrackDRCSlider"); + if (drc < 1.0) + s_drc = g_strdup("Off"); else - drc = g_strdup_printf("%.1f", s_drc); + s_drc = g_strdup_printf("%.1f", drc); gtk_list_store_set(GTK_LIST_STORE(store), &iter, // These are displayed in list @@ -263,16 +269,16 @@ audio_list_refresh_selected(signal_user_data_t *ud) 2, br, 3, sr, 4, mix, - 5, drc, + 5, s_drc, // These are used to set combo values when a list item is selected 6, s_track, 7, s_codec, 8, s_br, 9, s_sr, 10, s_mix, - 11, s_drc, + 11, drc, -1); - g_free(drc); + g_free(s_drc); g_free(s_track); g_free(s_codec); g_free(s_br); @@ -281,7 +287,7 @@ audio_list_refresh_selected(signal_user_data_t *ud) } } -void +G_MODULE_EXPORT void audio_codec_changed_cb(GtkWidget *widget, signal_user_data_t *ud) { static gint prev_acodec = 0; @@ -308,7 +314,6 @@ audio_codec_changed_cb(GtkWidget *widget, signal_user_data_t *ud) mix_code = ghb_lookup_combo_int("AudioMixdown", ghb_string_value("dpl2")); mix_code = ghb_get_best_mix( titleindex, track, acodec_code, mix_code); ghb_ui_update(ud, "AudioMixdown", ghb_int64_value(mix_code)); - ghb_ui_update(ud, "AudioTrackDRCSlider", ghb_double_value(1.0)); } ghb_adjust_audio_rate_combos(ud); ghb_grey_combo_options (ud->builder); @@ -337,7 +342,7 @@ audio_codec_changed_cb(GtkWidget *widget, signal_user_data_t *ud) ghb_live_reset(ud); } -void +G_MODULE_EXPORT void audio_track_changed_cb(GtkWidget *widget, signal_user_data_t *ud) { GValue *asettings; @@ -359,12 +364,12 @@ audio_track_changed_cb(GtkWidget *widget, signal_user_data_t *ud) ghb_live_reset(ud); } -void +G_MODULE_EXPORT void audio_mix_changed_cb(GtkWidget *widget, signal_user_data_t *ud) { GValue *asettings; - g_debug("audio_widget_changed_cb ()"); + g_debug("audio_mix_changed_cb ()"); ghb_adjust_audio_rate_combos(ud); ghb_check_dependency(ud, widget); asettings = get_selected_asettings(ud); @@ -376,7 +381,7 @@ audio_mix_changed_cb(GtkWidget *widget, signal_user_data_t *ud) ghb_live_reset(ud); } -void +G_MODULE_EXPORT void audio_widget_changed_cb(GtkWidget *widget, signal_user_data_t *ud) { GValue *asettings; @@ -392,11 +397,37 @@ audio_widget_changed_cb(GtkWidget *widget, signal_user_data_t *ud) ghb_live_reset(ud); } +G_MODULE_EXPORT void +drc_widget_changed_cb(GtkWidget *widget, gdouble val, signal_user_data_t *ud) +{ + GValue *asettings; + GtkLabel *label; + gchar *drc; + + g_debug("drc_widget_changed_cb ()"); + + label = GTK_LABEL(GHB_WIDGET(ud->builder, "drc_label")); + if (val < 1.0) + drc = g_strdup_printf("Off"); + else + drc = g_strdup_printf("%.1f", val); + gtk_label_set_text(label, drc); + g_free(drc); + ghb_check_dependency(ud, widget); + asettings = get_selected_asettings(ud); + if (asettings != NULL) + { + ghb_widget_to_setting(asettings, widget); + audio_list_refresh_selected(ud); + } + ghb_live_reset(ud); +} + // subtitles differ from other settings in that // the selection is updated automaitcally when the title // changes. I don't want the preset selection changed as // would happen for regular settings. -void +G_MODULE_EXPORT void subtitle_changed_cb(GtkWidget *widget, signal_user_data_t *ud) { const gchar *name = gtk_widget_get_name(widget); @@ -435,8 +466,8 @@ add_to_audio_list(signal_user_data_t *ud, GValue *settings) GtkListStore *store; GtkTreeSelection *selection; const gchar *track, *codec, *br, *sr, *mix; - gchar *drc, *s_track, *s_codec, *s_br, *s_sr, *s_mix; - gdouble s_drc; + gchar *s_drc, *s_track, *s_codec, *s_br, *s_sr, *s_mix; + gdouble drc; g_debug("add_to_audio_list ()"); treeview = GTK_TREE_VIEW(GHB_WIDGET(ud->builder, "audio_list")); @@ -454,11 +485,12 @@ add_to_audio_list(signal_user_data_t *ud, GValue *settings) s_br = ghb_settings_get_string(settings, "AudioBitrate"); s_sr = ghb_settings_get_string(settings, "AudioSamplerate"); s_mix = ghb_settings_get_string(settings, "AudioMixdown"); - s_drc = ghb_settings_get_double(settings, "AudioTrackDRCSlider"); - if (s_drc < 0.1) - drc = g_strdup("Off"); + drc = ghb_settings_get_double(settings, "AudioTrackDRCSlider"); + if (drc < 1.0) + s_drc = g_strdup("Off"); else - drc = g_strdup_printf("%.1f", s_drc); + s_drc = g_strdup_printf("%.1f", drc); + gtk_list_store_append(store, &iter); gtk_list_store_set(store, &iter, @@ -468,17 +500,17 @@ add_to_audio_list(signal_user_data_t *ud, GValue *settings) 2, br, 3, sr, 4, mix, - 5, drc, + 5, s_drc, // These are used to set combo box values when a list item is selected 6, s_track, 7, s_codec, 8, s_br, 9, s_sr, 10, s_mix, - 11, s_drc, + 11, drc, -1); gtk_tree_selection_select_iter(selection, &iter); - g_free(drc); + g_free(s_drc); g_free(s_track); g_free(s_codec); g_free(s_br); @@ -486,7 +518,7 @@ add_to_audio_list(signal_user_data_t *ud, GValue *settings) g_free(s_mix); } -void +G_MODULE_EXPORT void audio_list_selection_changed_cb(GtkTreeSelection *selection, signal_user_data_t *ud) { GtkTreeModel *store; @@ -523,7 +555,7 @@ audio_list_selection_changed_cb(GtkTreeSelection *selection, signal_user_data_t } } -void +G_MODULE_EXPORT void audio_add_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud) { // Add the current audio settings to the list. @@ -560,13 +592,13 @@ audio_add_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud) ghb_array_append(audio_list, asettings); add_to_audio_list(ud, asettings); count = ghb_array_len(audio_list); - if (count >= 8) + if (count >= 99) { gtk_widget_set_sensitive(xwidget, FALSE); } } -void +G_MODULE_EXPORT void audio_remove_clicked_cb(GtkWidget *widget, signal_user_data_t *ud) { GtkTreeView *treeview;