How to track buffer caps in gstreamer 1.x ?

Thiago Santos thiagoss at osg.samsung.com
Thu Jan 29 07:05:45 PST 2015


On 01/29/2015 11:53 AM, Ben Bridgwater wrote:
> Hi,
> I'm new to gstreamer development - converting an existing application 
> (interactive spectrogram) from using my own pipeline to use gstreamer 
> instead.
>
> I gather that in gstreamer 0.1 the caps of a pad sourcing a buffer 
> were also recorded in the buffer itself, but since 1.0 that is no 
> longer the case, and it's up to elements to tracks caps via caps 
> events instead...
>
> My question is what are the options and best practices with gstreamer 
> 1.x for tracking buffer caps in the case where caps are changing 
> rapidly and buffers may be processed out of order? In my case this 
> requirement comes from a downstream display buffer where paint events 
> may request arbitrary parts of the display to be updated - 
> corresponding to arbitrary sequences of buffers needing to be 
> processed, and the need to know what the caps (data format) are for 
> each buffer.

The GstCaps are not stored on buffers anymore, they are only present on 
GstPads. Instead of calling gst_pad_set_caps or pushing a buffer with a 
caps set, now elements should push a caps event before the buffers and 
all buffers following a caps event should have the caps of that event. 
You can use GstPad's API to get the current negotiated caps on a pad and 
all buffers flowing on that pad should have that caps until a new event 
arrives. Check 
http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#gst-pad-get-current-caps

So, to keep track of buffers and caps, you need to look for the caps 
event. For example, suppose you receive the following events and buffers:

CAPS_1 BUF_A BUF_B BUF_C CAPS_2 BUF_D BUF_E

Buffers A B and C will be on format defined by CAPS_1, while buffers D 
and E will be on format CAPS_2.

I hope it makes it clear. If for some reason you need to store buffer + 
caps together you can use the GstSample : 
https://developer.gnome.org/gstreamer/stable/gstreamer-GstSample.html

>
> Thanks for any pointers and advice!
>
> Ben
>
>
>
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel


-- 
Thiago Sousa Santos
Senior Multimedia Engineer, Open Source Group
Samsung Research America - Silicon Valley

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20150129/5f8c3f0e/attachment.html>


More information about the gstreamer-devel mailing list