[gst-devel] Transform function not working
vaishnavi
vaish05_s at yahoo.com
Tue Dec 7 11:44:24 CET 2010
Hi,
I'm using basetransform as parent class for my plugin.
I have implemented transform function,set_caps,get_unit_size and
prepare_output_buffer of parent class. Here im taking the in_buf contents
passing to driver and reading the processed data to out_buf.
The driver works fine...
But i get error and warning saying the caps are not negotiated. This happens
when i launch the application.
The caps are set to any.
If i only use transform function the i get an error,after implementing
set_caps and get_unit_size i receive warning.
The warning message is
WARN basetransform
gstbasetransform.c:1969:gst_base_transform_handle_buffer:<dummy0> error: not
negotiated
0:00:00.076602538 2989 0x9b73038 WARN basetransform
gstbasetransform.c:1969:gst_base_transform_handle_buffer:<dummy0> error: not
negotiated
WARN basesrc gstbasesrc.c:2507:gst_base_src_loop:<filesrc0>
error: Internal data flow error.
0:00:00.076898043 2989 0x9b73038 WARN basesrc
gstbasesrc.c:2507:gst_base_src_loop:<filesrc0> error: streaming task paused,
reason not-negotiated (-4)
static gboolean
gst_dummy_get_unit_size (GstBaseTransform * btrans, GstCaps * caps,
guint * size)
{
*size=1;
return TRUE;
}
static GstFlowReturn
gst_dummy_transform (GstBaseTransform * trans, GstBuffer * inbuf, GstBuffer
* outbuf)
{
GstFlowReturn ret = GST_FLOW_OK;
return ret;
}
static gboolean gst_dummy_set_caps(GstBaseTransform *trans, GstCaps *incaps,
GstCaps *outcaps)
{
outcaps=incaps;
return TRUE;
}
static GstFlowReturn
gst_dummy_prepare_output_buffer (GstBaseTransform * trans,
GstBuffer * in_buf, gint out_size, GstCaps * out_caps, GstBuffer **
out_buf)
{
GstDummy *dummy = GST_DUMMY (trans);
guint size;
gint n,x;
out_caps=GST_CAPS_ANY;
GstClockTime runtimestamp = G_GINT64_CONSTANT (0);
g_print("The input buffer contents
are%d\t%d\t%d\t",in_buf->data[0],in_buf->data[1],in_buf->data[2]);
size=GST_BUFFER_SIZE(in_buf);
g_print("size of inbuf is %d\n",size);
gst_buffer_make_writable(dummy->cpybuf);
n=write(dummy->pf_handle,GST_BUFFER_DATA(in_buf),size);
if(n<0)
{
g_print("could not write\n");
}
x=read(dummy->pf_handle,GST_BUFFER_DATA(dummy->cpybuf),n);
if(x<0)
{
g_print("could not read\n");
}
else
{
g_print("the size of output buffer is %d\n",x);
}
if (dummy->silent == FALSE)
g_print ("I'm plugged, therefore I'm in Dummy TC.\n");
*out_buf=gst_buffer_copy(dummy->cpybuf);
gst_dummy_set_caps(trans,GST_PAD_CAPS(dummy->srcpad),GST_PAD_CAPS(dummy->sinkpad));
return GST_FLOW_OK;
}
--
View this message in context: http://gstreamer-devel.966125.n4.nabble.com/Transform-function-not-working-tp3076135p3076135.html
Sent from the GStreamer-devel mailing list archive at Nabble.com.
More information about the gstreamer-devel
mailing list