static GstFlowReturn gst_gamma_transform_frame_ip (GstVideoFilter * vfilter, GstVideoFrame * frame) { GstGamma *gamma = GST_GAMMA (vfilter); if (!gamma->process) goto not_negotiated; GST_OBJECT_LOCK (gamma); gamma->process (gamma, frame); GST_OBJECT_UNLOCK (gamma); return GST_FLOW_OK; /* ERRORS */ not_negotiated: { GST_ERROR_OBJECT (gamma, "Not negotiated yet"); return GST_FLOW_NOT_NEGOTIATED; } }
static GstFlowReturn gst_gamma_transform_ip (GstBaseTransform * base, GstBuffer * outbuf) { GstGamma *gamma = GST_GAMMA (base); guint8 *data; guint size; if (!gamma->process) goto not_negotiated; if (base->passthrough) goto done; data = GST_BUFFER_DATA (outbuf); size = GST_BUFFER_SIZE (outbuf); if (size != gamma->size) goto wrong_size; GST_OBJECT_LOCK (gamma); gamma->process (gamma, data); GST_OBJECT_UNLOCK (gamma); done: return GST_FLOW_OK; /* ERRORS */ wrong_size: { GST_ELEMENT_ERROR (gamma, STREAM, FORMAT, (NULL), ("Invalid buffer size %d, expected %d", size, gamma->size)); return GST_FLOW_ERROR; } not_negotiated: { GST_ERROR_OBJECT (gamma, "Not negotiated yet"); return GST_FLOW_NOT_NEGOTIATED; } }