<div dir="ltr">Hello,<br><br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
I tried the example. But it seems to be broken. For example it uses<br>
set_chain_function, which IMHO should be set_chain_function_full.<br>
(According to<br>
<a href="http://lazka.github.io/pgi-docs/Gst-1.0/classes/Pad.html#Gst.Pad.set_chain_function_full" target="_blank">http://lazka.github.io/pgi-docs/Gst-1.0/classes/Pad.html#Gst.Pad.set_chain_function_full</a>).<br></blockquote>
<div><br></div><div>It is overriden: <a href="http://cgit.freedesktop.org/gstreamer/gst-python/tree/gi/overrides/Gst.py#n109">http://cgit.freedesktop.org/gstreamer/gst-python/tree/gi/overrides/Gst.py#n109</a> it can thus be used like it is in the example (this override has not been released yet)<br>
</div><div> <br><br></div><div>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).<br>
<br></div><div>Regards,<br><br>Thibault<br></div><div><br><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
But I noticed two things:<br>
1.<br>
When changing the function names to set_chain_function_full and<br>
set_event_function_full and adding a source-pad it almost looks like my<br>
TestFilter-class.<br>
<br>
One difference:<br>
In my code the chain-function tries to push the buffer to the next<br>
element (self.srcpad.push(buffer)). The example instead just returns<br>
Gst.FlowReturn.OK. This is where my code produces the error ("We don't<br>
have a bufferpool negotiated") and the example doesn't. Do I have to do<br>
something more to be able to push the buffer to the next element?<br></blockquote><div><br></div><div>Why don't you implement<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">

2.<br>
In my last email I mentioned that I even didn't get it (my GTK3-example)<br>
playing with textoverlay and autovideosink in the Bin (without my custom<br>
element).<br>
But when I change the GhostPad's name in my GTK3-example to 'sink'<br>
(instead of 'video_sink' like in my GTK2-example) and remove the<br>
TestFilter from the Bin then the video is playing fine. I updated the<br>
example at pastebin. Now I just need to get my filter to work :)<br>
<br>
Best regards<br>
<br>
<br>
17.07.2014 09:29 AM, Thibault Saunier:<br>
<div class=""><div class="h5">> Hello,<br>
><br>
> I think when you say Gtk3 you mean GStreamer 1.0 with PyGObject.<br>
><br>
> Do you have gst-python installed? It is necessary to be able to create<br>
> GstElement subclasses.<br>
><br>
> You can have a look at that example:<br>
> <a href="http://cgit.freedesktop.org/gstreamer/gst-python/tree/examples/plugins/python/sinkelement.py" target="_blank">http://cgit.freedesktop.org/gstreamer/gst-python/tree/examples/plugins/python/sinkelement.py</a><br>

><br>
> Regards,<br>
><br>
> Thibault Saunier<br>
><br>
><br>
> On Thu, Jul 17, 2014 at 12:07 AM, Manuel <<a href="mailto:manuel@wenns-um-email-geht.de">manuel@wenns-um-email-geht.de</a>><br>
> wrote:<br>
><br>
>> Custom Gst.Element in GTK3<br>
>> --------------------------<br>
>> Hi all,<br>
>><br>
>> I wrote a gst.Element (GTK2), which is a simple filter that just<br>
>> forwards all buffers it receives on the sink-pad to the src-pad. Later I<br>
>> will grab some information from the buffer before forwarding it. (More<br>
>> precisely I will grab the timestamps and show some text based on the<br>
>> time, like subtitles). The GTK2-version works fine.<br>
>><br>
>> Today I tried to change my code so that it uses the GTK3<br>
>> gi.repository-package.<br>
>> Although the new class looks almost the same it doesn't work.<br>
>><br>
>> This is the error printed on the console:<br>
>> Error: Internal error: can't allocate images xvimagesink.c(979):<br>
>> gst_xvimagesink_show_frame ():<br>
>><br>
>> /GstPlayBin:MultimediaPlayer/GstPlaySink:playsink/GstBin:vbin/GstBin:timed-video-bin/GstAutoVideoSink:autovideosink0/GstXvImageSink:autovideosink0-actual-sink-xvimage:<br>
>> We don't have a bufferpool negotiated<br>
>><br>
>> Here is my GTK2-version: <a href="http://pastebin.com/J2gHfvS4" target="_blank">http://pastebin.com/J2gHfvS4</a><br>
>> And here the GTK3-version: <a href="http://pastebin.com/9u8zzcTk" target="_blank">http://pastebin.com/9u8zzcTk</a><br>
>><br>
>> This is a scenario:<br>
>> A video-file is played using playbin. The playbin's video-sink is set to<br>
>> a Gtk.Bin that combines my own Gst.Element with textoverlay and an<br>
>> autovideosink.<br>
>><br>
>> NOTE: If you remove the textoverlay from the GTK3 example then at least<br>
>> the audio is playing ;)<br>
>><br>
>> I would be very grateful for your help. :)<br>
>><br>
>> Best Regards<br>
>> _______________________________________________<br>
>> gstreamer-devel mailing list<br>
>> <a href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a><br>
>> <a href="http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" target="_blank">http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br>
>><br>
><br>
><br>
><br>
> _______________________________________________<br>
> gstreamer-devel mailing list<br>
> <a href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a><br>
> <a href="http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" target="_blank">http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br>
><br>
<br>
_______________________________________________<br>
gstreamer-devel mailing list<br>
<a href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" target="_blank">http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br>
</div></div></blockquote></div><br></div></div>