[libcamera-devel] [PATCH 1/2] libcamera: formats: Add field for name of V4L2 format

Paul Elder paul.elder at ideasonboard.com
Tue Sep 7 09:13:10 CEST 2021


The v4l2 compatibility layer needs to report the proper human-readable
name for the V4L2 formats. To prepare for this, add a field to
PixelFormatInfo to hold the V4L2 name, and populate it with the names
from drivers/media/v4l2-core/v4l2-ioctl.c from the kernel.

Signed-off-by: Paul Elder <paul.elder at ideasonboard.com>
---
 include/libcamera/internal/formats.h |  1 +
 src/libcamera/formats.cpp            | 58 ++++++++++++++++++++++++++++
 2 files changed, 59 insertions(+)

diff --git a/include/libcamera/internal/formats.h b/include/libcamera/internal/formats.h
index 51a8a6b8..82ab9a02 100644
--- a/include/libcamera/internal/formats.h
+++ b/include/libcamera/internal/formats.h
@@ -52,6 +52,7 @@ public:
 	const char *name;
 	PixelFormat format;
 	V4L2PixelFormat v4l2Format;
+	const char *v4l2Name;
 	unsigned int bitsPerPixel;
 	enum ColourEncoding colourEncoding;
 	bool packed;
diff --git a/src/libcamera/formats.cpp b/src/libcamera/formats.cpp
index 603d8861..0fb29fb5 100644
--- a/src/libcamera/formats.cpp
+++ b/src/libcamera/formats.cpp
@@ -57,6 +57,10 @@ LOG_DEFINE_CATEGORY(Formats)
  * \var PixelFormatInfo::v4l2Format
  * \brief The V4L2 pixel format corresponding to the PixelFormat
  *
+ * \var PixelFormatInfo::v4l2Name
+ * \brief The human-readable name of the V4L2 pixel format corresponding to the
+ * PixelFormat
+ *
  * \var PixelFormatInfo::bitsPerPixel
  * \brief The average number of bits per pixel
  *
@@ -149,6 +153,7 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{
 		.name = "RGB565",
 		.format = formats::RGB565,
 		.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_RGB565),
+		.v4l2Name = "16-bit RGB 5-6-5",
 		.bitsPerPixel = 16,
 		.colourEncoding = PixelFormatInfo::ColourEncodingRGB,
 		.packed = false,
@@ -159,6 +164,7 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{
 		.name = "RGB565_BE",
 		.format = formats::RGB565_BE,
 		.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_RGB565X),
+		.v4l2Name = "16-bit RGB 5-6-5 BE",
 		.bitsPerPixel = 16,
 		.colourEncoding = PixelFormatInfo::ColourEncodingRGB,
 		.packed = false,
@@ -169,6 +175,7 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{
 		.name = "BGR888",
 		.format = formats::BGR888,
 		.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_RGB24),
+		.v4l2Name = "24-bit RGB 8-8-8",
 		.bitsPerPixel = 24,
 		.colourEncoding = PixelFormatInfo::ColourEncodingRGB,
 		.packed = false,
@@ -179,6 +186,7 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{
 		.name = "RGB888",
 		.format = formats::RGB888,
 		.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_BGR24),
+		.v4l2Name = "24-bit BGR 8-8-8",
 		.bitsPerPixel = 24,
 		.colourEncoding = PixelFormatInfo::ColourEncodingRGB,
 		.packed = false,
@@ -189,6 +197,7 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{
 		.name = "XRGB8888",
 		.format = formats::XRGB8888,
 		.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_XBGR32),
+		.v4l2Name = "32-bit BGRX 8-8-8-8",
 		.bitsPerPixel = 32,
 		.colourEncoding = PixelFormatInfo::ColourEncodingRGB,
 		.packed = false,
@@ -199,6 +208,7 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{
 		.name = "XBGR8888",
 		.format = formats::XBGR8888,
 		.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_RGBX32),
+		.v4l2Name = "32-bit RGBX 8-8-8-8",
 		.bitsPerPixel = 32,
 		.colourEncoding = PixelFormatInfo::ColourEncodingRGB,
 		.packed = false,
@@ -209,6 +219,7 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{
 		.name = "BGRX8888",
 		.format = formats::BGRX8888,
 		.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_XRGB32),
+		.v4l2Name = "32-bit XRGB 8-8-8-8",
 		.bitsPerPixel = 32,
 		.colourEncoding = PixelFormatInfo::ColourEncodingRGB,
 		.packed = false,
@@ -219,6 +230,7 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{
 		.name = "ABGR8888",
 		.format = formats::ABGR8888,
 		.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_RGBA32),
+		.v4l2Name = "32-bit RGBA 8-8-8-8",
 		.bitsPerPixel = 32,
 		.colourEncoding = PixelFormatInfo::ColourEncodingRGB,
 		.packed = false,
@@ -229,6 +241,7 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{
 		.name = "ARGB8888",
 		.format = formats::ARGB8888,
 		.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_ABGR32),
+		.v4l2Name = "32-bit BGRA 8-8-8-8",
 		.bitsPerPixel = 32,
 		.colourEncoding = PixelFormatInfo::ColourEncodingRGB,
 		.packed = false,
@@ -239,6 +252,7 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{
 		.name = "BGRA8888",
 		.format = formats::BGRA8888,
 		.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_ARGB32),
+		.v4l2Name = "32-bit ARGB 8-8-8-8",
 		.bitsPerPixel = 32,
 		.colourEncoding = PixelFormatInfo::ColourEncodingRGB,
 		.packed = false,
@@ -249,6 +263,7 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{
 		.name = "RGBA8888",
 		.format = formats::RGBA8888,
 		.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_BGRA32),
+		.v4l2Name = "32-bit ABGR 8-8-8-8",
 		.bitsPerPixel = 32,
 		.colourEncoding = PixelFormatInfo::ColourEncodingRGB,
 		.packed = false,
@@ -261,6 +276,7 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{
 		.name = "YUYV",
 		.format = formats::YUYV,
 		.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_YUYV),
+		.v4l2Name = "YUYV 4:2:2",
 		.bitsPerPixel = 16,
 		.colourEncoding = PixelFormatInfo::ColourEncodingYUV,
 		.packed = false,
@@ -271,6 +287,7 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{
 		.name = "YVYU",
 		.format = formats::YVYU,
 		.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_YVYU),
+		.v4l2Name = "YVYU 4:2:2",
 		.bitsPerPixel = 16,
 		.colourEncoding = PixelFormatInfo::ColourEncodingYUV,
 		.packed = false,
@@ -281,6 +298,7 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{
 		.name = "UYVY",
 		.format = formats::UYVY,
 		.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_UYVY),
+		.v4l2Name = "UYVY 4:2:2",
 		.bitsPerPixel = 16,
 		.colourEncoding = PixelFormatInfo::ColourEncodingYUV,
 		.packed = false,
@@ -291,6 +309,7 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{
 		.name = "VYUY",
 		.format = formats::VYUY,
 		.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_VYUY),
+		.v4l2Name = "VYUY 4:2:2",
 		.bitsPerPixel = 16,
 		.colourEncoding = PixelFormatInfo::ColourEncodingYUV,
 		.packed = false,
@@ -303,6 +322,7 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{
 		.name = "NV12",
 		.format = formats::NV12,
 		.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_NV12),
+		.v4l2Name = "Y/CbCr 4:2:0",
 		.bitsPerPixel = 12,
 		.colourEncoding = PixelFormatInfo::ColourEncodingYUV,
 		.packed = false,
@@ -313,6 +333,7 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{
 		.name = "NV21",
 		.format = formats::NV21,
 		.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_NV21),
+		.v4l2Name = "Y/CrCb 4:2:0",
 		.bitsPerPixel = 12,
 		.colourEncoding = PixelFormatInfo::ColourEncodingYUV,
 		.packed = false,
@@ -323,6 +344,7 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{
 		.name = "NV16",
 		.format = formats::NV16,
 		.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_NV16),
+		.v4l2Name = "Y/CbCr 4:2:2",
 		.bitsPerPixel = 16,
 		.colourEncoding = PixelFormatInfo::ColourEncodingYUV,
 		.packed = false,
@@ -333,6 +355,7 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{
 		.name = "NV61",
 		.format = formats::NV61,
 		.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_NV61),
+		.v4l2Name = "Y/CrCb 4:2:2",
 		.bitsPerPixel = 16,
 		.colourEncoding = PixelFormatInfo::ColourEncodingYUV,
 		.packed = false,
@@ -343,6 +366,7 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{
 		.name = "NV24",
 		.format = formats::NV24,
 		.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_NV24),
+		.v4l2Name = "Y/CbCr 4:4:4",
 		.bitsPerPixel = 24,
 		.colourEncoding = PixelFormatInfo::ColourEncodingYUV,
 		.packed = false,
@@ -353,6 +377,7 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{
 		.name = "NV42",
 		.format = formats::NV42,
 		.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_NV42),
+		.v4l2Name = "Y/CrCb 4:4:4",
 		.bitsPerPixel = 24,
 		.colourEncoding = PixelFormatInfo::ColourEncodingYUV,
 		.packed = false,
@@ -363,6 +388,7 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{
 		.name = "YUV420",
 		.format = formats::YUV420,
 		.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_YUV420),
+		.v4l2Name = "Planar YUV 4:2:0",
 		.bitsPerPixel = 12,
 		.colourEncoding = PixelFormatInfo::ColourEncodingYUV,
 		.packed = false,
@@ -373,6 +399,7 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{
 		.name = "YVU420",
 		.format = formats::YVU420,
 		.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_YVU420),
+		.v4l2Name = "Planar YVU 4:2:0",
 		.bitsPerPixel = 12,
 		.colourEncoding = PixelFormatInfo::ColourEncodingYUV,
 		.packed = false,
@@ -383,6 +410,7 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{
 		.name = "YUV422",
 		.format = formats::YUV422,
 		.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_YUV422P),
+		.v4l2Name = "Planar YUV 4:2:2",
 		.bitsPerPixel = 16,
 		.colourEncoding = PixelFormatInfo::ColourEncodingYUV,
 		.packed = false,
@@ -395,6 +423,7 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{
 		.name = "R8",
 		.format = formats::R8,
 		.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_GREY),
+		.v4l2Name = "8-bit Greyscale",
 		.bitsPerPixel = 8,
 		.colourEncoding = PixelFormatInfo::ColourEncodingYUV,
 		.packed = false,
@@ -407,6 +436,7 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{
 		.name = "SBGGR8",
 		.format = formats::SBGGR8,
 		.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_SBGGR8),
+		.v4l2Name = "8-bit Bayer BGBG/GRGR",
 		.bitsPerPixel = 8,
 		.colourEncoding = PixelFormatInfo::ColourEncodingRAW,
 		.packed = false,
@@ -417,6 +447,7 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{
 		.name = "SGBRG8",
 		.format = formats::SGBRG8,
 		.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_SGBRG8),
+		.v4l2Name = "8-bit Bayer GBGB/RGRG",
 		.bitsPerPixel = 8,
 		.colourEncoding = PixelFormatInfo::ColourEncodingRAW,
 		.packed = false,
@@ -427,6 +458,7 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{
 		.name = "SGRBG8",
 		.format = formats::SGRBG8,
 		.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_SGRBG8),
+		.v4l2Name = "8-bit Bayer GRGR/BGBG",
 		.bitsPerPixel = 8,
 		.colourEncoding = PixelFormatInfo::ColourEncodingRAW,
 		.packed = false,
@@ -437,6 +469,7 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{
 		.name = "SRGGB8",
 		.format = formats::SRGGB8,
 		.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_SRGGB8),
+		.v4l2Name = "8-bit Bayer RGRG/GBGB",
 		.bitsPerPixel = 8,
 		.colourEncoding = PixelFormatInfo::ColourEncodingRAW,
 		.packed = false,
@@ -447,6 +480,7 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{
 		.name = "SBGGR10",
 		.format = formats::SBGGR10,
 		.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_SBGGR10),
+		.v4l2Name = "10-bit Bayer BGBG/GRGR",
 		.bitsPerPixel = 10,
 		.colourEncoding = PixelFormatInfo::ColourEncodingRAW,
 		.packed = false,
@@ -457,6 +491,7 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{
 		.name = "SGBRG10",
 		.format = formats::SGBRG10,
 		.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_SGBRG10),
+		.v4l2Name = "10-bit Bayer GBGB/RGRG",
 		.bitsPerPixel = 10,
 		.colourEncoding = PixelFormatInfo::ColourEncodingRAW,
 		.packed = false,
@@ -467,6 +502,7 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{
 		.name = "SGRBG10",
 		.format = formats::SGRBG10,
 		.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_SGRBG10),
+		.v4l2Name = "10-bit Bayer GRGR/BGBG",
 		.bitsPerPixel = 10,
 		.colourEncoding = PixelFormatInfo::ColourEncodingRAW,
 		.packed = false,
@@ -477,6 +513,7 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{
 		.name = "SRGGB10",
 		.format = formats::SRGGB10,
 		.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_SRGGB10),
+		.v4l2Name = "10-bit Bayer RGRG/GBGB",
 		.bitsPerPixel = 10,
 		.colourEncoding = PixelFormatInfo::ColourEncodingRAW,
 		.packed = false,
@@ -487,6 +524,7 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{
 		.name = "SBGGR10_CSI2P",
 		.format = formats::SBGGR10_CSI2P,
 		.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_SBGGR10P),
+		.v4l2Name = "10-bit Bayer BGBG/GRGR Packed",
 		.bitsPerPixel = 10,
 		.colourEncoding = PixelFormatInfo::ColourEncodingRAW,
 		.packed = true,
@@ -497,6 +535,7 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{
 		.name = "SGBRG10_CSI2P",
 		.format = formats::SGBRG10_CSI2P,
 		.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_SGBRG10P),
+		.v4l2Name = "10-bit Bayer GBGB/RGRG Packed",
 		.bitsPerPixel = 10,
 		.colourEncoding = PixelFormatInfo::ColourEncodingRAW,
 		.packed = true,
@@ -507,6 +546,7 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{
 		.name = "SGRBG10_CSI2P",
 		.format = formats::SGRBG10_CSI2P,
 		.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_SGRBG10P),
+		.v4l2Name = "10-bit Bayer GRGR/BGBG Packed",
 		.bitsPerPixel = 10,
 		.colourEncoding = PixelFormatInfo::ColourEncodingRAW,
 		.packed = true,
@@ -517,6 +557,7 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{
 		.name = "SRGGB10_CSI2P",
 		.format = formats::SRGGB10_CSI2P,
 		.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_SRGGB10P),
+		.v4l2Name = "10-bit Bayer RGRG/GBGB Packed",
 		.bitsPerPixel = 10,
 		.colourEncoding = PixelFormatInfo::ColourEncodingRAW,
 		.packed = true,
@@ -527,6 +568,7 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{
 		.name = "SBGGR12",
 		.format = formats::SBGGR12,
 		.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_SBGGR12),
+		.v4l2Name = "12-bit Bayer BGBG/GRGR",
 		.bitsPerPixel = 12,
 		.colourEncoding = PixelFormatInfo::ColourEncodingRAW,
 		.packed = false,
@@ -537,6 +579,7 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{
 		.name = "SGBRG12",
 		.format = formats::SGBRG12,
 		.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_SGBRG12),
+		.v4l2Name = "12-bit Bayer GBGB/RGRG",
 		.bitsPerPixel = 12,
 		.colourEncoding = PixelFormatInfo::ColourEncodingRAW,
 		.packed = false,
@@ -547,6 +590,7 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{
 		.name = "SGRBG12",
 		.format = formats::SGRBG12,
 		.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_SGRBG12),
+		.v4l2Name = "12-bit Bayer GRGR/BGBG",
 		.bitsPerPixel = 12,
 		.colourEncoding = PixelFormatInfo::ColourEncodingRAW,
 		.packed = false,
@@ -557,6 +601,7 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{
 		.name = "SRGGB12",
 		.format = formats::SRGGB12,
 		.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_SRGGB12),
+		.v4l2Name = "12-bit Bayer RGRG/GBGB",
 		.bitsPerPixel = 12,
 		.colourEncoding = PixelFormatInfo::ColourEncodingRAW,
 		.packed = false,
@@ -567,6 +612,7 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{
 		.name = "SBGGR12_CSI2P",
 		.format = formats::SBGGR12_CSI2P,
 		.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_SBGGR12P),
+		.v4l2Name = "12-bit Bayer BGBG/GRGR Packed",
 		.bitsPerPixel = 12,
 		.colourEncoding = PixelFormatInfo::ColourEncodingRAW,
 		.packed = true,
@@ -577,6 +623,7 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{
 		.name = "SGBRG12_CSI2P",
 		.format = formats::SGBRG12_CSI2P,
 		.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_SGBRG12P),
+		.v4l2Name = "12-bit Bayer GBGB/RGRG Packed",
 		.bitsPerPixel = 12,
 		.colourEncoding = PixelFormatInfo::ColourEncodingRAW,
 		.packed = true,
@@ -587,6 +634,7 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{
 		.name = "SGRBG12_CSI2P",
 		.format = formats::SGRBG12_CSI2P,
 		.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_SGRBG12P),
+		.v4l2Name = "12-bit Bayer GRGR/BGBG Packed",
 		.bitsPerPixel = 12,
 		.colourEncoding = PixelFormatInfo::ColourEncodingRAW,
 		.packed = true,
@@ -597,6 +645,7 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{
 		.name = "SRGGB12_CSI2P",
 		.format = formats::SRGGB12_CSI2P,
 		.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_SRGGB12P),
+		.v4l2Name = "12-bit Bayer RGRG/GBGB Packed",
 		.bitsPerPixel = 12,
 		.colourEncoding = PixelFormatInfo::ColourEncodingRAW,
 		.packed = true,
@@ -607,6 +656,7 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{
 		.name = "SBGGR16",
 		.format = formats::SBGGR16,
 		.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_SBGGR16),
+		.v4l2Name = "16-bit Bayer BGBG/GRGR",
 		.bitsPerPixel = 16,
 		.colourEncoding = PixelFormatInfo::ColourEncodingRAW,
 		.packed = false,
@@ -617,6 +667,7 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{
 		.name = "SGBRG16",
 		.format = formats::SGBRG16,
 		.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_SGBRG16),
+		.v4l2Name = "16-bit Bayer GBGB/RGRG",
 		.bitsPerPixel = 16,
 		.colourEncoding = PixelFormatInfo::ColourEncodingRAW,
 		.packed = false,
@@ -627,6 +678,7 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{
 		.name = "SGRBG16",
 		.format = formats::SGRBG16,
 		.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_SGRBG16),
+		.v4l2Name = "16-bit Bayer GRGR/BGBG",
 		.bitsPerPixel = 16,
 		.colourEncoding = PixelFormatInfo::ColourEncodingRAW,
 		.packed = false,
@@ -637,6 +689,7 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{
 		.name = "SRGGB16",
 		.format = formats::SRGGB16,
 		.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_SRGGB16),
+		.v4l2Name = "16-bit Bayer RGRG/GBGB",
 		.bitsPerPixel = 16,
 		.colourEncoding = PixelFormatInfo::ColourEncodingRAW,
 		.packed = false,
@@ -647,6 +700,7 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{
 		.name = "SBGGR10_IPU3",
 		.format = formats::SBGGR10_IPU3,
 		.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_IPU3_SBGGR10),
+		.v4l2Name = "10-bit bayer BGGR IPU3 Packed",
 		.bitsPerPixel = 10,
 		.colourEncoding = PixelFormatInfo::ColourEncodingRAW,
 		.packed = true,
@@ -658,6 +712,7 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{
 		.name = "SGBRG10_IPU3",
 		.format = formats::SGBRG10_IPU3,
 		.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_IPU3_SGBRG10),
+		.v4l2Name = "10-bit bayer GBRG IPU3 Packed",
 		.bitsPerPixel = 10,
 		.colourEncoding = PixelFormatInfo::ColourEncodingRAW,
 		.packed = true,
@@ -668,6 +723,7 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{
 		.name = "SGRBG10_IPU3",
 		.format = formats::SGRBG10_IPU3,
 		.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_IPU3_SGRBG10),
+		.v4l2Name = "10-bit bayer GRBG IPU3 Packed",
 		.bitsPerPixel = 10,
 		.colourEncoding = PixelFormatInfo::ColourEncodingRAW,
 		.packed = true,
@@ -678,6 +734,7 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{
 		.name = "SRGGB10_IPU3",
 		.format = formats::SRGGB10_IPU3,
 		.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_IPU3_SRGGB10),
+		.v4l2Name = "10-bit bayer RGGB IPU3 Packed",
 		.bitsPerPixel = 10,
 		.colourEncoding = PixelFormatInfo::ColourEncodingRAW,
 		.packed = true,
@@ -690,6 +747,7 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{
 		.name = "MJPEG",
 		.format = formats::MJPEG,
 		.v4l2Format = V4L2PixelFormat(V4L2_PIX_FMT_MJPEG),
+		.v4l2Name = "Motion-JPEG",
 		.bitsPerPixel = 0,
 		.colourEncoding = PixelFormatInfo::ColourEncodingYUV,
 		.packed = false,
-- 
2.27.0



More information about the libcamera-devel mailing list