What's the meaning of video/x-raw(memory:GLMemory) without texture-target?

Matthew Waters ystreet00 at gmail.com
Fri Nov 22 04:12:57 UTC 2019


Hi,

By default a 'video/x-raw(memory:GLMemory)' caps without the
texture-target field is equivalent to texture-target=2D as that was the
default before we differentiated the different OpenGL texture targets. 
Now elements should be able to negotiate the differences between them
correctly however there may be bugs.

The GLMemory output from omxh264dec is highly dependant on the platform
you are running on and may or may not work correctly.  I know that it
used to work on the RPi and have not tested any other omx platform myself.

The first step to debugging this would be to enable GStreamer debug
logging to get an idea of what may be wrong.

Cheers
-Matt

On 22/11/19 3:10 am, Milian Wolff wrote:
> Hey all,
>
> on a Raspberry Pi 3b+ gst-inspect-1.0 shows the following src for omxh264dec:
>
> ```
>       video/x-raw(memory:GLMemory)
>                  format: RGBA
>                   width: [ 1, 2147483647 ]
>                  height: [ 1, 2147483647 ]
>               framerate: [ 0/1, 2147483647/1 ]
> ```
>
> Note that this is missing a texture-target specification. What kind of memory 
> is this, and how can I leverage it further down? I would like to efficiently 
> change video frames using an OpenGL filter. If we take gleffects-twirl as an 
> example, it expects the following as sink:
>
>
> ```
> video/x-raw(memory:GLMemory):
>          format: RGBA
>           width: [ 1, 2147483647 ]
>          height: [ 1, 2147483647 ]
>       framerate: [ 0/1, 2147483647/1 ]
>  texture-target: 2D
> ```
>
> How can I connect the two together? If I try, to add the filter directly after 
> the decoder in a pipeline, I get:
>
> ```
> ERROR: from element /GstPipeline:pipeline0/GstOMXH264Dec-
> omxh264dec:omxh264dec-omxh264dec0: Internal data stream error.
> Additional debug info:
> ../../gst-omx-1.16.1/omx/gstomxvideodec.c(1927): gst_omx_video_dec_loop (): /
> GstPipeline:pipeline0/GstOMXH264Dec-omxh264dec:omxh264dec-omxh264dec0:
> stream stopped, reason not-negotiated
> ```
>
> Can someone sched some light on this? How can one post-process the GLMemory in 
> a gl video filter? Is the missing texture-target a bug in omxh264dec, or can I 
> somehow make the raw GLMemory a texture? Or does this mean the frame lives in 
> some other form of non-texture memory that can be displayed, but not otherwise 
> accessed by OpenGL for video filter purposes?
>
> Thanks
>
> PS: In case you are wondering what we are trying to achieve on a higher level:
>
> rpicamsrc -> h264 -> omxh264dec -> glmemory -> custom gl filter to add a non-
> static overlay to every frame -> tee to display sink and then also a h264-
> encoded avi record sink
>
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20191122/ae1b17dc/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20191122/ae1b17dc/attachment.sig>


More information about the gstreamer-devel mailing list