proxy allocation query to fix appsink zero-copy issue

mksafavi mksafavi at
Fri Feb 7 15:17:59 UTC 2020

Thank you for your detailed response.

I checked the strides on (decoder ! encoder) by probing encoder and decoder.
for a 1080p video it was aligned (stride=1920) and for non-standard video
resolutions (e.g. 854x480), it fixed the stride by setting it (stride=856).

when I tried to get the same results with (decoder ! accelerator ! encoder),
I noticed that It's possible to get a Caps_Query on the encoder and see the
frame size, strides,... but when I probed the decoder, it didn't contain any
video metadata. and I got the following error:
/CRITICAL **: gst_video_info_from_caps: assertion 'gst_caps_is_fixed (caps)'

Correct me If I'm wrong, I think the Caps are negotiated UPSTREAM from the
encoder and (appsink -> appsrc) is stopping it from reaching the decoder. So
I should set a probe on the decoder and edit it's allocation metadata. 
though I want to implement it with a bufferpool as you said.
I think  I should make two bufferpools for each decoder and encoder. and set
their Caps respectively(they will have different resolutions because of the

Is there any example available for implementing a bufferpool?

Is it possible to allocate buffers on a mmap-ed memory region?



Sent from:

More information about the gstreamer-devel mailing list