<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html;
      charset=windows-1252">
  </head>
  <body>
    <div class="moz-cite-prefix">Hi,<br>
      <br>
      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.<br>
      <br>
      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.<br>
      <br>
      The first step to debugging this would be to enable GStreamer
      debug logging to get an idea of what may be wrong.<br>
      <br>
      Cheers<br>
      -Matt<br>
    </div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix">On 22/11/19 3:10 am, Milian Wolff
      wrote:<br>
    </div>
    <blockquote type="cite" cite="mid:8200988.DV6Wv0CJbv@agathebauer">
      <pre class="moz-quote-pre" wrap="">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
</pre>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <pre class="moz-quote-pre" wrap="">_______________________________________________
gstreamer-devel mailing list
<a class="moz-txt-link-abbreviated" href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a>
<a class="moz-txt-link-freetext" href="https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel">https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a></pre>
    </blockquote>
    <p><br>
    </p>
  </body>
</html>