/* already fixed */
return FALSE;
} else if (G_VALUE_TYPE (value) == GST_TYPE_INT_RANGE) {
- int min, max;
+ int min, max, step;
min = gst_value_get_int_range_min (value);
max = gst_value_get_int_range_max (value);
+ step = gst_value_get_int_range_step (value);
target = CLAMP (target, min, max);
+ if (G_UNLIKELY (step != 1)) {
+ gint rem = target % step;
+ target -= rem;
+ if (rem > step / 2)
+ target += step;
+ }
gst_structure_set (structure, field_name, G_TYPE_INT, target, NULL);
return TRUE;
* with @fieldname or the existing field did not contain a %GST_TYPE_LIST, this
* function returns %FALSE.
*
- * Since 1.12
+ * Since: 1.12
*/
gboolean
gst_structure_get_list (GstStructure * structure, const gchar * fieldname,
* the field specified by @fieldname. Be aware that this is slower then using
* %GST_TYPE_ARRAY in a #GValue directly.
*
- * Since 1.12
+ * Since: 1.12
*/
void
gst_structure_set_array (GstStructure * structure, const gchar * fieldname,
* the field specified by @fieldname. Be aware that this is slower then using
* %GST_TYPE_LIST in a #GValue directly.
*
- * Since 1.12
+ * Since: 1.12
*/
void
gst_structure_set_list (GstStructure * structure, const gchar * fieldname,