Unable to use opengl elements on Raspberry Pi - gstreamer 1.8, openmax 1.0

Adam Langley linux at irisdesign.co.nz
Tue Apr 18 02:14:30 UTC 2017


Hi,

Im running on Raspbian Jessie Lite, with gstreamer 1.8 that I've compiled,
with OMX 1.0
I followed these instructions to disable X, and enable egl - but I am still
having an issue.

https://u2567673.ct.sendgrid.net/wf/click?upn=g-2BuuLoKFh9oCyrl0W26NGfSk5Lp12yLYSw499dzbp-2FarNjQiumv-2BJJzK5Go3g-2FYLSCkdJOsYvpO76iQrvTGR0wYfgJbmJUItqDddnJ5xj6qkW6u21CzdUB0cDotPxngPHZ1xvOOM5RSo1DixwYkw-2Bg-3D-3D_SqM5JSCW4zvvQIaoW1CDvMIem8taQSUrkrbhR3x77XRu7BshtfhBNpLhgP2ozglLDnCOhj2cgrtE-2FcPbN2xmoQmDqy1ASOwdgvd8Xv3J3m7PAITNd0H-2FUgAw0b4AB5OSyyUyeedwmdIFVTk775kaW92cTDZzo41z2urSgJMBc4Wre7lm3Um-2Fg95KM5gZa7KTJNKpoTDl-2FAAmsWFhBO3SkpxpbJIHOg412iyWbuoQG2suyUowwRVcdovKC3wKavDA

My goal is to decode h264, then re-encode it again, with utilising some
opengl transform filters in between - at 720 at 24.

This is my pipeline (approximately)
gst-launch-1.0 -e -vvv  uvch264src do-timestamp=1 is-live=1
device=/dev/video0 name=src auto-start=true src.vidsrc     ! h264parse !
omxh264dec ! glupload ! identity silent=0 ! gldownload ! fakesink

And this is the error I'm getting:

Setting pipeline to PAUSED ...

/GstPipeline:pipeline0/GstUvcH264Src:src/GstV4l2Src:v4l2src0: num-buffers =
-1

/GstPipeline:pipeline0/GstUvcH264Src:src/GstV4l2Src:v4l2src0: device =
/dev/video0

/GstPipeline:pipeline0/GstUvcH264Src:src/GstV4l2Src:v4l2src0: num-buffers =
-1

/GstPipeline:pipeline0/GstUvcH264Src:src/GstV4l2Src:v4l2src0: device =
/dev/video0

/GstPipeline:pipeline0/GstUvcH264Src:src: ready-for-capture = false

/GstPipeline:pipeline0/GstUvcH264Src:src/GstV4l2Src:v4l2src0: num-buffers =
-1

/GstPipeline:pipeline0/GstUvcH264Src:src/GstV4l2Src:v4l2src0: device =
/dev/video0

/GstPipeline:pipeline0/GstUvcH264Src:src/GstCapsFilter:capsfilter0: caps =
"video/x-h264\,\ width\=\(int\)\[\ 1\,\ 2147483647\ \]\,\
height\=\(int\)\[\ 1\,\ 2147483647\ \]\,\ framerate\=\(fraction\)\[\ 0/1\,\
2147483647/1\ \]"

Pipeline is live and does not need PREROLL ...

/GstPipeline:pipeline0/GstIdentity:identity0: last-message = event
******* (identity0:sink) E (type: stream-start (10254),
GstEventStreamStart,
stream-id=(string)2b7f5679e9f0cee0776e7c9d96ffc3b4682b26f7b8931798b4254fc99bdb­de9b,
flags=(GstStreamFlags)GST_STREAM_FLAG_NONE, group-id=(uint)1;) 0xcaadb8

Got context from element 'gluploadelement0': gst.gl.GLDisplay=context,
gst.gl.GLDisplay=(GstGLDisplay)"\(GstGLDisplayEGL\)\ gldisplayegl0";

Setting pipeline to PLAYING ...

New clock: GstSystemClock

/GstPipeline:pipeline0/GstUvcH264Src:src: fixed-framerate = false

/GstPipeline:pipeline0/GstUvcH264Src:src: rate-control = Constant bit rate

/GstPipeline:pipeline0/GstUvcH264Src:src: average-bitrate = 2000000

/GstPipeline:pipeline0/GstUvcH264Src:src: peak-bitrate = 2000000

/GstPipeline:pipeline0/GstUvcH264Src:src/GstV4l2Src:v4l2src0.GstPad:src:
caps = "video/x-h264\,\ stream-format\=\(string\)byte-stream\,\
alignment\=\(string\)au\,\ width\=\(int\)1920\,\ height\=\(int\)1080\,\
pixel-aspect-ratio\=\(fraction\)1/1\,\ colorimetry\=\(string\)2:4:7:1\,\
framerate\=\(fraction\)30/1"

/GstPipeline:pipeline0/GstUvcH264Src:src.GstGhostPad:vidsrc: caps =
"video/x-h264\,\ stream-format\=\(string\)byte-stream\,\
alignment\=\(string\)au\,\ width\=\(int\)1920\,\ height\=\(int\)1080\,\
pixel-aspect-ratio\=\(fraction\)1/1\,\ colorimetry\=\(string\)2:4:7:1\,\
framerate\=\(fraction\)30/1"

/GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:src: caps =
"video/x-h264\,\ stream-format\=\(string\)byte-stream\,\
alignment\=\(string\)au\,\ width\=\(int\)1920\,\ height\=\(int\)1080\,\
pixel-aspect-ratio\=\(fraction\)1/1\,\ colorimetry\=\(string\)2:4:7:1\,\
framerate\=\(fraction\)30/1\,\ parsed\=\(boolean\)true"

/GstPipeline:pipeline0/GstOMXH264Dec-omxh264dec:omxh264dec-omxh264dec0.GstPad:sink:
caps = "video/x-h264\,\ stream-format\=\(string\)byte-stream\,\
alignment\=\(string\)au\,\ width\=\(int\)1920\,\ height\=\(int\)1080\,\
pixel-aspect-ratio\=\(fraction\)1/1\,\ colorimetry\=\(string\)2:4:7:1\,\
framerate\=\(fraction\)30/1\,\ parsed\=\(boolean\)true"

/GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:sink: caps =
"video/x-h264\,\ stream-format\=\(string\)byte-stream\,\
alignment\=\(string\)au\,\ width\=\(int\)1920\,\ height\=\(int\)1080\,\
pixel-aspect-ratio\=\(fraction\)1/1\,\ colorimetry\=\(string\)2:4:7:1\,\
framerate\=\(fraction\)30/1"

/GstPipeline:pipeline0/GstUvcH264Src:src.GstGhostPad:vidsrc.GstProxyPad:proxypad2:
caps = "video/x-h264\,\ stream-format\=\(string\)byte-stream\,\
alignment\=\(string\)au\,\ width\=\(int\)1920\,\ height\=\(int\)1080\,\
pixel-aspect-ratio\=\(fraction\)1/1\,\ colorimetry\=\(string\)2:4:7:1\,\
framerate\=\(fraction\)30/1"

/GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:src: caps =
"video/x-h264\,\ stream-format\=\(string\)byte-stream\,\
alignment\=\(string\)au\,\ width\=\(int\)1920\,\ height\=\(int\)1080\,\
pixel-aspect-ratio\=\(fraction\)1/1\,\ colorimetry\=\(string\)2:4:7:1\,\
framerate\=\(fraction\)30/1\,\ parsed\=\(boolean\)true\,\
profile\=\(string\)high\,\ level\=\(string\)4"

/GstPipeline:pipeline0/GstOMXH264Dec-omxh264dec:omxh264dec-omxh264dec0.GstPad:sink:
caps = "video/x-h264\,\ stream-format\=\(string\)byte-stream\,\
alignment\=\(string\)au\,\ width\=\(int\)1920\,\ height\=\(int\)1080\,\
pixel-aspect-ratio\=\(fraction\)1/1\,\ colorimetry\=\(string\)2:4:7:1\,\
framerate\=\(fraction\)30/1\,\ parsed\=\(boolean\)true\,\
profile\=\(string\)high\,\ level\=\(string\)4"

/GstPipeline:pipeline0/GstOMXH264Dec-omxh264dec:omxh264dec-omxh264dec0.GstPad:src:
caps = "video/x-raw\,\ format\=\(string\)I420\,\ width\=\(int\)1920\,\
height\=\(int\)1080\,\ interlace-mode\=\(string\)progressive\,\
pixel-aspect-ratio\=\(fraction\)1/1\,\ chroma-site\=\(string\)mpeg2\,\
colorimetry\=\(string\)2:4:7:1\,\ framerate\=\(fraction\)30/1"

/GstPipeline:pipeline0/GstGLUploadElement:gluploadelement0.GstPad:src: caps
= "video/x-raw\(memory:GLMemory\)\,\ format\=\(string\)I420\,\
width\=\(int\)1920\,\ height\=\(int\)1080\,\
interlace-mode\=\(string\)progressive\,\
pixel-aspect-ratio\=\(fraction\)1/1\,\ chroma-site\=\(string\)mpeg2\,\
colorimetry\=\(string\)2:4:7:1\,\ framerate\=\(fraction\)30/1\,\
texture-target\=\(string\)2D"

/GstPipeline:pipeline0/GstIdentity:identity0: last-message = event
******* (identity0:sink) E (type: caps (12814), GstEventCaps,
caps=(GstCaps)"video/x-raw\(memory:GLMemory\)\,\ format\=\(string\)I420\,\
width\=\(int\)1920\,\ height\=\(int\)1080\,\
interlace-mode\=\(string\)progressive\,\
pixel-aspect-ratio\=\(fraction\)1/1\,\ chroma-site\=\(string\)mpeg2\,\
colorimetry\=\(string\)2:4:7:1\,\ framerate\=\(fraction\)30/1\,\
texture-target\=\(string\)2D"[image: ;)] 0x71104110

/GstPipeline:pipeline0/GstIdentity:identity0.GstPad:src: caps =
"video/x-raw\(memory:GLMemory\)\,\ format\=\(string\)I420\,\
width\=\(int\)1920\,\ height\=\(int\)1080\,\
interlace-mode\=\(string\)progressive\,\
pixel-aspect-ratio\=\(fraction\)1/1\,\ chroma-site\=\(string\)mpeg2\,\
colorimetry\=\(string\)2:4:7:1\,\ framerate\=\(fraction\)30/1\,\
texture-target\=\(string\)2D"

/GstPipeline:pipeline0/GstFakeSink:fakesink0.GstPad:sink: caps =
"video/x-raw\(memory:GLMemory\)\,\ format\=\(string\)I420\,\
width\=\(int\)1920\,\ height\=\(int\)1080\,\
interlace-mode\=\(string\)progressive\,\
pixel-aspect-ratio\=\(fraction\)1/1\,\ chroma-site\=\(string\)mpeg2\,\
colorimetry\=\(string\)2:4:7:1\,\ framerate\=\(fraction\)30/1\,\
texture-target\=\(string\)2D"

/GstPipeline:pipeline0/GstIdentity:identity0.GstPad:sink: caps =
"video/x-raw\(memory:GLMemory\)\,\ format\=\(string\)I420\,\
width\=\(int\)1920\,\ height\=\(int\)1080\,\
interlace-mode\=\(string\)progressive\,\
pixel-aspect-ratio\=\(fraction\)1/1\,\ chroma-site\=\(string\)mpeg2\,\
colorimetry\=\(string\)2:4:7:1\,\ framerate\=\(fraction\)30/1\,\
texture-target\=\(string\)2D"

ERROR: from element
/GstPipeline:pipeline0/GstGLUploadElement:gluploadelement0: Can't open
display

Additional debug info:

gstglbasefilter.c(445): gst_gl_base_filter_decide_allocation ():
/GstPipeline:pipeline0/GstGLUploadElement:gluploadelement0

EOS on shutdown enabled -- waiting for EOS after Error

Waiting for EOS...

ERROR: from element
/GstPipeline:pipeline0/GstGLUploadElement:gluploadelement0: Can't open
display

Additional debug info:

gstglbasefilter.c(445): gst_gl_base_filter_decide_allocation ():
/GstPipeline:pipeline0/GstGLUploadElement:gluploadelement0

ERROR: from element
/GstPipeline:pipeline0/GstGLUploadElement:gluploadelement0: Can't open
display

Additional debug info:

gstglbasefilter.c(445): gst_gl_base_filter_decide_allocation ():
/GstPipeline:pipeline0/GstGLUploadElement:gluploadelement0

ERROR: from element
/GstPipeline:pipeline0/GstGLUploadElement:gluploadelement0: Can't open
display

Additional debug info:

gstglbasefilter.c(445): gst_gl_base_filter_decide_allocation ():
/GstPipeline:pipeline0/GstGLUploadElement:gluploadelement0

ERROR: from element
/GstPipeline:pipeline0/GstGLUploadElement:gluploadelement0: Can't open
display

Additional debug info:

gstglbasefilter.c(445): gst_gl_base_filter_decide_allocation ():
/GstPipeline:pipeline0/GstGLUploadElement:gluploadelement0

ERROR: from element
/GstPipeline:pipeline0/GstOMXH264Dec-omxh264dec:omxh264dec-omxh264dec0:
Internal data stream error.

Additional debug info:

gstomxvideodec.c(1670): gst_omx_video_dec_loop ():
/GstPipeline:pipeline0/GstOMXH264Dec-omxh264dec:omxh264dec-omxh264dec0:

stream stopped, reason not-negotiated

ERROR: from element
/GstPipeline:pipeline0/GstGLUploadElement:gluploadelement0: Can't open
display

Additional debug info:

gstglbasefilter.c(445): gst_gl_base_filter_decide_allocation ():
/GstPipeline:pipeline0/GstGLUploadElement:gluploadelement0

/GstPipeline:pipeline0/GstIdentity:identity0: last-message = event
******* (identity0:sink) E (type: eos (28174), ) 0x711041a0

ERROR: from element
/GstPipeline:pipeline0/GstGLUploadElement:gluploadelement0: Can't open
display

Additional debug info:

gstglbasefilter.c(445): gst_gl_base_filter_decide_allocation ():
/GstPipeline:pipeline0/GstGLUploadElement:gluploadelement0

^Chandling interrupt.

Interrupt: Stopping pipeline ...

Interrupt while waiting for EOS - stopping pipeline...

Execution ended after 0:00:07.260136528

Setting pipeline to PAUSED ...

Setting pipeline to READY ...

Setting pipeline to NULL ...



Freeing pipeline ...


Final short question - if I am using the openmax components to simply
transcode h264 from one bitrate to another (i.e h264 -> omxh264decode ->
omxh264encode), would forcing the data to go through glmemory provide a
performance improvement?

Thanks

Adam
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20170418/06a1c52d/attachment-0001.html>


More information about the gstreamer-devel mailing list