Custom Gst.Element in GTK3

Thibault Saunier tsaunier at gnome.org
Fri Jul 18 07:34:44 PDT 2014


Hello Manuel,

Great you got it working. I am looking for new examples to be pushed in the
gst-python repo to help people get started, would you like to add your code
in there as an example for the use of the VideoFilter base class? (maybe
after adding some logic)

Regards,

Thibault Saunier


On Fri, Jul 18, 2014 at 12:02 PM, Manuel <manuel at wenns-um-email-geht.de>
wrote:

> Hi,
>
> it's me again.
> I just used the wrong PadTemplate-names.
> Now it works! :)
>
> Here is the working code: http://pastebin.com/GdiYhxzf
>
> Thank you all.
>
> Best regards
>
>
>
> Am 17.07.2014 23:50, schrieb Manuel:
> > Hi,
> >
> > thanks for pointing me in the right direction.
> > VideoFilter might be what I was looking for. Is there any simple example
> > code available?
> >
> > Because this short snippet does not work: http://pastebin.com/GdiYhxzf
> >
> > My do_transform_frame_ip method is never called.
> > I read in the BaseTransform-docs that BaseTransform provides already a
> > sinkpad and sourcepad. Or do I have to specify the sink- and src-pads by
> > myself? Because the sinkpad field is None.
> > Or do I have to override some of BaseTransform do_* methods?
> > What am I missing? :)
> >
> > Best regards
> >
> >
> > 17.07.2014 12:39 AM, Jan Alexander Steffens:
> >> BaseTransform is in GstBase, not Gst. VideoFilter is in GstVideo.
> >>
> >> On Thu, Jul 17, 2014 at 12:24 PM, Manuel <manuel at wenns-um-email-geht.de>
> wrote:
> >>> Hey,
> >>>
> >>> it seems that Gst 1.0 shipped with Ubuntu 14.04 does not include the
> >>> BaseTransform/VideoFilter classes:
> >>>         AttributeError: 'gi.repository.Gst' object has no attribute
> 'BaseTransform'
> >>>
> >>> It would be nice if I could stick with the Gst-code/version shipped
> with
> >>> Ubuntu :)
> >>>
> >>> Is there some documentation about the pool negotiation in python?
> >>> As mentioned I just need to get the timestamp of the buffers, for
> >>> example to show the current position in a label and show some text
> using
> >>> textoverlay (like subtitles). And then the buffers should just be
> >>> forwarded to the next element in the pipeline. I don't need to modify
> >>> buffers etc..
> >>> Maybe I don't even need to implement my own Gst.Element. :) I just need
> >>> the "ticks" to show the subtitles as soon as possible as the video
> >>> reaches say position 00:04.140 . Any ideas? :)
> >>>
> >>> Best regards
> >>>
> >>>
> >>> 17.07.2014 11:37 AM, Thibault Saunier:
> >>>> Hello,
> >>>>
> >>>> I tried the example. But it seems to be broken. For example it uses
> >>>>> set_chain_function, which IMHO should be set_chain_function_full.
> >>>>> (According to
> >>>>>
> >>>>>
> http://lazka.github.io/pgi-docs/Gst-1.0/classes/Pad.html#Gst.Pad.set_chain_function_full
> >>>>> ).
> >>>>>
> >>>>
> >>>> It is overriden:
> >>>>
> http://cgit.freedesktop.org/gstreamer/gst-python/tree/gi/overrides/Gst.py#n109
> >>>> it can thus be used like it is in the example (this override has not
> been
> >>>> released yet)
> >>>>
> >>>>
> >>>> It looks like you should use Gst.BaseTransform (maybe Gst.VideoFilter)
> >>>> instead of using Gst.Element as a baseclass for your element, it would
> >>>> handle more things for you (and I guess pool negotation is one of
> those
> >>>> things).
> >>>>
> >>>> Regards,
> >>>>
> >>>> Thibault
> >>>>
> >>>>
> >>>> But I noticed two things:
> >>>>> 1.
> >>>>> When changing the function names to set_chain_function_full and
> >>>>> set_event_function_full and adding a source-pad it almost looks like
> my
> >>>>> TestFilter-class.
> >>>>>
> >>>>> One difference:
> >>>>> In my code the chain-function tries to push the buffer to the next
> >>>>> element (self.srcpad.push(buffer)). The example instead just returns
> >>>>> Gst.FlowReturn.OK. This is where my code produces the error ("We
> don't
> >>>>> have a bufferpool negotiated") and the example doesn't. Do I have to
> do
> >>>>> something more to be able to push the buffer to the next element?
> >>>>>
> >>>>
> >>>> Why don't you implement
> >>>>
> >>>>
> >>>>> 2.
> >>>>> In my last email I mentioned that I even didn't get it (my
> GTK3-example)
> >>>>> playing with textoverlay and autovideosink in the Bin (without my
> custom
> >>>>> element).
> >>>>> But when I change the GhostPad's name in my GTK3-example to 'sink'
> >>>>> (instead of 'video_sink' like in my GTK2-example) and remove the
> >>>>> TestFilter from the Bin then the video is playing fine. I updated the
> >>>>> example at pastebin. Now I just need to get my filter to work :)
> >>>>>
> >>>>> Best regards
> >>>>>
> >>>>>
> >>>>> 17.07.2014 09:29 AM, Thibault Saunier:
> >>>>>> Hello,
> >>>>>>
> >>>>>> I think when you say Gtk3 you mean GStreamer 1.0 with PyGObject.
> >>>>>>
> >>>>>> Do you have gst-python installed? It is necessary to be able to
> create
> >>>>>> GstElement subclasses.
> >>>>>>
> >>>>>> You can have a look at that example:
> >>>>>>
> >>>>>
> http://cgit.freedesktop.org/gstreamer/gst-python/tree/examples/plugins/python/sinkelement.py
> >>>>>>
> >>>>>> Regards,
> >>>>>>
> >>>>>> Thibault Saunier
> >>>>>>
> >>>>>>
> >>>>>> On Thu, Jul 17, 2014 at 12:07 AM, Manuel <
> manuel at wenns-um-email-geht.de>
> >>>>>> wrote:
> >>>>>>
> >>>>>>> Custom Gst.Element in GTK3
> >>>>>>> --------------------------
> >>>>>>> Hi all,
> >>>>>>>
> >>>>>>> I wrote a gst.Element (GTK2), which is a simple filter that just
> >>>>>>> forwards all buffers it receives on the sink-pad to the src-pad.
> Later I
> >>>>>>> will grab some information from the buffer before forwarding it.
> (More
> >>>>>>> precisely I will grab the timestamps and show some text based on
> the
> >>>>>>> time, like subtitles). The GTK2-version works fine.
> >>>>>>>
> >>>>>>> Today I tried to change my code so that it uses the GTK3
> >>>>>>> gi.repository-package.
> >>>>>>> Although the new class looks almost the same it doesn't work.
> >>>>>>>
> >>>>>>> This is the error printed on the console:
> >>>>>>> Error: Internal error: can't allocate images xvimagesink.c(979):
> >>>>>>> gst_xvimagesink_show_frame ():
> >>>>>>>
> >>>>>>>
> >>>>>
> /GstPlayBin:MultimediaPlayer/GstPlaySink:playsink/GstBin:vbin/GstBin:timed-video-bin/GstAutoVideoSink:autovideosink0/GstXvImageSink:autovideosink0-actual-sink-xvimage:
> >>>>>>> We don't have a bufferpool negotiated
> >>>>>>>
> >>>>>>> Here is my GTK2-version: http://pastebin.com/J2gHfvS4
> >>>>>>> And here the GTK3-version: http://pastebin.com/9u8zzcTk
> >>>>>>>
> >>>>>>> This is a scenario:
> >>>>>>> A video-file is played using playbin. The playbin's video-sink is
> set to
> >>>>>>> a Gtk.Bin that combines my own Gst.Element with textoverlay and an
> >>>>>>> autovideosink.
> >>>>>>>
> >>>>>>> NOTE: If you remove the textoverlay from the GTK3 example then at
> least
> >>>>>>> the audio is playing ;)
> >>>>>>>
> >>>>>>> I would be very grateful for your help. :)
> >>>>>>>
> >>>>>>> Best Regards
> >>>>>>> _______________________________________________
> >>>>>>> gstreamer-devel mailing list
> >>>>>>> gstreamer-devel at lists.freedesktop.org
> >>>>>>> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
> >>>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> _______________________________________________
> >>>>>> gstreamer-devel mailing list
> >>>>>> gstreamer-devel at lists.freedesktop.org
> >>>>>> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
> >>>>>>
> >>>>>
> >>>>> _______________________________________________
> >>>>> gstreamer-devel mailing list
> >>>>> gstreamer-devel at lists.freedesktop.org
> >>>>> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
> >>>>>
> >>>>
> >>>>
> >>>>
> >>>> _______________________________________________
> >>>> gstreamer-devel mailing list
> >>>> gstreamer-devel at lists.freedesktop.org
> >>>> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
> >>>>
> >>>
> >>> _______________________________________________
> >>> gstreamer-devel mailing list
> >>> gstreamer-devel at lists.freedesktop.org
> >>> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
> >> _______________________________________________
> >> gstreamer-devel mailing list
> >> gstreamer-devel at lists.freedesktop.org
> >> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
> >>
> >
> > _______________________________________________
> > gstreamer-devel mailing list
> > gstreamer-devel at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
> >
>
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20140718/9af6c8d3/attachment-0001.html>


More information about the gstreamer-devel mailing list