v4l2h264dec gstreamer 1.18.4 not accepting stream

gstreamer at iktek.de gstreamer at iktek.de
Fri Mar 4 10:21:58 UTC 2022


Hi List,

I'm experiencing a regression between gstreamer 1.16.3 on yocto dunfell with kernel 5.4.149 refering as the "old setup" and gstreamer 1.18.4 on yocto hardknott with kernel 5.10.78 refering as the "new
setup" and am wondering where to dig at it:

I'm creating a h264 stream on another device with help of v4l2h264enc with:

gst-launch-1.0 -vvvv v4l2src device=/dev/video/chts_camera_jpeg ! image/jpeg,width=800,height=600,framerate=15/1 ! v4l2jpegdec output-io-mode=dmabuf-import ! v4l2convert output-io-mode=dmabuf-import !
video/x-raw,co
lorimetry=bt709 ! v4l2h264enc output-io-mode=dmabuf-import ! 'video/x-h264,level=(string)3.2' ! rtph264pay ! udpsink port=5000 host=192.168.30.114

This one is accepted with the "old" setup and hardware decoding using:

gst-launch-1.0 -vvvv udpsrc port=5000 caps = "application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, payload=(int)96" ! rtph264depay ! h264parse ! v4l2h264dec !
videoconvert ! kmssink

and also with the old and the new setup with software decoding using:

gst-launch-1.0 -vvvv udpsrc port=5000 caps = "application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, payload=(int)96" ! rtph264depay ! avdec_h264 ! kmssink

-----------------------------------

When trying hardware decoding with the new setup I get the following errornous behaviour:

gst-launch-1.0 -vvvv udpsrc port=5000 caps = "application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, payload=(int)96" ! rtph264depay ! h264parse ! v4l2h264dec !
videoconvert ! kmssink

....

0:00:06.556436749  1479 0x22d5840 WARN                GST_CAPS gstpad.c:5701:pre_eventfunc_check:<v4l2h264dec0:sink>caps video/x-h264, stream-format=(string)byte-stream, alignment=(string)au,
width=(int)800, height=(int)600, framerate
=(fraction)0/1, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, parsed=(boolean)true, profile=(string)constrained-baseline, level=(string)3.1 not accepted

ERROR: from element /GstPipeline:pipeline0/GstUDPSrc:udpsrc0: Internal data stream error.

....

I'm wondering which cap is not accepted here but I'm thinking about the "constrained-baseline" as this is not probed on the device as seen in:

...

0:00:03.690824695  1500  0xffa000 INFO                    v4l2 gstv4l2object.c:4469:gst_v4l2_object_probe_caps:<v4l2h264dec0:sink> probed caps: video/x-h264, stream-format=(string)byte-stream,
alignment=(string)au, level=(string){ 1, 1
b, 1.1, 1.2, 1.3, 2, 2.1, 2.2, 3, 3.1, 3.2, 4, 4.1 }, profile=(string){ baseline, main, high }, width=(int)[ 48, 1920 ], height=(int)[ 16, 1088 ], colorimetry=(string){ bt709, bt601, smpte240m,
2:4:5:2, 2:4:5:3, 1:4:7:1, 2:4:7:1, 2:4:12
:8, bt2020, 2:0:0:0 }, parsed=(boolean)true

I can see that with the old setup the caps seem very similar but are accepted:

/GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:src: caps = video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, width=(int)800, height=(int)600, framerate=(fraction)0/1,
interlace-mode=(string)progressive, chrom
a-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, parsed=(boolean)true, profile=(string)constrained-baseline, level=(string)3.1

Does someone have an Idea where to dig further?

Best Regards

Pascal Speck



More information about the gstreamer-devel mailing list