<div dir="ltr">Thank you both for the suggestions! I have run with debugging focussed on CAPS and, to my untrained eyes, it looks like it is indeed a format problem. However, it seems to be a mismatch between the v4l2src and the jpegdecoder element (UYVY from the camera, compared to BT709 which is expected by the JPEG decoder and H264 encoder). I did try a videoconvert element with filter caps at either end, but to no avail. <div><br></div><div>root@apalis-imx8-06959030:~# gst-launch-1.0 v4l2src device=/dev/video2 ! jpegparse ! v4l2jpegdec ! v4l2h264enc ! fakesink -v --gst-debug=*:3,GST_CAPS:5</div><div><br>0:00:00.439860561 969 0xaaaaffac8690 DEBUG GST_CAPS gstutils.c:3057:gst_pad_query_caps:<v4l2src0:src> get pad caps with filter (NULL)<br>0:00:00.440151426 969 0xaaaaffac8690 DEBUG GST_CAPS gstutils.c:3064: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 }, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-cavs; video/x-divx, divxversion=(int)[ 3, 6 ]; video/x-dv, systemstream=(boolean)true; video/x-flash-video, flvversion=(int)1; 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-pn-realvideo; 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, RGB, RGBA, GRAY8, GRAY16_LE, GRAY16_BE, YVU9, YV12, YUY2, YVYU, UYVY, Y42B, Y41B, v308, YUV9, NV12_10LE, NV12_64Z32, NV24, NV61, NV16, NV21, NV12, I420, xRGB, BGRA, BGRx, ARGB, 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-vp6-flash; video/x-vp8; video/x-vp9; video/x-wmv, wmvversion=(int)3; video/x-xvid<br>0:00:00.440240923 969 0xaaaaffac8690 DEBUG GST_CAPS gstutils.c:3057:gst_pad_query_caps:<jpegparse0:sink> get pad caps with filter (NULL)<br>0:00:00.440305420 969 0xaaaaffac8690 DEBUG GST_CAPS gstutils.c:3064:gst_pad_query_caps:<jpegparse0:sink> query returned image/jpeg<br>0:00:00.440385168 969 0xaaaaffac8690 DEBUG GST_CAPS gstutils.c:3057:gst_pad_query_caps:<v4l2src0:src> get pad caps with filter (NULL)<br>0:00:00.440566036 969 0xaaaaffac8690 DEBUG GST_CAPS gstutils.c:3064: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 }, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-cavs; video/x-divx, divxversion=(int)[ 3, 6 ]; video/x-dv, systemstream=(boolean)true; video/x-flash-video, flvversion=(int)1; 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-pn-realvideo; 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, RGB, RGBA, GRAY8, GRAY16_LE, GRAY16_BE, YVU9, YV12, YUY2, YVYU, UYVY, Y42B, Y41B, v308, YUV9, NV12_10LE, NV12_64Z32, NV24, NV61, NV16, NV21, NV12, I420, xRGB, BGRA, BGRx, ARGB, 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-vp6-flash; video/x-vp8; video/x-vp9; video/x-wmv, wmvversion=(int)3; video/x-xvid<br>0:00:00.440646033 969 0xaaaaffac8690 DEBUG GST_CAPS gstutils.c:3057:gst_pad_query_caps:<jpegparse0:sink> get pad caps with filter (NULL)<br>0:00:00.440702406 969 0xaaaaffac8690 DEBUG GST_CAPS gstutils.c:3064:gst_pad_query_caps:<jpegparse0:sink> query returned image/jpeg<br>0:00:00.440865651 969 0xaaaaffac8690 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 }, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-cavs; video/x-divx, divxversion=(int)[ 3, 6 ]; video/x-dv, systemstream=(boolean)true; video/x-flash-video, flvversion=(int)1; 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-pn-realvideo; 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, RGB, RGBA, GRAY8, GRAY16_LE, GRAY16_BE, YVU9, YV12, YUY2, YVYU, UYVY, Y42B, Y41B, v308, YUV9, NV12_10LE, NV12_64Z32, NV24, NV61, NV16, NV21, NV12, I420, xRGB, BGRA, BGRx, ARGB, 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-vp6-flash; video/x-vp8; video/x-vp9; video/x-wmv, wmvversion=(int)3; video/x-xvid<br>0:00:00.440938773 969 0xaaaaffac8690 DEBUG GST_CAPS gstpad.c:2279:gst_pad_link_check_compatible_unlocked:<jpegparse0:sink> sink caps image/jpeg<br>0:00:00.440980271 969 0xaaaaffac8690 DEBUG GST_CAPS gstpad.c:2297:gst_pad_link_check_compatible_unlocked: caps are compatible<br>0:00:00.441121517 969 0xaaaaffac8690 DEBUG GST_CAPS gstutils.c:3057:gst_pad_query_caps:<jpegparse0:src> get pad caps with filter (NULL)<br>0:00:00.441200764 969 0xaaaaffac8690 DEBUG GST_CAPS gstpad.c:3182:gst_pad_query_caps_default:<jpegparse0:src> query caps caps query: 0xaaaaffae0a30, GstQueryCaps, filter=(GstCaps)"NULL", caps=(GstCaps)"NULL";<br>0:00:00.441237762 969 0xaaaaffac8690 DEBUG GST_CAPS gstpad.c:3200:gst_pad_query_caps_default:<jpegparse0:src> fixed pad caps: trying pad caps<br>0:00:00.441271511 969 0xaaaaffac8690 DEBUG GST_CAPS gstpad.c:3206:gst_pad_query_caps_default:<jpegparse0:src> trying pad template caps<br>0:00:00.441356883 969 0xaaaaffac8690 DEBUG GST_CAPS gstpad.c:3235:gst_pad_query_caps_default:<jpegparse0:src> using caps 0xaaaaff905190 image/jpeg, format=(string){ I420, Y41B, UYVY, YV12 }, width=(int)[ 0, 2147483647 ], height=(int)[ 0, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], parsed=(boolean)true<br>0:00:00.441439505 969 0xaaaaffac8690 DEBUG GST_CAPS gstutils.c:3064:gst_pad_query_caps:<jpegparse0:src> query returned image/jpeg, format=(string){ I420, Y41B, UYVY, YV12 }, width=(int)[ 0, 2147483647 ], height=(int)[ 0, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], parsed=(boolean)true<br>0:00:00.441493128 969 0xaaaaffac8690 DEBUG GST_CAPS gstutils.c:3057:gst_pad_query_caps:<v4l2jpegdec0:sink> get pad caps with filter (NULL)<br>0:00:00.441555876 969 0xaaaaffac8690 DEBUG GST_CAPS gstutils.c:3103:gst_pad_peer_query_caps:<v4l2jpegdec0:src> get pad peer caps with filter (NULL)<br>0:00:00.441691246 969 0xaaaaffac8690 DEBUG GST_CAPS gstutils.c:3064:gst_pad_query_caps:<v4l2jpegdec0:sink> query returned image/jpeg, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 2147483647/1 ]<br>0:00:00.441781368 969 0xaaaaffac8690 DEBUG GST_CAPS gstutils.c:3057:gst_pad_query_caps:<jpegparse0:src> get pad caps with filter (NULL)<br>0:00:00.441854491 969 0xaaaaffac8690 DEBUG GST_CAPS gstpad.c:3182:gst_pad_query_caps_default:<jpegparse0:src> query caps caps query: 0xaaaaffae0ca0, GstQueryCaps, filter=(GstCaps)"NULL", caps=(GstCaps)"NULL";<br>0:00:00.441899364 969 0xaaaaffac8690 DEBUG GST_CAPS gstpad.c:3200:gst_pad_query_caps_default:<jpegparse0:src> fixed pad caps: trying pad caps<br>0:00:00.441939488 969 0xaaaaffac8690 DEBUG GST_CAPS gstpad.c:3206:gst_pad_query_caps_default:<jpegparse0:src> trying pad template caps<br>0:00:00.442012860 969 0xaaaaffac8690 DEBUG GST_CAPS gstpad.c:3235:gst_pad_query_caps_default:<jpegparse0:src> using caps 0xaaaaff905190 image/jpeg, format=(string){ I420, Y41B, UYVY, YV12 }, width=(int)[ 0, 2147483647 ], height=(int)[ 0, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], parsed=(boolean)true<br>0:00:00.442092482 969 0xaaaaffac8690 DEBUG GST_CAPS gstutils.c:3064:gst_pad_query_caps:<jpegparse0:src> query returned image/jpeg, format=(string){ I420, Y41B, UYVY, YV12 }, width=(int)[ 0, 2147483647 ], height=(int)[ 0, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], parsed=(boolean)true<br>0:00:00.442146480 969 0xaaaaffac8690 DEBUG GST_CAPS gstutils.c:3057:gst_pad_query_caps:<v4l2jpegdec0:sink> get pad caps with filter (NULL)<br>0:00:00.442201603 969 0xaaaaffac8690 DEBUG GST_CAPS gstutils.c:3103:gst_pad_peer_query_caps:<v4l2jpegdec0:src> get pad peer caps with filter (NULL)<br>0:00:00.442309599 969 0xaaaaffac8690 DEBUG GST_CAPS gstutils.c:3064:gst_pad_query_caps:<v4l2jpegdec0:sink> query returned image/jpeg, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 2147483647/1 ]<br>0:00:00.442384847 969 0xaaaaffac8690 DEBUG GST_CAPS gstpad.c:2277:gst_pad_link_check_compatible_unlocked:<jpegparse0:src> src caps image/jpeg, format=(string){ I420, Y41B, UYVY, YV12 }, width=(int)[ 0, 2147483647 ], height=(int)[ 0, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], parsed=(boolean)true<br>0:00:00.442450220 969 0xaaaaffac8690 DEBUG GST_CAPS gstpad.c:2279:gst_pad_link_check_compatible_unlocked:<v4l2jpegdec0:sink> sink caps image/jpeg, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 2147483647/1 ]<br>0:00:00.442502718 969 0xaaaaffac8690 DEBUG GST_CAPS gstpad.c:2297:gst_pad_link_check_compatible_unlocked: caps are compatible<br>0:00:00.442589965 969 0xaaaaffac8690 DEBUG GST_CAPS gstutils.c:3057:gst_pad_query_caps:<v4l2jpegdec0:src> get pad caps with filter (NULL)<br>0:00:00.442678836 969 0xaaaaffac8690 DEBUG GST_CAPS gstutils.c:3064:gst_pad_query_caps:<v4l2jpegdec0:src> query returned video/x-raw, format=(string){ NV12, NV12_10LE }, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 2147483647/1 ]<br>0:00:00.442734334 969 0xaaaaffac8690 DEBUG GST_CAPS gstutils.c:3057:gst_pad_query_caps:<v4l2h264enc0:sink> get pad caps with filter (NULL)<br>0:00:00.442811582 969 0xaaaaffac8690 DEBUG GST_CAPS gstutils.c:3064:gst_pad_query_caps:<v4l2h264enc0:sink> query returned video/x-raw, format=(string)NV12, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 2147483647/1 ]<br>0:00:00.442891204 969 0xaaaaffac8690 DEBUG GST_CAPS gstutils.c:3057:gst_pad_query_caps:<v4l2jpegdec0:src> get pad caps with filter (NULL)<br>0:00:00.442973451 969 0xaaaaffac8690 DEBUG GST_CAPS gstutils.c:3064:gst_pad_query_caps:<v4l2jpegdec0:src> query returned video/x-raw, format=(string){ NV12, NV12_10LE }, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 2147483647/1 ]<br>0:00:00.443025824 969 0xaaaaffac8690 DEBUG GST_CAPS gstutils.c:3057:gst_pad_query_caps:<v4l2h264enc0:sink> get pad caps with filter (NULL)<br>0:00:00.443099822 969 0xaaaaffac8690 DEBUG GST_CAPS gstutils.c:3064:gst_pad_query_caps:<v4l2h264enc0:sink> query returned video/x-raw, format=(string)NV12, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 2147483647/1 ]<br>0:00:00.443171444 969 0xaaaaffac8690 DEBUG GST_CAPS gstpad.c:2277:gst_pad_link_check_compatible_unlocked:<v4l2jpegdec0:src> src caps video/x-raw, format=(string){ NV12, NV12_10LE }, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 2147483647/1 ]<br>0:00:00.443237442 969 0xaaaaffac8690 DEBUG GST_CAPS gstpad.c:2279:gst_pad_link_check_compatible_unlocked:<v4l2h264enc0:sink> sink caps video/x-raw, format=(string)NV12, width=(int)[ 1, 32768 ], height=(int)[ 1, 32768 ], framerate=(fraction)[ 0/1, 2147483647/1 ]<br>0:00:00.443288815 969 0xaaaaffac8690 DEBUG GST_CAPS gstpad.c:2297:gst_pad_link_check_compatible_unlocked: caps are compatible<br>0:00:00.443372812 969 0xaaaaffac8690 DEBUG GST_CAPS gstutils.c:3057:gst_pad_query_caps:<v4l2h264enc0:src> get pad caps with filter (NULL)<br>0:00:00.443446309 969 0xaaaaffac8690 DEBUG GST_CAPS gstutils.c:3064:gst_pad_query_caps:<v4l2h264enc0:src> query returned video/x-h264, stream-format=(string)byte-stream, alignment=(string)au<br>0:00:00.443498057 969 0xaaaaffac8690 DEBUG GST_CAPS gstutils.c:3057:gst_pad_query_caps:<fakesink0:sink> get pad caps with filter (NULL)<br>0:00:00.443558930 969 0xaaaaffac8690 DEBUG GST_CAPS gstutils.c:3064:gst_pad_query_caps:<fakesink0:sink> query returned ANY<br>0:00:00.443628178 969 0xaaaaffac8690 DEBUG GST_CAPS gstutils.c:3057:gst_pad_query_caps:<v4l2h264enc0:src> get pad caps with filter (NULL)<br>0:00:00.443696300 969 0xaaaaffac8690 DEBUG GST_CAPS gstutils.c:3064:gst_pad_query_caps:<v4l2h264enc0:src> query returned video/x-h264, stream-format=(string)byte-stream, alignment=(string)au<br>0:00:00.443747299 969 0xaaaaffac8690 DEBUG GST_CAPS gstutils.c:3057:gst_pad_query_caps:<fakesink0:sink> get pad caps with filter (NULL)<br>0:00:00.443807672 969 0xaaaaffac8690 DEBUG GST_CAPS gstutils.c:3064:gst_pad_query_caps:<fakesink0:sink> query returned ANY<br>0:00:00.443864920 969 0xaaaaffac8690 DEBUG GST_CAPS gstpad.c:2277:gst_pad_link_check_compatible_unlocked:<v4l2h264enc0:src> src caps video/x-h264, stream-format=(string)byte-stream, alignment=(string)au<br>0:00:00.443911668 969 0xaaaaffac8690 DEBUG GST_CAPS gstpad.c:2279:gst_pad_link_check_compatible_unlocked:<fakesink0:sink> sink caps ANY<br>0:00:00.443953541 969 0xaaaaffac8690 DEBUG GST_CAPS gstpad.c:2297:gst_pad_link_check_compatible_unlocked: caps are compatible<br>Setting pipeline to PAUSED ...<br>0:00:00.447318172 969 0xaaaaffac8690 WARN v4l2 gstv4l2object.c:2031:gst_v4l2_object_get_interlace_mode: Driver bug detected - check driver with v4l2-compliance from <a href="http://git.linuxtv.org/v4l-utils.git">http://git.linuxtv.org/v4l-utils.git</a><br><br>0:00:00.447393920 969 0xaaaaffac8690 WARN v4l2 gstv4l2object.c:2031:gst_v4l2_object_get_interlace_mode: Driver bug detected - check driver with v4l2-compliance from <a href="http://git.linuxtv.org/v4l-utils.git">http://git.linuxtv.org/v4l-utils.git</a><br><br>0:00:00.447641786 969 0xaaaaffac8690 WARN v4l2 gstv4l2object.c:4400:gst_v4l2_object_probe_caps:<v4l2h264enc0:src> Failed to probe pixel aspect ratio with VIDIOC_CROPCAP: Invalid argument<br>0:00:00.449083360 969 0xaaaaffac8690 WARN v4l2 gstv4l2object.c:2031:gst_v4l2_object_get_interlace_mode: Driver bug detected - check driver with v4l2-compliance from <a href="http://git.linuxtv.org/v4l-utils.git">http://git.linuxtv.org/v4l-utils.git</a><br><br>0:00:00.449140483 969 0xaaaaffac8690 WARN v4l2 gstv4l2object.c:2031:gst_v4l2_object_get_interlace_mode: Driver bug detected - check driver with v4l2-compliance from <a href="http://git.linuxtv.org/v4l-utils.git">http://git.linuxtv.org/v4l-utils.git</a><br><br>0:00:00.449620591 969 0xaaaaffac8690 WARN v4l2 v4l2_calls.c:547:gst_v4l2_subscribe_event:<v4l2src0> Cannot subscribe V4L2_EVENT_SOURCE_CHANGE or V4L2_EVENT_EOS event for device '/dev/video2'.<br>Pipeline is live and does not need PREROLL ...<br>0:00:00.450787175 969 0xaaaaffae0940 DEBUG GST_CAPS gstutils.c:3057:gst_pad_query_caps:<v4l2src0:src> get pad caps with filter (NULL)<br>0:00:00.451088414 969 0xaaaaffae0940 DEBUG GST_CAPS gstutils.c:3064:gst_pad_query_caps:<v4l2src0:src> query returned image/jpeg, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)60/1; image/jpeg, width=(int)1280, height=(int)720, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)120/1; image/jpeg, width=(int)640, height=(int)360, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)1285718/4945<br>0:00:00.451150162 969 0xaaaaffae0940 DEBUG GST_CAPS gstutils.c:3103:gst_pad_peer_query_caps:<v4l2src0:src> get pad peer caps with filter (NULL)<br>Setting pipeline to PLAYING ...<br>0:00:00.451214535 969 0xaaaaffae0940 DEBUG GST_CAPS gstutils.c:3110:gst_pad_peer_query_caps:<v4l2src0:src> peer query returned image/jpeg<br>New clock: GstSystemClock<br>0:00:00.463314982 969 0xaaaaffae0940 DEBUG GST_CAPS gstpad.c:2732:gst_pad_get_current_caps:<v4l2src0:src> get current pad caps (NULL)<br>0:00:00.463516850 969 0xaaaaffae0940 DEBUG GST_CAPS gstutils.c:3140:gst_pad_query_accept_caps:<jpegparse0:sink> accept caps of image/jpeg, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)60/1, colorimetry=(string)2:4:7:1, interlace-mode=(string)progressive<br>0:00:00.463601972 969 0xaaaaffae0940 DEBUG GST_CAPS gstutils.c:3057:gst_pad_query_caps:<jpegparse0:sink> get pad caps with filter image/jpeg, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)60/1, colorimetry=(string)2:4:7:1, interlace-mode=(string)progressive<br>/GstPipeline:pipeline0/GstV4l2Src:v4l2src0.GstPad:src: caps = image/jpeg, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)60/1, colorimetry=(string)2:4:7:1, interlace-mode=(string)progressive<br>0:00:00.463706218 969 0xaaaaffae0940 DEBUG GST_CAPS gstutils.c:3064:gst_pad_query_caps:<jpegparse0:sink> query returned image/jpeg, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)60/1, colorimetry=(string)2:4:7:1, interlace-mode=(string)progressive<br>0:00:00.463858713 969 0xaaaaffae0940 DEBUG GST_CAPS gstpad.c:2732:gst_pad_get_current_caps:<v4l2src0:src> get current pad caps image/jpeg, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)60/1, colorimetry=(string)2:4:7:1, interlace-mode=(string)progressive<br>/GstPipeline:pipeline0/GstJpegParse:jpegparse0.GstPad:sink: caps = image/jpeg, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)60/1, colorimetry=(string)2:4:7:1, interlace-mode=(string)progressive<br>0:00:00.463973459 969 0xaaaaffae0940 DEBUG GST_CAPS gstpad.c:2732:gst_pad_get_current_caps:<v4l2src0:src> get current pad caps image/jpeg, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)60/1, colorimetry=(string)2:4:7:1, interlace-mode=(string)progressive<br>0:00:00.499340458 969 0xaaaaffae0940 WARN v4l2bufferpool gstv4l2bufferpool.c:813:gst_v4l2_buffer_pool_start:<v4l2src0:pool:src> Uncertain or not enough buffers, enabling copy threshold<br>0:00:00.831607837 969 0xaaaaffae0940 DEBUG GST_CAPS gstpad.c:2732:gst_pad_get_current_caps:<jpegparse0:sink> get current pad caps image/jpeg, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)60/1, colorimetry=(string)2:4:7:1, interlace-mode=(string)progressive<br>0:00:00.837091143 969 0xaaaaffae0940 DEBUG GST_CAPS gstutils.c:3140:gst_pad_query_accept_caps:<v4l2jpegdec0:sink> accept caps of image/jpeg, parsed=(boolean)true, framerate=(fraction)60/1<br>0:00:00.837221388 969 0xaaaaffae0940 DEBUG GST_CAPS gstutils.c:3057:gst_pad_query_caps:<v4l2jpegdec0:sink> get pad caps with filter image/jpeg, parsed=(boolean)true, framerate=(fraction)60/1<br>/GstPipeline:pipeline0/GstJpegParse:jpegparse0.GstPad:src: caps = image/jpeg, parsed=(boolean)true, framerate=(fraction)60/1<br>0:00:00.837376508 969 0xaaaaffae0940 DEBUG GST_CAPS gstutils.c:3103:gst_pad_peer_query_caps:<v4l2jpegdec0:src> get pad peer caps with filter video/x-raw, framerate=(fraction)60/1<br>0:00:00.837547627 969 0xaaaaffae0940 DEBUG GST_CAPS gstutils.c:3110:gst_pad_peer_query_caps:<v4l2jpegdec0:src> peer query returned video/x-raw, framerate=(fraction)60/1, format=(string)NV12, width=(int)[ 64, 1920, 16 ], height=(int)[ 48, 1920, 2 ], interlace-mode=(string)progressive, colorimetry=(string){ bt709 }<br>0:00:00.837830992 969 0xaaaaffae0940 DEBUG GST_CAPS gstutils.c:3064:gst_pad_query_caps:<v4l2jpegdec0:sink> query returned image/jpeg, width=(int)[ 64, 1920, 16 ], height=(int)[ 48, 1920, 2 ], framerate=(fraction)60/1, colorimetry=(string)bt709, parsed=(boolean)true<br>0:00:00.838436845 969 0xaaaaffae0940 WARN v4l2 gstv4l2object.c:4400:gst_v4l2_object_probe_caps:<v4l2jpegdec0:src> Failed to probe pixel aspect ratio with VIDIOC_CROPCAP: Invalid argument<br>0:00:00.838564716 969 0xaaaaffae0940 WARN v4l2 gstv4l2object.c:2031:gst_v4l2_object_get_interlace_mode: Driver bug detected - check driver with v4l2-compliance from <a href="http://git.linuxtv.org/v4l-utils.git">http://git.linuxtv.org/v4l-utils.git</a><br><br>0:00:00.838633838 969 0xaaaaffae0940 WARN v4l2 gstv4l2object.c:2031:gst_v4l2_object_get_interlace_mode: Driver bug detected - check driver with v4l2-compliance from <a href="http://git.linuxtv.org/v4l-utils.git">http://git.linuxtv.org/v4l-utils.git</a><br><br>0:00:00.838853080 969 0xaaaaffae0940 WARN v4l2 gstv4l2object.c:2031:gst_v4l2_object_get_interlace_mode: Driver bug detected - check driver with v4l2-compliance from <a href="http://git.linuxtv.org/v4l-utils.git">http://git.linuxtv.org/v4l-utils.git</a><br><br>0:00:00.838918203 969 0xaaaaffae0940 WARN v4l2 gstv4l2object.c:2031:gst_v4l2_object_get_interlace_mode: Driver bug detected - check driver with v4l2-compliance from <a href="http://git.linuxtv.org/v4l-utils.git">http://git.linuxtv.org/v4l-utils.git</a><br><br>0:00:00.839371687 969 0xaaaaffae0940 DEBUG GST_CAPS gstpad.c:2704:gst_pad_has_current_caps:<jpegparse0:src> check current pad caps image/jpeg, parsed=(boolean)true, framerate=(fraction)60/1<br>0:00:00.839458184 969 0xaaaaffae0940 DEBUG GST_CAPS gstpad.c:2732:gst_pad_get_current_caps:<jpegparse0:src> get current pad caps image/jpeg, parsed=(boolean)true, framerate=(fraction)60/1<br>/GstPipeline:pipeline0/v4l2jpegdec:v4l2jpegdec0.GstPad:sink: caps = image/jpeg, parsed=(boolean)true, framerate=(fraction)60/1<br>0:00:00.890482880 969 0xaaaaffae0940 DEBUG GST_CAPS gstutils.c:3140:gst_pad_query_accept_caps:<v4l2jpegdec0:sink> accept caps of image/jpeg, parsed=(boolean)true, format=(string)UYVY, width=(int)1920, height=(int)1080, framerate=(fraction)60/1<br>/GstPipeline:pipeline0/GstJpegParse:jpegparse0.GstPad:src: caps = image/jpeg, parsed=(boolean)true, format=(string)UYVY, width=(int)1920, height=(int)1080, framerate=(fraction)60/1<br>0:00:00.890609126 969 0xaaaaffae0940 DEBUG GST_CAPS gstutils.c:3057:gst_pad_query_caps:<v4l2jpegdec0:sink> get pad caps with filter image/jpeg, parsed=(boolean)true, format=(string)UYVY, width=(int)1920, height=(int)1080, framerate=(fraction)60/1<br>0:00:00.890721372 969 0xaaaaffae0940 DEBUG GST_CAPS gstutils.c:3103:gst_pad_peer_query_caps:<v4l2jpegdec0:src> get pad peer caps with filter video/x-raw, width=(int)1920, height=(int)1080, framerate=(fraction)60/1<br>0:00:00.890846617 969 0xaaaaffae0940 DEBUG GST_CAPS gstutils.c:3110:gst_pad_peer_query_caps:<v4l2jpegdec0:src> peer query returned video/x-raw, width=(int)1920, height=(int)1080, framerate=(fraction)60/1, format=(string)NV12, interlace-mode=(string)progressive, colorimetry=(string){ bt709 }<br>0:00:00.891008862 969 0xaaaaffae0940 DEBUG GST_CAPS gstutils.c:3064:gst_pad_query_caps:<v4l2jpegdec0:sink> query returned image/jpeg, width=(int)1920, height=(int)1080, framerate=(fraction)60/1, colorimetry=(string)bt709, parsed=(boolean)true, format=(string)UYVY<br>0:00:00.891237604 969 0xaaaaffae0940 DEBUG GST_CAPS gstpad.c:2704:gst_pad_has_current_caps:<jpegparse0:src> check current pad caps image/jpeg, parsed=(boolean)true, format=(string)UYVY, width=(int)1920, height=(int)1080, framerate=(fraction)60/1<br>/GstPipeline:pipeline0/v4l2jpegdec:v4l2jpegdec0.GstPad:sink: caps = image/jpeg, parsed=(boolean)true, format=(string)UYVY, width=(int)1920, height=(int)1080, framerate=(fraction)60/1<br>0:00:00.894478739 969 0xffff9c003590 WARN v4l2 gstv4l2object.c:4400:gst_v4l2_object_probe_caps:<v4l2jpegdec0:src> Failed to probe pixel aspect ratio with VIDIOC_CROPCAP: Invalid argument<br>0:00:00.894536362 969 0xffff9c003590 WARN v4l2 gstv4l2object.c:2031:gst_v4l2_object_get_interlace_mode: Driver bug detected - check driver with v4l2-compliance from <a href="http://git.linuxtv.org/v4l-utils.git">http://git.linuxtv.org/v4l-utils.git</a><br><br>0:00:00.894564486 969 0xffff9c003590 WARN v4l2 gstv4l2object.c:2031:gst_v4l2_object_get_interlace_mode: Driver bug detected - check driver with v4l2-compliance from <a href="http://git.linuxtv.org/v4l-utils.git">http://git.linuxtv.org/v4l-utils.git</a><br><br>0:00:00.894644233 969 0xffff9c003590 WARN v4l2 gstv4l2object.c:2031:gst_v4l2_object_get_interlace_mode: Driver bug detected - check driver with v4l2-compliance from <a href="http://git.linuxtv.org/v4l-utils.git">http://git.linuxtv.org/v4l-utils.git</a><br><br>0:00:00.894672482 969 0xffff9c003590 WARN v4l2 gstv4l2object.c:2031:gst_v4l2_object_get_interlace_mode: Driver bug detected - check driver with v4l2-compliance from <a href="http://git.linuxtv.org/v4l-utils.git">http://git.linuxtv.org/v4l-utils.git</a><br><br>0:00:00.894790603 969 0xffff9c003590 DEBUG GST_CAPS gstutils.c:3103:gst_pad_peer_query_caps:<v4l2jpegdec0:src> get pad peer caps with filter video/x-raw, format=(string)NV12, framerate=(fraction)0/1, width=(int)1920, height=(int)1080, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1, chroma-site=(string)mpeg2, colorimetry=(string)bt709<br>0:00:00.894845726 969 0xffff9c003590 DEBUG GST_CAPS gstutils.c:3110:gst_pad_peer_query_caps:<v4l2jpegdec0:src> peer query returned EMPTY<br>0:00:00.894877100 969 0xffff9c003590 ERROR v4l2videodec gstv4l2videodec.c:656:gst_v4l2_video_dec_loop:<v4l2jpegdec0> not negotiated<br>0:00:00.896224927 969 0xaaaaffae0940 DEBUG GST_CAPS gstpad.c:2704:gst_pad_has_current_caps:<jpegparse0:src> check current pad caps image/jpeg, parsed=(boolean)true, format=(string)UYVY, width=(int)1920, height=(int)1080, framerate=(fraction)60/1<br>0:00:00.896551791 969 0xaaaaffae0940 WARN basesrc gstbasesrc.c:3072:gst_base_src_loop:<v4l2src0> error: Internal data stream error.<br>0:00:00.896620163 969 0xaaaaffae0940 WARN basesrc gstbasesrc.c:3072:gst_base_src_loop:<v4l2src0> error: streaming stopped, reason not-negotiated (-4)<br>0:00:00.896859405 969 0xaaaaffae0940 ERROR videodecoder gstvideodecoder.c:1141:gst_video_decoder_sink_event_default:<v4l2jpegdec0> No valid frames decoded before end of stream<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Jul 5, 2022 at 3:19 PM Marianna Smidth Buschle <<a href="mailto:msb@qtec.com">msb@qtec.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Try running with '-v' and/or '--gst-debug=*:3,GST_CAPS:5' in order to <br>
inspect the CAPS and try to see where it is failing.<br>
<br>
Alternatively try reducing the pipeline to see if you can pinpoint which <br>
part is failing and why:<br>
<br>
gst-launch-1.0 v4l2src device=/dev/video2 ! jpegparse ! fakesink -v --gst-debug=*:3,GST_CAPS:5<br>
gst-launch-1.0 v4l2src device=/dev/video2 ! jpegparse ! v4l2jpegdec ! fakesink -v --gst-debug=*:3,GST_CAPS:5<br>
gst-launch-1.0 v4l2src device=/dev/video2 ! jpegparse ! v4l2jpegdec ! videoconvert ! v4l2h264enc ! fakesink -v --gst-debug=*:3,GST_CAPS:5<br>
<br>
...<br>
<br>
Best Regards<br>
Marianna<br>
<br>
On 05.07.2022 14.03, <a href="mailto:gstreamer-devel-request@lists.freedesktop.org" target="_blank">gstreamer-devel-request@lists.freedesktop.org</a> wrote:<br>
> Hi,<br>
><br>
> I'm running gstreamer on an i.MX8QM with H264 and JPEG HW<br>
> encoding/decoding. My end goal is to process two MJPEG streams from two<br>
> different USB cameras, do some light processing in OpenCV and then encode<br>
> it in H264. My first step was to simply create a gstreamer pipeline to<br>
> transcode the frames coming from the camera into H264 and write them to a<br>
> file. Small proof-of-concept. However, I'm running into issues linking<br>
> the v4l2jpegdec v4l2h264enc elements. This is the pipeline I'm using (it's<br>
> taken from NXP's official user guide on using i.MX8 with GStreamer [1]).<br>
> Have tried a lot of variations, but the results (even with detailed<br>
> logging) have looked very similar:<br>
><br>
> gst-launch-1.0 v4l2src device=/dev/video2 ! jpegparse ! v4l2jpegdec ! queue<br>
> ! videoconvert ! v4l2h264enc ! h264parse ! matroskamux ! filesink<br>
> location=out.mkv<br>
><br>
> And this is the output I'm getting:<br>
> Setting pipeline to PAUSED ...<br>
> Pipeline is live and does not need PREROLL ...<br>
> Setting pipeline to PLAYING ...<br>
> New clock: GstSystemClock<br>
> ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Internal<br>
> data stream error.<br>
> Additional debug info:<br>
> ../git/libs/gst/base/gstbasesrc.c(3072): gst_base_src_loop ():<br>
> /GstPipeline:pipeline0/GstV4l2Src:v4l2src0:<br>
> streaming stopped, reason not-negotiated (-4)<br>
><br>
> I have a 7MB log file obtained by running GST_DEBUG_LEVEL=6, but I'm not<br>
> sure if the correct etiquette is to attach it to this email. I've also<br>
> tried using caps filtering and used gst-inspect to make sure the src of the<br>
> jpegdecoder matches the sink of the h264 encoder. Not looking for a<br>
> straight response, but a few hints on where I can look next, as I'm feeling<br>
> a bit lost.<br>
><br>
> Also, since my goal is to have the OpenCV app between the MJPEG decoder and<br>
> the H264 encoder, should I just abandon the goal of having a manual<br>
> pipeline working first and simply start testing straight with the<br>
> application?<br>
><br>
> Thirdly, is it feasible to expect the i.MX8QM to be able to decode the<br>
> streams from two MJPEG cameras (1080p@60FPS), combine them and then encode<br>
> the result using H264? Or do I need a different processor?<br>
><br>
> Thank you!<br>
><br>
> [1]<br>
> <a href="https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/i-MX-8-GStreamer-User-Guide/ta-p/1098942" rel="noreferrer" target="_blank">https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/i-MX-8-GStreamer-User-Guide/ta-p/1098942</a><br>
<br>
-- <br>
Best regards / Med venlig hilsen<br>
“Marianna Smidth Buschle”<br>
<br>
</blockquote></div>