summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjstebbins <[email protected]>2008-09-19 00:19:46 +0000
committerjstebbins <[email protected]>2008-09-19 00:19:46 +0000
commit15208b5875fbfc53480941750bc8afae7b5f90a7 (patch)
treebff253b6752c33a6d1f1f9e3b3c357b08bbea524
parent3609b74b98372c0c4960a0a681fd1f0a4dc24c9b (diff)
LinGui: tidy up how combobox values are handled internally and stored in plists
fix a problem with storing max picture dims to presets plist git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@1719 b64f7644-9d1e-0410-96f1-a4d463321fa5
-rw-r--r--gtk/src/callbacks.c305
-rw-r--r--gtk/src/hb-backend.c787
-rw-r--r--gtk/src/hb-backend.h14
-rw-r--r--gtk/src/internal_defaults.xml2
-rw-r--r--gtk/src/presets.c15
-rw-r--r--gtk/src/resource_data.h36
-rw-r--r--gtk/src/resources.plist26
-rw-r--r--gtk/src/settings.c97
-rw-r--r--gtk/src/settings.h9
-rw-r--r--gtk/src/standard_presets.xml24
-rw-r--r--gtk/src/values.c109
-rw-r--r--gtk/src/values.h24
12 files changed, 698 insertions, 750 deletions
diff --git a/gtk/src/callbacks.c b/gtk/src/callbacks.c
index 3a9445681..f93cd13b5 100644
--- a/gtk/src/callbacks.c
+++ b/gtk/src/callbacks.c
@@ -150,8 +150,11 @@ check_dependency(signal_user_data_t *ud, GtkWidget *widget)
GValue *array, *data;
gint count, ii;
gchar *dep_name;
+ GType type;
- if (ghb_widget_index(widget) < 0) return;
+ type = GTK_WIDGET_TYPE(widget);
+ if (type == GTK_TYPE_COMBO_BOX || type == GTK_TYPE_COMBO_BOX_ENTRY)
+ if (gtk_combo_box_get_active(GTK_COMBO_BOX(widget)) < 0) return;
name = gtk_widget_get_name(widget);
g_debug("check_dependency () %s", name);
@@ -963,16 +966,17 @@ adjust_audio_rate_combos(signal_user_data_t *ud)
GtkWidget *widget;
g_debug("adjust_audio_rate_combos ()");
- titleindex = ghb_settings_get_combo_index(ud->settings, "title");
+ titleindex = ghb_settings_combo_int(ud->settings, "title");
widget = GHB_WIDGET(ud->builder, "audio_track");
- audioindex = ghb_widget_int(widget);
+ audioindex = ghb_lookup_combo_int("audio_track", ghb_widget_value(widget));
widget = GHB_WIDGET(ud->builder, "audio_codec");
- acodec = ghb_widget_int(widget);
+ acodec = ghb_lookup_combo_int("audio_codec", ghb_widget_value(widget));
if (ghb_audio_is_passthru (acodec))
{
+ ghb_set_default_bitrate_opts (ud->builder, -1);
if (ghb_get_audio_info (&ainfo, titleindex, audioindex))
{
gint br = ainfo.bitrate / 1000;
@@ -984,6 +988,7 @@ adjust_audio_rate_combos(signal_user_data_t *ud)
}
else
{
+ ghb_ui_update(ud, "audio_bitrate", ghb_int64_value(384));
ghb_ui_update(ud, "audio_rate", ghb_int64_value(0));
ghb_ui_update(ud, "audio_mix", ghb_int64_value(0));
}
@@ -993,7 +998,7 @@ adjust_audio_rate_combos(signal_user_data_t *ud)
gint br;
widget = GHB_WIDGET(ud->builder, "audio_bitrate");
- br = ghb_widget_int(widget);
+ br = ghb_lookup_combo_int("audio_bitrate", ghb_widget_value(widget));
if (br > 160)
ghb_ui_update(ud, "audio_bitrate", ghb_int64_value(160));
ghb_set_default_bitrate_opts (ud->builder, 160);
@@ -1039,7 +1044,7 @@ set_pref_audio(gint titleindex, signal_user_data_t *ud)
rate = ghb_settings_get_value(audio, "audio_rate");
mix = ghb_settings_get_value(audio, "audio_mix");
drc = ghb_settings_get_value(audio, "audio_drc");
- acodec_code = ghb_lookup_acodec(acodec);
+ acodec_code = ghb_lookup_combo_int("audio_codec", acodec);
// If there are multiple audios using the same codec, then
// select sequential tracks for each. This hash keeps track
// of the last used track for each codec.
@@ -1083,7 +1088,7 @@ set_pref_audio(gint titleindex, signal_user_data_t *ud)
// This gets set autimatically if the codec is passthru
ghb_ui_update(ud, "audio_bitrate", bitrate);
ghb_ui_update(ud, "audio_rate", rate);
- mix_code = ghb_lookup_mix(mix);
+ mix_code = ghb_lookup_combo_int("audio_mix", mix);
mix_code = ghb_get_best_mix(
titleindex, track, acodec_code, mix_code);
ghb_ui_update(ud, "audio_mix", ghb_int64_value(mix_code));
@@ -1108,7 +1113,9 @@ set_preview_image(signal_user_data_t *ud)
gint preview_width, preview_height, target_height, width, height;
g_debug("set_preview_button_image ()");
- gint titleindex = ghb_settings_get_int(ud->settings, "title");
+ gint titleindex;
+
+ titleindex = ghb_settings_combo_int(ud->settings, "title");
if (titleindex < 0) return;
widget = GHB_WIDGET (ud->builder, "preview_frame");
gint frame = ghb_widget_int(widget) - 1;
@@ -1155,9 +1162,10 @@ title_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
ghb_widget_to_setting(ud->settings, widget);
check_dependency(ud, widget);
- titleindex = ghb_settings_get_int(ud->settings, "title");
+ titleindex = ghb_settings_combo_int(ud->settings, "title");
ghb_update_ui_combo_box (ud->builder, "audio_track", titleindex, FALSE);
ghb_update_ui_combo_box (ud->builder, "subtitle_lang", titleindex, FALSE);
+
preset = ghb_settings_get_string (ud->settings, "preset");
ghb_update_from_preset(ud, preset, "subtitle_lang");
g_free(preset);
@@ -1191,18 +1199,21 @@ audio_codec_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
GValue *asettings;
g_debug("audio_codec_changed_cb ()");
- acodec_code = ghb_widget_int(widget);
+ acodec_code = ghb_lookup_combo_int("audio_codec", ghb_widget_value(widget));
if (ghb_audio_is_passthru (prev_acodec) &&
!ghb_audio_is_passthru (acodec_code))
{
// Transition from passthru to not, put some audio settings back to
// pref settings
- gint titleindex = ghb_settings_get_int(ud->settings, "title");
- gint track = ghb_settings_get_int(ud->settings, "audio_track");
+ gint titleindex;
+ gint track;
+
+ titleindex = ghb_settings_combo_int(ud->settings, "title");
+ track = ghb_settings_combo_int(ud->settings, "audio_track");
ghb_ui_update(ud, "audio_bitrate", ghb_string_value("160"));
ghb_ui_update(ud, "audio_rate", ghb_string_value("source"));
- mix_code = ghb_lookup_mix(ghb_string_value("dpl2"));
+ mix_code = ghb_lookup_combo_int("audio_mix", ghb_string_value("dpl2"));
mix_code = ghb_get_best_mix( titleindex, track, acodec_code, mix_code);
ghb_ui_update(ud, "audio_mix", ghb_int64_value(mix_code));
ghb_ui_update(ud, "audio_drc", ghb_double_value(1.0));
@@ -1247,13 +1258,12 @@ audio_track_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
asettings = get_selected_asettings(ud);
if (asettings != NULL)
{
- gchar *track;
+ const gchar *track;
ghb_widget_to_setting(asettings, widget);
audio_list_refresh_selected(ud);
- track = ghb_settings_get_combo_option(asettings, "audio_track");
+ track = ghb_settings_combo_option(asettings, "audio_track");
ghb_settings_set_string(asettings, "audio_track_long", track);
- g_free(track);
}
}
@@ -1295,7 +1305,7 @@ validate_filter_widget(signal_user_data_t *ud, const gchar *name)
const gchar *str;
gboolean foundit = FALSE;
GtkComboBox *combo = GTK_COMBO_BOX(GHB_WIDGET(ud->builder, name));
- if (ghb_widget_index(GTK_WIDGET(combo)) < 0)
+ if (gtk_combo_box_get_active(combo) < 0)
{ // Validate user input
gchar *val = ghb_settings_get_string(ud->settings, name);
store = gtk_combo_box_get_model(combo);
@@ -1399,7 +1409,8 @@ target_size_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
clear_presets_selection(ud);
if (ghb_settings_get_boolean(ud->settings, "vquality_type_target"))
{
- gint titleindex = ghb_settings_get_int(ud->settings, "title");
+ gint titleindex;
+ titleindex = ghb_settings_combo_int(ud->settings, "title");
gint bitrate = ghb_calculate_target_bitrate (ud->settings, titleindex);
ghb_ui_update(ud, "video_bitrate", ghb_int64_value(bitrate));
}
@@ -1408,14 +1419,15 @@ target_size_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
void
start_chapter_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
{
+ gint start, end;
const gchar *name = gtk_widget_get_name(widget);
+
g_debug("start_chapter_changed_cb () %s", name);
ghb_widget_to_setting(ud->settings, widget);
- GtkWidget *end_ch = GHB_WIDGET (ud->builder, "end_chapter");
- gdouble start, end;
- gtk_spin_button_get_range (GTK_SPIN_BUTTON(end_ch), &start, &end);
start = ghb_settings_get_int(ud->settings, "start_chapter");
- gtk_spin_button_set_range (GTK_SPIN_BUTTON(end_ch), start, end);
+ end = ghb_settings_get_int(ud->settings, "end_chapter");
+ if (start > end)
+ ghb_ui_update(ud, "end_chapter", ghb_int_value(start));
check_dependency(ud, widget);
if (ghb_settings_get_boolean(ud->settings, "chapters_in_destination"))
{
@@ -1426,14 +1438,15 @@ start_chapter_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
void
end_chapter_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
{
+ gint start, end;
const gchar *name = gtk_widget_get_name(widget);
+
g_debug("end_chapter_changed_cb () %s", name);
ghb_widget_to_setting(ud->settings, widget);
- GtkWidget *start_ch = GHB_WIDGET (ud->builder, "start_chapter");
- gdouble start, end;
- gtk_spin_button_get_range (GTK_SPIN_BUTTON(start_ch), &start, &end);
+ start = ghb_settings_get_int(ud->settings, "start_chapter");
end = ghb_settings_get_int(ud->settings, "end_chapter");
- gtk_spin_button_set_range (GTK_SPIN_BUTTON(start_ch), start, end);
+ if (start > end)
+ ghb_ui_update(ud, "start_chapter", ghb_int_value(end));
check_dependency(ud, widget);
if (ghb_settings_get_boolean(ud->settings, "chapters_in_destination"))
{
@@ -1490,7 +1503,7 @@ crop_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
crop[1] = ghb_settings_get_int(ud->settings, "crop_bottom");
crop[2] = ghb_settings_get_int(ud->settings, "crop_left");
crop[3] = ghb_settings_get_int(ud->settings, "crop_right");
- titleindex = ghb_settings_get_combo_index(ud->settings, "title");
+ titleindex = ghb_settings_combo_int(ud->settings, "title");
if (ghb_get_title_info (&tinfo, titleindex))
{
gint width, height;
@@ -1654,8 +1667,8 @@ add_to_audio_list(signal_user_data_t *ud, GValue *settings)
GtkTreeIter iter;
GtkListStore *store;
GtkTreeSelection *selection;
- gchar *track, *codec, *br, *sr, *mix, *drc;
- gchar *s_track, *s_codec, *s_br, *s_sr, *s_mix;
+ const gchar *track, *codec, *br, *sr, *mix;
+ gchar *drc, *s_track, *s_codec, *s_br, *s_sr, *s_mix;
gdouble s_drc;
g_debug("add_to_audio_list ()");
@@ -1663,19 +1676,19 @@ add_to_audio_list(signal_user_data_t *ud, GValue *settings)
selection = gtk_tree_view_get_selection (treeview);
store = GTK_LIST_STORE(gtk_tree_view_get_model(treeview));
- track = ghb_settings_get_combo_option(settings, "audio_track"),
- codec = ghb_settings_get_combo_option(settings, "audio_codec"),
- br = ghb_settings_get_combo_option(settings, "audio_bitrate"),
- sr = ghb_settings_get_combo_option(settings, "audio_rate"),
- mix = ghb_settings_get_combo_option(settings, "audio_mix"),
+ track = ghb_settings_combo_option(settings, "audio_track");
+ codec = ghb_settings_combo_option(settings, "audio_codec");
+ br = ghb_settings_combo_option(settings, "audio_bitrate");
+ sr = ghb_settings_combo_option(settings, "audio_rate");
+ mix = ghb_settings_combo_option(settings, "audio_mix");
drc = ghb_settings_get_string(settings, "audio_drc");
- s_track = ghb_settings_get_string(settings, "audio_track"),
- s_codec = ghb_settings_get_string(settings, "audio_codec"),
- s_br = ghb_settings_get_string(settings, "audio_bitrate"),
- s_sr = ghb_settings_get_string(settings, "audio_rate"),
- s_mix = ghb_settings_get_string(settings, "audio_mix"),
- s_drc = ghb_settings_get_double(settings, "audio_drc"),
+ s_track = ghb_settings_get_string(settings, "audio_track");
+ s_codec = ghb_settings_get_string(settings, "audio_codec");
+ s_br = ghb_settings_get_string(settings, "audio_bitrate");
+ s_sr = ghb_settings_get_string(settings, "audio_rate");
+ s_mix = ghb_settings_get_string(settings, "audio_mix");
+ s_drc = ghb_settings_get_double(settings, "audio_drc");
gtk_list_store_append(store, &iter);
gtk_list_store_set(store, &iter,
@@ -1695,11 +1708,6 @@ add_to_audio_list(signal_user_data_t *ud, GValue *settings)
11, s_drc,
-1);
gtk_tree_selection_select_iter(selection, &iter);
- g_free(track);
- g_free(codec);
- g_free(br);
- g_free(sr);
- g_free(mix);
g_free(drc);
g_free(s_track);
g_free(s_codec);
@@ -1726,8 +1734,8 @@ audio_list_refresh_selected(signal_user_data_t *ud)
selection = gtk_tree_view_get_selection (treeview);
if (gtk_tree_selection_get_selected(selection, &store, &iter))
{
- gchar *track, *codec, *br, *sr, *mix, *drc;
- gchar *s_track, *s_codec, *s_br, *s_sr, *s_mix;
+ const gchar *track, *codec, *br, *sr, *mix;
+ gchar *drc, *s_track, *s_codec, *s_br, *s_sr, *s_mix;
gdouble s_drc;
// Get the row number
treepath = gtk_tree_model_get_path (store, &iter);
@@ -1741,19 +1749,19 @@ audio_list_refresh_selected(signal_user_data_t *ud)
return;
asettings = ghb_array_get_nth(audio_list, row);
- track = ghb_settings_get_combo_option(asettings, "audio_track"),
- codec = ghb_settings_get_combo_option(asettings, "audio_codec"),
- br = ghb_settings_get_combo_option(asettings, "audio_bitrate"),
- sr = ghb_settings_get_combo_option(asettings, "audio_rate"),
- mix = ghb_settings_get_combo_option(asettings, "audio_mix"),
+ track = ghb_settings_combo_option(asettings, "audio_track");
+ codec = ghb_settings_combo_option(asettings, "audio_codec");
+ br = ghb_settings_combo_option(asettings, "audio_bitrate");
+ sr = ghb_settings_combo_option(asettings, "audio_rate");
+ mix = ghb_settings_combo_option(asettings, "audio_mix");
drc = ghb_settings_get_string(asettings, "audio_drc");
- s_track = ghb_settings_get_string(asettings, "audio_track"),
- s_codec = ghb_settings_get_string(asettings, "audio_codec"),
- s_br = ghb_settings_get_string(asettings, "audio_bitrate"),
- s_sr = ghb_settings_get_string(asettings, "audio_rate"),
- s_mix = ghb_settings_get_string(asettings, "audio_mix"),
- s_drc = ghb_settings_get_double(asettings, "audio_drc"),
+ s_track = ghb_settings_get_string(asettings, "audio_track");
+ s_codec = ghb_settings_get_string(asettings, "audio_codec");
+ s_br = ghb_settings_get_string(asettings, "audio_bitrate");
+ s_sr = ghb_settings_get_string(asettings, "audio_rate");
+ s_mix = ghb_settings_get_string(asettings, "audio_mix");
+ s_drc = ghb_settings_get_double(asettings, "audio_drc");
gtk_list_store_set(GTK_LIST_STORE(store), &iter,
// These are displayed in list
@@ -1771,11 +1779,6 @@ audio_list_refresh_selected(signal_user_data_t *ud)
10, s_mix,
11, s_drc,
-1);
- g_free(track);
- g_free(codec);
- g_free(br);
- g_free(sr);
- g_free(mix);
g_free(drc);
g_free(s_track);
g_free(s_codec);
@@ -1830,6 +1833,7 @@ audio_list_selection_changed_cb(GtkTreeSelection *selection, signal_user_data_t
{
const gchar *track, *codec, *bitrate, *sample_rate, *mix;
gdouble drc;
+
gtk_tree_model_get(store, &iter,
6, &track,
7, &codec,
@@ -1866,7 +1870,7 @@ audio_add_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud)
GtkWidget *widget;
gint count;
GValue *audio_list;
- gchar *track;
+ const gchar *track;
g_debug("audio_add_clicked_cb ()");
asettings = ghb_dict_value_new();
@@ -1883,9 +1887,8 @@ audio_add_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud)
ghb_settings_take_value(asettings, "audio_mix", ghb_widget_value(widget));
widget = GHB_WIDGET(ud->builder, "audio_drc");
ghb_settings_take_value(asettings, "audio_drc", ghb_widget_value(widget));
- track = ghb_settings_get_combo_option(asettings, "audio_track");
+ track = ghb_settings_combo_option(asettings, "audio_track");
ghb_settings_set_string(asettings, "audio_track_long", track);
- g_free(track);
audio_list = ghb_settings_get_value(ud->settings, "audio_list");
if (audio_list == NULL)
@@ -1969,8 +1972,8 @@ audio_list_refresh(signal_user_data_t *ud)
{
do
{
- gchar *track, *codec, *br, *sr, *mix, *drc;
- gchar *s_track, *s_codec, *s_br, *s_sr, *s_mix;
+ const gchar *track, *codec, *br, *sr, *mix;
+ gchar *drc, *s_track, *s_codec, *s_br, *s_sr, *s_mix;
gdouble s_drc;
GValue *asettings;
@@ -1979,18 +1982,18 @@ audio_list_refresh(signal_user_data_t *ud)
return;
asettings = ghb_array_get_nth(audio_list, row);
- track = ghb_settings_get_combo_option(asettings, "audio_track"),
- codec = ghb_settings_get_combo_option(asettings, "audio_codec"),
- br = ghb_settings_get_combo_option(asettings, "audio_bitrate"),
- sr = ghb_settings_get_combo_option(asettings, "audio_rate"),
- mix = ghb_settings_get_combo_option(asettings, "audio_mix"),
+ track = ghb_settings_combo_option(asettings, "audio_track");
+ codec = ghb_settings_combo_option(asettings, "audio_codec");
+ br = ghb_settings_combo_option(asettings, "audio_bitrate");
+ sr = ghb_settings_combo_option(asettings, "audio_rate");
+ mix = ghb_settings_combo_option(asettings, "audio_mix");
drc = ghb_settings_get_string(asettings, "audio_drc");
- s_track = ghb_settings_get_string(asettings, "audio_track"),
- s_codec = ghb_settings_get_string(asettings, "audio_codec"),
- s_br = ghb_settings_get_string(asettings, "audio_bitrate"),
- s_sr = ghb_settings_get_string(asettings, "audio_rate"),
- s_mix = ghb_settings_get_string(asettings, "audio_mix"),
+ s_track = ghb_settings_get_string(asettings, "audio_track");
+ s_codec = ghb_settings_get_string(asettings, "audio_codec");
+ s_br = ghb_settings_get_string(asettings, "audio_bitrate");
+ s_sr = ghb_settings_get_string(asettings, "audio_rate");
+ s_mix = ghb_settings_get_string(asettings, "audio_mix");
s_drc = ghb_settings_get_double(asettings, "audio_drc");
gtk_list_store_set(GTK_LIST_STORE(store), &iter,
@@ -2009,11 +2012,6 @@ audio_list_refresh(signal_user_data_t *ud)
10, s_mix,
11, s_drc,
-1);
- g_free(track);
- g_free(codec);
- g_free(br);
- g_free(sr);
- g_free(mix);
g_free(drc);
g_free(s_track);
g_free(s_codec);
@@ -2325,7 +2323,8 @@ presets_list_selection_changed_cb(GtkTreeSelection *selection, signal_user_data_
// it shouldn't be
clear_audio_list(ud);
ghb_set_preset(ud, preset);
- gint titleindex = ghb_settings_get_int(ud->settings, "title");
+ gint titleindex;
+ titleindex = ghb_settings_combo_int(ud->settings, "title");
set_pref_audio(titleindex, ud);
ghb_settings_set_boolean(ud->settings, "preset_modified", FALSE);
ud->dont_clear_presets = FALSE;
@@ -2390,14 +2389,13 @@ add_to_queue_list(signal_user_data_t *ud, GValue *settings, GtkTreeIter *piter)
gint title, start_chapter, end_chapter, width, height, vqvalue;
gint source_width, source_height;
gboolean pass2, anamorphic, round_dim, keep_aspect, vqtype, turbo;
- GValue *gval;
g_debug("update_queue_list ()");
if (settings == NULL) return;
treeview = GTK_TREE_VIEW(GHB_WIDGET(ud->builder, "queue_list"));
store = GTK_TREE_STORE(gtk_tree_view_get_model(treeview));
- title = ghb_settings_get_int(settings, "title");
+ title = ghb_settings_combo_int(settings, "title");
start_chapter = ghb_settings_get_int(settings, "start_chapter");
end_chapter = ghb_settings_get_int(settings, "end_chapter");
pass2 = ghb_settings_get_boolean(settings, "two_pass");
@@ -2441,9 +2439,8 @@ add_to_queue_list(signal_user_data_t *ud, GValue *settings, GtkTreeIter *piter)
gboolean preset_modified;
gint mux;
- gval = ghb_settings_get_value(settings, "container");
- container = ghb_lookup_container_option(gval);
- mux = ghb_lookup_container(gval);
+ container = ghb_settings_combo_option(settings, "container");
+ mux = ghb_settings_combo_int(settings, "container");
dest = ghb_settings_get_string(settings, "destination");
preset_modified = ghb_settings_get_boolean(settings, "preset_modified");
preset = ghb_settings_get_string(settings, "preset");
@@ -2550,8 +2547,7 @@ add_to_queue_list(signal_user_data_t *ud, GValue *settings, GtkTreeIter *piter)
g_free(fps);
fps = g_strdup("Same As Source");
}
- gval = ghb_settings_get_value(settings, "video_codec");
- vcodec = ghb_lookup_vcodec_option(gval);
+ vcodec = ghb_settings_combo_option(settings, "video_codec");
vcodec_abbr = ghb_settings_get_string(settings, "video_codec");
source_width = ghb_settings_get_int(settings, "source_width");
source_height = ghb_settings_get_int(settings, "source_height");
@@ -2586,8 +2582,7 @@ add_to_queue_list(signal_user_data_t *ud, GValue *settings, GtkTreeIter *piter)
asettings = ghb_array_get_nth(audio_list, ii);
- gval = ghb_settings_get_value(asettings, "audio_codec");
- acodec = ghb_lookup_acodec_option(gval);
+ acodec = ghb_settings_combo_option(asettings, "audio_codec");
bitrate = ghb_settings_get_string(asettings, "audio_bitrate");
samplerate = ghb_settings_get_string(asettings, "audio_rate");
if (strcmp("source", samplerate) == 0)
@@ -2596,8 +2591,7 @@ add_to_queue_list(signal_user_data_t *ud, GValue *settings, GtkTreeIter *piter)
samplerate = g_strdup("Same As Source");
}
track = ghb_settings_get_string(asettings, "audio_track_long");
- gval = ghb_settings_get_value(asettings, "audio_mix");
- mix = ghb_lookup_mix_option(gval);
+ mix = ghb_settings_combo_option(asettings, "audio_mix");
g_string_append_printf(str,
"<b>Audio:</b> %s, Encoder: %s, Mixdown: %s, SampleRate: %s, Bitrate: %s",
track, acodec, mix, samplerate, bitrate);
@@ -2647,7 +2641,9 @@ estimate_file_size(signal_user_data_t *ud)
gint duration;
gint bitrate;
gint64 size;
- gint titleindex = ghb_settings_get_int(ud->settings, "title");
+ gint titleindex;
+
+ titleindex = ghb_settings_combo_int(ud->settings, "title");
if (titleindex < 0) return 0;
if (!ghb_get_title_info(&tinfo, titleindex)) return 0;
@@ -2666,8 +2662,9 @@ validate_settings(signal_user_data_t *ud)
// already in the queue
gchar *message, *dest;
gint count, ii;
- gint titleindex = ghb_settings_get_int(ud->settings, "title");
+ gint titleindex;
+ titleindex = ghb_settings_combo_int(ud->settings, "title");
if (titleindex < 0) return FALSE;
dest = ghb_settings_get_string(ud->settings, "destination");
count = ghb_array_len(ud->queue);
@@ -2823,7 +2820,7 @@ queue_add(signal_user_data_t *ud)
settings = ghb_value_dup(ud->settings);
ghb_settings_set_int(settings, "job_status", GHB_QUEUE_PENDING);
ghb_settings_set_int(settings, "job_unique_id", 0);
- titleindex = ghb_settings_get_int(settings, "title");
+ titleindex = ghb_settings_combo_int(settings, "title");
titlenum = ghb_get_title_number(titleindex);
ghb_settings_set_int(settings, "titlenum", titlenum);
ghb_array_append(ud->queue, settings);
@@ -3157,7 +3154,7 @@ queue_buttons_grey(signal_user_data_t *ud, gboolean working)
gboolean title_ok;
queue_count = ghb_array_len(ud->queue);
- titleindex = ghb_settings_get_int(ud->settings, "title");
+ titleindex = ghb_settings_combo_int(ud->settings, "title");
title_ok = (titleindex >= 0);
widget = GHB_WIDGET (ud->builder, "queue_start1");
@@ -3715,7 +3712,7 @@ update_chapter_list(signal_user_data_t *ud)
gint count;
g_debug("update_chapter_list ()");
- titleindex = ghb_settings_get_combo_index(ud->settings, "title");
+ titleindex = ghb_settings_combo_int(ud->settings, "title");
chapters = ghb_get_chapters(titleindex);
count = ghb_array_len(chapters);
if (chapters)
@@ -3887,7 +3884,9 @@ queue_list_size_allocate_cb(GtkWidget *widget, GtkAllocation *allocation, GtkCel
void
preview_button_clicked_cb(GtkWidget *xwidget, signal_user_data_t *ud)
{
- gint titleindex = ghb_settings_get_int(ud->settings, "title");
+ gint titleindex;
+
+ titleindex = ghb_settings_combo_int(ud->settings, "title");
if (titleindex < 0) return;
g_debug("titleindex %d", titleindex);
@@ -4236,67 +4235,67 @@ drive_changed_cb(GVolumeMonitor *gvm, GDrive *gd, signal_user_data_t *ud)
static gboolean
dbus_init (void)
{
- DBusError error;
+ DBusError error;
- if (dbus_connection != NULL)
- return TRUE;
+ if (dbus_connection != NULL)
+ return TRUE;
- dbus_error_init (&error);
- if (!(dbus_connection = dbus_bus_get (DBUS_BUS_SYSTEM, &error))) {
- g_debug ("could not get system bus: %s", error.message);
- dbus_error_free (&error);
- return FALSE;
- }
+ dbus_error_init (&error);
+ if (!(dbus_connection = dbus_bus_get (DBUS_BUS_SYSTEM, &error))) {
+ g_debug ("could not get system bus: %s", error.message);
+ dbus_error_free (&error);
+ return FALSE;
+ }
- //dbus_connection_setup_with_g_main (dbus_connection, NULL);
- //dbus_connection_set_exit_on_disconnect (dbus_connection, FALSE);
- //dbus_connection_add_filter (dbus_connection, gvm_dbus_filter_function, NULL, NULL);
+ //dbus_connection_setup_with_g_main (dbus_connection, NULL);
+ //dbus_connection_set_exit_on_disconnect (dbus_connection, FALSE);
+ //dbus_connection_add_filter (dbus_connection, gvm_dbus_filter_function, NULL, NULL);
- return TRUE;
+ return TRUE;
}
void
ghb_hal_init()
{
- DBusError error;
- char **devices;
- int nr;
-
- if (!dbus_init ())
- return;
-
- if (!(hal_ctx = libhal_ctx_new ())) {
- g_warning ("failed to create a HAL context!");
- return;
- }
-
- libhal_ctx_set_dbus_connection (hal_ctx, dbus_connection);
- dbus_error_init (&error);
- if (!libhal_ctx_init (hal_ctx, &error)) {
- g_warning ("libhal_ctx_init failed: %s", error.message ? error.message : "unknown");
- dbus_error_free (&error);
- libhal_ctx_free (hal_ctx);
- return;
- }
-
- /*
- * Do something to ping the HAL daemon - the above functions will
- * succeed even if hald is not running, so long as DBUS is. But we
- * want to exit silently if hald is not running, to behave on
- * pre-2.6 systems.
- */
- if (!(devices = libhal_get_all_devices (hal_ctx, &nr, &error))) {
- g_warning ("seems that HAL is not running: %s", error.message ? error.message : "unknown");
- dbus_error_free (&error);
-
- libhal_ctx_shutdown (hal_ctx, NULL);
- libhal_ctx_free (hal_ctx);
- return;
- }
-
- libhal_free_string_array (devices);
-
- //gvm_hal_claim_branch ("/org/freedesktop/Hal/devices/local");
+ DBusError error;
+ char **devices;
+ int nr;
+
+ if (!dbus_init ())
+ return;
+
+ if (!(hal_ctx = libhal_ctx_new ())) {
+ g_warning ("failed to create a HAL context!");
+ return;
+ }
+
+ libhal_ctx_set_dbus_connection (hal_ctx, dbus_connection);
+ dbus_error_init (&error);
+ if (!libhal_ctx_init (hal_ctx, &error)) {
+ g_warning ("libhal_ctx_init failed: %s", error.message ? error.message : "unknown");
+ dbus_error_free (&error);
+ libhal_ctx_free (hal_ctx);
+ return;
+ }
+
+ /*
+ * Do something to ping the HAL daemon - the above functions will
+ * succeed even if hald is not running, so long as DBUS is. But we
+ * want to exit silently if hald is not running, to behave on
+ * pre-2.6 systems.
+ */
+ if (!(devices = libhal_get_all_devices (hal_ctx, &nr, &error))) {
+ g_warning ("seems that HAL is not running: %s", error.message ? error.message : "unknown");
+ dbus_error_free (&error);
+
+ libhal_ctx_shutdown (hal_ctx, NULL);
+ libhal_ctx_free (hal_ctx);
+ return;
+ }
+
+ libhal_free_string_array (devices);
+
+ //gvm_hal_claim_branch ("/org/freedesktop/Hal/devices/local");
}
gboolean
diff --git a/gtk/src/hb-backend.c b/gtk/src/hb-backend.c
index 8b5b8dbd1..b05c249cc 100644
--- a/gtk/src/hb-backend.c
+++ b/gtk/src/hb-backend.c
@@ -38,7 +38,6 @@ typedef struct
const gchar *option;
const gchar *shortOpt;
gint ivalue;
- gdouble dvalue;
const gchar *svalue;
} options_map_t;
@@ -48,13 +47,28 @@ typedef struct
options_map_t *map;
} combo_opts_t;
+static const gchar *index_str[] =
+{
+ "0",
+ "1",
+ "2",
+ "3",
+ "4",
+ "5",
+ "6",
+ "7",
+ "8",
+ "9",
+ "10",
+};
+
static options_map_t d_container_opts[] =
{
- {"MKV", "mkv", HB_MUX_MKV, 0.0, "mkv"},
- {"MP4", "mp4", HB_MUX_MP4, 0.0, "mp4"},
- {"M4V", "m4v", HB_MUX_MP4, 0.0, "m4v"},
- {"AVI", "avi", HB_MUX_AVI, 0.0, "avi"},
- {"OGM", "ogm", HB_MUX_OGM, 0.0, "ogm"},
+ {"MKV", "mkv", HB_MUX_MKV, "mkv"},
+ {"MP4", "mp4", HB_MUX_MP4, "mp4"},
+ {"M4V", "m4v", HB_MUX_MP4, "m4v"},
+ {"AVI", "avi", HB_MUX_AVI, "avi"},
+ {"OGM", "ogm", HB_MUX_OGM, "ogm"},
};
combo_opts_t container_opts =
{
@@ -64,10 +78,10 @@ combo_opts_t container_opts =
static options_map_t d_deint_opts[] =
{
- {"None", "none", 0, 0.0, ""},
- {"Fast", "fast", 1, 0.0, "-1:-1:-1:0:1"},
- {"Slow", "slow", 2, 0.0, "2:-1:-1:0:1"},
- {"Slower", "slower", 3, 0.0, "0:-1:-1:0:1"},
+ {"None", "none", 0, ""},
+ {"Fast", "fast", 1, "-1:-1:-1:0:1"},
+ {"Slow", "slow", 2, "2:-1:-1:0:1"},
+ {"Slower", "slower", 3, "0:-1:-1:0:1"},
};
combo_opts_t deint_opts =
{
@@ -77,10 +91,10 @@ combo_opts_t deint_opts =
static options_map_t d_denoise_opts[] =
{
- {"None", "none", 0, 0.0, ""},
- {"Weak", "weak", 1, 0.0, "2:1:2:3"},
- {"Medium", "medium", 2, 0.0, "3:2:2:3"},
- {"Strong", "strong", 3, 0.0, "7:7:5:5"},
+ {"None", "none", 0, ""},
+ {"Weak", "weak", 1, "2:1:2:3"},
+ {"Medium", "medium", 2, "3:2:2:3"},
+ {"Strong", "strong", 3, "7:7:5:5"},
};
combo_opts_t denoise_opts =
{
@@ -90,10 +104,10 @@ combo_opts_t denoise_opts =
static options_map_t d_vcodec_opts[] =
{
- {"H.264 (x264)", "x264", HB_VCODEC_X264, 0.0, ""},
- {"MPEG-4 (XviD)", "xvid", HB_VCODEC_XVID, 0.0, ""},
- {"MPEG-4 (FFMPEG)", "ffmpeg", HB_VCODEC_FFMPEG, 0.0, ""},
- {"Theora", "theora", HB_VCODEC_THEORA, 0.0, ""},
+ {"H.264 (x264)", "x264", HB_VCODEC_X264, ""},
+ {"MPEG-4 (XviD)", "xvid", HB_VCODEC_XVID, ""},
+ {"MPEG-4 (FFMPEG)", "ffmpeg", HB_VCODEC_FFMPEG, ""},
+ {"Theora", "theora", HB_VCODEC_THEORA, ""},
};
combo_opts_t vcodec_opts =
{
@@ -103,10 +117,10 @@ combo_opts_t vcodec_opts =
static options_map_t d_acodec_opts[] =
{
- {"AAC (faac)", "faac", HB_ACODEC_FAAC, 0.0, "faac"},
- {"MP3 (lame)", "lame", HB_ACODEC_LAME, 0.0, "lame"},
- {"Vorbis", "vorbis", HB_ACODEC_VORBIS, 0.0, "vorbis"},
- {"AC3 (pass-thru)", "ac3", HB_ACODEC_AC3, 0.0, "ac3"},
+ {"AAC (faac)", "faac", HB_ACODEC_FAAC, "faac"},
+ {"MP3 (lame)", "lame", HB_ACODEC_LAME, "lame"},
+ {"Vorbis", "vorbis", HB_ACODEC_VORBIS, "vorbis"},
+ {"AC3 (pass-thru)", "ac3", HB_ACODEC_AC3, "ac3"},
};
combo_opts_t acodec_opts =
{
@@ -116,10 +130,10 @@ combo_opts_t acodec_opts =
static options_map_t d_direct_opts[] =
{
- {"None", "none", 0, 0.0, "none"},
- {"Spatial", "spatial", 1, 0.0, "spatial"},
- {"Temporal", "temporal", 2, 0.0, "temporal"},
- {"Automatic", "auto", 3, 0.0, "auto"},
+ {"None", "none", 0, "none"},
+ {"Spatial", "spatial", 1, "spatial"},
+ {"Temporal", "temporal", 2, "temporal"},
+ {"Automatic", "auto", 3, "auto"},
};
combo_opts_t direct_opts =
{
@@ -129,10 +143,10 @@ combo_opts_t direct_opts =
static options_map_t d_me_opts[] =
{
- {"Diamond", "dia", 0, 0.0, "dia"},
- {"Hexagon", "hex", 1, 0.0, "hex"},
- {"Uneven Multi-Hexagon", "umh", 2, 0.0, "umh"},
- {"Exhaustive", "esa", 3, 0.0, "esa"},
+ {"Diamond", "dia", 0, "dia"},
+ {"Hexagon", "hex", 1, "hex"},
+ {"Uneven Multi-Hexagon", "umh", 2, "umh"},
+ {"Exhaustive", "esa", 3, "esa"},
};
combo_opts_t me_opts =
{
@@ -142,13 +156,13 @@ combo_opts_t me_opts =
static options_map_t d_subme_opts[] =
{
- {"1", "1", 1, 0.0, "1"},
- {"2", "2", 2, 0.0, "2"},
- {"3", "3", 3, 0.0, "3"},
- {"4", "4", 4, 0.0, "4"},
- {"5", "5", 5, 0.0, "5"},
- {"6", "6", 6, 0.0, "6"},
- {"7", "7", 7, 0.0, "7"},
+ {"1", "1", 1, "1"},
+ {"2", "2", 2, "2"},
+ {"3", "3", 3, "3"},
+ {"4", "4", 4, "4"},
+ {"5", "5", 5, "5"},
+ {"6", "6", 6, "6"},
+ {"7", "7", 7, "7"},
};
combo_opts_t subme_opts =
{
@@ -158,10 +172,10 @@ combo_opts_t subme_opts =
static options_map_t d_analyse_opts[] =
{
- {"Some", "some", 0, 0.0, "some"},
- {"None", "none", 1, 0.0, "none"},
- {"All", "all", 2, 0.0, "all"},
- {"Custom", "custom", 3, 0.0, "all"},
+ {"Some", "some", 0, "some"},
+ {"None", "none", 1, "none"},
+ {"All", "all", 2, "all"},
+ {"Custom", "custom", 3, "all"},
};
combo_opts_t analyse_opts =
{
@@ -171,9 +185,9 @@ combo_opts_t analyse_opts =
static options_map_t d_trellis_opts[] =
{
- {"Disabled", "0", 0, 0.0, "0"},
- {"Final Macro Block", "1", 1, 0.0, "1"},
- {"Always", "2", 2, 0.0, "2"},
+ {"Disabled", "0", 0, "0"},
+ {"Final Macro Block", "1", 1, "1"},
+ {"Always", "2", 2, "2"},
};
combo_opts_t trellis_opts =
{
@@ -181,6 +195,50 @@ combo_opts_t trellis_opts =
d_trellis_opts
};
+combo_opts_t subtitle_opts =
+{
+ 0,
+ NULL
+};
+
+combo_opts_t title_opts =
+{
+ 0,
+ NULL
+};
+
+combo_opts_t audio_track_opts =
+{
+ 0,
+ NULL
+};
+
+typedef struct
+{
+ const gchar *name;
+ combo_opts_t *opts;
+} combo_name_map_t;
+
+combo_name_map_t combo_name_map[] =
+{
+ {"container", &container_opts},
+ {"deinterlace", &deint_opts},
+ {"tweak_deinterlace", &deint_opts},
+ {"denoise", &denoise_opts},
+ {"tweak_denoise", &denoise_opts},
+ {"video_codec", &vcodec_opts},
+ {"audio_codec", &acodec_opts},
+ {"x264_direct", &direct_opts},
+ {"x264_me", &me_opts},
+ {"x264_subme", &subme_opts},
+ {"x264_analyse", &analyse_opts},
+ {"x264_trellis", &trellis_opts},
+ {"subtitle_lang", &subtitle_opts},
+ {"title", &title_opts},
+ {"audio_track", &audio_track_opts},
+ {NULL, NULL}
+};
+
typedef struct iso639_lang_t
{
char * eng_name; /* Description in English */
@@ -193,7 +251,7 @@ typedef struct iso639_lang_t
static const iso639_lang_t language_table[] =
{
{ "Any", "", "zz", "und" },
- { "Afar", "", "aa", "aar" },
+ { "Afar", "", "aa", "aar" },
{ "Abkhazian", "", "ab", "abk" },
{ "Afrikaans", "", "af", "afr" },
{ "Akan", "", "ak", "aka" },
@@ -421,7 +479,7 @@ ghb_vquality_range(signal_user_data_t *ud, gint *min, gint *max)
{
if (ghb_settings_get_boolean(ud->settings, "directqp"))
{
- gint vcodec = ghb_settings_get_int(ud->settings, "video_codec");
+ gint vcodec = ghb_settings_combo_int(ud->settings, "video_codec");
// Only x264 and ffmpeg currently support direct qp/crf entry
if (vcodec == HB_VCODEC_X264)
{
@@ -446,287 +504,262 @@ ghb_vquality_range(signal_user_data_t *ud, gint *min, gint *max)
}
}
-gint
-ghb_lookup_vrate(const GValue *vrate)
-{
- gint ii;
- gchar *str;
- gint result = 0;
-
- str = ghb_value_string(vrate);
- for (ii = 0; ii < hb_video_rates_count; ii++)
- {
- if (strcmp(hb_video_rates[ii].string, str) == 0)
- {
- result = hb_video_rates[ii].rate;
- }
- }
- g_free(str);
- // Default to "same as source"
- return result;
-}
-
-gint
-ghb_lookup_vcodec(const GValue *vcodec)
+static gint
+lookup_generic_int(combo_opts_t *opts, const GValue *gval)
{
gint ii;
gchar *str;
- gint result = HB_VCODEC_FFMPEG;
+ gint result = -1;
- str = ghb_value_string(vcodec);
- for (ii = 0; ii < vcodec_opts.count; ii++)
+ str = ghb_value_string(gval);
+ for (ii = 0; ii < opts->count; ii++)
{
- if (strcmp(vcodec_opts.map[ii].shortOpt, str) == 0)
+ if (strcmp(opts->map[ii].shortOpt, str) == 0)
{
- result = vcodec_opts.map[ii].ivalue;
+ result = opts->map[ii].ivalue;
+ break;
}
}
g_free(str);
return result;
}
-const gchar*
-ghb_lookup_vcodec_option(const GValue *vcodec)
+static const gchar*
+lookup_generic_option(combo_opts_t *opts, const GValue *gval)
{
gint ii;
gchar *str;
const gchar *result = "";
- str = ghb_value_string(vcodec);
- for (ii = 0; ii < vcodec_opts.count; ii++)
+ str = ghb_value_string(gval);
+ for (ii = 0; ii < opts->count; ii++)
{
- if (strcmp(vcodec_opts.map[ii].shortOpt, str) == 0)
+ if (strcmp(opts->map[ii].shortOpt, str) == 0)
{
- result = vcodec_opts.map[ii].option;
+ result = opts->map[ii].option;
+ break;
}
}
g_free(str);
return result;
}
-gint
-ghb_lookup_container(const GValue *container)
+static gint
+lookup_mix_int(const GValue *mix)
{
gint ii;
gchar *str;
- gint result = -1;
+ gint result = HB_AMIXDOWN_DOLBYPLII;
- str = ghb_value_string(container);
- for (ii = 0; ii < container_opts.count; ii++)
+
+ str = ghb_value_string(mix);
+ for (ii = 0; ii < hb_audio_mixdowns_count; ii++)
{
- if (strcmp(container_opts.map[ii].shortOpt, str) == 0)
+ if (strcmp(hb_audio_mixdowns[ii].short_name, str) == 0)
{
- result = container_opts.map[ii].ivalue;
+ result = hb_audio_mixdowns[ii].amixdown;
+ break;
}
}
g_free(str);
return result;
}
-const gchar*
-ghb_lookup_container_option(const GValue *container)
+static const gchar*
+lookup_mix_option(const GValue *mix)
{
gint ii;
gchar *str;
- const gchar *result = "";
+ gchar *result = "None";
+
- str = ghb_value_string(container);
- for (ii = 0; ii < container_opts.count; ii++)
+ str = ghb_value_string(mix);
+ for (ii = 0; ii < hb_audio_mixdowns_count; ii++)
{
- if (strcmp(container_opts.map[ii].shortOpt, str) == 0)
+ if (strcmp(hb_audio_mixdowns[ii].short_name, str) == 0)
{
- result = container_opts.map[ii].option;
+ result = hb_audio_mixdowns[ii].human_readable_name;
+ break;
}
}
g_free(str);
return result;
}
-gint
-ghb_lookup_denoise(const GValue *denoise)
+static gint
+lookup_video_rate_int(const GValue *vrate)
{
gint ii;
gchar *str;
- gint result = -1;
+ gint result = 0;
- str = ghb_value_string(denoise);
- for (ii = 0; ii < denoise_opts.count; ii++)
+ str = ghb_value_string(vrate);
+ for (ii = 0; ii < hb_video_rates_count; ii++)
{
- if (strcmp(denoise_opts.map[ii].shortOpt, str) == 0)
+ if (strcmp(hb_video_rates[ii].string, str) == 0)
{
- result = denoise_opts.map[ii].ivalue;
+ result = hb_video_rates[ii].rate;
+ break;
}
}
g_free(str);
- // Custom
+ // Default to "same as source"
return result;
}
-gint
-ghb_lookup_deint(const GValue *deint)
+static const gchar*
+lookup_video_rate_option(const GValue *vrate)
{
gint ii;
gchar *str;
- gint result = -1;
+ const gchar *result = "Same as source";
- str = ghb_value_string(deint);
- for (ii = 0; ii < deint_opts.count; ii++)
+ str = ghb_value_string(vrate);
+ for (ii = 0; ii < hb_video_rates_count; ii++)
{
- if (strcmp(deint_opts.map[ii].shortOpt, str) == 0)
+ if (strcmp(hb_video_rates[ii].string, str) == 0)
{
- result = deint_opts.map[ii].ivalue;
+ result = hb_video_rates[ii].string;
+ break;
}
}
g_free(str);
- // Custom
+ // Default to "same as source"
return result;
}
-gint
-ghb_lookup_mux(const GValue *mux)
+static gint
+lookup_audio_rate_int(const GValue *rate)
{
gint ii;
gchar *str;
- gint result = HB_MUX_MKV;
+ gint result = 0;
- str = ghb_value_string(mux);
- for (ii = 0; ii < container_opts.count; ii++)
+ // Coincidentally, the string "source" will return 0
+ // which is our flag to use "same as source"
+ str = ghb_value_string(rate);
+ for (ii = 0; ii < hb_audio_rates_count; ii++)
{
- if (strcmp(container_opts.map[ii].shortOpt, str) == 0)
+ if (strcmp(hb_audio_rates[ii].string, str) == 0)
{
- result = container_opts.map[ii].ivalue;
+ result = hb_audio_rates[ii].rate;
+ break;
}
}
g_free(str);
return result;
}
-gint
-ghb_lookup_acodec(const GValue *acodec)
+static const gchar*
+lookup_audio_rate_option(const GValue *rate)
{
gint ii;
gchar *str;
- gint result = HB_ACODEC_FAAC;
+ const gchar *result = "Same as source";
- str = ghb_value_string(acodec);
- for (ii = 0; ii < acodec_opts.count; ii++)
+ // Coincidentally, the string "source" will return 0
+ // which is our flag to use "same as source"
+ str = ghb_value_string(rate);
+ for (ii = 0; ii < hb_audio_rates_count; ii++)
{
- if (strcmp(acodec_opts.map[ii].shortOpt, str) == 0)
+ if (strcmp(hb_audio_rates[ii].string, str) == 0)
{
- result = acodec_opts.map[ii].ivalue;
+ result = hb_audio_rates[ii].string;
+ break;
}
}
g_free(str);
return result;
}
-const gchar*
-ghb_lookup_acodec_option(const GValue *acodec)
+static gint
+lookup_audio_bitrate_int(const GValue *rate)
{
gint ii;
gchar *str;
- const gchar *result = "";
+ gint result = 0;
- str = ghb_value_string(acodec);
- for (ii = 0; ii < acodec_opts.count; ii++)
+ // Coincidentally, the string "source" will return 0
+ // which is our flag to use "same as source"
+ str = ghb_value_string(rate);
+ for (ii = 0; ii < hb_audio_bitrates_count; ii++)
{
- if (strcmp(acodec_opts.map[ii].shortOpt, str) == 0)
+ if (strcmp(hb_audio_bitrates[ii].string, str) == 0)
{
- result = acodec_opts.map[ii].option;
+ result = hb_audio_bitrates[ii].rate;
+ break;
}
}
g_free(str);
return result;
}
-const gchar*
-ghb_lookup_mix_option(const GValue *mix)
+static const gchar*
+lookup_audio_bitrate_option(const GValue *rate)
{
gint ii;
gchar *str;
- gchar *result = "None";
+ const gchar *result = "Same as source";
-
- str = ghb_value_string(mix);
- for (ii = 0; ii < hb_audio_mixdowns_count; ii++)
+ // Coincidentally, the string "source" will return 0
+ // which is our flag to use "same as source"
+ str = ghb_value_string(rate);
+ for (ii = 0; ii < hb_audio_bitrates_count; ii++)
{
- if (strcmp(hb_audio_mixdowns[ii].short_name, str) == 0)
+ if (strcmp(hb_audio_bitrates[ii].string, str) == 0)
{
- result = hb_audio_mixdowns[ii].human_readable_name;
+ result = hb_audio_bitrates[ii].string;
+ break;
}
}
g_free(str);
return result;
}
-gint
-ghb_lookup_mix(const GValue *mix)
+static gint
+lookup_audio_lang_int(const GValue *rate)
{
gint ii;
gchar *str;
- gint result = HB_AMIXDOWN_DOLBYPLII;
-
+ gint result = 0;
- str = ghb_value_string(mix);
- for (ii = 0; ii < hb_audio_mixdowns_count; ii++)
+ // Coincidentally, the string "source" will return 0
+ // which is our flag to use "same as source"
+ str = ghb_value_string(rate);
+ for (ii = 0; ii < LANG_TABLE_SIZE; ii++)
{
- if (strcmp(hb_audio_mixdowns[ii].short_name, str) == 0)
+ if (strcmp(language_table[ii].iso639_2, str) == 0)
{
- result = hb_audio_mixdowns[ii].amixdown;
+ result = ii;
+ break;
}
}
g_free(str);
return result;
}
-gint
-ghb_lookup_rate(const GValue *rate)
+static const gchar*
+lookup_audio_lang_option(const GValue *rate)
{
gint ii;
gchar *str;
- gint result = 0;
+ const gchar *result = "Same as source";
// Coincidentally, the string "source" will return 0
// which is our flag to use "same as source"
str = ghb_value_string(rate);
- for (ii = 0; ii < hb_audio_rates_count; ii++)
+ for (ii = 0; ii < LANG_TABLE_SIZE; ii++)
{
- if (strcmp(hb_audio_rates[ii].string, str) == 0)
+ if (strcmp(language_table[ii].iso639_2, str) == 0)
{
- result = hb_audio_rates[ii].rate;
+ result = language_table[ii].eng_name;
+ break;
}
}
g_free(str);
return result;
}
-#if 0
-gint
-ghb_lookup_bitrate(const gchar *bitrate)
-{
- gint ii;
-
- for (ii = 0; ii < hb_audio_bitrates_count; ii++)
- {
- if (strcmp(hb_audio_bitrates[ii].string, bitrate) == 0)
- {
- return hb_audio_bitrates[ii].rate;
- }
- }
- return 160;
-}
-
-gdouble
-ghb_lookup_drc(const gchar *drc)
-{
- gdouble dval;
- dval = g_strtod(drc, NULL);
- if (dval < 1.0) dval = 1.0;
- if (dval > 4.0) dval = 4.0;
- return dval;
-}
-#endif
-
static GValue*
get_acodec_value(gint val)
{
@@ -737,12 +770,7 @@ get_acodec_value(gint val)
{
if (acodec_opts.map[ii].ivalue == val)
{
- value = ghb_combo_value_new(
- ii,
- acodec_opts.map[ii].option,
- acodec_opts.map[ii].shortOpt,
- acodec_opts.map[ii].svalue,
- acodec_opts.map[ii].ivalue);
+ value = ghb_string_value_new(acodec_opts.map[ii].shortOpt);
break;
}
}
@@ -759,12 +787,7 @@ get_abitrate_value(gint val)
{
if (hb_audio_bitrates[ii].rate == val)
{
- value = ghb_combo_value_new(
- ii,
- hb_audio_bitrates[ii].string,
- hb_audio_bitrates[ii].string,
- hb_audio_bitrates[ii].string,
- hb_audio_bitrates[ii].rate);
+ value = ghb_string_value_new(hb_audio_bitrates[ii].string);
break;
}
}
@@ -781,12 +804,7 @@ get_amix_value(gint val)
{
if (hb_audio_mixdowns[ii].amixdown == val)
{
- value = ghb_combo_value_new(
- ii,
- hb_audio_mixdowns[ii].human_readable_name,
- hb_audio_mixdowns[ii].short_name,
- hb_audio_mixdowns[ii].internal_name,
- hb_audio_mixdowns[ii].amixdown);
+ value = ghb_string_value_new(hb_audio_mixdowns[ii].short_name);
break;
}
}
@@ -901,14 +919,14 @@ ghb_grey_combo_options(GtkBuilder *builder)
hb_audio_config_t *audio = NULL;
widget = GHB_WIDGET (builder, "title");
- titleindex = ghb_widget_int(widget);
+ titleindex = ghb_lookup_combo_int("title", ghb_widget_value(widget));
widget = GHB_WIDGET (builder, "audio_track");
- track = ghb_widget_int(widget);
+ track = ghb_lookup_combo_int("audio_track", ghb_widget_value(widget));
audio = get_hb_audio(titleindex, track);
widget = GHB_WIDGET (builder, "container");
- container = ghb_widget_int(widget);
+ container = ghb_lookup_combo_int("container", ghb_widget_value(widget));
widget = GHB_WIDGET (builder, "http_optimize_mp4");
- httpopt = ghb_widget_int(widget);
+ httpopt = ghb_widget_boolean(widget);
grey_combo_box_item(builder, "audio_codec", HB_ACODEC_FAAC, FALSE);
grey_combo_box_item(builder, "audio_codec", HB_ACODEC_LAME, FALSE);
@@ -934,7 +952,7 @@ ghb_grey_combo_options(GtkBuilder *builder)
grey_combo_box_item(builder, "video_codec", HB_VCODEC_THEORA, FALSE);
widget = GHB_WIDGET (builder, "audio_codec");
- acodec = ghb_widget_int(widget);
+ acodec = ghb_lookup_combo_int("audio_codec", ghb_widget_value(widget));
if (acodec != HB_ACODEC_AC3)
{
grey_combo_box_item(builder, "audio_mix", 0, TRUE);
@@ -1081,33 +1099,18 @@ init_combo_box(GtkBuilder *builder, const gchar *name)
G_TYPE_STRING, G_TYPE_INT, G_TYPE_STRING);
gtk_combo_box_set_model(combo, GTK_TREE_MODEL(store));
- gtk_cell_layout_clear(GTK_CELL_LAYOUT(combo));
- cell = GTK_CELL_RENDERER(gtk_cell_renderer_text_new());
- gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(combo), cell, TRUE);
- gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(combo), cell,
- "text", 0, "sensitive", 1, NULL);
-}
-
-// Set up the model for the combo box
-static void
-init_combo_box_entry(GtkBuilder *builder, const gchar *name)
-{
- GtkComboBox *combo;
- GtkListStore *store;
-
- g_debug("init_combo_box_entry() %s\n", name);
- // First modify the combobox model to allow greying out of options
- combo = GTK_COMBO_BOX(GHB_WIDGET(builder, name));
- // Store contains:
- // 1 - String to display
- // 2 - bool indicating whether the entry is selectable (grey or not)
- // 3 - String that is used for presets
- // 4 - Int value determined by backend
- // 5 - String value determined by backend
- store = gtk_list_store_new(5, G_TYPE_STRING, G_TYPE_BOOLEAN,
- G_TYPE_STRING, G_TYPE_INT, G_TYPE_STRING);
- gtk_combo_box_set_model(combo, GTK_TREE_MODEL(store));
- gtk_combo_box_entry_set_text_column(GTK_COMBO_BOX_ENTRY(combo), 0);
+ if (GTK_WIDGET_TYPE(combo) == GTK_TYPE_COMBO_BOX)
+ {
+ gtk_cell_layout_clear(GTK_CELL_LAYOUT(combo));
+ cell = GTK_CELL_RENDERER(gtk_cell_renderer_text_new());
+ gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(combo), cell, TRUE);
+ gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(combo), cell,
+ "text", 0, "sensitive", 1, NULL);
+ }
+ else
+ { // Combo box entry
+ gtk_combo_box_entry_set_text_column(GTK_COMBO_BOX_ENTRY(combo), 0);
+ }
}
static void
@@ -1244,13 +1247,15 @@ language_opts_set(GtkBuilder *builder, const gchar *name)
}
}
+static gchar **titles = NULL;
+
void
title_opts_set(GtkBuilder *builder, const gchar *name)
{
GtkTreeIter iter;
GtkListStore *store;
- hb_list_t * list;
- hb_title_t * title;
+ hb_list_t * list = NULL;
+ hb_title_t * title = NULL;
gint ii;
gint count = 0;
@@ -1263,6 +1268,20 @@ title_opts_set(GtkBuilder *builder, const gchar *name)
count = hb_list_count( list );
if (count > 100) count = 100;
}
+ if (titles) g_strfreev(titles);
+ if (title_opts.map) g_free(title_opts.map);
+ if (count > 0)
+ {
+ title_opts.count = count;
+ title_opts.map = g_malloc(count*sizeof(options_map_t));
+ titles = g_malloc((count+1) * sizeof(gchar*));
+ }
+ else
+ {
+ title_opts.count = 1;
+ title_opts.map = g_malloc(sizeof(options_map_t));
+ titles = NULL;
+ }
if( count <= 0 )
{
// No titles. Fill in a default.
@@ -1274,32 +1293,38 @@ title_opts_set(GtkBuilder *builder, const gchar *name)
3, -1,
4, "none",
-1);
+ title_opts.map[0].option = "No Titles";
+ title_opts.map[0].shortOpt = "none";
+ title_opts.map[0].ivalue = -1;
+ title_opts.map[0].svalue = "none";
return;
}
for (ii = 0; ii < count; ii++)
{
- gchar *option;
-
title = (hb_title_t*)hb_list_item(list, ii);
if (title->duration != 0)
{
- option = g_strdup_printf ("%d - %02dh%02dm%02ds",
+ titles[ii] = g_strdup_printf ("%d - %02dh%02dm%02ds",
title->index, title->hours, title->minutes, title->seconds);
}
else
{
- option = g_strdup_printf ("%d - Unknown Length", title->index);
+ titles[ii] = g_strdup_printf ("%d - Unknown Length", title->index);
}
gtk_list_store_append(store, &iter);
gtk_list_store_set(store, &iter,
- 0, option,
+ 0, titles[ii],
1, TRUE,
- 2, option,
+ 2, titles[ii],
3, ii,
- 4, option,
+ 4, titles[ii],
-1);
- g_free(option);
+ title_opts.map[ii].option = titles[ii];
+ title_opts.map[ii].shortOpt = titles[ii];
+ title_opts.map[ii].ivalue = ii;
+ title_opts.map[ii].svalue = titles[ii];
}
+ titles[ii] = NULL;
}
static gboolean
@@ -1328,8 +1353,8 @@ audio_track_opts_set(GtkBuilder *builder, const gchar *name, gint titleindex)
{
GtkTreeIter iter;
GtkListStore *store;
- hb_list_t * list;
- hb_title_t * title;
+ hb_list_t * list = NULL;
+ hb_title_t * title = NULL;
hb_audio_config_t * audio;
gint ii;
gint count = 0;
@@ -1347,6 +1372,17 @@ audio_track_opts_set(GtkBuilder *builder, const gchar *name, gint titleindex)
}
}
if (count > 10) count = 10;
+ if (audio_track_opts.map) g_free(audio_track_opts.map);
+ if (count > 0)
+ {
+ audio_track_opts.count = count;
+ audio_track_opts.map = g_malloc(count*sizeof(options_map_t));
+ }
+ else
+ {
+ audio_track_opts.count = 1;
+ audio_track_opts.map = g_malloc(sizeof(options_map_t));
+ }
if( count <= 0 )
{
// No audio. set some default
@@ -1358,38 +1394,43 @@ audio_track_opts_set(GtkBuilder *builder, const gchar *name, gint titleindex)
3, -1,
4, "none",
-1);
+ audio_track_opts.map[0].option = "No Audio";
+ audio_track_opts.map[0].shortOpt = "none";
+ audio_track_opts.map[0].ivalue = -1;
+ audio_track_opts.map[0].svalue = "none";
return;
}
for (ii = 0; ii < count; ii++)
{
- gchar *str;
-
audio = (hb_audio_config_t *) hb_list_audio_config_item( title->list_audio, ii );
gtk_list_store_append(store, &iter);
- str = g_strdup_printf("%d", ii);
gtk_list_store_set(store, &iter,
0, audio->lang.description,
1, TRUE,
- 2, str,
+ 2, index_str[ii],
3, ii,
- 4, str,
+ 4, index_str[ii],
-1);
- g_free(str);
+ audio_track_opts.map[ii].option = audio->lang.description,
+ audio_track_opts.map[ii].shortOpt = index_str[ii];
+ audio_track_opts.map[ii].ivalue = ii;
+ audio_track_opts.map[ii].svalue = index_str[ii];
}
}
+
void
subtitle_opts_set(GtkBuilder *builder, const gchar *name, gint titleindex)
{
GtkTreeIter iter;
GtkListStore *store;
- hb_list_t * list;
- hb_title_t * title;
+ hb_list_t * list = NULL;
+ hb_title_t * title = NULL;
hb_subtitle_t * subtitle;
gint ii;
gint count = 0;
- g_debug("subtitle_opts_set ()\n");
+ g_debug("subtitle_opts_set () %s\n", name);
store = get_combo_box_store(builder, name);
gtk_list_store_clear(store);
if (h_scan != NULL)
@@ -1402,6 +1443,17 @@ subtitle_opts_set(GtkBuilder *builder, const gchar *name, gint titleindex)
}
}
if (count > 10) count = 10;
+ if (subtitle_opts.map) g_free(subtitle_opts.map);
+ if (count > 0)
+ {
+ subtitle_opts.count = count+2;
+ subtitle_opts.map = g_malloc((count+2)*sizeof(options_map_t));
+ }
+ else
+ {
+ subtitle_opts.count = LANG_TABLE_SIZE+2;
+ subtitle_opts.map = g_malloc((LANG_TABLE_SIZE+2)*sizeof(options_map_t));
+ }
// Add options for "none" and "autoselect"
gtk_list_store_append(store, &iter);
gtk_list_store_set(store, &iter,
@@ -1411,27 +1463,42 @@ subtitle_opts_set(GtkBuilder *builder, const gchar *name, gint titleindex)
3, -2,
4, "none",
-1);
+ subtitle_opts.map[0].option = "None";
+ subtitle_opts.map[0].shortOpt = "none";
+ subtitle_opts.map[0].ivalue = -2;
+ subtitle_opts.map[0].svalue = "none";
gtk_list_store_append(store, &iter);
gtk_list_store_set(store, &iter,
- 0, "Same As Audio",
+ 0, "Same as audio",
1, TRUE,
2, "auto",
3, -1,
4, "auto",
-1);
- for (ii = 0; ii < count; ii++)
+ subtitle_opts.map[0].option = "Same as audio";
+ subtitle_opts.map[0].shortOpt = "auto";
+ subtitle_opts.map[0].ivalue = -1;
+ subtitle_opts.map[0].svalue = "auto";
+ if (count >0)
{
- subtitle = (hb_subtitle_t *) hb_list_item( title->list_subtitle, ii );
- gtk_list_store_append(store, &iter);
- gtk_list_store_set(store, &iter,
- 0, subtitle->lang,
- 1, TRUE,
- 2, subtitle->iso639_2,
- 3, ii,
- 4, subtitle->iso639_2,
- -1);
+ for (ii = 0; ii < count; ii++)
+ {
+ subtitle = (hb_subtitle_t *)hb_list_item(title->list_subtitle, ii);
+ gtk_list_store_append(store, &iter);
+ gtk_list_store_set(store, &iter,
+ 0, subtitle->lang,
+ 1, TRUE,
+ 2, subtitle->iso639_2,
+ 3, ii,
+ 4, subtitle->iso639_2,
+ -1);
+ subtitle_opts.map[ii+2].option = subtitle->lang;
+ subtitle_opts.map[ii+2].shortOpt = subtitle->iso639_2;
+ subtitle_opts.map[ii+2].ivalue = ii;
+ subtitle_opts.map[ii+2].svalue = subtitle->iso639_2;
+ }
}
- if (titleindex == -1)
+ else
{
for (ii = 0; ii < LANG_TABLE_SIZE; ii++)
{
@@ -1443,6 +1510,10 @@ subtitle_opts_set(GtkBuilder *builder, const gchar *name, gint titleindex)
3, ii,
4, language_table[ii].iso639_2,
-1);
+ subtitle_opts.map[ii+2].option = language_table[ii].eng_name;
+ subtitle_opts.map[ii+2].shortOpt = language_table[ii].iso639_2;
+ subtitle_opts.map[ii+2].ivalue = ii;
+ subtitle_opts.map[ii+2].svalue = language_table[ii].iso639_2;
}
}
}
@@ -1521,6 +1592,7 @@ generic_opts_set(GtkBuilder *builder, const gchar *name, combo_opts_t *opts)
gint ii;
g_debug("generic_opts_set ()\n");
+ if (name == NULL || opts == NULL) return;
store = get_combo_box_store(builder, name);
gtk_list_store_clear(store);
for (ii = 0; ii < opts->count; ii++)
@@ -1536,6 +1608,63 @@ generic_opts_set(GtkBuilder *builder, const gchar *name, combo_opts_t *opts)
}
}
+combo_opts_t*
+find_combo_table(const gchar *name)
+{
+ gint ii;
+
+ for (ii = 0; combo_name_map[ii].name != NULL; ii++)
+ {
+ if (strcmp(name, combo_name_map[ii].name) == 0)
+ {
+ return combo_name_map[ii].opts;
+ }
+ }
+ return NULL;
+}
+
+gint
+ghb_lookup_combo_int(const gchar *name, const GValue *gval)
+{
+ if (strcmp(name, "audio_bitrate") == 0)
+ return lookup_audio_bitrate_int(gval);
+ else if (strcmp(name, "audio_rate") == 0)
+ return lookup_audio_rate_int(gval);
+ else if (strcmp(name, "framerate") == 0)
+ return lookup_video_rate_int(gval);
+ else if (strcmp(name, "audio_mix") == 0)
+ return lookup_mix_int(gval);
+ else if (strcmp(name, "source_audio_lang") == 0)
+ return lookup_audio_lang_int(gval);
+ else
+ {
+ return lookup_generic_int(find_combo_table(name), gval);
+ }
+ g_warning("ghb_lookup_combo_int() couldn't find %s", name);
+ return 0;
+}
+
+const gchar*
+ghb_lookup_combo_option(const gchar *name, const GValue *gval)
+{
+ if (strcmp(name, "audio_bitrate") == 0)
+ return lookup_audio_bitrate_option(gval);
+ else if (strcmp(name, "audio_rate") == 0)
+ return lookup_audio_rate_option(gval);
+ else if (strcmp(name, "framerate") == 0)
+ return lookup_video_rate_option(gval);
+ else if (strcmp(name, "audio_mix") == 0)
+ return lookup_mix_option(gval);
+ else if (strcmp(name, "source_audio_lang") == 0)
+ return lookup_audio_lang_option(gval);
+ else
+ {
+ return lookup_generic_option(find_combo_table(name), gval);
+ }
+ g_warning("ghb_lookup_combo_int() couldn't find %s", name);
+ return 0;
+}
+
void
ghb_update_ui_combo_box(GtkBuilder *builder, const gchar *name, gint user_data, gboolean all)
{
@@ -1563,46 +1692,50 @@ ghb_update_ui_combo_box(GtkBuilder *builder, const gchar *name, gint user_data,
}
}
}
- if (all || strcmp(name, "audio_bitrate") == 0)
+ if (all)
+ {
audio_bitrate_opts_set(builder, "audio_bitrate");
- if (all || strcmp(name, "audio_rate") == 0)
audio_samplerate_opts_set(builder, "audio_rate", hb_audio_rates, hb_audio_rates_count);
- if (all || strcmp(name, "framerate") == 0)
video_rate_opts_set(builder, "framerate", hb_video_rates, hb_video_rates_count);
- if (all || strcmp(name, "audio_mix") == 0)
mix_opts_set(builder, "audio_mix");
- if (all || strcmp(name, "source_audio_lang") == 0)
language_opts_set(builder, "source_audio_lang");
- if (all || strcmp(name, "subtitle_lang") == 0)
subtitle_opts_set(builder, "subtitle_lang", user_data);
- if (all || strcmp(name, "title") == 0)
title_opts_set(builder, "title");
- if (all || strcmp(name, "audio_track") == 0)
audio_track_opts_set(builder, "audio_track", user_data);
- if (all || strcmp(name, "container") == 0)
generic_opts_set(builder, "container", &container_opts);
- if (all || strcmp(name, "deinterlace") == 0)
generic_opts_set(builder, "deinterlace", &deint_opts);
- if (all || strcmp(name, "tweak_deinterlace") == 0)
generic_opts_set(builder, "tweak_deinterlace", &deint_opts);
- if (all || strcmp(name, "denoise") == 0)
generic_opts_set(builder, "denoise", &denoise_opts);
- if (all || strcmp(name, "tweak_denoise") == 0)
generic_opts_set(builder, "tweak_denoise", &denoise_opts);
- if (all || strcmp(name, "video_codec") == 0)
generic_opts_set(builder, "video_codec", &vcodec_opts);
- if (all || strcmp(name, "audio_codec") == 0)
generic_opts_set(builder, "audio_codec", &acodec_opts);
- if (all || strcmp(name, "x264_direct") == 0)
generic_opts_set(builder, "x264_direct", &direct_opts);
- if (all || strcmp(name, "x264_me") == 0)
generic_opts_set(builder, "x264_me", &me_opts);
- if (all || strcmp(name, "x264_subme") == 0)
generic_opts_set(builder, "x264_subme", &subme_opts);
- if (all || strcmp(name, "x264_analyse") == 0)
generic_opts_set(builder, "x264_analyse", &analyse_opts);
- if (all || strcmp(name, "x264_trellis") == 0)
generic_opts_set(builder, "x264_trellis", &trellis_opts);
+ }
+ else
+ {
+ if (strcmp(name, "audio_bitrate") == 0)
+ audio_bitrate_opts_set(builder, "audio_bitrate");
+ else if (strcmp(name, "audio_rate") == 0)
+ audio_samplerate_opts_set(builder, "audio_rate", hb_audio_rates, hb_audio_rates_count);
+ else if (strcmp(name, "framerate") == 0)
+ video_rate_opts_set(builder, "framerate", hb_video_rates, hb_video_rates_count);
+ else if (strcmp(name, "audio_mix") == 0)
+ mix_opts_set(builder, "audio_mix");
+ else if (strcmp(name, "source_audio_lang") == 0)
+ language_opts_set(builder, "source_audio_lang");
+ else if (strcmp(name, "subtitle_lang") == 0)
+ subtitle_opts_set(builder, "subtitle_lang", user_data);
+ else if (strcmp(name, "title") == 0)
+ title_opts_set(builder, "title");
+ else if (strcmp(name, "audio_track") == 0)
+ audio_track_opts_set(builder, "audio_track", user_data);
+ else
+ generic_opts_set(builder, name, find_combo_table(name));
+ }
if (handler_id > 0)
{
g_signal_handler_unblock ((gpointer)combo, handler_id);
@@ -1612,6 +1745,8 @@ ghb_update_ui_combo_box(GtkBuilder *builder, const gchar *name, gint user_data,
static void
init_ui_combo_boxes(GtkBuilder *builder)
{
+ gint ii;
+
init_combo_box(builder, "audio_bitrate");
init_combo_box(builder, "audio_rate");
init_combo_box(builder, "framerate");
@@ -1620,18 +1755,10 @@ init_ui_combo_boxes(GtkBuilder *builder)
init_combo_box(builder, "subtitle_lang");
init_combo_box(builder, "title");
init_combo_box(builder, "audio_track");
- init_combo_box(builder, "container");
- init_combo_box(builder, "deinterlace");
- init_combo_box_entry(builder, "tweak_deinterlace");
- init_combo_box(builder, "denoise");
- init_combo_box_entry(builder, "tweak_denoise");
- init_combo_box(builder, "video_codec");
- init_combo_box(builder, "audio_codec");
- init_combo_box(builder, "x264_direct");
- init_combo_box(builder, "x264_me");
- init_combo_box(builder, "x264_subme");
- init_combo_box(builder, "x264_analyse");
- init_combo_box(builder, "x264_trellis");
+ for (ii = 0; combo_name_map[ii].name != NULL; ii++)
+ {
+ init_combo_box(builder, combo_name_map[ii].name);
+ }
}
static const char * turbo_opts =
@@ -1703,7 +1830,7 @@ ghb_ac3_in_audio_list(const GValue *audio_list)
gint acodec;
asettings = ghb_array_get_nth(audio_list, ii);
- acodec = ghb_settings_get_int(asettings, "audio_codec");
+ acodec = ghb_settings_combo_int(asettings, "audio_codec");
if (acodec == HB_ACODEC_AC3)
return TRUE;
}
@@ -2090,7 +2217,9 @@ ghb_set_scale(signal_user_data_t *ud, gint mode)
/* No valid title, stop right there */
return;
}
- gint titleindex = ghb_settings_get_int(ud->settings, "title");
+ gint titleindex;
+
+ titleindex = ghb_settings_combo_int(ud->settings, "title");
title = hb_list_item( list, titleindex );
if (title == NULL) return;
job = title->job;
@@ -2219,7 +2348,8 @@ ghb_set_scale(signal_user_data_t *ud, gint mode)
job->maxHeight = max_height;
job->crop[0] = crop[0]; job->crop[1] = crop[1];
job->crop[2] = crop[2]; job->crop[3] = crop[3];
- hb_set_anamorphic_size( job, &width, &height, &par_width, &par_height );
+ hb_set_anamorphic_size( job, &width, &height,
+ &par_width, &par_height );
}
else
{
@@ -2301,7 +2431,7 @@ set_preview_job_settings(hb_job_t *job, GValue *settings)
}
job->width = ghb_settings_get_int(settings, "scale_width");
job->height = ghb_settings_get_int(settings, "scale_height");
- gint deint = ghb_settings_get_int(settings, "deinterlace");
+ gint deint = ghb_settings_combo_int(settings, "deinterlace");
gboolean decomb = ghb_settings_get_boolean(settings, "decomb");
job->deinterlace = (!decomb && deint == 0) ? 0 : 1;
}
@@ -2336,7 +2466,7 @@ ghb_guess_bitrate(GValue *settings)
gint vcodec;
gdouble vquality;
- vcodec = ghb_settings_get_int(settings, "video_codec");
+ vcodec = ghb_settings_combo_int(settings, "video_codec");
vquality = ghb_settings_get_double(settings, "video_quality")/100;
if (vcodec == HB_VCODEC_X264 &&
!ghb_settings_get_boolean(settings, "linear_vquality"))
@@ -2434,7 +2564,8 @@ ghb_validate_filters(signal_user_data_t *ud)
}
g_free(str);
// deinte 4
- index = ghb_settings_get_combo_index(ud->settings, "tweak_deinterlace");
+ index = ghb_lookup_combo_int("tweak_deinterlace",
+ ghb_settings_get_value(ud->settings, "tweak_deinterlace"));
if (index < 0)
{
str = ghb_settings_get_string(ud->settings, "tweak_deinterlace");
@@ -2468,7 +2599,8 @@ ghb_validate_filters(signal_user_data_t *ud)
g_free(str);
#endif
// denois 4
- index = ghb_settings_get_combo_index(ud->settings, "tweak_denoise");
+ index = ghb_lookup_combo_int("tweak_denoise",
+ ghb_settings_get_value(ud->settings, "tweak_denoise"));
if (index < 0)
{
str = ghb_settings_get_string(ud->settings, "tweak_denoise");
@@ -2494,8 +2626,8 @@ ghb_validate_video(signal_user_data_t *ud)
gint vcodec, mux;
gchar *message;
- mux = ghb_settings_get_int(ud->settings, "container");
- vcodec = ghb_settings_get_int(ud->settings, "video_codec");
+ mux = ghb_settings_combo_int(ud->settings, "container");
+ vcodec = ghb_settings_combo_int(ud->settings, "video_codec");
if ((mux == HB_MUX_MP4 || mux == HB_MUX_AVI) &&
(vcodec == HB_VCODEC_THEORA))
{
@@ -2538,7 +2670,7 @@ ghb_validate_container(signal_user_data_t *ud)
gint container;
gchar *message;
- container = ghb_settings_get_int(ud->settings, "container");
+ container = ghb_settings_combo_int(ud->settings, "container");
if (container == HB_MUX_MP4)
{
const GValue *audio_list;
@@ -2567,7 +2699,7 @@ ghb_validate_container(signal_user_data_t *ud)
GValue *asettings;
asettings = ghb_array_get_nth(audio_list, ii);
- gint acodec = ghb_settings_get_int(asettings, "audio_codec");
+ gint acodec = ghb_settings_combo_int(asettings, "audio_codec");
if (acodec == HB_ACODEC_AC3)
{
GValue *value;
@@ -2599,10 +2731,12 @@ ghb_validate_audio(signal_user_data_t *ud)
return FALSE;
}
- gint titleindex = ghb_settings_get_int(ud->settings, "title");
+ gint titleindex;
+
+ titleindex = ghb_settings_combo_int(ud->settings, "title");
title = hb_list_item( list, titleindex );
if (title == NULL) return FALSE;
- gint mux = ghb_settings_get_int(ud->settings, "container");
+ gint mux = ghb_settings_combo_int(ud->settings, "container");
const GValue *audio_list;
gint count, ii;
@@ -2615,9 +2749,10 @@ ghb_validate_audio(signal_user_data_t *ud)
hb_audio_config_t *taudio;
asettings = ghb_array_get_nth(audio_list, ii);
- gint track = ghb_settings_get_int(asettings, "audio_track");
- gint codec = ghb_settings_get_int(asettings, "audio_codec");
- taudio = (hb_audio_config_t *) hb_list_audio_config_item( title->list_audio, track );
+ gint track = ghb_settings_combo_int(asettings, "audio_track");
+ gint codec = ghb_settings_combo_int(asettings, "audio_codec");
+ 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))
{
// Not supported. AC3 is passthrough only, so input must be AC3
@@ -2704,7 +2839,7 @@ ghb_validate_audio(signal_user_data_t *ud)
value = get_acodec_value(codec);
ghb_settings_take_value(asettings, "audio_codec", value);
}
- gint mix = ghb_settings_get_int (asettings, "audio_mix");
+ gint mix = ghb_settings_combo_int (asettings, "audio_mix");
gboolean allow_mono = TRUE;
gboolean allow_stereo = TRUE;
gboolean allow_dolby = TRUE;
@@ -2776,7 +2911,7 @@ ghb_validate_vquality(GValue *settings)
gint min, max;
if (ghb_settings_get_boolean(settings, "nocheckvquality")) return TRUE;
- vcodec = ghb_settings_get_int(settings, "video_codec");
+ vcodec = ghb_settings_combo_int(settings, "video_codec");
if (ghb_settings_get_boolean(settings, "vquality_type_constant"))
{
if (!ghb_settings_get_boolean(settings, "directqp"))
@@ -2869,7 +3004,7 @@ ghb_add_job(GValue *js, gint unique_id)
if (job == NULL) return;
tweaks = ghb_settings_get_boolean(js, "allow_tweaks");
- job->mux = ghb_lookup_mux(ghb_settings_get_value(js, "container"));
+ job->mux = ghb_settings_combo_int(js, "container");
if (job->mux == HB_MUX_MP4)
{
job->largeFileSize = ghb_settings_get_boolean(js, "large_mp4");
@@ -2925,8 +3060,8 @@ ghb_add_job(GValue *js, gint unique_id)
gboolean decomb = ghb_settings_get_boolean(js, "decomb");
- gint deint = ghb_lookup_deint(
- ghb_settings_get_value(js, tweaks ? "tweak_deinterlace":"deinterlace"));
+ gint deint = ghb_settings_combo_int(js,
+ tweaks ? "tweak_deinterlace":"deinterlace");
if (!decomb)
job->deinterlace = (deint != 0) ? 1 : 0;
else
@@ -3001,8 +3136,8 @@ ghb_add_job(GValue *js, gint unique_id)
hb_filter_deblock.settings = deblock_str;
hb_list_add( job->filters, &hb_filter_deblock );
}
- gint denoise = ghb_lookup_denoise(
- ghb_settings_get_value(js, tweaks ? "tweak_denoise" : "denoise"));
+ gint denoise = ghb_settings_combo_int(js,
+ tweaks ? "tweak_denoise" : "denoise");
if( denoise != 0 )
{
if (denoise > 0)
@@ -3016,7 +3151,7 @@ ghb_add_job(GValue *js, gint unique_id)
job->width = ghb_settings_get_int(js, "scale_width");
job->height = ghb_settings_get_int(js, "scale_height");
- job->vcodec = ghb_lookup_vcodec(ghb_settings_get_value(js, "video_codec"));
+ job->vcodec = ghb_settings_combo_int(js, "video_codec");
if ((job->mux == HB_MUX_MP4 || job->mux == HB_MUX_AVI) &&
(job->vcodec == HB_VCODEC_THEORA))
{
@@ -3071,7 +3206,7 @@ ghb_add_job(GValue *js, gint unique_id)
job->vfr = FALSE;
}
- gint vrate = ghb_lookup_vrate(ghb_settings_get_value(js, "framerate"));
+ gint vrate = ghb_settings_combo_int(js, "framerate");
if( vrate == 0 || job->vfr )
{
job->vrate = title->rate;
@@ -3110,9 +3245,9 @@ ghb_add_job(GValue *js, gint unique_id)
asettings = ghb_array_get_nth(audio_list, ii);
audio.in.track = ghb_settings_get_int(asettings, "audio_track");
audio.out.track = tcount;
- audio.out.codec = ghb_lookup_acodec(
- ghb_settings_get_value(asettings, "audio_codec"));
- taudio = (hb_audio_config_t *) hb_list_audio_config_item( title->list_audio, audio.in.track );
+ audio.out.codec = ghb_settings_combo_int(asettings, "audio_codec");
+ 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))
{
// Not supported. AC3 is passthrough only, so input must be AC3
@@ -3155,15 +3290,13 @@ ghb_add_job(GValue *js, gint unique_id)
}
else
{
- audio.out.mixdown = ghb_lookup_mix(
- ghb_settings_get_value (asettings, "audio_mix"));
+ audio.out.mixdown = ghb_settings_combo_int(asettings, "audio_mix");
// Make sure the mixdown is valid and pick a new one if not.
audio.out.mixdown = ghb_get_best_mix(titleindex,
audio.in.track, audio.out.codec, audio.out.mixdown);
audio.out.bitrate =
- ghb_settings_get_int(asettings, "audio_bitrate");
- gint srate = ghb_lookup_rate(
- ghb_settings_get_value(asettings, "audio_rate"));
+ ghb_settings_combo_int(asettings, "audio_bitrate");
+ gint srate = ghb_settings_combo_int(asettings, "audio_rate");
if (srate == 0) // 0 is same as source
audio.out.samplerate = taudio->in.samplerate;
else
diff --git a/gtk/src/hb-backend.h b/gtk/src/hb-backend.h
index 921c822d1..df0aabcdb 100644
--- a/gtk/src/hb-backend.h
+++ b/gtk/src/hb-backend.h
@@ -131,17 +131,7 @@ gboolean ghb_validate_video(signal_user_data_t *ud);
gboolean ghb_validate_filters(signal_user_data_t *ud);
gboolean ghb_validate_filter_string(const gchar *str, gint max_fields);
void ghb_hb_cleanup(gboolean partial);
-gint ghb_lookup_acodec(const GValue *acodec);
-const gchar* ghb_lookup_acodec_option(const GValue *acodec);
-gint ghb_lookup_mix(const GValue *mix);
-const gchar* ghb_lookup_mix_option(const GValue *mix);
-const gchar* ghb_lookup_container_option(const GValue *container);
-gint ghb_lookup_container(const GValue *container);
-const gchar* ghb_lookup_vcodec_option(const GValue *vcodec);
-#if 0
-gint ghb_lookup_bitrate(const gchar *bitrate);
-gint ghb_lookup_rate(const gchar *rate);
-gdouble ghb_lookup_drc(const gchar *drc);
-#endif
+gint ghb_lookup_combo_int(const gchar *name, const GValue *acodec);
+const gchar* ghb_lookup_combo_option(const gchar *name, const GValue *acodec);
#endif // _HBBACKEND_H_
diff --git a/gtk/src/internal_defaults.xml b/gtk/src/internal_defaults.xml
index b562117e6..7b7842007 100644
--- a/gtk/src/internal_defaults.xml
+++ b/gtk/src/internal_defaults.xml
@@ -59,7 +59,7 @@
<key>x264_refs</key>
<integer>1</integer>
<key>x264_subme</key>
- <integer>5</integer>
+ <integer>6</integer>
<key>x264_trellis</key>
<integer>0</integer>
<key>x264_weighted_bframes</key>
diff --git a/gtk/src/presets.c b/gtk/src/presets.c
index 8f8a0cd65..e3ec46591 100644
--- a/gtk/src/presets.c
+++ b/gtk/src/presets.c
@@ -745,19 +745,22 @@ ghb_settings_save(signal_user_data_t *ud, const gchar *name)
while (g_hash_table_iter_next(
&iter, (gpointer*)(void*)&key, (gpointer*)(void*)&value))
{
+ const GValue *gval;
+ gchar *key2;
+
+ key2 = key;
if (!autoscale)
{
- if (strcmp(key, "scale_width"))
+ if (strcmp(key, "max_width") == 0)
{
- key = "max_width";
+ key2 = "scale_width";
}
- if (strcmp(key, "scale_height"))
+ else if (strcmp(key, "max_height") == 0)
{
- key = "max_height";
+ key2 = "scale_height";
}
}
- const GValue *gval;
- gval = ghb_settings_get_value(ud->settings, key);
+ gval = ghb_settings_get_value(ud->settings, key2);
if (gval == NULL)
{
g_debug("Setting (%s) is not in defaults\n", (gchar*)key);
diff --git a/gtk/src/resource_data.h b/gtk/src/resource_data.h
index 391ae20ae..19a7d4759 100644
--- a/gtk/src/resource_data.h
+++ b/gtk/src/resource_data.h
@@ -10003,7 +10003,7 @@
" <key>x264_refs</key>\n"
" <integer>1</integer>\n"
" <key>x264_subme</key>\n"
-" <integer>5</integer>\n"
+" <integer>6</integer>\n"
" <key>x264_trellis</key>\n"
" <integer>0</integer>\n"
" <key>x264_weighted_bframes</key>\n"
@@ -10209,8 +10209,8 @@
" <true />\n"
" <key>x264_options</key>\n"
" <string>ref=5:mixed-refs:bframes=6:bime:weightb:b-rdo:direct=auto:b-"
-"pyramid:me=umh:subme=5:analyse=all:8x8dct:trellis=1:nr=150:no-fast-pski"
-"p:filter=2,2</string>\n"
+"pyramid:me=umh:analyse=all:8x8dct:trellis=1:nr=150:no-fast-pskip:filter"
+"=2,2</string>\n"
" </dict>\n"
" <key>AppleTV</key>\n"
" <dict>\n"
@@ -10294,8 +10294,8 @@
" <key>vquality_type_bitrate</key>\n"
" <true />\n"
" <key>x264_options</key>\n"
-" <string>bframes=3:ref=1:subme=5:me=umh:no-fast-pskip=1:trellis=1:cab"
-"ac=0</string>\n"
+" <string>bframes=3:ref=1:me=umh:no-fast-pskip=1:trellis=1:cabac=0</st"
+"ring>\n"
" </dict>\n"
" <key>Bedlam</key>\n"
" <dict>\n"
@@ -10519,8 +10519,7 @@
" <true />\n"
" <key>x264_options</key>\n"
" <string>ref=3:mixed-refs:bframes=16:bime:weightb:b-rdo:b-pyramid:dir"
-"ect=auto:me=umh:subme=6:trellis=1:analyse=all:8x8dct:no-fast-pskip</str"
-"ing>\n"
+"ect=auto:me=umh:trellis=1:analyse=all:8x8dct:no-fast-pskip</string>\n"
" </dict>\n"
" <key>Classic</key>\n"
" <dict>\n"
@@ -10666,7 +10665,7 @@
" <true />\n"
" <key>x264_options</key>\n"
" <string>ref=3:mixed-refs:bframes=3:b-pyramid:b-rdo:bime:weightb:filt"
-"er=-2,-1:subme=6:trellis=1:analyse=all:8x8dct:me=umh</string>\n"
+"er=-2,-1:trellis=1:analyse=all:8x8dct:me=umh</string>\n"
" </dict>\n"
" <key>Deux Six Quatre</key>\n"
" <dict>\n"
@@ -10888,7 +10887,7 @@
" <key>vquality_type_bitrate</key>\n"
" <true />\n"
" <key>x264_options</key>\n"
-" <string>ref=2:bframes=2:subme=5:me=umh</string>\n"
+" <string>ref=2:bframes=2:me=umh</string>\n"
" </dict>\n"
" <key>PS3</key>\n"
" <dict>\n"
@@ -10957,7 +10956,7 @@
" <key>vquality_type_bitrate</key>\n"
" <true />\n"
" <key>x264_options</key>\n"
-" <string>level=41:subme=5:me=umh</string>\n"
+" <string>level=41:me=umh</string>\n"
" </dict>\n"
" <key>PSP</key>\n"
" <dict>\n"
@@ -11103,7 +11102,7 @@
" <true />\n"
" <key>x264_options</key>\n"
" <string>ref=3:mixed-refs:bframes=3:bime:weightb:b-rdo:direct=auto:me"
-"=umh:subme=5:analyse=all:trellis=1:no-fast-pskip</string>\n"
+"=umh:analyse=all:trellis=1:no-fast-pskip</string>\n"
" </dict>\n"
" <key>Television</key>\n"
" <dict>\n"
@@ -11177,8 +11176,7 @@
" <true />\n"
" <key>x264_options</key>\n"
" <string>ref=3:mixed-refs:bframes=6:bime:weightb:direct=auto:b-pyrami"
-"d:me=umh:subme=6:analyse=all:8x8dct:trellis=1:nr=150:no-fast-pskip</str"
-"ing>\n"
+"d:me=umh:analyse=all:8x8dct:trellis=1:nr=150:no-fast-pskip</string>\n"
" </dict>\n"
" <key>Xbox 360</key>\n"
" <dict>\n"
@@ -11248,8 +11246,8 @@
" <true />\n"
" <key>x264_options</key>\n"
" <string>level=40:ref=2:mixed-refs:bframes=3:bime:weightb:b-rdo:direc"
-"t=auto:b-pyramid:me=umh:subme=5:analyse=all:no-fast-pskip:filter=-2,-1<"
-"/string>\n"
+"t=auto:b-pyramid:me=umh:analyse=all:no-fast-pskip:filter=-2,-1</string>"
+"\n"
" </dict>\n"
" <key>iPhone / iPod Touch</key>\n"
" <dict>\n"
@@ -11322,8 +11320,8 @@
" <key>vquality_type_bitrate</key>\n"
" <true />\n"
" <key>x264_options</key>\n"
-" <string>level=30:cabac=0:ref=1:analyse=all:me=umh:subme=6:no-fast-ps"
-"kip=1:trellis=1</string>\n"
+" <string>level=30:cabac=0:ref=1:analyse=all:me=umh:no-fast-pskip=1:tr"
+"ellis=1</string>\n"
" </dict>\n"
" <key>iPod High-Rez</key>\n"
" <dict>\n"
@@ -11397,7 +11395,7 @@
" <true />\n"
" <key>x264_options</key>\n"
" <string>level=30:bframes=0:cabac=0:ref=1:vbv-maxrate=1500:vbv-bufsiz"
-"e=2000:analyse=all:me=umh:subme=6:no-fast-pskip=1</string>\n"
+"e=2000:analyse=all:me=umh:no-fast-pskip=1</string>\n"
" </dict>\n"
" <key>iPod Low-Rez</key>\n"
" <dict>\n"
@@ -11472,7 +11470,7 @@
" <true />\n"
" <key>x264_options</key>\n"
" <string>level=30:bframes=0:cabac=0:ref=1:vbv-maxrate=768:vbv-bufsize"
-"=2000:analyse=all:me=umh:subme=6:no-fast-pskip=1</string>\n"
+"=2000:analyse=all:me=umh:no-fast-pskip=1</string>\n"
" </dict>\n"
" </dict>\n"
" <key>widget-deps</key>\n"
diff --git a/gtk/src/resources.plist b/gtk/src/resources.plist
index e0ee6aef3..8710bb6d1 100644
--- a/gtk/src/resources.plist
+++ b/gtk/src/resources.plist
@@ -4884,7 +4884,7 @@ R2RrUAAABBgBAQACAAAAQAAAABAAAAAQ////AP///wD///8A////AP///wD///8A////AP///wD///8A
<key>x264_refs</key>
<integer>1</integer>
<key>x264_subme</key>
- <integer>5</integer>
+ <integer>6</integer>
<key>x264_trellis</key>
<integer>0</integer>
<key>x264_weighted_bframes</key>
@@ -5088,7 +5088,7 @@ R2RrUAAABBgBAQACAAAAQAAAABAAAAAQ////AP///wD///8A////AP///wD///8A////AP///wD///8A
<key>vquality_type_bitrate</key>
<true />
<key>x264_options</key>
- <string>ref=5:mixed-refs:bframes=6:bime:weightb:b-rdo:direct=auto:b-pyramid:me=umh:subme=5:analyse=all:8x8dct:trellis=1:nr=150:no-fast-pskip:filter=2,2</string>
+ <string>ref=5:mixed-refs:bframes=6:bime:weightb:b-rdo:direct=auto:b-pyramid:me=umh:analyse=all:8x8dct:trellis=1:nr=150:no-fast-pskip:filter=2,2</string>
</dict>
<key>AppleTV</key>
<dict>
@@ -5170,7 +5170,7 @@ R2RrUAAABBgBAQACAAAAQAAAABAAAAAQ////AP///wD///8A////AP///wD///8A////AP///wD///8A
<key>vquality_type_bitrate</key>
<true />
<key>x264_options</key>
- <string>bframes=3:ref=1:subme=5:me=umh:no-fast-pskip=1:trellis=1:cabac=0</string>
+ <string>bframes=3:ref=1:me=umh:no-fast-pskip=1:trellis=1:cabac=0</string>
</dict>
<key>Bedlam</key>
<dict>
@@ -5386,7 +5386,7 @@ R2RrUAAABBgBAQACAAAAQAAAABAAAAAQ////AP///wD///8A////AP///wD///8A////AP///wD///8A
<key>vquality_type_target</key>
<true />
<key>x264_options</key>
- <string>ref=3:mixed-refs:bframes=16:bime:weightb:b-rdo:b-pyramid:direct=auto:me=umh:subme=6:trellis=1:analyse=all:8x8dct:no-fast-pskip</string>
+ <string>ref=3:mixed-refs:bframes=16:bime:weightb:b-rdo:b-pyramid:direct=auto:me=umh:trellis=1:analyse=all:8x8dct:no-fast-pskip</string>
</dict>
<key>Classic</key>
<dict>
@@ -5528,7 +5528,7 @@ R2RrUAAABBgBAQACAAAAQAAAABAAAAAQ////AP///wD///8A////AP///wD///8A////AP///wD///8A
<key>vquality_type_constant</key>
<true />
<key>x264_options</key>
- <string>ref=3:mixed-refs:bframes=3:b-pyramid:b-rdo:bime:weightb:filter=-2,-1:subme=6:trellis=1:analyse=all:8x8dct:me=umh</string>
+ <string>ref=3:mixed-refs:bframes=3:b-pyramid:b-rdo:bime:weightb:filter=-2,-1:trellis=1:analyse=all:8x8dct:me=umh</string>
</dict>
<key>Deux Six Quatre</key>
<dict>
@@ -5744,7 +5744,7 @@ R2RrUAAABBgBAQACAAAAQAAAABAAAAAQ////AP///wD///8A////AP///wD///8A////AP///wD///8A
<key>vquality_type_bitrate</key>
<true />
<key>x264_options</key>
- <string>ref=2:bframes=2:subme=5:me=umh</string>
+ <string>ref=2:bframes=2:me=umh</string>
</dict>
<key>PS3</key>
<dict>
@@ -5812,7 +5812,7 @@ R2RrUAAABBgBAQACAAAAQAAAABAAAAAQ////AP///wD///8A////AP///wD///8A////AP///wD///8A
<key>vquality_type_bitrate</key>
<true />
<key>x264_options</key>
- <string>level=41:subme=5:me=umh</string>
+ <string>level=41:me=umh</string>
</dict>
<key>PSP</key>
<dict>
@@ -5954,7 +5954,7 @@ R2RrUAAABBgBAQACAAAAQAAAABAAAAAQ////AP///wD///8A////AP///wD///8A////AP///wD///8A
<key>vquality_type_bitrate</key>
<true />
<key>x264_options</key>
- <string>ref=3:mixed-refs:bframes=3:bime:weightb:b-rdo:direct=auto:me=umh:subme=5:analyse=all:trellis=1:no-fast-pskip</string>
+ <string>ref=3:mixed-refs:bframes=3:bime:weightb:b-rdo:direct=auto:me=umh:analyse=all:trellis=1:no-fast-pskip</string>
</dict>
<key>Television</key>
<dict>
@@ -6026,7 +6026,7 @@ R2RrUAAABBgBAQACAAAAQAAAABAAAAAQ////AP///wD///8A////AP///wD///8A////AP///wD///8A
<key>vquality_type_bitrate</key>
<true />
<key>x264_options</key>
- <string>ref=3:mixed-refs:bframes=6:bime:weightb:direct=auto:b-pyramid:me=umh:subme=6:analyse=all:8x8dct:trellis=1:nr=150:no-fast-pskip</string>
+ <string>ref=3:mixed-refs:bframes=6:bime:weightb:direct=auto:b-pyramid:me=umh:analyse=all:8x8dct:trellis=1:nr=150:no-fast-pskip</string>
</dict>
<key>Xbox 360</key>
<dict>
@@ -6094,7 +6094,7 @@ R2RrUAAABBgBAQACAAAAQAAAABAAAAAQ////AP///wD///8A////AP///wD///8A////AP///wD///8A
<key>vquality_type_bitrate</key>
<true />
<key>x264_options</key>
- <string>level=40:ref=2:mixed-refs:bframes=3:bime:weightb:b-rdo:direct=auto:b-pyramid:me=umh:subme=5:analyse=all:no-fast-pskip:filter=-2,-1</string>
+ <string>level=40:ref=2:mixed-refs:bframes=3:bime:weightb:b-rdo:direct=auto:b-pyramid:me=umh:analyse=all:no-fast-pskip:filter=-2,-1</string>
</dict>
<key>iPhone / iPod Touch</key>
<dict>
@@ -6166,7 +6166,7 @@ R2RrUAAABBgBAQACAAAAQAAAABAAAAAQ////AP///wD///8A////AP///wD///8A////AP///wD///8A
<key>vquality_type_bitrate</key>
<true />
<key>x264_options</key>
- <string>level=30:cabac=0:ref=1:analyse=all:me=umh:subme=6:no-fast-pskip=1:trellis=1</string>
+ <string>level=30:cabac=0:ref=1:analyse=all:me=umh:no-fast-pskip=1:trellis=1</string>
</dict>
<key>iPod High-Rez</key>
<dict>
@@ -6238,7 +6238,7 @@ R2RrUAAABBgBAQACAAAAQAAAABAAAAAQ////AP///wD///8A////AP///wD///8A////AP///wD///8A
<key>vquality_type_bitrate</key>
<true />
<key>x264_options</key>
- <string>level=30:bframes=0:cabac=0:ref=1:vbv-maxrate=1500:vbv-bufsize=2000:analyse=all:me=umh:subme=6:no-fast-pskip=1</string>
+ <string>level=30:bframes=0:cabac=0:ref=1:vbv-maxrate=1500:vbv-bufsize=2000:analyse=all:me=umh:no-fast-pskip=1</string>
</dict>
<key>iPod Low-Rez</key>
<dict>
@@ -6310,7 +6310,7 @@ R2RrUAAABBgBAQACAAAAQAAAABAAAAAQ////AP///wD///8A////AP///wD///8A////AP///wD///8A
<key>vquality_type_bitrate</key>
<true />
<key>x264_options</key>
- <string>level=30:bframes=0:cabac=0:ref=1:vbv-maxrate=768:vbv-bufsize=2000:analyse=all:me=umh:subme=6:no-fast-pskip=1</string>
+ <string>level=30:bframes=0:cabac=0:ref=1:vbv-maxrate=768:vbv-bufsize=2000:analyse=all:me=umh:no-fast-pskip=1</string>
</dict>
</dict>
<key>widget-deps</key>
diff --git a/gtk/src/settings.c b/gtk/src/settings.c
index 4167a160f..36f4d58a1 100644
--- a/gtk/src/settings.c
+++ b/gtk/src/settings.c
@@ -97,21 +97,6 @@ ghb_settings_set_boolean(GValue *settings, const gchar *key, gboolean bval)
ghb_dict_insert(settings, g_strdup(key), value);
}
-void
-ghb_settings_set_combo(
- GValue *settings,
- const gchar *key,
- gint index,
- const gchar *option,
- const gchar *shortOpt,
- const gchar *svalue,
- gint ivalue)
-{
- GValue *value;
- value = ghb_combo_value_new(index, option, shortOpt, svalue, ivalue);
- ghb_dict_insert(settings, g_strdup(key), value);
-}
-
GValue*
ghb_settings_get_value(GValue *settings, const gchar *key)
{
@@ -168,29 +153,15 @@ ghb_settings_get_string(GValue *settings, const gchar *key)
}
gint
-ghb_settings_get_combo_index(GValue *settings, const gchar *key)
+ghb_settings_combo_int(GValue *settings, const gchar *key)
{
- const GValue* value;
- value = ghb_settings_get_value(settings, key);
- if (value == NULL) return 0;
- ghb_combodata_t *cd;
- if (G_VALUE_TYPE(value) != ghb_combodata_get_type())
- return 0;
- cd = g_value_get_boxed(value);
- return cd->index;
+ return ghb_lookup_combo_int(key, ghb_settings_get_value(settings, key));
}
-gchar*
-ghb_settings_get_combo_option(GValue *settings, const gchar *key)
+const gchar*
+ghb_settings_combo_option(GValue *settings, const gchar *key)
{
- const GValue* value;
- value = ghb_settings_get_value(settings, key);
- if (value == NULL) return g_strdup("");
- ghb_combodata_t *cd;
- if (G_VALUE_TYPE(value) != ghb_combodata_get_type())
- return g_strdup("");
- cd = g_value_get_boxed(value);
- return g_strdup(cd->option);
+ return ghb_lookup_combo_option(key, ghb_settings_get_value(settings, key));
}
// Map widget names to setting keys
@@ -274,49 +245,40 @@ ghb_widget_value(GtkWidget *widget)
g_debug("\tcombo_box");
GtkTreeModel *store;
GtkTreeIter iter;
- gchar *shortOpt, *option, *svalue;
- gint index, ivalue;
+ gchar *shortOpt;
- index = gtk_combo_box_get_active(GTK_COMBO_BOX(widget));
store = gtk_combo_box_get_model(GTK_COMBO_BOX(widget));
if (gtk_combo_box_get_active_iter(GTK_COMBO_BOX(widget), &iter))
{
- gtk_tree_model_get(store, &iter, 0, &option, 2, &shortOpt,
- 3, &ivalue, 4, &svalue, -1);
- value = ghb_combo_value_new(index, option, shortOpt,
- svalue, ivalue);
- g_free(option);
+ gtk_tree_model_get(store, &iter, 2, &shortOpt, -1);
+ value = ghb_string_value_new(shortOpt);
g_free(shortOpt);
- g_free(svalue);
}
else
{
- value = ghb_combo_value_new(-1, "", "", "", 0);
+ value = ghb_string_value_new("");
}
- g_debug("\tdone");
}
else if (type == GTK_TYPE_COMBO_BOX_ENTRY)
{
GtkTreeModel *store;
GtkTreeIter iter;
- gchar *shortOpt, *option, *svalue;
- gint index, ivalue;
+ gchar *shortOpt;
- index = gtk_combo_box_get_active(GTK_COMBO_BOX(widget));
+ g_debug("\tcombo_box_entry");
store = gtk_combo_box_get_model(GTK_COMBO_BOX(widget));
if (gtk_combo_box_get_active_iter(GTK_COMBO_BOX(widget), &iter))
{
- gtk_tree_model_get(store, &iter, 0, &option, 2, &shortOpt,
- 3, &ivalue, 4, &svalue, -1);
- value = ghb_combo_value_new(index, option, shortOpt,
- svalue, ivalue);
+ gtk_tree_model_get(store, &iter, 2, &shortOpt, -1);
+ value = ghb_string_value_new(shortOpt);
+ g_free(shortOpt);
}
else
{
const gchar *str;
str = gtk_combo_box_get_active_text(GTK_COMBO_BOX(widget));
if (str == NULL) str = "";
- value = ghb_combo_value_new(-1, str, str, str, -1);
+ value = ghb_string_value_new(str);
}
}
else if (type == GTK_TYPE_SPIN_BUTTON)
@@ -407,23 +369,15 @@ ghb_widget_int(GtkWidget *widget)
}
gint
-ghb_widget_index(GtkWidget *widget)
+ghb_widget_boolean(GtkWidget *widget)
{
GValue *value;
- gint index = 0;
+ gboolean bval;
value = ghb_widget_value(widget);
- if (value == NULL) return 0;
- ghb_combodata_t *cd;
- if (G_VALUE_TYPE(value) != ghb_combodata_get_type())
- {
- ghb_value_free(value);
- return 0;
- }
- cd = g_value_get_boxed(value);
- index = cd->index;
+ bval = ghb_value_boolean(value);
ghb_value_free(value);
- return index;
+ return bval;
}
void
@@ -456,6 +410,7 @@ update_widget(GtkWidget *widget, const GValue *value)
gint ival;
gdouble dval;
+ g_debug("update_widget");
type = G_VALUE_TYPE(value);
if (type == ghb_array_get_type() || type == ghb_dict_get_type())
return;
@@ -612,6 +567,7 @@ ghb_ui_update(signal_user_data_t *ud, const gchar *name, const GValue *value)
{
GObject *object;
+ g_debug("ghb_ui_update() %s", name);
if (name == NULL || value == NULL)
return 0;
object = GHB_OBJECT(ud->builder, name);
@@ -689,7 +645,7 @@ struct x264_opt_map_s x264_opt_map[] =
{x264_bpyramid_syns, "x264_bpyramid", "0", X264_OPT_BOOL},
{x264_me_syns, "x264_me", "hex", X264_OPT_COMBO},
{x264_merange_syns, "x264_merange", "16", X264_OPT_INT},
- {x264_subme_syns, "x264_subme", "4", X264_OPT_COMBO},
+ {x264_subme_syns, "x264_subme", "6", X264_OPT_COMBO},
{x264_analyse_syns, "x264_analyse", "some", X264_OPT_COMBO},
{x264_8x8dct_syns, "x264_8x8dct", "0", X264_OPT_BOOL},
{x264_deblock_syns, "x264_deblock_alpha", "0,0", X264_OPT_DEBLOCK},
@@ -1114,7 +1070,10 @@ ghb_sanitize_x264opts(signal_user_data_t *ud, const gchar *options)
{
x264_remove_opt(split, x264_mixed_syns);
}
- gint subme = ghb_settings_get_int(ud->settings, "x264_subme");
+ gint subme;
+
+ subme = ghb_lookup_combo_int("x264_subme",
+ ghb_settings_get_value(ud->settings, "x264_subme"));
if (subme < 6)
{
x264_remove_opt(split, x264_brdo_syns);
@@ -1140,7 +1099,9 @@ ghb_sanitize_x264opts(signal_user_data_t *ud, const gchar *options)
{
x264_remove_opt(split, x264_trellis_syns);
}
- gint analyse = ghb_settings_get_int(ud->settings, "x264_analyse");
+ gint analyse;
+ analyse = ghb_lookup_combo_int("x264_analyse",
+ ghb_settings_get_value(ud->settings, "x264_analyse"));
if (analyse == 1)
{
x264_remove_opt(split, x264_direct_syns);
diff --git a/gtk/src/settings.h b/gtk/src/settings.h
index cc89f1f7f..ca3ffa1e2 100644
--- a/gtk/src/settings.h
+++ b/gtk/src/settings.h
@@ -72,9 +72,6 @@ void ghb_settings_set_int64(GValue *settings, const gchar *key, gint64 ival);
void ghb_settings_set_int(GValue *settings, const gchar *key, gint ival);
void ghb_settings_set_boolean(
GValue *settings, const gchar *key, gboolean bval);
-void ghb_settings_set_combo(
- GValue *settings, const gchar *key, gint index, const gchar *option,
- const gchar *shortOpt, const gchar *svalue, gint ivalue);
void ghb_settings_copy(
GValue *settings, const gchar *key, const GValue *value);
GValue* ghb_settings_get_value(GValue *settings, const gchar *key);
@@ -83,15 +80,15 @@ gint64 ghb_settings_get_int64(GValue *settings, const gchar *key);
gint ghb_settings_get_int(GValue *settings, const gchar *key);
gdouble ghb_settings_get_double(GValue *settings, const gchar *key);
gchar* ghb_settings_get_string(GValue *settings, const gchar *key);
-gint ghb_settings_get_combo_index(GValue *settings, const gchar *key);
-gchar* ghb_settings_get_combo_option(GValue *settings, const gchar *name);
+gint ghb_settings_combo_int(GValue *settings, const gchar *key);
+const gchar* ghb_settings_combo_option(GValue *settings, const gchar *key);
GValue* ghb_widget_value(GtkWidget *widget);
gchar* ghb_widget_string(GtkWidget *widget);
gdouble ghb_widget_double(GtkWidget *widget);
gint64 ghb_widget_int64(GtkWidget *widget);
gint ghb_widget_int(GtkWidget *widget);
-gint ghb_widget_index(GtkWidget *widget);
+gint ghb_widget_boolean(GtkWidget *widget);
void ghb_widget_to_setting(GValue *settings, GtkWidget *widget);
int ghb_ui_update(
diff --git a/gtk/src/standard_presets.xml b/gtk/src/standard_presets.xml
index 56827727b..46a78ff5f 100644
--- a/gtk/src/standard_presets.xml
+++ b/gtk/src/standard_presets.xml
@@ -72,7 +72,7 @@
<key>vquality_type_bitrate</key>
<true />
<key>x264_options</key>
- <string>ref=5:mixed-refs:bframes=6:bime:weightb:b-rdo:direct=auto:b-pyramid:me=umh:subme=5:analyse=all:8x8dct:trellis=1:nr=150:no-fast-pskip:filter=2,2</string>
+ <string>ref=5:mixed-refs:bframes=6:bime:weightb:b-rdo:direct=auto:b-pyramid:me=umh:analyse=all:8x8dct:trellis=1:nr=150:no-fast-pskip:filter=2,2</string>
</dict>
<key>AppleTV</key>
<dict>
@@ -154,7 +154,7 @@
<key>vquality_type_bitrate</key>
<true />
<key>x264_options</key>
- <string>bframes=3:ref=1:subme=5:me=umh:no-fast-pskip=1:trellis=1:cabac=0</string>
+ <string>bframes=3:ref=1:me=umh:no-fast-pskip=1:trellis=1:cabac=0</string>
</dict>
<key>Bedlam</key>
<dict>
@@ -370,7 +370,7 @@
<key>vquality_type_target</key>
<true />
<key>x264_options</key>
- <string>ref=3:mixed-refs:bframes=16:bime:weightb:b-rdo:b-pyramid:direct=auto:me=umh:subme=6:trellis=1:analyse=all:8x8dct:no-fast-pskip</string>
+ <string>ref=3:mixed-refs:bframes=16:bime:weightb:b-rdo:b-pyramid:direct=auto:me=umh:trellis=1:analyse=all:8x8dct:no-fast-pskip</string>
</dict>
<key>Classic</key>
<dict>
@@ -512,7 +512,7 @@
<key>vquality_type_constant</key>
<true />
<key>x264_options</key>
- <string>ref=3:mixed-refs:bframes=3:b-pyramid:b-rdo:bime:weightb:filter=-2,-1:subme=6:trellis=1:analyse=all:8x8dct:me=umh</string>
+ <string>ref=3:mixed-refs:bframes=3:b-pyramid:b-rdo:bime:weightb:filter=-2,-1:trellis=1:analyse=all:8x8dct:me=umh</string>
</dict>
<key>Deux Six Quatre</key>
<dict>
@@ -728,7 +728,7 @@
<key>vquality_type_bitrate</key>
<true />
<key>x264_options</key>
- <string>ref=2:bframes=2:subme=5:me=umh</string>
+ <string>ref=2:bframes=2:me=umh</string>
</dict>
<key>PS3</key>
<dict>
@@ -796,7 +796,7 @@
<key>vquality_type_bitrate</key>
<true />
<key>x264_options</key>
- <string>level=41:subme=5:me=umh</string>
+ <string>level=41:me=umh</string>
</dict>
<key>PSP</key>
<dict>
@@ -938,7 +938,7 @@
<key>vquality_type_bitrate</key>
<true />
<key>x264_options</key>
- <string>ref=3:mixed-refs:bframes=3:bime:weightb:b-rdo:direct=auto:me=umh:subme=5:analyse=all:trellis=1:no-fast-pskip</string>
+ <string>ref=3:mixed-refs:bframes=3:bime:weightb:b-rdo:direct=auto:me=umh:analyse=all:trellis=1:no-fast-pskip</string>
</dict>
<key>Television</key>
<dict>
@@ -1010,7 +1010,7 @@
<key>vquality_type_bitrate</key>
<true />
<key>x264_options</key>
- <string>ref=3:mixed-refs:bframes=6:bime:weightb:direct=auto:b-pyramid:me=umh:subme=6:analyse=all:8x8dct:trellis=1:nr=150:no-fast-pskip</string>
+ <string>ref=3:mixed-refs:bframes=6:bime:weightb:direct=auto:b-pyramid:me=umh:analyse=all:8x8dct:trellis=1:nr=150:no-fast-pskip</string>
</dict>
<key>Xbox 360</key>
<dict>
@@ -1078,7 +1078,7 @@
<key>vquality_type_bitrate</key>
<true />
<key>x264_options</key>
- <string>level=40:ref=2:mixed-refs:bframes=3:bime:weightb:b-rdo:direct=auto:b-pyramid:me=umh:subme=5:analyse=all:no-fast-pskip:filter=-2,-1</string>
+ <string>level=40:ref=2:mixed-refs:bframes=3:bime:weightb:b-rdo:direct=auto:b-pyramid:me=umh:analyse=all:no-fast-pskip:filter=-2,-1</string>
</dict>
<key>iPhone / iPod Touch</key>
<dict>
@@ -1150,7 +1150,7 @@
<key>vquality_type_bitrate</key>
<true />
<key>x264_options</key>
- <string>level=30:cabac=0:ref=1:analyse=all:me=umh:subme=6:no-fast-pskip=1:trellis=1</string>
+ <string>level=30:cabac=0:ref=1:analyse=all:me=umh:no-fast-pskip=1:trellis=1</string>
</dict>
<key>iPod High-Rez</key>
<dict>
@@ -1222,7 +1222,7 @@
<key>vquality_type_bitrate</key>
<true />
<key>x264_options</key>
- <string>level=30:bframes=0:cabac=0:ref=1:vbv-maxrate=1500:vbv-bufsize=2000:analyse=all:me=umh:subme=6:no-fast-pskip=1</string>
+ <string>level=30:bframes=0:cabac=0:ref=1:vbv-maxrate=1500:vbv-bufsize=2000:analyse=all:me=umh:no-fast-pskip=1</string>
</dict>
<key>iPod Low-Rez</key>
<dict>
@@ -1294,7 +1294,7 @@
<key>vquality_type_bitrate</key>
<true />
<key>x264_options</key>
- <string>level=30:bframes=0:cabac=0:ref=1:vbv-maxrate=768:vbv-bufsize=2000:analyse=all:me=umh:subme=6:no-fast-pskip=1</string>
+ <string>level=30:bframes=0:cabac=0:ref=1:vbv-maxrate=768:vbv-bufsize=2000:analyse=all:me=umh:no-fast-pskip=1</string>
</dict>
</dict>
</plist>
diff --git a/gtk/src/values.c b/gtk/src/values.c
index 6e8a06e4c..6013db8d8 100644
--- a/gtk/src/values.c
+++ b/gtk/src/values.c
@@ -65,10 +65,6 @@ debug_show_type(GType tp)
{
str ="bool";
}
- else if (tp == ghb_combodata_get_type())
- {
- str ="combo";
- }
else if (tp == ghb_array_get_type())
{
str ="array";
@@ -218,8 +214,6 @@ ghb_value_cmp(const GValue *vala, const GValue *valb)
typa = G_VALUE_TYPE(vala);
typb = G_VALUE_TYPE(valb);
- if (typa == ghb_combodata_get_type()) typa = G_TYPE_STRING;
- if (typb == ghb_combodata_get_type()) typb = G_TYPE_STRING;
if (typa != typb)
{
return 1;
@@ -369,19 +363,6 @@ ghb_boolean_value_new(gboolean bval)
}
GValue*
-ghb_combo_value_new(
- gint index,
- const gchar *option,
- const gchar *shortOpt,
- const gchar *svalue,
- gint ivalue)
-{
- GValue *gval = ghb_value_new(ghb_combodata_get_type());
- ghb_value_set_combodata(gval, index, option, shortOpt, svalue, ivalue);
- return gval;
-}
-
-GValue*
ghb_dict_value_new()
{
GHashTable *dict;
@@ -429,96 +410,6 @@ ghb_rawdata_value_new(ghb_rawdata_t *data)
}
static gpointer
-combodata_copy(gpointer boxed)
-{
- const ghb_combodata_t *combodata = (const ghb_combodata_t*)boxed;
- ghb_combodata_t *copy = g_malloc0(sizeof(ghb_combodata_t));
- if (combodata->option)
- copy->option = g_strdup(combodata->option);
- if (combodata->shortOpt)
- copy->shortOpt = g_strdup(combodata->shortOpt);
- if (combodata->svalue)
- copy->svalue = g_strdup(combodata->svalue);
-
- copy->index = combodata->index;
- copy->ivalue = combodata->ivalue;
- return copy;
-}
-
-static void
-combodata_free(gpointer boxed)
-{
- ghb_combodata_t *combodata = (ghb_combodata_t*)boxed;
- if (combodata->option)
- g_free(combodata->option);
- if (combodata->shortOpt)
- g_free(combodata->shortOpt);
- if (combodata->svalue)
- g_free(combodata->svalue);
- g_free(combodata);
-}
-
-
-static void
-xform_combodata_to_string(const GValue *combo, GValue *sval)
-{
- const ghb_combodata_t *combodata = g_value_get_boxed(combo);
- g_value_set_string(sval, combodata->shortOpt);
-}
-
-static void
-xform_combodata_to_int64(const GValue *combo, GValue *ival)
-{
- const ghb_combodata_t *combodata = g_value_get_boxed(combo);
- g_value_set_int64(ival, combodata->ivalue);
-}
-
-static void
-xform_combodata_to_double(const GValue *combo, GValue *dval)
-{
- const ghb_combodata_t *combodata = g_value_get_boxed(combo);
- g_value_set_double(dval, (gdouble)combodata->ivalue);
-}
-
-GType
-ghb_combodata_get_type(void)
-{
- static GType type_id = 0;
- if (!type_id)
- {
- type_id = g_boxed_type_register_static(
- g_intern_static_string("GHBCombo"),
- (GBoxedCopyFunc) combodata_copy,
- (GBoxedFreeFunc) combodata_free);
- g_value_register_transform_func(type_id, G_TYPE_STRING,
- xform_combodata_to_string);
- g_value_register_transform_func(type_id, G_TYPE_INT64,
- xform_combodata_to_int64);
- g_value_register_transform_func(type_id, G_TYPE_DOUBLE,
- xform_combodata_to_double);
- }
- return type_id;
-}
-
-void
-ghb_value_set_combodata(
- GValue *gval,
- gint index,
- const gchar *option,
- const gchar *shortOpt,
- const gchar *svalue,
- gint ivalue)
-{
- ghb_combodata_t combodata;
- combodata.index = index;
- combodata.option = (gchar*)option;
- combodata.shortOpt = (gchar*)shortOpt;
- combodata.svalue = (gchar*)svalue;
- combodata.ivalue = ivalue;
- g_value_set_boxed(gval, &combodata);
-}
-
-static gpointer
rawdata_copy(gpointer boxed)
{
const ghb_rawdata_t *data = (const ghb_rawdata_t*)boxed;
diff --git a/gtk/src/values.h b/gtk/src/values.h
index d184a5f86..5e02900c7 100644
--- a/gtk/src/values.h
+++ b/gtk/src/values.h
@@ -25,24 +25,6 @@ typedef struct
gsize size;
} ghb_rawdata_t;
-typedef struct
-{
- gint index;
- gchar *option;
- gchar *shortOpt;
- gchar *svalue;
- gint ivalue;
-} ghb_combodata_t;
-
-GType ghb_combodata_get_type(void);
-void ghb_value_set_combodata(
- GValue *gval,
- gint index,
- const gchar *option,
- const gchar *shortOpt,
- const gchar *svalue,
- gint ivalue);
-
GType ghb_rawdata_get_type(void);
GType ghb_array_get_type(void);
@@ -74,12 +56,6 @@ GValue* ghb_int64_value_new(gint64 ival);
GValue* ghb_int_value_new(gint ival);
GValue* ghb_double_value_new(gdouble dval);
GValue* ghb_boolean_value_new(gboolean bval);
-GValue* ghb_combo_value_new(
- gint index,
- const gchar *option,
- const gchar *shortOpt,
- const gchar *svalue,
- gint ivalue);
GValue* ghb_dict_value_new(void);
GValue* ghb_array_value_new(guint size);
void ghb_array_value_reset(GValue *gval, guint size);