[gst-devel] Writing a new plugin from template/existing plugin
Ionut Dediu
deionut at yahoo.com
Fri Oct 23 18:09:17 CEST 2009
Hi all,
I am an absolute beginner to gstreamer; I want to write a transform filter. For this I took as an example the edgetv filter and modified it. The code is exactly the same, except canging the name of the plugin and functions/structures to reflect the new name, but the rest of the code is unchanged. It's based on GstVideoFilter. When I test the plugin I get the following error:
$gst-launch -v videotestsrc ! gimpcartoon ! ffmpegcolorspace ! autovideosink
** (gst-launch-0.10:15527): WARNING **: !!!!!!!!!!!gst_gimp_cartoon_base_init
** (gst-launch-0.10:15527): WARNING **: !!!!!!!!!!!gst_gimp_cartoon_class_init
Setting pipeline to PAUSED ...
** (gst-launch-0.10:15527): WARNING **: !!!!!!!!!!!gst_gimp_cartoon_start
/GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0.GstPad:src: caps = video/x-raw-rgb, bpp=(int)32, endianness=(int)4321, depth=(int)24, red_mask=(int)65280, green_mask=(int)16711680, blue_mask=(int)-16777216, width=(int)320, height=(int)240, framerate=(fraction)30/1
Pipeline is PREROLLING ...
** (gst-launch-0.10:15527): WARNING **: !!!!!!!!!!!gst_gimp_cartoon_set_caps
/GstPipeline:pipeline0/GstGimpCartoon:gimpcartoon0.GstPad:src: caps = video/x-raw-rgb, bpp=(int)32, endianness=(int)4321, depth=(int)24, red_mask=(int)65280, green_mask=(int)16711680, blue_mask=(int)-16777216, width=(int)320, height=(int)240, framerate=(fraction)30/1
/GstPipeline:pipeline0/GstGimpCartoon:gimpcartoon0.GstPad:sink: caps = video/x-raw-rgb, bpp=(int)32, endianness=(int)4321, depth=(int)24, red_mask=(int)65280, green_mask=(int)16711680, blue_mask=(int)-16777216, width=(int)320, height=(int)240, framerate=(fraction)30/1
** (gst-launch-0.10:15527): WARNING **: gimpcartoon0: could not get in_size
ERROR: from element /GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0: Internal data flow error.
Additional debug info:
gstbasesrc.c(2330): gst_base_src_loop (): /GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0:
streaming task paused, reason error (-5)
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
/GstPipeline:pipeline0/GstGimpCartoon:gimpcartoon0.GstPad:src: caps = NULL
/GstPipeline:pipeline0/GstGimpCartoon:gimpcartoon0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0.GstPad:src: caps = NULL
FREEING pipeline ...
** (gst-launch-0.10:15527): WARNING **: !!!!!!!!!!!gst_gimp_cartoon_finalize
After setting GST_DEBUG I got more info:
** (gst-launch-0.10:15523): WARNING **: !!!!!!!!!!!gst_gimp_cartoon_set_caps
/GstPipeline:pipeline0/GstGimpCartoon:gimpcartoon0.GstPad:src: caps = video/x-raw-rgb, bpp=(int)32, endianness=(int)4321, depth=(int)24, red_mask=(int)65280, green_mask=(int)16711680, blue_mask=(int)-16777216, width=(int)320, height=(int)240, framerate=(fraction)30/1
/GstPipeline:pipeline0/GstGimpCartoon:gimpcartoon0.GstPad:sink: caps = video/x-raw-rgb, bpp=(int)32, endianness=(int)4321, depth=(int)24, red_mask=(int)65280, green_mask=(int)16711680, blue_mask=(int)-16777216, width=(int)320, height=(int)240, framerate=(fraction)30/1
** (gst-launch-0.10:15523): WARNING **: gimpcartoon0: could not get in_size
0:00:00.273914500 [332m15523[00m 0x9953f20 [31;01mERROR[00m [00m basetransform gstbasetransform.c:1383:gst_base_transform_prepare_output_buffer:<gimpcartoon0>[00m unknown output size
0:00:00.274001592 [332m15523[00m 0x9953f20 [33;01mWARN [00m [00m basetransform gstbasetransform.c:1925:gst_base_transform_handle_buffer:<gimpcartoon0>[00m could not get buffer from pool: error
0:00:00.274025967 [332m15523[00m 0x9953f20 [32;01mINFO [00m [00m basesrc gstbasesrc.c:2278:gst_base_src_loop:<videotestsrc0>[00m pausing after gst_pad_push() = error
0:00:00.274063891 [332m15523[00m 0x9953f20 [33;01mWARN [00m [00m basesrc gstbasesrc.c:2330:gst_base_src_loop:<videotestsrc0>[00m error: Internal data flow error.
0:00:00.274084354 [332m15523[00m 0x9953f20 [33;01mWARN [00m [00m basesrc gstbasesrc.c:2330:gst_base_src_loop:<videotestsrc0>[00m error: streaming task paused, reason error (-5)
0:00:00.274114735 [332m15523[00m 0x9953f20 [32;01mINFO [00m [00;01;31;47m GST_ERROR_SYSTEM gstelement.c:1675:gst_element_message_full:<videotestsrc0>[00m posting message: Internal data flow error.
0:00:00.274165859 [332m15523[00m 0x9953f20 [32;01mINFO [00m [00;01;31;47m GST_ERROR_SYSTEM gstelement.c:1698:gst_element_message_full:<videotestsrc0>[00m posted error message: Internal data flow error.
ERROR: from element /GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0: Internal data flow error.
0:00:00.274342697 [332m15523[00m 0x9953f20 [32;01mINFO [00m [00;01;31m GST_STATES gstbin.c:2738:bin_handle_async_done:<autovideosink0>[00m committing state from READY to PAUSED, old pending PAUSED
0:00:00.274367002 [332m15523[00m 0x9953f20 [32;01mINFO [00m [00;01;31m GST_STATES gstbin.c:2753:bin_handle_async_done:<autovideosink0>[00m completed state change, pending VOID
0:00:00.274396894 [332m15523[00m 0x9953f20 [32;01mINFO [00m [00;01;31m GST_STATES gstbin.c:2738:bin_handle_async_done:<pipeline0>[00m committing state from READY to PAUSED, old pending PAUSED
0:00:00.274420570 [332m15523[00m 0x9953f20 [32;01mINFO [00m [00;01;31m GST_STATES gstbin.c:2753:bin_handle_async_done:<pipeline0>[00m completed state change, pending VOID
ERROR: pipeline doesn't want to preroll.
What is strange is that other than refactoring edgetv and adding some warnings my filter looks exactly like edgetv that works ok... Is there some configure.ac/Makefile.am magic I did not enchant ?
I am stuck on this, help :D
Thanks
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20091023/f03507eb/attachment.htm>
More information about the gstreamer-devel
mailing list