static GstFlowReturn gst_video_balance_transform_frame_ip (GstVideoFilter * vfilter, GstVideoFrame * frame) { GstVideoBalance *videobalance = GST_VIDEO_BALANCE (vfilter); if (!videobalance->process) goto not_negotiated; GST_OBJECT_LOCK (videobalance); videobalance->process (videobalance, frame); GST_OBJECT_UNLOCK (videobalance); return GST_FLOW_OK; /* ERRORS */ not_negotiated: { GST_ERROR_OBJECT (videobalance, "Not negotiated yet"); return GST_FLOW_NOT_NEGOTIATED; } }
static GstFlowReturn gst_video_balance_transform_ip (GstBaseTransform * base, GstBuffer * outbuf) { GstVideoBalance *videobalance = GST_VIDEO_BALANCE (base); guint8 *data; guint size; if (!videobalance->process) goto not_negotiated; /* if no change is needed, we are done */ if (base->passthrough) goto done; data = GST_BUFFER_DATA (outbuf); size = GST_BUFFER_SIZE (outbuf); if (size != videobalance->size) goto wrong_size; GST_OBJECT_LOCK (videobalance); videobalance->process (videobalance, data); GST_OBJECT_UNLOCK (videobalance); done: return GST_FLOW_OK; /* ERRORS */ wrong_size: { GST_ELEMENT_ERROR (videobalance, STREAM, FORMAT, (NULL), ("Invalid buffer size %d, expected %d", size, videobalance->size)); return GST_FLOW_ERROR; } not_negotiated: GST_ERROR_OBJECT (videobalance, "Not negotiated yet"); return GST_FLOW_NOT_NEGOTIATED; }