<property name="page_size">0</property>
<property name="value">20.25</property>
</object>
- <object class="GtkAdjustment" id="adjustment6">
- <property name="upper">4</property>
- <property name="lower">0</property>
- <property name="page_increment">1</property>
- <property name="step_increment">0.2</property>
- <property name="page_size">0</property>
- <property name="value">2.6</property>
- </object>
- <object class="GtkAdjustment" id="adjustment7">
- <property name="upper">4</property>
- <property name="lower">1</property>
- <property name="page_increment">0.20000000000000001</property>
- <property name="step_increment">0.20000000000000001</property>
- <property name="page_size">0</property>
- <property name="value">2.3999999999999999</property>
- </object>
<object class="GtkAdjustment" id="adjustment8">
<property name="upper">16</property>
<property name="lower">1</property>
<property name="upper">1</property>
<property name="lower">0</property>
<property name="page_increment">0.5</property>
- <property name="step_increment">0.1</property>
+ <property name="step_increment">0.05</property>
<property name="page_size">0</property>
<property name="value">0</property>
</object>
<property name="page_size">0</property>
<property name="value">0</property>
</object>
- <object class="GtkAdjustment" id="adjustment32">
- <property name="upper">99999</property>
- <property name="lower">0</property>
- <property name="page_increment">60</property>
- <property name="step_increment">1</property>
- <property name="page_size">0</property>
- <property name="value">99999</property>
- </object>
- <object class="GtkAdjustment" id="adjustment33">
- <property name="upper">99999</property>
- <property name="lower">1</property>
- <property name="page_increment">60</property>
- <property name="step_increment">1</property>
- <property name="page_size">0</property>
- <property name="value">0</property>
- </object>
<object class="GtkAdjustment" id="adjustment34">
<property name="upper">1</property>
<property name="lower">0</property>
<property name="restrict_to_fill_level">False</property>
<property name="value_pos">GTK_POS_RIGHT</property>
<signal handler="x264_widget_changed_cb" name="value_changed"/>
+ <signal name="format_value" handler="x264_format_slider_cb"/>
</object>
<packing>
<property name="left_attach">1</property>
<property name="restrict_to_fill_level">False</property>
<property name="value_pos">GTK_POS_RIGHT</property>
<signal handler="x264_widget_changed_cb" name="value_changed"/>
+ <signal name="format_value" handler="x264_format_slider_cb"/>
</object>
<packing>
<property name="top_attach">1</property>
<property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<property name="tooltip-text" translatable="yes">Psychovisual trellis is an experimental algorithm to further improve sharpness and detail retention beyond what Psychovisual RD does. Recommended values are around 0.2, though higher values may help for very grainy video or lower bitrate encodes. Not recommended for cel animation and other sharp-edged graphics.</property>
<property name="adjustment">adjustment23</property>
+ <property name="digits">2</property>
<property name="restrict_to_fill_level">False</property>
<property name="value_pos">GTK_POS_RIGHT</property>
- <signal handler="x264_widget_changed_cb" name="value_changed"/>
+ <signal handler="x264_slider_changed_cb" name="value_changed"/>
+ <signal name="format_value" handler="x264_format_slider_cb"/>
</object>
<packing>
<property name="top_attach">2</property>
}
G_MODULE_EXPORT void
+x264_slider_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
+{
+ ghb_widget_to_setting(ud->settings, widget);
+
+ // Lock slider values to multiples of step_increment
+ GtkAdjustment * adj = gtk_range_get_adjustment(GTK_RANGE(widget));
+ gdouble step = gtk_adjustment_get_step_increment(adj);
+ gdouble val = gtk_range_get_value(GTK_RANGE(widget));
+ gdouble new_val = ((int)((val + step / 2) / step)) * step;
+ gdouble diff = val - new_val;
+ if ( diff > 0.0001 || diff < -0.0001 )
+ {
+ gtk_range_set_value(GTK_RANGE(widget), new_val);
+ }
+ else if (!ignore_options_update)
+ {
+ ignore_options_update = TRUE;
+ x264_opt_update(ud, widget);
+ ignore_options_update = FALSE;
+ }
+ ghb_check_dependency(ud, widget, NULL);
+ ghb_clear_presets_selection(ud);
+}
+
+G_MODULE_EXPORT gchar*
+x264_format_slider_cb(GtkScale *scale, gdouble val, signal_user_data_t *ud)
+{
+ return g_strdup_printf("%-6.6g", val);
+}
+
+
+G_MODULE_EXPORT void
x264_me_changed_cb(GtkWidget *widget, signal_user_data_t *ud)
{
gint me;