X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=gtk%2Fsrc%2Fx264handler.c;h=36bed772184e02ec85cc75a093909f4410ce5671;hb=2cea0d49ba2d6aa6ba96d575b47d2d313515be11;hp=154defbbba223563a809d60578871e92deb4029b;hpb=7d4f3c93ea6ce9de22cf4187b03bb9432e51726c;p=handbrake-jp%2Fhandbrake-jp-git.git diff --git a/gtk/src/x264handler.c b/gtk/src/x264handler.c index 154defbb..36bed772 100644 --- a/gtk/src/x264handler.c +++ b/gtk/src/x264handler.c @@ -17,6 +17,7 @@ #include "values.h" #include "callbacks.h" #include "presets.h" +#include "hb-backend.h" #include "x264handler.h" static void x264_opt_update(signal_user_data_t *ud, GtkWidget *widget); @@ -40,6 +41,36 @@ x264_widget_changed_cb(GtkWidget *widget, signal_user_data_t *ud) } void +x264_me_changed_cb(GtkWidget *widget, signal_user_data_t *ud) +{ + const GValue *gval; + gint me; + + ghb_widget_to_setting(ud->settings, widget); + if (!ignore_options_update) + { + ignore_options_update = TRUE; + x264_opt_update(ud, widget); + ignore_options_update = FALSE; + } + ghb_check_dependency(ud, widget); + ghb_clear_presets_selection(ud); + widget = GHB_WIDGET(ud->builder, "x264_merange"); + gval = ghb_settings_get_value(ud->settings, "x264_me"); + me = ghb_lookup_combo_int("x264_me", gval); + if (me < 2) + { // me < umh + // me_range 4 - 16 + gtk_spin_button_set_range(GTK_SPIN_BUTTON(widget), 4, 16); + } + else + { + // me_range 4 - 64 + gtk_spin_button_set_range(GTK_SPIN_BUTTON(widget), 4, 64); + } +} + +void x264_entry_changed_cb(GtkWidget *widget, signal_user_data_t *ud) { g_debug("x264_entry_changed_cb ()"); @@ -77,7 +108,7 @@ x264_focus_out_cb(GtkWidget *widget, GdkEventFocus *event, options = ghb_settings_get_string(ud->settings, "x264Option"); sopts = sanitize_x264opts(ud, options); ignore_options_update = TRUE; - if (sopts != NULL) + if (sopts != NULL && strcmp(sopts, options) != 0) { ghb_ui_update(ud, "x264Option", ghb_string_value(sopts)); ghb_x264_parse_options(ud, sopts); @@ -581,12 +612,6 @@ sanitize_x264opts(signal_user_data_t *ud, const gchar *options) { x264_remove_opt(split, x264_bpyramid_syns); } - gchar *me = ghb_settings_get_string(ud->settings, "x264_me"); - if (!(strcmp(me, "umh") == 0 || strcmp(me, "esa") == 0)) - { - x264_remove_opt(split, x264_merange_syns); - } - g_free(me); if (!ghb_settings_get_boolean(ud->settings, "x264_cabac")) { x264_remove_opt(split, x264_trellis_syns);