v4l2src: queries framerate interval based on max frame size instead of current frame size
Our camera has a different max framerate depending on the current frame size. Specially when having a reduced height we can increase the frame rate by a lot (HW limitations of how many lines we can read out).
However when gstreamer negotiates the CAPS it seems to be using always the max frame size instead of the current one. Which results in a max framerate much lower than what the driver actually supports.
Fx at 1024x1024 (max frame size) we can do 28.292 fps
root@qt5022:~# w=1024; h=1024; f=RGB3; v4l2-ctl -d /dev/qtec/video0 --list-framesizes ${f} --list-frameintervals width=${w},height=${h},pixelformat=${f}
ioctl: VIDIOC_ENUM_FRAMESIZES
Size: Stepwise 4x4 - 1024x1024 with step 4/4
ioctl: VIDIOC_ENUM_FRAMEINTERVALS
Interval: Continuous 0.035s - 25.054s (0.040-28.292 fps)
And with 1024x100 we can do 280.867 fps
root@qt5022:~# w=1024; h=100; f=RGB3; v4l2-ctl -d /dev/qtec/video0 --list-framesizes ${f} --list-frameintervals width=${w},height=${h},pixelformat=${f}
ioctl: VIDIOC_ENUM_FRAMESIZES
Size: Stepwise 4x4 - 1024x1024 with step 4/4
ioctl: VIDIOC_ENUM_FRAMEINTERVALS
Interval: Continuous 0.004s - 25.054s (0.040-280.867 fps)
However I get a non-negotiated error in gstreamer with fx 1024x100@100fps
gst-launch-1.0 v4l2src device=/dev/qtec/video0 ! video/x-raw, format=RGB, width=1024, height=100,framerate=100/1 ! fakesink --gst-debug=*:3
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
(gst-launch-1.0:856): GStreamer-CRITICAL **: 08:25:35.069: gst_value_set_int_range_step: assertion 'end % step == 0' failed
(gst-launch-1.0:856): GStreamer-CRITICAL **: 08:25:35.069: gst_value_set_int_range_step: assertion 'end % step == 0' failed
(gst-launch-1.0:856): GStreamer-CRITICAL **: 08:25:35.069: gst_value_set_int_range_step: assertion 'end % step == 0' failed
(gst-launch-1.0:856): GStreamer-CRITICAL **: 08:25:35.070: gst_value_set_int_range_step: assertion 'end % step == 0' failed
0:00:00.106394533 856 0x562342804e80 WARN basesrc gstbasesrc.c:3127:gst_base_src_loop:<v4l2src0> error: Internal data stream error.
0:00:00.106552830 856 0x562342804e80 WARN basesrc gstbasesrc.c:3127:gst_base_src_loop:<v4l2src0> error: streaming stopped, reason not-negotiated (-4)
ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Internal data stream error.
Additional debug info:
../gstreamer-1.18.2/libs/gst/base/gstbasesrc.c(3127): gst_base_src_loop (): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0:
streaming stopped, reason not-negotiated (-4)
Execution ended after 0:00:00.005847859
Setting pipeline to NULL ...
Freeing pipeline ...
We can see in the driver that gstreamer is calling ENUM_FRAME_INTERVALS with the max frame width and height.
The problem seems to be in the gst_pad_query_caps
which is using the max frame size instead of the required one: video/x-raw, format=(string)RGB, width=(int)[ 4, 1024, 4 ], height=(int)[ 4, 1024, 4 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 500000/17673 ];
0:00:00.110396542 837 0x5586d40c3a80 DEBUG GST_CAPS gstutils.c:3109:gst_pad_query_caps:<v4l2src0:src> query returned video/x-raw, format=(string)YUY2, width=(int)[ 4, 1024, 4 ], height=(int)[ 4, 1024, 4 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 500000/17673 ]; video/x-raw(format:Interlaced), format=(string)YUY2, width=(int)[ 4, 1024, 4 ], height=(int)[ 4, 1024, 4 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 500000/17673 ], interlace-mode=(string)alternate; video/x-raw, format=(string)YUY2, width=(int)[ 4, 1024, 4 ], height=(int)[ 4, 1024, 4 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 500000/17673 ]; video/x-raw(format:Interlaced), format=(string)YUY2, width=(int)[ 4, 1024, 4 ], height=(int)[ 4, 1024, 4 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 500000/17673 ], interlace-mode=(string)alternate; video/x-raw, format=(string)UYVY, width=(int)[ 4, 1024, 4 ], height=(int)[ 4, 1024, 4 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 500000/17673 ]; video/x-raw(format:Interlaced), format=(string)UYVY, width=(int)[ 4, 1024, 4 ], height=(int)[ 4, 1024, 4 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 500000/17673 ], interlace-mode=(string)alternate; video/x-raw, format=(string)UYVY, width=(int)[ 4, 1024, 4 ], height=(int)[ 4, 1024, 4 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 500000/17673 ]; video/x-raw(format:Interlaced), format=(string)UYVY, width=(int)[ 4, 1024, 4 ], height=(int)[ 4, 1024, 4 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 500000/17673 ], interlace-mode=(string)alternate; video/x-raw, format=(string)BGRx, width=(int)[ 4, 1024, 4 ], height=(int)[ 4, 1024, 4 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 500000/17673 ]; video/x-raw(format:Interlaced), format=(string)BGRx, width=(int)[ 4, 1024, 4 ], height=(int)[ 4, 1024, 4 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 500000/17673 ], interlace-mode=(string)alternate; video/x-raw, format=(string)xRGB, width=(int)[ 4, 1024, 4 ], height=(int)[ 4, 1024, 4 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 500000/17673 ]; video/x-raw(format:Interlaced), format=(string)xRGB, width=(int)[ 4, 1024, 4 ], height=(int)[ 4, 1024, 4 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 500000/17673 ], interlace-mode=(string)alternate; video/x-raw, format=(string)BGR, width=(int)[ 4, 1024, 4 ], height=(int)[ 4, 1024, 4 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 500000/17673 ]; video/x-raw(format:Interlaced), format=(string)BGR, width=(int)[ 4, 1024, 4 ], height=(int)[ 4, 1024, 4 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 500000/17673 ], interlace-mode=(string)alternate; video/x-raw, format=(string)RGB, width=(int)[ 4, 1024, 4 ], height=(int)[ 4, 1024, 4 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 500000/17673 ]; video/x-raw(format:Interlaced), format=(string)RGB, width=(int)[ 4, 1024, 4 ], height=(int)[ 4, 1024, 4 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 500000/17673 ], interlace-mode=(string)alternate; video/x-bayer, format=(string)rggb, width=(int)[ 20, 2040, 20 ], height=(int)[ 20, 2040, 20 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 2500000/176257 ]; video/x-bayer, format=(string)grbg, width=(int)[ 20, 2040, 20 ], height=(int)[ 20, 2040, 20 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 2500000/176257 ]; video/x-bayer, format=(string)gbrg, width=(int)[ 20, 2040, 20 ], height=(int)[ 20, 2040, 20 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 2500000/176429 ]; video/x-bayer, format=(string)bggr, width=(int)[ 20, 2040, 20 ], height=(int)[ 20, 2040, 20 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 2500000/176429 ]; video/x-raw, format=(string)GRAY8, width=(int)[ 4, 1024, 4 ], height=(int)[ 4, 1024, 4 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 500000/17673 ]; video/x-raw(format:Interlaced), format=(string)GRAY8, width=(int)[ 4, 1024, 4 ], height=(int)[ 4, 1024, 4 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 500000/17673 ], interlace-mode=(string)alternate; video/x-raw, format=(string)GRAY16_LE, IsQtecGreen=(boolean)true, width=(int)[ 4, 2048, 4 ], height=(int)[ 4, 1024, 4 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 500000/17673 ]; video/x-raw(format:Interlaced), format=(string)GRAY16_LE, IsQtecGreen=(boolean)true, width=(int)[ 4, 2048, 4 ], height=(int)[ 4, 1024, 4 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 500000/17673 ], interlace-mode=(string)alternate; video/x-raw, format=(string)GRAY16_BE, IsQtecGreen=(boolean)true, width=(int)[ 4, 2048, 4 ], height=(int)[ 4, 1024, 4 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 500000/17673 ]; video/x-raw(format:Interlaced), format=(string)GRAY16_BE, IsQtecGreen=(boolean)true, width=(int)[ 4, 2048, 4 ], height=(int)[ 4, 1024, 4 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 500000/17673 ], interlace-mode=(string)alternate; video/x-raw, format=(string)GRAY8, IsQtecGreen=(boolean)true, width=(int)[ 4, 2048, 4 ], height=(int)[ 4, 1024, 4 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 500000/17673 ]; video/x-raw(format:Interlaced), format=(string)GRAY8, IsQtecGreen=(boolean)true, width=(int)[ 4, 2048, 4 ], height=(int)[ 4, 1024, 4 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 500000/17673 ], interlace-mode=(string)alternate; video/x-raw, format=(string)GRAY16_BE, width=(int)[ 4, 1024, 4 ], height=(int)[ 4, 1024, 4 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 500000/17673 ]; video/x-raw(format:Interlaced), format=(string)GRAY16_BE, width=(int)[ 4, 1024, 4 ], height=(int)[ 4, 1024, 4 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 500000/17673 ], interlace-mode=(string)alternate; video/x-raw, format=(string)GRAY16_LE, width=(int)[ 4, 1024, 4 ], height=(int)[ 4, 1024, 4 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 500000/17673 ]; video/x-raw(format:Interlaced), format=(string)GRAY16_LE, width=(int)[ 4, 1024, 4 ], height=(int)[ 4, 1024, 4 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 500000/17673 ], interlace-mode=(string)alternate
Full log:
root@qt5022:~# gst-launch-1.0 v4l2src device=/dev/qtec/video0 ! video/x-raw, format=RGB, width=1024, height=100,framerate=100/1 ! fakesink --gst-debug=*:3,GST_CAPS:5
0:00:00.099739605 837 0x5586d412ef20 DEBUG GST_CAPS gstutils.c:3102:gst_pad_query_caps:<v4l2src0:src> get pad caps with filter (NULL)
0:00:00.100133227 837 0x5586d412ef20 DEBUG GST_CAPS gstutils.c:3109:gst_pad_query_caps:<v4l2src0:src> query returned image/jpeg; video/mpeg, mpegversion=(int)4, systemstream=(boolean)false; video/mpeg, mpegversion=(int){ 1, 2 }; video/mpegts, systemstream=(boolean)true; video/x-bayer, format=(string){ bggr, gbrg, grbg, rggb, bggr10p, gbrg10p, grbg10p, rggb10p }, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-dv, systemstream=(boolean)true; video/x-fwht; video/x-h263, variant=(string)itu; video/x-h264, stream-format=(string){ byte-stream, avc }, alignment=(string)au; video/x-h265, stream-format=(string)byte-stream, alignment=(string)au; video/x-pwc1, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-pwc2, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw, format=(string){ RGB16, BGR, ABGR, xBGR, RGBx, GRAY8, GRAY16_LE, GRAY16_BE, YVU9, YV12, YUY2, YVYU, UYVY, Y42B, Y41B, YUV9, NV12_64Z32, NV24, NV61, NV16, NV21, NV12, I420, ARGB, xRGB, RGB, BGRA, BGRx, BGR15, RGB15 }, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-sonix, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-vp8; video/x-vp9; video/x-wmv, wmvversion=(int)3, format=(string)WVC1; video/x-raw(format:Interlaced), format=(string){ RGB16, BGR, ABGR, xBGR, RGBx, GRAY8, GRAY16_LE, GRAY16_BE, YVU9, YV12, YUY2, YVYU, UYVY, Y42B, Y41B, YUV9, NV12_64Z32, NV24, NV61, NV16, NV21, NV12, I420, ARGB, xRGB, RGB, BGRA, BGRx, BGR15, RGB15 }, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 2147483647/1 ], interlace-mode=(string)alternate
0:00:00.100191872 837 0x5586d412ef20 DEBUG GST_CAPS gstutils.c:3102:gst_pad_query_caps:<capsfilter0:sink> get pad caps with filter (NULL)
0:00:00.100220618 837 0x5586d412ef20 DEBUG GST_CAPS gstutils.c:3148:gst_pad_peer_query_caps:<capsfilter0:src> get pad peer caps with filter (NULL)
0:00:00.100273223 837 0x5586d412ef20 DEBUG GST_CAPS gstutils.c:3109:gst_pad_query_caps:<capsfilter0:sink> query returned video/x-raw, format=(string)RGB, width=(int)1024, height=(int)100, framerate=(fraction)100/1
0:00:00.100379971 837 0x5586d412ef20 DEBUG GST_CAPS gstpad.c:2277:gst_pad_link_check_compatible_unlocked:<v4l2src0:src> src caps image/jpeg; video/mpeg, mpegversion=(int)4, systemstream=(boolean)false; video/mpeg, mpegversion=(int){ 1, 2 }; video/mpegts, systemstream=(boolean)true; video/x-bayer, format=(string){ bggr, gbrg, grbg, rggb, bggr10p, gbrg10p, grbg10p, rggb10p }, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-dv, systemstream=(boolean)true; video/x-fwht; video/x-h263, variant=(string)itu; video/x-h264, stream-format=(string){ byte-stream, avc }, alignment=(string)au; video/x-h265, stream-format=(string)byte-stream, alignment=(string)au; video/x-pwc1, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-pwc2, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw, format=(string){ RGB16, BGR, ABGR, xBGR, RGBx, GRAY8, GRAY16_LE, GRAY16_BE, YVU9, YV12, YUY2, YVYU, UYVY, Y42B, Y41B, YUV9, NV12_64Z32, NV24, NV61, NV16, NV21, NV12, I420, ARGB, xRGB, RGB, BGRA, BGRx, BGR15, RGB15 }, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-sonix, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-vp8; video/x-vp9; video/x-wmv, wmvversion=(int)3, format=(string)WVC1; video/x-raw(format:Interlaced), format=(string){ RGB16, BGR, ABGR, xBGR, RGBx, GRAY8, GRAY16_LE, GRAY16_BE, YVU9, YV12, YUY2, YVYU, UYVY, Y42B, Y41B, YUV9, NV12_64Z32, NV24, NV61, NV16, NV21, NV12, I420, ARGB, xRGB, RGB, BGRA, BGRx, BGR15, RGB15 }, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 2147483647/1 ], interlace-mode=(string)alternate
0:00:00.100489294 837 0x5586d412ef20 DEBUG GST_CAPS gstpad.c:2279:gst_pad_link_check_compatible_unlocked:<capsfilter0:sink> sink caps video/x-raw, format=(string)RGB, width=(int)1024, height=(int)100, framerate=(fraction)100/1
0:00:00.100528731 837 0x5586d412ef20 DEBUG GST_CAPS gstpad.c:2297:gst_pad_link_check_compatible_unlocked: caps are compatible
0:00:00.100586896 837 0x5586d412ef20 DEBUG GST_CAPS gstutils.c:3102:gst_pad_query_caps:<capsfilter0:src> get pad caps with filter (NULL)
0:00:00.100613496 837 0x5586d412ef20 DEBUG GST_CAPS gstutils.c:3148:gst_pad_peer_query_caps:<capsfilter0:sink> get pad peer caps with filter (NULL)
0:00:00.100724800 837 0x5586d412ef20 DEBUG GST_CAPS gstutils.c:3155:gst_pad_peer_query_caps:<capsfilter0:sink> peer query returned image/jpeg; video/mpeg, mpegversion=(int)4, systemstream=(boolean)false; video/mpeg, mpegversion=(int){ 1, 2 }; video/mpegts, systemstream=(boolean)true; video/x-bayer, format=(string){ bggr, gbrg, grbg, rggb, bggr10p, gbrg10p, grbg10p, rggb10p }, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-dv, systemstream=(boolean)true; video/x-fwht; video/x-h263, variant=(string)itu; video/x-h264, stream-format=(string){ byte-stream, avc }, alignment=(string)au; video/x-h265, stream-format=(string)byte-stream, alignment=(string)au; video/x-pwc1, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-pwc2, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw, format=(string){ RGB16, BGR, ABGR, xBGR, RGBx, GRAY8, GRAY16_LE, GRAY16_BE, YVU9, YV12, YUY2, YVYU, UYVY, Y42B, Y41B, YUV9, NV12_64Z32, NV24, NV61, NV16, NV21, NV12, I420, ARGB, xRGB, RGB, BGRA, BGRx, BGR15, RGB15 }, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-sonix, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-vp8; video/x-vp9; video/x-wmv, wmvversion=(int)3, format=(string)WVC1; video/x-raw(format:Interlaced), format=(string){ RGB16, BGR, ABGR, xBGR, RGBx, GRAY8, GRAY16_LE, GRAY16_BE, YVU9, YV12, YUY2, YVYU, UYVY, Y42B, Y41B, YUV9, NV12_64Z32, NV24, NV61, NV16, NV21, NV12, I420, ARGB, xRGB, RGB, BGRA, BGRx, BGR15, RGB15 }, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 2147483647/1 ], interlace-mode=(string)alternate
0:00:00.100800761 837 0x5586d412ef20 DEBUG GST_CAPS gstutils.c:3109:gst_pad_query_caps:<capsfilter0:src> query returned video/x-raw, format=(string)RGB, width=(int)1024, height=(int)100, framerate=(fraction)100/1
0:00:00.100825188 837 0x5586d412ef20 DEBUG GST_CAPS gstutils.c:3102:gst_pad_query_caps:<fakesink0:sink> get pad caps with filter (NULL)
0:00:00.100853778 837 0x5586d412ef20 DEBUG GST_CAPS gstutils.c:3109:gst_pad_query_caps:<fakesink0:sink> query returned ANY
0:00:00.100889940 837 0x5586d412ef20 DEBUG GST_CAPS gstutils.c:3102:gst_pad_query_caps:<capsfilter0:src> get pad caps with filter (NULL)
0:00:00.100930137 837 0x5586d412ef20 DEBUG GST_CAPS gstutils.c:3148:gst_pad_peer_query_caps:<capsfilter0:sink> get pad peer caps with filter (NULL)
0:00:00.101042811 837 0x5586d412ef20 DEBUG GST_CAPS gstutils.c:3155:gst_pad_peer_query_caps:<capsfilter0:sink> peer query returned image/jpeg; video/mpeg, mpegversion=(int)4, systemstream=(boolean)false; video/mpeg, mpegversion=(int){ 1, 2 }; video/mpegts, systemstream=(boolean)true; video/x-bayer, format=(string){ bggr, gbrg, grbg, rggb, bggr10p, gbrg10p, grbg10p, rggb10p }, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-dv, systemstream=(boolean)true; video/x-fwht; video/x-h263, variant=(string)itu; video/x-h264, stream-format=(string){ byte-stream, avc }, alignment=(string)au; video/x-h265, stream-format=(string)byte-stream, alignment=(string)au; video/x-pwc1, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-pwc2, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw, format=(string){ RGB16, BGR, ABGR, xBGR, RGBx, GRAY8, GRAY16_LE, GRAY16_BE, YVU9, YV12, YUY2, YVYU, UYVY, Y42B, Y41B, YUV9, NV12_64Z32, NV24, NV61, NV16, NV21, NV12, I420, ARGB, xRGB, RGB, BGRA, BGRx, BGR15, RGB15 }, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-sonix, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-vp8; video/x-vp9; video/x-wmv, wmvversion=(int)3, format=(string)WVC1; video/x-raw(format:Interlaced), format=(string){ RGB16, BGR, ABGR, xBGR, RGBx, GRAY8, GRAY16_LE, GRAY16_BE, YVU9, YV12, YUY2, YVYU, UYVY, Y42B, Y41B, YUV9, NV12_64Z32, NV24, NV61, NV16, NV21, NV12, I420, ARGB, xRGB, RGB, BGRA, BGRx, BGR15, RGB15 }, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 2147483647/1 ], interlace-mode=(string)alternate
0:00:00.101109333 837 0x5586d412ef20 DEBUG GST_CAPS gstutils.c:3109:gst_pad_query_caps:<capsfilter0:src> query returned video/x-raw, format=(string)RGB, width=(int)1024, height=(int)100, framerate=(fraction)100/1
0:00:00.101132974 837 0x5586d412ef20 DEBUG GST_CAPS gstutils.c:3102:gst_pad_query_caps:<fakesink0:sink> get pad caps with filter (NULL)
0:00:00.101158685 837 0x5586d412ef20 DEBUG GST_CAPS gstutils.c:3109:gst_pad_query_caps:<fakesink0:sink> query returned ANY
0:00:00.101188597 837 0x5586d412ef20 DEBUG GST_CAPS gstpad.c:2277:gst_pad_link_check_compatible_unlocked:<capsfilter0:src> src caps video/x-raw, format=(string)RGB, width=(int)1024, height=(int)100, framerate=(fraction)100/1
0:00:00.101209264 837 0x5586d412ef20 DEBUG GST_CAPS gstpad.c:2279:gst_pad_link_check_compatible_unlocked:<fakesink0:sink> sink caps ANY
0:00:00.101228279 837 0x5586d412ef20 DEBUG GST_CAPS gstpad.c:2297:gst_pad_link_check_compatible_unlocked: caps are compatible
Setting pipeline to PAUSED ...
0:00:00.103783701 837 0x5586d412ef20 DEBUG GST_CAPS gstpad.c:2732:gst_pad_get_current_caps:<capsfilter0:sink> get current pad caps (NULL)
0:00:00.103842409 837 0x5586d412ef20 DEBUG GST_CAPS gstpad.c:2732:gst_pad_get_current_caps:<capsfilter0:src> get current pad caps (NULL)
Pipeline is live and does not need PREROLL ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
0:00:00.105903147 837 0x5586d40c3a80 DEBUG GST_CAPS gstutils.c:3102:gst_pad_query_caps:<v4l2src0:src> get pad caps with filter (NULL)
(gst-launch-1.0:837): GStreamer-CRITICAL **: 08:23:24.295: gst_value_set_int_range_step: assertion 'end % step == 0' failed
(gst-launch-1.0:837): GStreamer-CRITICAL **: 08:23:24.295: gst_value_set_int_range_step: assertion 'end % step == 0' failed
(gst-launch-1.0:837): GStreamer-CRITICAL **: 08:23:24.296: gst_value_set_int_range_step: assertion 'end % step == 0' failed
(gst-launch-1.0:837): GStreamer-CRITICAL **: 08:23:24.296: gst_value_set_int_range_step: assertion 'end % step == 0' failed
0:00:00.110396542 837 0x5586d40c3a80 DEBUG GST_CAPS gstutils.c:3109:gst_pad_query_caps:<v4l2src0:src> query returned video/x-raw, format=(string)YUY2, width=(int)[ 4, 1024, 4 ], height=(int)[ 4, 1024, 4 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 500000/17673 ]; video/x-raw(format:Interlaced), format=(string)YUY2, width=(int)[ 4, 1024, 4 ], height=(int)[ 4, 1024, 4 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 500000/17673 ], interlace-mode=(string)alternate; video/x-raw, format=(string)YUY2, width=(int)[ 4, 1024, 4 ], height=(int)[ 4, 1024, 4 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 500000/17673 ]; video/x-raw(format:Interlaced), format=(string)YUY2, width=(int)[ 4, 1024, 4 ], height=(int)[ 4, 1024, 4 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 500000/17673 ], interlace-mode=(string)alternate; video/x-raw, format=(string)UYVY, width=(int)[ 4, 1024, 4 ], height=(int)[ 4, 1024, 4 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 500000/17673 ]; video/x-raw(format:Interlaced), format=(string)UYVY, width=(int)[ 4, 1024, 4 ], height=(int)[ 4, 1024, 4 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 500000/17673 ], interlace-mode=(string)alternate; video/x-raw, format=(string)UYVY, width=(int)[ 4, 1024, 4 ], height=(int)[ 4, 1024, 4 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 500000/17673 ]; video/x-raw(format:Interlaced), format=(string)UYVY, width=(int)[ 4, 1024, 4 ], height=(int)[ 4, 1024, 4 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 500000/17673 ], interlace-mode=(string)alternate; video/x-raw, format=(string)BGRx, width=(int)[ 4, 1024, 4 ], height=(int)[ 4, 1024, 4 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 500000/17673 ]; video/x-raw(format:Interlaced), format=(string)BGRx, width=(int)[ 4, 1024, 4 ], height=(int)[ 4, 1024, 4 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 500000/17673 ], interlace-mode=(string)alternate; video/x-raw, format=(string)xRGB, width=(int)[ 4, 1024, 4 ], height=(int)[ 4, 1024, 4 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 500000/17673 ]; video/x-raw(format:Interlaced), format=(string)xRGB, width=(int)[ 4, 1024, 4 ], height=(int)[ 4, 1024, 4 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 500000/17673 ], interlace-mode=(string)alternate; video/x-raw, format=(string)BGR, width=(int)[ 4, 1024, 4 ], height=(int)[ 4, 1024, 4 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 500000/17673 ]; video/x-raw(format:Interlaced), format=(string)BGR, width=(int)[ 4, 1024, 4 ], height=(int)[ 4, 1024, 4 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 500000/17673 ], interlace-mode=(string)alternate; video/x-raw, format=(string)RGB, width=(int)[ 4, 1024, 4 ], height=(int)[ 4, 1024, 4 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 500000/17673 ]; video/x-raw(format:Interlaced), format=(string)RGB, width=(int)[ 4, 1024, 4 ], height=(int)[ 4, 1024, 4 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 500000/17673 ], interlace-mode=(string)alternate; video/x-bayer, format=(string)rggb, width=(int)[ 20, 2040, 20 ], height=(int)[ 20, 2040, 20 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 2500000/176257 ]; video/x-bayer, format=(string)grbg, width=(int)[ 20, 2040, 20 ], height=(int)[ 20, 2040, 20 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 2500000/176257 ]; video/x-bayer, format=(string)gbrg, width=(int)[ 20, 2040, 20 ], height=(int)[ 20, 2040, 20 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 2500000/176429 ]; video/x-bayer, format=(string)bggr, width=(int)[ 20, 2040, 20 ], height=(int)[ 20, 2040, 20 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 2500000/176429 ]; video/x-raw, format=(string)GRAY8, width=(int)[ 4, 1024, 4 ], height=(int)[ 4, 1024, 4 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 500000/17673 ]; video/x-raw(format:Interlaced), format=(string)GRAY8, width=(int)[ 4, 1024, 4 ], height=(int)[ 4, 1024, 4 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 500000/17673 ], interlace-mode=(string)alternate; video/x-raw, format=(string)GRAY16_LE, IsQtecGreen=(boolean)true, width=(int)[ 4, 2048, 4 ], height=(int)[ 4, 1024, 4 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 500000/17673 ]; video/x-raw(format:Interlaced), format=(string)GRAY16_LE, IsQtecGreen=(boolean)true, width=(int)[ 4, 2048, 4 ], height=(int)[ 4, 1024, 4 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 500000/17673 ], interlace-mode=(string)alternate; video/x-raw, format=(string)GRAY16_BE, IsQtecGreen=(boolean)true, width=(int)[ 4, 2048, 4 ], height=(int)[ 4, 1024, 4 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 500000/17673 ]; video/x-raw(format:Interlaced), format=(string)GRAY16_BE, IsQtecGreen=(boolean)true, width=(int)[ 4, 2048, 4 ], height=(int)[ 4, 1024, 4 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 500000/17673 ], interlace-mode=(string)alternate; video/x-raw, format=(string)GRAY8, IsQtecGreen=(boolean)true, width=(int)[ 4, 2048, 4 ], height=(int)[ 4, 1024, 4 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 500000/17673 ]; video/x-raw(format:Interlaced), format=(string)GRAY8, IsQtecGreen=(boolean)true, width=(int)[ 4, 2048, 4 ], height=(int)[ 4, 1024, 4 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 500000/17673 ], interlace-mode=(string)alternate; video/x-raw, format=(string)GRAY16_BE, width=(int)[ 4, 1024, 4 ], height=(int)[ 4, 1024, 4 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 500000/17673 ]; video/x-raw(format:Interlaced), format=(string)GRAY16_BE, width=(int)[ 4, 1024, 4 ], height=(int)[ 4, 1024, 4 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 500000/17673 ], interlace-mode=(string)alternate; video/x-raw, format=(string)GRAY16_LE, width=(int)[ 4, 1024, 4 ], height=(int)[ 4, 1024, 4 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 500000/17673 ]; video/x-raw(format:Interlaced), format=(string)GRAY16_LE, width=(int)[ 4, 1024, 4 ], height=(int)[ 4, 1024, 4 ], pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)[ 85714285/2147483647, 500000/17673 ], interlace-mode=(string)alternate
0:00:00.110724900 837 0x5586d40c3a80 DEBUG GST_CAPS gstutils.c:3148:gst_pad_peer_query_caps:<v4l2src0:src> get pad peer caps with filter (NULL)
0:00:00.110819699 837 0x5586d40c3a80 DEBUG GST_CAPS gstutils.c:3148:gst_pad_peer_query_caps:<capsfilter0:src> get pad peer caps with filter (NULL)
0:00:00.110988202 837 0x5586d40c3a80 DEBUG GST_CAPS gstutils.c:3155:gst_pad_peer_query_caps:<capsfilter0:src> peer query returned ANY
0:00:00.111132349 837 0x5586d40c3a80 DEBUG GST_CAPS gstutils.c:3155:gst_pad_peer_query_caps:<v4l2src0:src> peer query returned video/x-raw, format=(string)RGB, width=(int)1024, height=(int)100, framerate=(fraction)100/1
0:00:00.111327476 837 0x5586d40c3a80 WARN basesrc gstbasesrc.c:3127:gst_base_src_loop:<v4l2src0> error: Internal data stream error.
0:00:00.111403836 837 0x5586d40c3a80 WARN basesrc gstbasesrc.c:3127:gst_base_src_loop:<v4l2src0> error: streaming stopped, reason not-negotiated (-4)
ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Internal data stream error.
Additional debug info:
../gstreamer-1.18.2/libs/gst/base/gstbasesrc.c(3127): gst_base_src_loop (): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0:
streaming stopped, reason not-negotiated (-4)
Execution ended after 0:00:00.007282927
Setting pipeline to NULL ...
Freeing pipeline ...