Make a new plugin with one element like fdsink or filesink

Hannes hannesbohny at yahoo.de
Wed Aug 24 11:23:20 UTC 2016


Hello,

I would like to make a new gstreamer plugin with one element which is 
very similar to fdsink (or filesink). My key goal is to be able to 
handle a videostream (generated by a pipline like "gst-launch-1.0 
imxv4l2videosrc ! imxvpuenc_h264 ! mysinkelement") on "byte level", that 
means where I can forward the data to another program (also written in 
C) which encapsulates the video data in a customized protocol (this part 
works already and is not of my concern).

The whole thing will run on a single board computer called Gateworks 
Ventana GW5100 with a i.MX 6Quad Cortex-A9 quad-core Processor, which 
has a video processing unit (VPU) as HW-acceleration and runs on a 
Ubuntu based OS with preinstalled gstreamer-1.0 and gstreamer-imx plugin.

A few weeks ago, I tried it with the gst-element-maker of the 
gst-plugins-bad and with the gst-template package descriped in the 
GStreamer Plugin Writer’s Guide, but with none of it, I was able to load 
and use the plugin. What exactly besides the *.so file is part of a 
plugin (or an element)?

I also tried to copy and rename fdsink in the gstreamer tree and rebuild 
the whole gstreamer core, but here as well, the build process failed, 
because I was not able to determine where to add a reference to the 
copied and renamed .c- and .h-file and I think this is not a proper 
solution...

Recently I just edited the fdsink.c and used this element in the 
uninstalled environment (created by create-uninstalled-setup.sh in 
scripts of gstreamer core) to test my new sink element, but on the 
single board computer I got problems with this solution when I tried to 
build a pipeline containing elements of the gstreamer-imx plugin.

I know it is not very helpful, that I don't have further details on how 
exactly I failed because it's already some time ago, but I would like to 
ask, if anyone can give me kind of a road map on how to create an own 
element based on the source code of fdsink. This would really help! Also 
I would appreciate some advice on the method (which of the above 
described is a proper way?) about creating new elements, since I found 
almost nothing about that in the internet.

If possible, I would like to avoid rebuilding the gstreamer core on the 
single board computer, because of the dependicies with the gstreamer-imx 
plugin. Is there a way to just add a new plugin and only include it to 
the preinstalled gstreamer core? If yes, where can I append a path to 
GST_PLUGIN_PATH of the preinstalled gstreamer core and is this enough to 
include a new plugin?

Thank you very much!

Regards,
Hannes


More information about the gstreamer-devel mailing list