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