gst_video_balance_update_properties (GstVideoBalance * videobalance)
{
gboolean passthrough = gst_video_balance_is_passthrough (videobalance);
+ GstBaseTransform *base = GST_BASE_TRANSFORM (videobalance);
- gst_base_transform_set_passthrough (GST_BASE_TRANSFORM (videobalance),
- passthrough);
+ GST_BASE_TRANSFORM_LOCK (base);
+ base->passthrough = passthrough;
+ GST_BASE_TRANSFORM_UNLOCK (base);
if (!passthrough)
gst_video_balance_update_tables (videobalance);
if (size != videobalance->size)
goto wrong_size;
+ GST_OBJECT_LOCK (videobalance);
videobalance->process (videobalance, data);
+ GST_OBJECT_UNLOCK (videobalance);
done:
return GST_FLOW_OK;
g_return_if_fail (GST_IS_VIDEO_FILTER (vb));
g_return_if_fail (channel->label != NULL);
+ GST_OBJECT_LOCK (vb);
if (!g_ascii_strcasecmp (channel->label, "HUE")) {
new_val = (value + 1000.0) * 2.0 / 2000.0 - 1.0;
changed = new_val != vb->hue;
}
gst_video_balance_update_properties (vb);
+ GST_OBJECT_UNLOCK (vb);
gst_color_balance_value_changed (balance, channel,
gst_color_balance_get_value (balance, channel));
gdouble d;
const gchar *label = NULL;
+ GST_OBJECT_LOCK (balance);
switch (prop_id) {
case PROP_CONTRAST:
d = g_value_get_double (value);
}
gst_video_balance_update_properties (balance);
+ GST_OBJECT_UNLOCK (balance);
if (label) {
GstColorBalanceChannel *channel =