H.264 decoding failed by Assertion `num_bits < 32' with GStreamer vpudec on i.MX8M-mini

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

H.264 decoding failed by Assertion `num_bits < 32' with GStreamer vpudec on i.MX8M-mini

1,804 Views
Hata-kun
Contributor I

I'm decoding H.264 TS file with GStreamer  vpudec plug-in, but error message is generated and pipeline core dumped.

I ran the following pipeline:

GST_DEBUG=3 gst-launch-1.0 filesrc location=./h264.ts ! tsdemux ! vpudec ! fakesink

I got the following error: 

root@ucm-imx8m-mini:/opt/tcr# GST_DEBUG=3 gst-launch-1.0 filesrc location=./h264.ts ! tsdemux ! vpudec ! fakesink
Setting pipeline to PAUSED ...
====== VPUDEC: 4.4.4 build on Apr 23 2019 07:42:48. ======
        wrapper: 3.0.0 (VPUWRAPPER_ARM64_LINUX Build on Apr 23 2019 06:54:11)
        vpulib: 1.1.1
        firmware: 1.1.1.0
0:00:00.312292625  9942       0x688600 WARN                 basesrc gstbasesrc.c:3583:gst_base_src_start_complete:<filesrc0> pad not activated yet
Pipeline is PREROLLING ...
0:00:00.355039625  9942       0x666cf0 FIXME           videodecoder gstvideodecoder.c:933:gst_video_decoder_drain_out:<vpudec0> Sub-class should implement drain()
0:00:00.365649875  9942       0x666cf0 FIXME           videodecoder gstvideodecoder.c:933:gst_video_decoder_drain_out:<vpudec0> Sub-class should implement drain()
ERROR: ACCESS UNIT BOUNDARY CHECK
0:00:00.367152125  9942       0x666cf0 WARN          vpu_dec_object gstvpudecobject.c:1461:gst_vpu_dec_object_decode:<vpudecobject0> Dropped video frame before VPU init ok!
ERROR: ACCESS UNIT BOUNDARY CHECK
0:00:00.368643125  9942       0x666cf0 WARN          vpu_dec_object gstvpudecobject.c:1461:gst_vpu_dec_object_decode:<vpudecobject0> Dropped video frame before VPU init ok!
gst-launch-1.0: ../../source/h264high/legacy/h264hwd_stream.c:78: h264bsdGetBits: Assertion `num_bits < 32' failed.
Aborted (core dumped)

 I think cpb_removal_delay_length should be equal or less than 32, 

 is ASSERTION(num_bits <= 32) code right ?

This content is encoded with cpb_removal_delay_length as 32.

0 Kudos
Reply
4 Replies

1,798 Views
igorpadykov
NXP Employee
NXP Employee

Hi Hata-kun

 

one can try

$ gst-launch-1.0 filesrc location=<filename.mp4> ! \
qtdemux name=d d.video_0 ! queue ! h264parse ! vpudec ! \
queue ! waylandsink

or examples from

https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/i-mx8M-EVK-board-encoder-and-decoder/ta-...

use i.MX8M Mini EVK with Demo Image from

https://www.nxp.com/design/software/embedded-software/i-mx-software/embedded-linux-for-i-mx-applicat...

 

Best regards
igor

0 Kudos
Reply

1,795 Views
Hata-kun
Contributor I

I tried changed pipeline, and got different error as follows.

root@ucm-imx8m-mini:/opt/tcr# GST_DEBUG=3 gst-launch-1.0 filesrc location=./h264.ts ! tsdemux name=d d.video_0 ! queue ! h264parse ! vpudec ! fakesink
Setting pipeline to PAUSED ...
====== VPUDEC: 4.4.4 build on Apr 23 2019 07:42:48. ======
        wrapper: 3.0.0 (VPUWRAPPER_ARM64_LINUX Build on Apr 23 2019 06:54:11)
        vpulib: 1.1.1
        firmware: 1.1.1.0
0:00:00.074096750  2699       0x690b00 WARN                 basesrc gstbasesrc.c:3583:gst_base_src_start_complete:<filesrc0> pad not activated yet
Pipeline is PREROLLING ...
0:00:00.077514250  2699       0x666e30 WARN                 default grammar.y:510:gst_parse_no_more_pads:<d> warning: Delayed linking failed.
0:00:00.077567000  2699       0x666e30 WARN                 default grammar.y:510:gst_parse_no_more_pads:<d> warning: failed delayed linking pad  video_0 of GstTSDemux named d to some pad of GstQueue named queue0
WARNING: from element /GstPipeline:pipeline0/GstTSDemux:d: Delayed linking failed.
Additional debug info:
../../../git/gst/parse/grammar.y(510): gst_parse_no_more_pads (): /GstPipeline:pipeline0/GstTSDemux:d:
failed delayed linking pad  video_0 of GstTSDemux named d to some pad of GstQueue named queue0
0:00:00.077983875  2699       0x666e30 WARN              mpegtsbase mpegtsbase.c:1613:mpegts_base_loop:<d> error: Internal data stream error.
0:00:00.078029125  2699       0x666e30 WARN              mpegtsbase mpegtsbase.c:1613:mpegts_base_loop:<d> error: streaming stopped, reason not-linked (-1)
ERROR: from element /GstPipeline:pipeline0/GstTSDemux:d: Internal data stream error.
Additional debug info:
../../../git/gst/mpegtsdemux/mpegtsbase.c(1613): mpegts_base_loop (): /GstPipeline:pipeline0/GstTSDemux:d:
streaming stopped, reason not-linked (-1)
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline ...
0 Kudos
Reply

1,791 Views
igorpadykov
NXP Employee
NXP Employee

please try on i.MX8M Mini EVK with Demo Image

i.MX 8M Mini EVK

 

Best regards
igor

0 Kudos
Reply

1,749 Views
Hata-kun
Contributor I

 We had confirmed the problem was resolved by GStreamer 1.16.1 and VPU 4.5.5.

 Thank you !

0 Kudos
Reply