summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjstebbins <[email protected]>2010-06-24 21:04:40 +0000
committerjstebbins <[email protected]>2010-06-24 21:04:40 +0000
commitc0fa278e9bb3ba2cc9ae61d604babc15e63fe655 (patch)
tree68747ac6cf62e749f77f173764c10ca9be416abc
parent7589ed32b71d9058f8a6e81eb17dbdbc77033f64 (diff)
LinGui: fix audio preset initialization
sometimes audio settings were to being initialized correctly to the values in the preset. some code that sets reasonable values when the encoder changes from passthru to non-passthru was getting invoked and overwriting the preset values. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@3403 b64f7644-9d1e-0410-96f1-a4d463321fa5
-rw-r--r--gtk/src/audiohandler.c27
-rw-r--r--gtk/src/hb-backend.c18
-rw-r--r--gtk/src/hb-backend.h1
3 files changed, 41 insertions, 5 deletions
diff --git a/gtk/src/audiohandler.c b/gtk/src/audiohandler.c
index e11d4e061..5206a318e 100644
--- a/gtk/src/audiohandler.c
+++ b/gtk/src/audiohandler.c
@@ -348,13 +348,15 @@ G_MODULE_EXPORT void
audio_codec_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
{
static gint prev_acodec = 0;
- gint acodec_code, mix_code;
+ gint acodec_code;
GValue *asettings, *gval;
g_debug("audio_codec_changed_cb ()");
gval = ghb_widget_value(widget);
acodec_code = ghb_lookup_combo_int("AudioEncoder", gval);
ghb_value_free(gval);
+
+ asettings = get_selected_asettings(ud);
if (ghb_audio_is_passthru (prev_acodec) &&
!ghb_audio_is_passthru (acodec_code))
{
@@ -362,13 +364,29 @@ audio_codec_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
// pref settings
gint titleindex;
gint track;
+ gint br, sr, mix_code;
+
+ if (asettings != NULL)
+ {
+ br = ghb_settings_get_int(asettings, "AudioBitrate");
+ sr = ghb_settings_get_int(asettings, "AudioSamplerate");
+ mix_code = ghb_settings_combo_int(asettings, "AudioMixdown");
+ }
+ else
+ {
+ br = 160;
+ sr = 0;
+ mix_code = 0;
+ }
titleindex = ghb_settings_combo_int(ud->settings, "title");
track = ghb_settings_combo_int(ud->settings, "AudioTrack");
- ghb_ui_update(ud, "AudioBitrate", ghb_string_value("160"));
- ghb_ui_update(ud, "AudioSamplerate", ghb_string_value("source"));
- mix_code = ghb_lookup_combo_int("AudioMixdown", ghb_string_value("dpl2"));
+ br = ghb_find_closest_audio_bitrate(acodec_code, br);
+ ghb_ui_update(ud, "AudioBitrate", ghb_int64_value(br));
+
+ sr = ghb_find_closest_audio_rate(sr);
+ ghb_ui_update(ud, "AudioSamplerate", ghb_int64_value(sr));
mix_code = ghb_get_best_mix( titleindex, track, acodec_code, mix_code);
ghb_ui_update(ud, "AudioMixdown", ghb_int64_value(mix_code));
}
@@ -376,7 +394,6 @@ audio_codec_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
ghb_grey_combo_options (ud->builder);
ghb_check_dependency(ud, widget, NULL);
prev_acodec = acodec_code;
- asettings = get_selected_asettings(ud);
if (asettings != NULL)
{
ghb_widget_to_setting(asettings, widget);
diff --git a/gtk/src/hb-backend.c b/gtk/src/hb-backend.c
index 63ce0c063..71b6850e7 100644
--- a/gtk/src/hb-backend.c
+++ b/gtk/src/hb-backend.c
@@ -1121,6 +1121,24 @@ ghb_find_closest_audio_bitrate(gint codec, gint rate)
return result;
}
+gint
+ghb_find_closest_audio_rate(gint rate)
+{
+ gint ii;
+ gint result;
+
+ result = 0;
+ for (ii = 0; ii < hb_audio_rates_count; ii++)
+ {
+ if (rate <= hb_audio_rates[ii].rate)
+ {
+ result = hb_audio_rates[ii].rate;
+ break;
+ }
+ }
+ return result;
+}
+
static gint
lookup_audio_bitrate_int(const GValue *rate)
{
diff --git a/gtk/src/hb-backend.h b/gtk/src/hb-backend.h
index 975616967..8395b7968 100644
--- a/gtk/src/hb-backend.h
+++ b/gtk/src/hb-backend.h
@@ -183,6 +183,7 @@ gchar* ghb_get_tmp_dir();
gint ghb_select_audio_codec(signal_user_data_t *ud, gint track);
const gchar* ghb_select_audio_codec_str(signal_user_data_t *ud, gint track);
gint ghb_find_closest_audio_bitrate(gint codec, gint rate);
+gint ghb_find_closest_audio_rate(gint rate);
GValue* ghb_lookup_acodec_value(gint val);
#endif // _HBBACKEND_H_