OMX video decode on RPi 3

Rudolf J Streif rudolf.streif at ibeeto.com
Tue Nov 24 19:00:57 UTC 2020


I would appreciate some insight on playing back video with hardware 
acceleration on RPi3.

Using this pipeline hardware video encoding works fine with software 
decoding:

gst-launch-1.0  -v videotestsrc ! omxh264enc ! h264parse ! avdec_h264 ! 
videoconvert ! kmssink

I can see the test video on the screen.


Using this pipeline the decoding does not work:

gst-launch-1.0  -v videotestsrc ! omxh264enc ! h264parse ! omxh264dec ! 
videoconvert ! kmssink

The pipeline does not preroll.


I am using gst-omx-1.16.


I am adding the screen output below. I have also created the dot graphs 
for the pipelines.

Andy ideas/suggestions are much appreciated.

Thank you,

Rudi



Working pipeline with s/w decode:

# gst-launch-1.0  -v videotestsrc ! omxh264enc ! h264parse ! avdec_h264 
! videoconvert ! kmssink
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
/GstPipeline:pipeline0/GstKMSSink:kmssink0: display-width = 1280
/GstPipeline:pipeline0/GstKMSSink:kmssink0: display-height = 800
/GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0.GstPad:src: caps = 
video/x-raw, width=(int)320, height=(int)240, framerate=(fraction)30/1, 
format=(string)I420, multiview-mode=(string)mono, 
pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive
/GstPipeline:pipeline0/GstOMXH264Enc-omxh264enc:omxh264enc-omxh264enc0.GstPad:sink: 
caps = video/x-raw, width=(int)320, height=(int)240, 
framerate=(fraction)30/1, format=(string)I420, 
multiview-mode=(string)mono, pixel-aspect-ratio=(fraction)1/1, 
interlace-mode=(string)progressive
/GstPipeline:pipeline0/GstOMXH264Enc-omxh264enc:omxh264enc-omxh264enc0.GstPad:src: 
caps = video/x-h264, stream-format=(string)byte-stream, 
alignment=(string)au, profile=(string)high, level=(string)4, 
chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, 
bit-depth-chroma=(uint)8, width=(int)320, height=(int)240, 
pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1, 
interlace-mode=(string)progressive, colorimetry=(string)bt601, 
chroma-site=(string)jpeg, multiview-mode=(string)mono, 
multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono
/GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:src: caps = 
video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, 
profile=(string)high, level=(string)4, chroma-format=(string)4:2:0, 
bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, width=(int)320, 
height=(int)240, pixel-aspect-ratio=(fraction)1/1, 
framerate=(fraction)30/1, interlace-mode=(string)progressive, 
colorimetry=(string)bt601, chroma-site=(string)jpeg, 
multiview-mode=(string)mono, 
multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, 
parsed=(boolean)true
Redistribute latency...
/GstPipeline:pipeline0/avdec_h264:avdec_h264-0.GstPad:sink: caps = 
video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, 
profile=(string)high, level=(string)4, chroma-format=(string)4:2:0, 
bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, width=(int)320, 
height=(int)240, pixel-aspect-ratio=(fraction)1/1, 
framerate=(fraction)30/1, interlace-mode=(string)progressive, 
colorimetry=(string)bt601, chroma-site=(string)jpeg, 
multiview-mode=(string)mono, 
multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, 
parsed=(boolean)true
/GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:sink: caps = 
video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, 
profile=(string)high, level=(string)4, chroma-format=(string)4:2:0, 
bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, width=(int)320, 
height=(int)240, pixel-aspect-ratio=(fraction)1/1, 
framerate=(fraction)30/1, interlace-mode=(string)progressive, 
colorimetry=(string)bt601, chroma-site=(string)jpeg, 
multiview-mode=(string)mono, 
multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono
/GstPipeline:pipeline0/avdec_h264:avdec_h264-0.GstPad:src: caps = 
video/x-raw, format=(string)I420, width=(int)320, height=(int)240, 
interlace-mode=(string)progressive, multiview-mode=(string)mono, 
multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, 
pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)jpeg, 
colorimetry=(string)bt601, framerate=(fraction)30/1
/GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:src: caps = 
video/x-raw, format=(string)I420, width=(int)320, height=(int)240, 
interlace-mode=(string)progressive, multiview-mode=(string)mono, 
multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, 
pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)jpeg, 
colorimetry=(string)bt601, framerate=(fraction)30/1
/GstPipeline:pipeline0/GstKMSSink:kmssink0.GstPad:sink: caps = 
video/x-raw, format=(string)I420, width=(int)320, height=(int)240, 
interlace-mode=(string)progressive, multiview-mode=(string)mono, 
multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, 
pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)jpeg, 
colorimetry=(string)bt601, framerate=(fraction)30/1
/GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:sink: caps = 
video/x-raw, format=(string)I420, width=(int)320, height=(int)240, 
interlace-mode=(string)progressive, multiview-mode=(string)mono, 
multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, 
pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)jpeg, 
colorimetry=(string)bt601, framerate=(fraction)30/1
Redistribute latency...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock




^Chandling interrupt.
Interrupt: Stopping pipeline ...
Execution ended after 0:00:09.854342709
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...



Not working pipeline with h/w decode:

# gst-launch-1.0  -v videotestsrc ! omxh264enc ! h264parse ! omxh264dec 
! videoconvert ! kmssink
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
/GstPipeline:pipeline0/GstKMSSink:kmssink0: display-width = 1280
/GstPipeline:pipeline0/GstKMSSink:kmssink0: display-height = 800
/GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0.GstPad:src: caps = 
video/x-raw, width=(int)320, height=(int)240, framerate=(fraction)30/1, 
format=(string)I420, multiview-mode=(string)mono, 
pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive
/GstPipeline:pipeline0/GstOMXH264Enc-omxh264enc:omxh264enc-omxh264enc0.GstPad:sink: 
caps = video/x-raw, width=(int)320, height=(int)240, 
framerate=(fraction)30/1, format=(string)I420, 
multiview-mode=(string)mono, pixel-aspect-ratio=(fraction)1/1, 
interlace-mode=(string)progressive
/GstPipeline:pipeline0/GstOMXH264Enc-omxh264enc:omxh264enc-omxh264enc0.GstPad:src: 
caps = video/x-h264, stream-format=(string)byte-stream, 
alignment=(string)au, profile=(string)high, level=(string)4, 
chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, 
bit-depth-chroma=(uint)8, width=(int)320, height=(int)240, 
pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1, 
interlace-mode=(string)progressive, colorimetry=(string)bt601, 
chroma-site=(string)jpeg, multiview-mode=(string)mono, 
multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono
/GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:src: caps = 
video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, 
profile=(string)high, level=(string)4, chroma-format=(string)4:2:0, 
bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, width=(int)320, 
height=(int)240, pixel-aspect-ratio=(fraction)1/1, 
framerate=(fraction)30/1, interlace-mode=(string)progressive, 
colorimetry=(string)bt601, chroma-site=(string)jpeg, 
multiview-mode=(string)mono, 
multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, 
parsed=(boolean)true
/GstPipeline:pipeline0/GstOMXH264Dec-omxh264dec:omxh264dec-omxh264dec0.GstPad:sink: 
caps = video/x-h264, stream-format=(string)byte-stream, 
alignment=(string)au, profile=(string)high, level=(string)4, 
chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, 
bit-depth-chroma=(uint)8, width=(int)320, height=(int)240, 
pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1, 
interlace-mode=(string)progressive, colorimetry=(string)bt601, 
chroma-site=(string)jpeg, multiview-mode=(string)mono, 
multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, 
parsed=(boolean)true
/GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:sink: caps = 
video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, 
profile=(string)high, level=(string)4, chroma-format=(string)4:2:0, 
bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, width=(int)320, 
height=(int)240, pixel-aspect-ratio=(fraction)1/1, 
framerate=(fraction)30/1, interlace-mode=(string)progressive, 
colorimetry=(string)bt601, chroma-site=(string)jpeg, 
multiview-mode=(string)mono, 
multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono
/GstPipeline:pipeline0/GstOMXH264Dec-omxh264dec:omxh264dec-omxh264dec0.GstPad:src: 
caps = video/x-raw, format=(string)I420, width=(int)320, 
height=(int)240, interlace-mode=(string)progressive, 
multiview-mode=(string)mono, 
multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, 
pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)jpeg, 
colorimetry=(string)bt601, framerate=(fraction)30/1
/GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:src: caps = 
video/x-raw, format=(string)I420, width=(int)320, height=(int)240, 
interlace-mode=(string)progressive, multiview-mode=(string)mono, 
multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, 
pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)jpeg, 
colorimetry=(string)bt601, framerate=(fraction)30/1
/GstPipeline:pipeline0/GstKMSSink:kmssink0.GstPad:sink: caps = 
video/x-raw, format=(string)I420, width=(int)320, height=(int)240, 
interlace-mode=(string)progressive, multiview-mode=(string)mono, 
multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, 
pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)jpeg, 
colorimetry=(string)bt601, framerate=(fraction)30/1
/GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:sink: caps = 
video/x-raw, format=(string)I420, width=(int)320, height=(int)240, 
interlace-mode=(string)progressive, multiview-mode=(string)mono, 
multiview-flags=(GstVideoMultiviewFlagsSet)0:ffffffff:/right-view-first/left-flipped/left-flopped/right-flipped/right-flopped/half-aspect/mixed-mono, 
pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)jpeg, 
colorimetry=(string)bt601, framerate=(fraction)30/1
^Chandling interrupt.
Interrupt: Stopping pipeline ...
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...


-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_0x8D8CA82927339B75.asc
Type: application/pgp-keys
Size: 1692 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/gstreamer-openmax/attachments/20201124/5177831b/attachment.key>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature
Type: application/pgp-signature
Size: 495 bytes
Desc: OpenPGP digital signature
URL: <https://lists.freedesktop.org/archives/gstreamer-openmax/attachments/20201124/5177831b/attachment.sig>


More information about the gstreamer-openmax mailing list