[gst-devel] Plugin creation

Iago Toral Quiroga itoral at igalia.com
Fri Mar 6 14:03:39 CET 2009


You have to force rgb16 format in the filter src, and I'd also use the
videoscale and ffmpegcolorspace elements after the filtering has taken
place. Try this:

v4l2src ! "video/x-raw-rgb,bpp=16,depth=16" ! testfilter ! videoscale !
ffmpegcolorspace ! xvimagesink


El vie, 06-03-2009 a las 11:59 +0100, cammille at polytech.unice.fr
escribió:
> I resolve the problem !
> 
> But there still is the problem I had at the beginning : Could not
> negotiate format...
> 
> 
> I remember you my pipeline :
> v4l2src  !  videoscale !  ffmpegcolorspace ! testfilter ! xvimagesink
> 
> Where testfilter should apply a red mask.
> 
> > Thanks for your help !
> >
> > I have another problem when I compile my project :  error:
> > gst/video/video.h: No such file or directory
> >
> > So I can't test your code. I searched on google but it seems that nobody
> > have the problem.
> >
> > Do you know how to resolve the problem ?
> >
> >> (I sent another email with an implementation of a silly video filter
> >> that applies different color masks to an rgb stream, but for some reason
> >> it did not hit the list, guess it does not like attachments so I removed
> >> it, hopefully this one will make it. If you want the code, say so and
> >> I'll send it to you directly).
> >>
> >> In summary, you just need to get the red_mask from the caps:
> >>
> >> gst_filter_set_caps (GstPad * pad, GstCaps * caps)
> >> {
> >>   Gstmyvideo *filter;
> >>   GstPad *otherpad;
> >>
> >>   filter = GST_MYVIDEO (gst_pad_get_parent (pad));
> >>   otherpad = (pad == filter->srcpad) ? filter->sinkpad : filter->srcpad;
> >>   gst_object_unref (filter);
> >>
> >>   GstStructure *structure = gst_caps_get_structure (caps, 0);
> >>   ...
> >>   gst_structure_get_int (structure, "red_mask", &filter->red_mask);
> >>   ...
> >> }
> >>
> >> Then, in your process function, apply the mask to the samples, something
> >> like this does the trick:
> >>
> >> ...
> >> guint samples = GST_BUFFER_SIZE (buf) / 2;
> >> guint16 *data = (guint16 *) GST_BUFFER_DATA (buf);
> >> gint i;
> >>
> >> for (i=0; i<samples; i++) {
> >>     data[i] = data[i] & filter->red_mask;
> >>  }
> >> ...
> >>
> >> Iago
> >>
> >> El vie, 06-03-2009 a las 09:05 +0100, cammille at polytech.unice.fr
> >> escribió:
> >>> Nobody knows how to filter the red color ?
> >>>
> >>> If someone can explain me how to manipulate the buffer just to keep the
> >>> red color it would be great.
> >>>
> >>> Thank you.
> >>>
> >>> > Thanks everybody !
> >>> >
> >>> > I'm ok with you Albert, I think the simplest is RGB.. but there still
> >>> is a
> >>> > problem.
> >>> > If I define a cap I have an error which is :
> >>> > ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Could
> >>> not
> >>> > negotiate format
> >>> >
> >>> > So I tried to force the format in the pipeline and I have the same
> >>> error !
> >>> >
> >>> > here is my command : gst-launch
> >>> > --gst-plugin-path=$HOME/gst-template/gst-plugin/src/.libs/ v4l2src  !
> >>> > videoscale !  ffmpegcolorspace ! testfilter ! xvimagesink
> >>> >
> >>> > I have searched in vain other examples...
> >>> >
> >>> > It's strange, because in my code, if I change my buffer like that :
> >>> > int i;
> >>> > int size = GST_BUFFER_CAST(buf)->size;
> >>> >
> >>> > for(i=1; i < size; i++) {
> >>> >   (buf->data)[i] = 0;
> >>> > }
> >>> >
> >>> > The images become all green... I really don't understand why.
> >>> >
> >>> > I think there is a simple way to just keep the red color.. but I
> >>> don't
> >>> > find it.
> >>> >
> >>> >
> >>> >
> >>> >> Hi,
> >>> >> the plugin name and description can (must...) be changed in the
> >>> >> plugin_init function and GST_PLUGIN_DEFINE macro definition in the
> >>> code
> >>> >> that must be present in your code.
> >>> >> Concerning the filtering itself, you must check that you have RGB (I
> >>> >> guess
> >>> >> that's the simplest) image buffers coming to your plugin in order to
> >>> >> make
> >>> >> your processing in the chain function. Best way would be to set the
> >>> caps
> >>> >> of your sink pad to video/x-rgb flow. Check other exisitng plugins
> >>> to
> >>> >> see
> >>> >> how to do this. You'll need a ffmpegcolorspace element before your
> >>> >> plugin
> >>> >> to let the flow be in the good format.
> >>> >> The example plugin is just a skeleton, you need now to specialize it
> >>> >> with
> >>> >> your own code... Read the gstreamer plugin writer's guide, it will
> >>> give
> >>> >> you information.
> >>> >> Regards,
> >>> >> Al
> >>> >>
> >>> >>
> >>> >>
> >>> >> ________________________________
> >>> >> De : "cammille at polytech.unice.fr" <cammille at polytech.unice.fr>
> >>> >> À : Discussion of the development of GStreamer
> >>> >> <gstreamer-devel at lists.sourceforge.net>
> >>> >> Envoyé le : Jeudi, 5 Mars 2009, 12h15mn 55s
> >>> >> Objet : Re: [gst-devel] Plugin creation
> >>> >>
> >>> >> I found the problem ! The fact is that my plugin is not named
> >>> >> "testfilter".. It's named "plugin". How can I change this name ?
> >>> >> beacause
> >>> >> I have never specified that my plugin is named "plugin".
> >>> >>
> >>> >> Another question, : now, I would like to create a simple plugin :
> >>> >> I would like to filter the video taken by my webcam and filter the
> >>> red
> >>> >> color (i would like to apply an effect like the effectv plugin).
> >>> >> I know the algorithm, but I'm not sure how to do that.
> >>> >>
> >>> >> Do you think I should create this plugin by using the example plugin
> >>> ?
> >>> >>
> >>> >>
> >>> >>> assuming that the shared library name is libgsttestfilters.so
> >>> >>>
> >>> >>> On Thu, Mar 5, 2009 at 4:28 PM, ved kpl <ved.kpl at gmail.com> wrote:
> >>> >>>> Try gst-inspect on your plugin
> >>> >>>>
> >>> >>>> Assuming that the plugin is installed in
> >>> >>>> "$HOME/gst-template/gst-plugin/src/.libs/"
> >>> >>>> do the following and see what you get
> >>> >>>>
> >>> >>>>  gst-inspect
> >>> >>>> $HOME/gst-template/gst-plugin/src/.libs/libgsttestfilters.so
> >>> >>>>
> >>> >>>> On Thu, Mar 5, 2009 at 4:15 PM,  <cammille at polytech.unice.fr>
> >>> wrote:
> >>> >>>>> Hello !
> >>> >>>>> I would like to create a simple plugin such as effectv..
> >>> >>>>>
> >>> >>>>> But, first of all, I would like to create a "test plugin".
> >>> >>>>> So, I tried to make the example described in the GStreamer Plugin
> >>> >>>>> Writer's
> >>> >>>>> Guide.
> >>> >>>>>
> >>> >>>>> I compiled the "test plugin" with the makefile, and now I'm
> >>> trying
> >>> to
> >>> >>>>> launch this plugin, but I have an error..
> >>> >>>>>
> >>> >>>>> What's wrong with :
> >>> >>>>>
> >>> >>>>> $ gst-launch
> >>> >>>>> --gst-plugin-path=$HOME/gst-template/gst-plugin/src/.libs/
> >>> >>>>> fakesrc ! testfilters ! fakesink silent=TRUE
> >>> >>>>>  > WARNING: erroneous pipeline: no element "testfilters"
> >>> >>>>>
> >>> >>>>> Maybe I have forgotten something ?
> >>> >>>>>
> >>> >>>>>
> >>> >>>>> Thank you.
> >>> >>>>>
> >>> >>>>>
> >>> >>>>>
> >>> >>>>> ------------------------------------------------------------------------------
> >>> >>>>> Open Source Business Conference (OSBC), March 24-25, 2009, San
> >>> >>>>> Francisco, CA
> >>> >>>>> -OSBC tackles the biggest issue in open source: Open Sourcing the
> >>> >>>>> Enterprise
> >>> >>>>> -Strategies to boost innovation and cut costs with open source
> >>> >>>>> participation
> >>> >>>>> -Receive a $600 discount off the registration fee with the source
> >>> >>>>> code:
> >>> >>>>> SFAD
> >>> >>>>> http://p.sf.net/sfu/XcvMzF8H
> >>> >>>>> _______________________________________________
> >>> >>>>> gstreamer-devel mailing list
> >>> >>>>> gstreamer-devel at lists.sourceforge.net
> >>> >>>>> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
> >>> >>>>>
> >>> >>>>
> >>> >>>
> >>> >>> ------------------------------------------------------------------------------
> >>> >>> Open Source Business Conference (OSBC), March 24-25, 2009, San
> >>> >>> Francisco,
> >>> >>> CA
> >>> >>> -OSBC tackles the biggest issue in open source: Open Sourcing the
> >>> >>> Enterprise
> >>> >>> -Strategies to boost innovation and cut costs with open source
> >>> >>> participation
> >>> >>> -Receive a $600 discount off the registration fee with the source
> >>> code:
> >>> >>> SFAD
> >>> >>> http://p.sf.net/sfu/XcvMzF8H
> >>> >>> _______________________________________________
> >>> >>> gstreamer-devel mailing list
> >>> >>> gstreamer-devel at lists.sourceforge.net
> >>> >>> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
> >>> >>>
> >>> >>
> >>> >>
> >>> >>
> >>> >> ------------------------------------------------------------------------------
> >>> >> Open Source Business Conference (OSBC), March 24-25, 2009, San
> >>> >> Francisco,
> >>> >> CA
> >>> >> -OSBC tackles the biggest issue in open source: Open Sourcing the
> >>> >> Enterprise
> >>> >> -Strategies to boost innovation and cut costs with open source
> >>> >> participation
> >>> >> -Receive a $600 discount off the registration fee with the source
> >>> code:
> >>> >> SFAD
> >>> >> http://p.sf.net/sfu/XcvMzF8H
> >>> >> _______________________________________________
> >>> >> gstreamer-devel mailing list
> >>> >> gstreamer-devel at lists.sourceforge.net
> >>> >> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
> >>> >>
> >>> >>
> >>> >>
> >>> >>       ------------------------------------------------------------------------------
> >>> >> Open Source Business Conference (OSBC), March 24-25, 2009, San
> >>> >> Francisco,
> >>> >> CA
> >>> >> -OSBC tackles the biggest issue in open source: Open Sourcing the
> >>> >> Enterprise
> >>> >> -Strategies to boost innovation and cut costs with open source
> >>> >> participation
> >>> >> -Receive a $600 discount off the registration fee with the source
> >>> code:
> >>> >> SFAD
> >>> >> http://p.sf.net/sfu/XcvMzF8H_______________________________________________
> >>> >> gstreamer-devel mailing list
> >>> >> gstreamer-devel at lists.sourceforge.net
> >>> >> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
> >>> >>
> >>> >
> >>> >
> >>> >
> >>> > ------------------------------------------------------------------------------
> >>> > Open Source Business Conference (OSBC), March 24-25, 2009, San
> >>> Francisco,
> >>> > CA
> >>> > -OSBC tackles the biggest issue in open source: Open Sourcing the
> >>> > Enterprise
> >>> > -Strategies to boost innovation and cut costs with open source
> >>> > participation
> >>> > -Receive a $600 discount off the registration fee with the source
> >>> code:
> >>> > SFAD
> >>> > http://p.sf.net/sfu/XcvMzF8H
> >>> > _______________________________________________
> >>> > gstreamer-devel mailing list
> >>> > gstreamer-devel at lists.sourceforge.net
> >>> > https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
> >>> >
> >>>
> >>>
> >>>
> >>> ------------------------------------------------------------------------------
> >>> Open Source Business Conference (OSBC), March 24-25, 2009, San
> >>> Francisco, CA
> >>> -OSBC tackles the biggest issue in open source: Open Sourcing the
> >>> Enterprise
> >>> -Strategies to boost innovation and cut costs with open source
> >>> participation
> >>> -Receive a $600 discount off the registration fee with the source code:
> >>> SFAD
> >>> http://p.sf.net/sfu/XcvMzF8H
> >>> _______________________________________________
> >>> gstreamer-devel mailing list
> >>> gstreamer-devel at lists.sourceforge.net
> >>> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
> >>>
> >>
> >>
> >> ------------------------------------------------------------------------------
> >> Open Source Business Conference (OSBC), March 24-25, 2009, San
> >> Francisco,
> >> CA
> >> -OSBC tackles the biggest issue in open source: Open Sourcing the
> >> Enterprise
> >> -Strategies to boost innovation and cut costs with open source
> >> participation
> >> -Receive a $600 discount off the registration fee with the source code:
> >> SFAD
> >> http://p.sf.net/sfu/XcvMzF8H
> >> _______________________________________________
> >> gstreamer-devel mailing list
> >> gstreamer-devel at lists.sourceforge.net
> >> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
> >>
> >
> >
> >
> > ------------------------------------------------------------------------------
> > Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco,
> > CA
> > -OSBC tackles the biggest issue in open source: Open Sourcing the
> > Enterprise
> > -Strategies to boost innovation and cut costs with open source
> > participation
> > -Receive a $600 discount off the registration fee with the source code:
> > SFAD
> > http://p.sf.net/sfu/XcvMzF8H
> > _______________________________________________
> > gstreamer-devel mailing list
> > gstreamer-devel at lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
> >
> 
> 
> 
> ------------------------------------------------------------------------------
> Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
> -OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
> -Strategies to boost innovation and cut costs with open source participation
> -Receive a $600 discount off the registration fee with the source code: SFAD
> http://p.sf.net/sfu/XcvMzF8H
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
> 





More information about the gstreamer-devel mailing list