summaryrefslogtreecommitdiffstats
path: root/gtk/src/settings.c
diff options
context:
space:
mode:
Diffstat (limited to 'gtk/src/settings.c')
-rw-r--r--gtk/src/settings.c124
1 files changed, 122 insertions, 2 deletions
diff --git a/gtk/src/settings.c b/gtk/src/settings.c
index 1e78fcbd6..662561038 100644
--- a/gtk/src/settings.c
+++ b/gtk/src/settings.c
@@ -21,6 +21,7 @@
#include "hb-backend.h"
void dump_settings(GHashTable *settings);
+void ghb_pref_audio_init(signal_user_data_t *ud);
GObject*
debug_get_object(GtkBuilder* b, const gchar *n)
@@ -1034,6 +1035,10 @@ preset_update_ui(signal_user_data_t *ud, presets_data_t *data, const gchar *key)
// Initialize the ui from presets file.
if (data == NULL) return;
str = g_key_file_get_string(data->keyFile, data->name, key, NULL);
+ if (str == NULL)
+ {
+ str = g_key_file_get_string(internalKeyFile, "Presets", key, NULL);
+ }
if (str != NULL)
{
ghb_ui_update(ud, key, str);
@@ -1046,7 +1051,7 @@ ghb_set_preset(signal_user_data_t *ud, const gchar *name)
{
presets_data_t *data;
- g_debug("ghb_update_from_preset() %s\n", name);
+ g_debug("ghb_set_preset() %s\n", name);
if (name == NULL)
{
name = ghb_presets_get_name(0);
@@ -1061,6 +1066,7 @@ ghb_set_preset(signal_user_data_t *ud, const gchar *name)
preset_to_ui(ud, data);
ghb_settings_set_string(ud->settings, "preset", name);
}
+ ghb_pref_audio_init(ud);
}
void
@@ -1071,7 +1077,7 @@ ghb_update_from_preset(
{
presets_data_t *data;
- g_debug("ghb_set_preset() %s\n", name);
+ g_debug("ghb_update_from_preset() %s %s\n", name, key);
if (name == NULL) return;
data = presets_list_search(presetsList, name);
preset_update_ui(ud, data, key);
@@ -2012,3 +2018,117 @@ ghb_sanitize_x264opts(signal_user_data_t *ud, const gchar *options)
return result;
}
+static gint pref_acodec[8];
+static gint pref_bitrate[8];
+static gint pref_rate[8];
+static gint pref_mix[8];
+static gdouble pref_drc[8];
+static gint pref_audio_count = 0;
+
+void
+ghb_pref_audio_init(signal_user_data_t *ud)
+{
+ const gchar *acodec, *bitrate, *rate, *mix, *drc;
+ gchar **split_acodec, **split_bitrate, **split_rate;
+ gchar **split_mix, **split_drc;
+
+ acodec = ghb_settings_get_string(ud->settings, "pref_audio_codec");
+ bitrate = ghb_settings_get_string(ud->settings, "pref_audio_bitrate");
+ rate = ghb_settings_get_string(ud->settings, "pref_audio_rate");
+ mix = ghb_settings_get_string(ud->settings, "pref_audio_mix");
+ drc = ghb_settings_get_string(ud->settings, "pref_audio_drc");
+ split_acodec = g_strsplit(acodec, ",", 8);
+ split_bitrate = g_strsplit(bitrate, ",", 8);
+ split_rate = g_strsplit(rate, ",", 8);
+ split_mix = g_strsplit(mix, ",", 8);
+ split_drc = g_strsplit(drc, ",", 8);
+ if (split_acodec == NULL)
+ { // This should never happen, but just in case...
+ split_acodec = g_strsplit("faac", ",", -1);
+ }
+ gint ii;
+ for (ii = 0; split_acodec[ii]; ii++)
+ {
+ pref_acodec[ii] = ghb_lookup_acodec(split_acodec[ii]);
+ }
+ pref_audio_count = ii;
+ for (ii = 0; split_bitrate && split_bitrate[ii]; ii++)
+ {
+ pref_bitrate[ii] = ghb_lookup_bitrate(split_bitrate[ii]);
+ }
+ for (ii = 0; ii < pref_audio_count; ii++)
+ {
+ pref_bitrate[ii] = pref_bitrate[0];
+ }
+ for (ii = 0; split_rate && split_rate[ii]; ii++)
+ {
+ pref_rate[ii] = ghb_lookup_rate(split_rate[ii]);
+ }
+ for (ii = 0; ii < pref_audio_count; ii++)
+ {
+ pref_rate[ii] = pref_rate[0];
+ }
+ for (ii = 0; split_mix && split_mix[ii]; ii++)
+ {
+ pref_mix[ii] = ghb_lookup_mix(split_mix[ii]);
+ }
+ for (ii = 0; ii < pref_audio_count; ii++)
+ {
+ pref_mix[ii] = pref_mix[0];
+ }
+ for (ii = 0; split_drc && split_drc[ii]; ii++)
+ {
+ pref_drc[ii] = ghb_lookup_drc(split_drc[ii]);
+ }
+ for (ii = 0; ii < pref_audio_count; ii++)
+ {
+ pref_drc[ii] = pref_drc[0];
+ }
+}
+
+gint
+ghb_pref_acount()
+{
+ return pref_audio_count;
+}
+
+gint
+ghb_pref_acodec(gint index)
+{
+ if (index >= pref_audio_count)
+ return 0;
+ return pref_acodec[index];
+}
+
+gint
+ghb_pref_bitrate(gint index)
+{
+ if (index >= pref_audio_count)
+ return 0;
+ return pref_bitrate[index];
+}
+
+gint
+ghb_pref_rate(gint index)
+{
+ if (index >= pref_audio_count)
+ return 0;
+ return pref_rate[index];
+}
+
+gint
+ghb_pref_mix(gint index)
+{
+ if (index >= pref_audio_count)
+ return 0;
+ return pref_mix[index];
+}
+
+gdouble
+ghb_pref_drc(gint index)
+{
+ if (index >= pref_audio_count)
+ return 0;
+ return pref_drc[index];
+}
+