diff options
author | jstebbins <[email protected]> | 2009-08-07 16:20:44 +0000 |
---|---|---|
committer | jstebbins <[email protected]> | 2009-08-07 16:20:44 +0000 |
commit | d9e4eaf0e289c477945a91a3576f740d41bc7750 (patch) | |
tree | b2a82faf892c586c7d85501ce502fc727d0fbe8e /gtk/src/x264handler.c | |
parent | 6786c44b617d26c52712c3238ad8fd725648daf6 (diff) |
LinGui: don't disable subme 10 when psy-rd is 0
this was incorrect. instead, subme 10 requires trellis==2 and aq-mode > 0.
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@2752 b64f7644-9d1e-0410-96f1-a4d463321fa5
Diffstat (limited to 'gtk/src/x264handler.c')
-rw-r--r-- | gtk/src/x264handler.c | 33 |
1 files changed, 29 insertions, 4 deletions
diff --git a/gtk/src/x264handler.c b/gtk/src/x264handler.c index 2b6b8830f..96a834a2d 100644 --- a/gtk/src/x264handler.c +++ b/gtk/src/x264handler.c @@ -119,6 +119,7 @@ x264_focus_out_cb(GtkWidget *widget, GdkEventFocus *event, enum { + X264_OPT_NONE, X264_OPT_DEBLOCK, X264_OPT_PSY, X264_OPT_INT, @@ -146,6 +147,7 @@ static gchar *x264_bpyramid_syns[] = {"b-pyramid", "b_pyramid", NULL}; static gchar *x264_me_syns[] = {"me", NULL}; static gchar *x264_merange_syns[] = {"merange", "me-range", "me_range", NULL}; static gchar *x264_subme_syns[] = {"subme", "subq", NULL}; +static gchar *x264_aqmode_syns[] = {"aq-mode", NULL}; static gchar *x264_analyse_syns[] = {"analyse", "partitions", NULL}; static gchar *x264_8x8dct_syns[] = {"8x8dct", NULL}; static gchar *x264_deblock_syns[] = {"deblock", "filter", NULL}; @@ -180,6 +182,7 @@ struct x264_opt_map_s x264_opt_map[] = {x264_me_syns, "x264_me", "hex", X264_OPT_COMBO}, {x264_merange_syns, "x264_merange", "16", X264_OPT_INT}, {x264_subme_syns, "x264_subme", "7", X264_OPT_COMBO}, + {x264_aqmode_syns, "x264_aqmode", "1", X264_OPT_NONE}, {x264_analyse_syns, "x264_analyse", "some", X264_OPT_COMBO}, {x264_8x8dct_syns, "x264_8x8dct", "1", X264_OPT_BOOL}, {x264_deblock_syns, "x264_deblock_alpha", "0,0", X264_OPT_DEBLOCK}, @@ -680,7 +683,7 @@ x264_lookup_value(gchar **opts, gchar **opt_syns) } gint -ghb_lookup_badapt(gchar *options) +ghb_lookup_badapt(const gchar *options) { gint ret = 0; gchar *result; @@ -701,6 +704,28 @@ ghb_lookup_badapt(gchar *options) return ret; } +gint +ghb_lookup_aqmode(const gchar *options) +{ + gint ret = 0; + gchar *result; + gchar **split; + + if (options == NULL) + options = ""; + + split = g_strsplit(options, ":", -1); + + result = x264_lookup_value(split, x264_aqmode_syns); + g_strfreev(split); + if (result != NULL) + { + ret = g_strtod(result, NULL); + g_free(result); + } + return ret; +} + // Construct the x264 options string // The result is allocated, so someone must free it at some point. static gchar* @@ -716,17 +741,17 @@ sanitize_x264opts(signal_user_data_t *ud, const gchar *options) { x264_remove_opt(split, x264_psy_syns); } + gint trell = ghb_settings_combo_int(ud->settings, "x264_trellis"); if (subme == 10) { - gdouble psy_rd = ghb_settings_get_double(ud->settings, "x264_psy_rd"); - if (psy_rd == 0.0) + gint aqmode = ghb_lookup_aqmode(options); + if (trell != 2 || aqmode == 0) { gint pos = x264_find_opt(split, x264_subme_syns); g_free(split[pos]); split[pos] = g_strdup_printf("subme=9"); } } - gint trell = ghb_settings_combo_int(ud->settings, "x264_trellis"); if (trell < 1) { gint psy; |