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.
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
use i.MX8M Mini EVK with Demo Image from
Best regards
igor
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 ...
We had confirmed the problem was resolved by GStreamer 1.16.1 and VPU 4.5.5.
Thank you !