<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jul 13, 2016 at 9:29 AM, Andrey Nechypurenko <span dir="ltr"><<a href="mailto:andreynech@googlemail.com" target="_blank">andreynech@googlemail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi Sebastian,<br>
<span class=""><br>
> The most reliable way would be to connect to the "notify::caps" signal<br>
> of the sinkpad of appsink, or to use a pad probe on the sinkpad to<br>
> intercept the caps event.<br>
<br>
</span>I was trying to follow your suggestion with "notify::caps" (please see<br>
my complete python script below). Unfortunately I am still getting ANY<br>
as a stringified caps. I am wondering if I am doing something wrong or<br>
is there a bug or maybe the signal is not an appropriate mechanism in<br>
this particular case and I should try your second suggestion with the<br>
probe?<br></blockquote><div><br></div><div>You are using a 'query_caps' function that does a caps query on the pad. This will return all the possible caps that the pad can accept, in this case (appsink's sinkpad) it will be ANY. You want to use pad.get_current_caps (<a href="https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#gst-pad-get-current-caps">https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#gst-pad-get-current-caps</a>) that will return the currently set caps on that pad.<br><br></div><div>Regards,<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">
<br>
Thank you,<br>
Andrey.<br>
<br>
#!/usr/bin/env python3<br>
<br>
import gi<br>
gi.require_version('Gst', '1.0')<br>
gi.require_version('Gtk', '3.0')<br>
from gi.repository import GObject, Gst, Gtk<br>
<br>
def notify_caps(pad, args):<br>
    caps = pad.query_caps(None)<br>
    print(caps.to_string()) # Always prints ANY <<<<<<<br>
<br>
pstr = 'videotestsrc is-live=true ! ' \<br>
   'video/x-raw, width=640, height=480, framerate=(fraction)30/1 ! ' \<br>
   'theoraenc ! ' \<br>
   'rtptheorapay name=payloader ! ' \<br>
   'appsink name=sink'<br>
<br>
GObject.threads_init()<br>
Gst.init(None)<br>
<br>
pipeline = Gst.parse_launch(pstr)<br>
appsink = pipeline.get_by_name('sink')<br>
for pad in appsink.sinkpads:<br>
    pad.connect("notify::caps", notify_caps)<br>
<br>
bus = pipeline.get_bus()<br>
bus.add_signal_watch()<br>
<br>
pipeline.set_state(Gst.State.PLAYING)<br>
<br>
msg = bus.timed_pop_filtered(<br>
    Gst.CLOCK_TIME_NONE,<br>
    Gst.MessageType.ERROR | Gst.MessageType.EOS)<br>
<br>
pipeline.set_state(Gst.State.NULL)<br>
<div class=""><div class="h5">_______________________________________________<br>
gstreamer-devel mailing list<br>
<a href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" rel="noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature" data-smartmail="gmail_signature">Thiago Sousa Santos</div>
</div></div>