So..... There I wanted to use GStreamer to make my life a little bit easier when it came to getting the bayer data from an IMX219 sensor
The first thing I did was use to determine what resolutions were supported by the IMX219 and I got the following
So the next step I did was to double check if libcamerasrc supports the bayer format, which it did after I verified the matter with the following output
And I tripled check if the videoconvert element supported RGGB as stated by the libcamera-hello --list command and I noticed that the Pad templates only listed the capabilities for video/x-raw and NOT video/x-bayer
The only place I saw anything mentioned about bayer was in the Element Properties
So the big question I wanted to ask is
Does GStreamer and the libcamerasrc support acquiring the 10-bit RGGB/Bayer data from the IMX219 camera sensor?
Because I've had NO luck with the following pipeline
And have gotten the following error
The first thing I did was use
Code:
libcamera-hello --list
Code:
Available cameras-----------------0 : imx219 [3280x2464 10-bit RGGB] (/base/axi/pcie@120000/rp1/i2c@88000/imx219@10) Modes: 'SRGGB10_CSI2P' : 640x480 [206.65 fps - (1000, 752)/1280x960 crop] 1640x1232 [41.85 fps - (0, 0)/3280x2464 crop] 1920x1080 [47.57 fps - (680, 692)/1920x1080 crop] 3280x2464 [21.19 fps - (0, 0)/3280x2464 crop] 'SRGGB8' : 640x480 [206.65 fps - (1000, 752)/1280x960 crop] 1640x1232 [83.70 fps - (0, 0)/3280x2464 crop] 1920x1080 [47.57 fps - (680, 692)/1920x1080 crop] 3280x2464 [21.19 fps - (0, 0)/3280x2464 crop]1 : imx219 [3280x2464 10-bit RGGB] (/base/axi/pcie@120000/rp1/i2c@80000/imx219@10) Modes: 'SRGGB10_CSI2P' : 640x480 [206.65 fps - (1000, 752)/1280x960 crop] 1640x1232 [41.85 fps - (0, 0)/3280x2464 crop] 1920x1080 [47.57 fps - (680, 692)/1920x1080 crop] 3280x2464 [21.19 fps - (0, 0)/3280x2464 crop] 'SRGGB8' : 640x480 [206.65 fps - (1000, 752)/1280x960 crop] 1640x1232 [83.70 fps - (0, 0)/3280x2464 crop] 1920x1080 [47.57 fps - (680, 692)/1920x1080 crop] 3280x2464 [21.19 fps - (0, 0)/3280x2464 crop]
Code:
Factory Details: Rank primary (256) Long-name libcamera Source Klass Source/Video Description Linux Camera source using libcamera Author Nicolas Dufresne <nicolas.dufresne@collabora.com>Plugin Details: Name libcamera Description libcamera capture plugin Filename /lib/aarch64-linux-gnu/gstreamer-1.0/libgstlibcamera.so Version 0.3.2+99-1230f78d License LGPL Source module libcamera Binary package libcamera Origin URL https://libcamera.orgGObject +----GInitiallyUnowned +----GstObject +----GstElement +----GstLibcameraSrcImplemented Interfaces: GstChildProxyPad Templates: SRC template: 'src' Availability: Always Capabilities: video/x-raw image/jpeg video/x-bayer Type: GstLibcameraPad Pad Properties: stream-role : The selected stream role flags: readable, writable, changeable only in NULL or READY state Enum "GstLibcameraStreamRole" Default: 2, "video-recording" (1): still-capture - libcamera::StillCapture (2): video-recording - libcamera::VideoRecording (3): view-finder - libcamera::Viewfinder
Code:
Pad Templates: SINK template: 'sink' Availability: Always Capabilities: video/x-raw format: { (string)ABGR64_LE, (string)BGRA64_LE, (string)AYUV64, (string)ARGB64_LE, (string)ARGB64, (string)RGBA64_LE, (string)ABGR64_BE, (string)BGRA64_BE, (string)ARGB64_BE, (string)RGBA64_BE, (string)GBRA_12LE, (string)GBRA_12BE, (string)Y412_LE, (string)Y412_BE, (string)A444_10LE, (string)GBRA_10LE, (string)A444_10BE, (string)GBRA_10BE, (string)A422_10LE, (string)A422_10BE, (string)A420_10LE, (string)A420_10BE, (string)RGB10A2_LE, (string)BGR10A2_LE, (string)Y410, (string)GBRA, (string)ABGR, (string)VUYA, (string)BGRA, (string)AYUV, (string)ARGB, (string)RGBA, (string)A420, (string)AV12, (string)Y444_16LE, (string)Y444_16BE, (string)v216, (string)P016_LE, (string)P016_BE, (string)Y444_12LE, (string)GBR_12LE, (string)Y444_12BE, (string)GBR_12BE, (string)I422_12LE, (string)I422_12BE, (string)Y212_LE, (string)Y212_BE, (string)I420_12LE, (string)I420_12BE, (string)P012_LE, (string)P012_BE, (string)Y444_10LE, (string)GBR_10LE, (string)Y444_10BE, (string)GBR_10BE, (string)r210, (string)I422_10LE, (string)I422_10BE, (string)NV16_10LE32, (string)Y210, (string)v210, (string)UYVP, (string)I420_10LE, (string)I420_10BE, (string)P010_10LE, (string)NV12_10LE32, (string)NV12_10LE40, (string)P010_10BE, (string)NV12_10BE_8L128, (string)Y444, (string)RGBP, (string)GBR, (string)BGRP, (string)NV24, (string)xBGR, (string)BGRx, (string)xRGB, (string)RGBx, (string)BGR, (string)IYU2, (string)v308, (string)RGB, (string)Y42B, (string)NV61, (string)NV16, (string)VYUY, (string)UYVY, (string)YVYU, (string)YUY2, (string)I420, (string)YV12, (string)NV21, (string)NV12, (string)NV12_8L128, (string)NV12_64Z32, (string)NV12_4L4, (string)NV12_32L32, (string)NV12_16L32S, (string)Y41B, (string)IYU1, (string)YVU9, (string)YUV9, (string)RGB16, (string)BGR16, (string)RGB15, (string)BGR15, (string)RGB8P, (string)GRAY16_LE, (string)GRAY16_BE, (string)GRAY10_LE32, (string)GRAY8 } width: [ 1, 32767 ] height: [ 1, 32767 ] framerate: [ 0/1, 2147483647/1 ] video/x-raw(ANY) format: { (string)ABGR64_LE, (string)BGRA64_LE, (string)AYUV64, (string)ARGB64_LE, (string)ARGB64, (string)RGBA64_LE, (string)ABGR64_BE, (string)BGRA64_BE, (string)ARGB64_BE, (string)RGBA64_BE, (string)GBRA_12LE, (string)GBRA_12BE, (string)Y412_LE, (string)Y412_BE, (string)A444_10LE, (string)GBRA_10LE, (string)A444_10BE, (string)GBRA_10BE, (string)A422_10LE, (string)A422_10BE, (string)A420_10LE, (string)A420_10BE, (string)RGB10A2_LE, (string)BGR10A2_LE, (string)Y410, (string)GBRA, (string)ABGR, (string)VUYA, (string)BGRA, (string)AYUV, (string)ARGB, (string)RGBA, (string)A420, (string)AV12, (string)Y444_16LE, (string)Y444_16BE, (string)v216, (string)P016_LE, (string)P016_BE, (string)Y444_12LE, (string)GBR_12LE, (string)Y444_12BE, (string)GBR_12BE, (string)I422_12LE, (string)I422_12BE, (string)Y212_LE, (string)Y212_BE, (string)I420_12LE, (string)I420_12BE, (string)P012_LE, (string)P012_BE, (string)Y444_10LE, (string)GBR_10LE, (string)Y444_10BE, (string)GBR_10BE, (string)r210, (string)I422_10LE, (string)I422_10BE, (string)NV16_10LE32, (string)Y210, (string)v210, (string)UYVP, (string)I420_10LE, (string)I420_10BE, (string)P010_10LE, (string)NV12_10LE32, (string)NV12_10LE40, (string)P010_10BE, (string)NV12_10BE_8L128, (string)Y444, (string)RGBP, (string)GBR, (string)BGRP, (string)NV24, (string)xBGR, (string)BGRx, (string)xRGB, (string)RGBx, (string)BGR, (string)IYU2, (string)v308, (string)RGB, (string)Y42B, (string)NV61, (string)NV16, (string)VYUY, (string)UYVY, (string)YVYU, (string)YUY2, (string)I420, (string)YV12, (string)NV21, (string)NV12, (string)NV12_8L128, (string)NV12_64Z32, (string)NV12_4L4, (string)NV12_32L32, (string)NV12_16L32S, (string)Y41B, (string)IYU1, (string)YVU9, (string)YUV9, (string)RGB16, (string)BGR16, (string)RGB15, (string)BGR15, (string)RGB8P, (string)GRAY16_LE, (string)GRAY16_BE, (string)GRAY10_LE32, (string)GRAY8 } width: [ 1, 32767 ] height: [ 1, 32767 ] framerate: [ 0/1, 2147483647/1 ] SRC template: 'src' Availability: Always Capabilities: video/x-raw format: { (string)ABGR64_LE, (string)BGRA64_LE, (string)AYUV64, (string)ARGB64_LE, (string)ARGB64, (string)RGBA64_LE, (string)ABGR64_BE, (string)BGRA64_BE, (string)ARGB64_BE, (string)RGBA64_BE, (string)GBRA_12LE, (string)GBRA_12BE, (string)Y412_LE, (string)Y412_BE, (string)A444_10LE, (string)GBRA_10LE, (string)A444_10BE, (string)GBRA_10BE, (string)A422_10LE, (string)A422_10BE, (string)A420_10LE, (string)A420_10BE, (string)RGB10A2_LE, (string)BGR10A2_LE, (string)Y410, (string)GBRA, (string)ABGR, (string)VUYA, (string)BGRA, (string)AYUV, (string)ARGB, (string)RGBA, (string)A420, (string)AV12, (string)Y444_16LE, (string)Y444_16BE, (string)v216, (string)P016_LE, (string)P016_BE, (string)Y444_12LE, (string)GBR_12LE, (string)Y444_12BE, (string)GBR_12BE, (string)I422_12LE, (string)I422_12BE, (string)Y212_LE, (string)Y212_BE, (string)I420_12LE, (string)I420_12BE, (string)P012_LE, (string)P012_BE, (string)Y444_10LE, (string)GBR_10LE, (string)Y444_10BE, (string)GBR_10BE, (string)r210, (string)I422_10LE, (string)I422_10BE, (string)NV16_10LE32, (string)Y210, (string)v210, (string)UYVP, (string)I420_10LE, (string)I420_10BE, (string)P010_10LE, (string)NV12_10LE32, (string)NV12_10LE40, (string)P010_10BE, (string)NV12_10BE_8L128, (string)Y444, (string)RGBP, (string)GBR, (string)BGRP, (string)NV24, (string)xBGR, (string)BGRx, (string)xRGB, (string)RGBx, (string)BGR, (string)IYU2, (string)v308, (string)RGB, (string)Y42B, (string)NV61, (string)NV16, (string)VYUY, (string)UYVY, (string)YVYU, (string)YUY2, (string)I420, (string)YV12, (string)NV21, (string)NV12, (string)NV12_8L128, (string)NV12_64Z32, (string)NV12_4L4, (string)NV12_32L32, (string)NV12_16L32S, (string)Y41B, (string)IYU1, (string)YVU9, (string)YUV9, (string)RGB16, (string)BGR16, (string)RGB15, (string)BGR15, (string)RGB8P, (string)GRAY16_LE, (string)GRAY16_BE, (string)GRAY10_LE32, (string)GRAY8 } width: [ 1, 32767 ] height: [ 1, 32767 ] framerate: [ 0/1, 2147483647/1 ] video/x-raw(ANY) format: { (string)ABGR64_LE, (string)BGRA64_LE, (string)AYUV64, (string)ARGB64_LE, (string)ARGB64, (string)RGBA64_LE, (string)ABGR64_BE, (string)BGRA64_BE, (string)ARGB64_BE, (string)RGBA64_BE, (string)GBRA_12LE, (string)GBRA_12BE, (string)Y412_LE, (string)Y412_BE, (string)A444_10LE, (string)GBRA_10LE, (string)A444_10BE, (string)GBRA_10BE, (string)A422_10LE, (string)A422_10BE, (string)A420_10LE, (string)A420_10BE, (string)RGB10A2_LE, (string)BGR10A2_LE, (string)Y410, (string)GBRA, (string)ABGR, (string)VUYA, (string)BGRA, (string)AYUV, (string)ARGB, (string)RGBA, (string)A420, (string)AV12, (string)Y444_16LE, (string)Y444_16BE, (string)v216, (string)P016_LE, (string)P016_BE, (string)Y444_12LE, (string)GBR_12LE, (string)Y444_12BE, (string)GBR_12BE, (string)I422_12LE, (string)I422_12BE, (string)Y212_LE, (string)Y212_BE, (string)I420_12LE, (string)I420_12BE, (string)P012_LE, (string)P012_BE, (string)Y444_10LE, (string)GBR_10LE, (string)Y444_10BE, (string)GBR_10BE, (string)r210, (string)I422_10LE, (string)I422_10BE, (string)NV16_10LE32, (string)Y210, (string)v210, (string)UYVP, (string)I420_10LE, (string)I420_10BE, (string)P010_10LE, (string)NV12_10LE32, (string)NV12_10LE40, (string)P010_10BE, (string)NV12_10BE_8L128, (string)Y444, (string)RGBP, (string)GBR, (string)BGRP, (string)NV24, (string)xBGR, (string)BGRx, (string)xRGB, (string)RGBx, (string)BGR, (string)IYU2, (string)v308, (string)RGB, (string)Y42B, (string)NV61, (string)NV16, (string)VYUY, (string)UYVY, (string)YVYU, (string)YUY2, (string)I420, (string)YV12, (string)NV21, (string)NV12, (string)NV12_8L128, (string)NV12_64Z32, (string)NV12_4L4, (string)NV12_32L32, (string)NV12_16L32S, (string)Y41B, (string)IYU1, (string)YVU9, (string)YUV9, (string)RGB16, (string)BGR16, (string)RGB15, (string)BGR15, (string)RGB8P, (string)GRAY16_LE, (string)GRAY16_BE, (string)GRAY10_LE32, (string)GRAY8 } width: [ 1, 32767 ] height: [ 1, 32767 ] framerate: [ 0/1, 2147483647/1 ]
Code:
Element Properties: add-borders : Add black borders if necessary to keep the display aspect ratio flags: readable, writable Boolean. Default: true alpha-mode : Alpha Mode to use flags: readable, writable Enum "GstVideoAlphaMode" Default: 0, "copy" (0): copy - GST_VIDEO_ALPHA_MODE_COPY (1): set - GST_VIDEO_ALPHA_MODE_SET (2): mult - GST_VIDEO_ALPHA_MODE_MULT alpha-value : Alpha Value to use flags: readable, writable Double. Range: 0 - 1 Default: 1 chroma-mode : Chroma Resampling Mode flags: readable, writable Enum "GstVideoChromaMode" Default: 0, "full" (0): full - GST_VIDEO_CHROMA_MODE_FULL (1): upsample-only - GST_VIDEO_CHROMA_MODE_UPSAMPLE_ONLY (2): downsample-only - GST_VIDEO_CHROMA_MODE_DOWNSAMPLE_ONLY (3): none - GST_VIDEO_CHROMA_MODE_NONE chroma-resampler : Chroma resampler method flags: readable, writable Enum "GstVideoResamplerMethod" Default: 1, "linear" (0): nearest - GST_VIDEO_RESAMPLER_METHOD_NEAREST (1): linear - GST_VIDEO_RESAMPLER_METHOD_LINEAR (2): cubic - GST_VIDEO_RESAMPLER_METHOD_CUBIC (3): sinc - GST_VIDEO_RESAMPLER_METHOD_SINC (4): lanczos - GST_VIDEO_RESAMPLER_METHOD_LANCZOS dither : Apply dithering while converting flags: readable, writable Enum "GstVideoDitherMethod" Default: 4, "bayer": flags: readable, writable Enum "GstVideoAlphaMode" Default: 0, "copy" (0): copy - GST_VIDEO_ALPHA_MODE_COPY (1): set - GST_VIDEO_ALPHA_MODE_SET (2): mult - GST_VIDEO_ALPHA_MODE_MULT alpha-value : Alpha Value to use flags: readable, writable Double. Range: 0 - 1 Default: 1 chroma-mode : Chroma Resampling Mode flags: readable, writable Enum "GstVideoChromaMode" Default: 0, "full" (0): full - GST_VIDEO_CHROMA_MODE_FULL (1): upsample-only - GST_VIDEO_CHROMA_MODE_UPSAMPLE_ONLY (2): downsample-only - GST_VIDEO_CHROMA_MODE_DOWNSAMPLE_ONLY (3): none - GST_VIDEO_CHROMA_MODE_NONE chroma-resampler : Chroma resampler method flags: readable, writable Enum "GstVideoResamplerMethod" Default: 1, "linear" (0): nearest - GST_VIDEO_RESAMPLER_METHOD_NEAREST (1): linear - GST_VIDEO_RESAMPLER_METHOD_LINEAR (2): cubic - GST_VIDEO_RESAMPLER_METHOD_CUBIC (3): sinc - GST_VIDEO_RESAMPLER_METHOD_SINC (4): lanczos - GST_VIDEO_RESAMPLER_METHOD_LANCZOS dither : Apply dithering while converting flags: readable, writable Enum "GstVideoDitherMethod" Default: 4, "bayer" (0): none - GST_VIDEO_DITHER_NONE (1): verterr - GST_VIDEO_DITHER_VERTERR (2): floyd-steinberg - GST_VIDEO_DITHER_FLOYD_STEINBERG (3): sierra-lite - GST_VIDEO_DITHER_SIERRA_LITE (4): bayer - GST_VIDEO_DITHER_BAYER
Does GStreamer and the libcamerasrc support acquiring the 10-bit RGGB/Bayer data from the IMX219 camera sensor?
Because I've had NO luck with the following pipeline
Code:
GST_DEBUG=3 gst-launch-1.0 libcamerasrc ! video/x-bayer, format=rggb, width=640, height=480 ! bayer2rgb ! videoconvert ! autovideosink
Code:
** (gst-launch-1.0:23040): CRITICAL **: 19:47:33.477: Unsupported media type: video/x-bayer[10:45:24.343656834] [23050] INFO Camera camera.cpp:1197 configuring streams: (0) 640x480-YUV420[10:45:24.343789667] [23045] INFO RPI pisp.cpp:1450 Sensor: /base/axi/pcie@120000/rp1/i2c@88000/imx219@10 - Selected sensor format: 640x480-SBGGR10_1X10 - Selected CFE format: 640x480-PC1B0:00:00.983647323 23040 0x5555b976f1e0 WARN GST_CAPS gstpad.c:5787:pre_eventfunc_check:<capsfilter0:sink> caps video/x-raw, format=(string)I420, width=(int)640, height=(int)480, colorimetry=(string)bt709, framerate=(fraction)30/1 not accepted0:00:00.984558750 23040 0x5555b976f1e0 WARN GST_CAPS gstpad.c:5787:pre_eventfunc_check:<capsfilter0:sink> caps video/x-raw, format=(string)I420, width=(int)640, height=(int)480, colorimetry=(string)bt709, framerate=(fraction)30/1 not accepted0:00:01.264398927 23040 0x5555b976f1e0 WARN GST_CAPS gstpad.c:5787:pre_eventfunc_check:<capsfilter0:sink> caps video/x-raw, format=(string)I420, width=(int)640, height=(int)480, colorimetry=(string)bt709, framerate=(fraction)30/1 not accepted
Statistics: Posted by Digital1O1 — Sat Jan 11, 2025 1:52 am