diff options
author | Jacopo Mondi <jacopo@jmondi.org> | 2022-07-15 10:02:27 +0200 |
---|---|---|
committer | Jacopo Mondi <jacopo@jmondi.org> | 2022-07-23 10:53:58 +0200 |
commit | b979c7c99ff029202724f4bdd235e29bd724ec23 (patch) | |
tree | 69a8cf5f372eb26686dc881ec456bfac6510e55b | |
parent | 5bb87f0f3a3876b8cc9331e881155467a7474a2a (diff) |
libcamera: formats: Support multiple V4L2 pixel formats
Associate a list of V4L2PixelFormat entries to a libcamera Format in
the PixelFormatInfo. This change prepares for supporting through a
single libcamera Format devices which use different but equivalent
versions of the same format, like V4L2_PIX_FMT_MJPEG and
V4L2_PIX_FMT_JPEG.
Change the existing users to always use the first entry to not break
the build.
Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
-rw-r--r-- | include/libcamera/internal/formats.h | 4 | ||||
-rw-r--r-- | src/libcamera/formats.cpp | 248 | ||||
-rw-r--r-- | src/libcamera/v4l2_pixelformat.cpp | 2 |
3 files changed, 127 insertions, 127 deletions
diff --git a/include/libcamera/internal/formats.h b/include/libcamera/internal/formats.h index ee599765..90c8b2cd 100644 --- a/include/libcamera/internal/formats.h +++ b/include/libcamera/internal/formats.h @@ -54,8 +54,8 @@ public: const char *name; PixelFormat format; struct { - V4L2PixelFormat single; - V4L2PixelFormat multi; + std::vector<V4L2PixelFormat> single; + std::vector<V4L2PixelFormat> multi; } v4l2Formats; unsigned int bitsPerPixel; enum ColourEncoding colourEncoding; diff --git a/src/libcamera/formats.cpp b/src/libcamera/formats.cpp index 283ecb3d..f7e9adc7 100644 --- a/src/libcamera/formats.cpp +++ b/src/libcamera/formats.cpp @@ -157,8 +157,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "RGB565", .format = formats::RGB565, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_RGB565), - .multi = V4L2PixelFormat(), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_RGB565) }, + .multi = { V4L2PixelFormat() }, }, .bitsPerPixel = 16, .colourEncoding = PixelFormatInfo::ColourEncodingRGB, @@ -170,8 +170,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "RGB565_BE", .format = formats::RGB565_BE, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_RGB565X), - .multi = V4L2PixelFormat(), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_RGB565X) }, + .multi = { V4L2PixelFormat() }, }, .bitsPerPixel = 16, .colourEncoding = PixelFormatInfo::ColourEncodingRGB, @@ -183,8 +183,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "BGR888", .format = formats::BGR888, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_RGB24), - .multi = V4L2PixelFormat(), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_RGB24) }, + .multi = { V4L2PixelFormat() }, }, .bitsPerPixel = 24, .colourEncoding = PixelFormatInfo::ColourEncodingRGB, @@ -196,8 +196,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "RGB888", .format = formats::RGB888, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_BGR24), - .multi = V4L2PixelFormat(), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_BGR24) }, + .multi = { V4L2PixelFormat() }, }, .bitsPerPixel = 24, .colourEncoding = PixelFormatInfo::ColourEncodingRGB, @@ -209,8 +209,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "XRGB8888", .format = formats::XRGB8888, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_XBGR32), - .multi = V4L2PixelFormat(), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_XBGR32) }, + .multi = { V4L2PixelFormat() }, }, .bitsPerPixel = 32, .colourEncoding = PixelFormatInfo::ColourEncodingRGB, @@ -222,8 +222,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "XBGR8888", .format = formats::XBGR8888, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_RGBX32), - .multi = V4L2PixelFormat(), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_RGBX32) }, + .multi = { V4L2PixelFormat() }, }, .bitsPerPixel = 32, .colourEncoding = PixelFormatInfo::ColourEncodingRGB, @@ -235,8 +235,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "RGBX8888", .format = formats::RGBX8888, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_BGRX32), - .multi = V4L2PixelFormat(), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_BGRX32) }, + .multi = { V4L2PixelFormat() }, }, .bitsPerPixel = 32, .colourEncoding = PixelFormatInfo::ColourEncodingRGB, @@ -248,8 +248,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "BGRX8888", .format = formats::BGRX8888, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_XRGB32), - .multi = V4L2PixelFormat(), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_XRGB32) }, + .multi = { V4L2PixelFormat() }, }, .bitsPerPixel = 32, .colourEncoding = PixelFormatInfo::ColourEncodingRGB, @@ -261,8 +261,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "ABGR8888", .format = formats::ABGR8888, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_RGBA32), - .multi = V4L2PixelFormat(), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_RGBA32) }, + .multi = { V4L2PixelFormat() }, }, .bitsPerPixel = 32, .colourEncoding = PixelFormatInfo::ColourEncodingRGB, @@ -274,8 +274,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "ARGB8888", .format = formats::ARGB8888, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_ABGR32), - .multi = V4L2PixelFormat(), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_ABGR32) }, + .multi = { V4L2PixelFormat() }, }, .bitsPerPixel = 32, .colourEncoding = PixelFormatInfo::ColourEncodingRGB, @@ -287,8 +287,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "BGRA8888", .format = formats::BGRA8888, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_ARGB32), - .multi = V4L2PixelFormat(), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_ARGB32) }, + .multi = { V4L2PixelFormat() }, }, .bitsPerPixel = 32, .colourEncoding = PixelFormatInfo::ColourEncodingRGB, @@ -300,8 +300,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "RGBA8888", .format = formats::RGBA8888, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_BGRA32), - .multi = V4L2PixelFormat(), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_BGRA32) }, + .multi = { V4L2PixelFormat() }, }, .bitsPerPixel = 32, .colourEncoding = PixelFormatInfo::ColourEncodingRGB, @@ -315,8 +315,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "YUYV", .format = formats::YUYV, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_YUYV), - .multi = V4L2PixelFormat(), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_YUYV) }, + .multi = { V4L2PixelFormat() }, }, .bitsPerPixel = 16, .colourEncoding = PixelFormatInfo::ColourEncodingYUV, @@ -328,8 +328,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "YVYU", .format = formats::YVYU, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_YVYU), - .multi = V4L2PixelFormat(), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_YVYU) }, + .multi = { V4L2PixelFormat() }, }, .bitsPerPixel = 16, .colourEncoding = PixelFormatInfo::ColourEncodingYUV, @@ -341,8 +341,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "UYVY", .format = formats::UYVY, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_UYVY), - .multi = V4L2PixelFormat(), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_UYVY) }, + .multi = { V4L2PixelFormat() }, }, .bitsPerPixel = 16, .colourEncoding = PixelFormatInfo::ColourEncodingYUV, @@ -354,8 +354,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "VYUY", .format = formats::VYUY, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_VYUY), - .multi = V4L2PixelFormat(), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_VYUY) }, + .multi = { V4L2PixelFormat() }, }, .bitsPerPixel = 16, .colourEncoding = PixelFormatInfo::ColourEncodingYUV, @@ -369,8 +369,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "NV12", .format = formats::NV12, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_NV12), - .multi = V4L2PixelFormat(V4L2_PIX_FMT_NV12M), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_NV12) }, + .multi = { V4L2PixelFormat(V4L2_PIX_FMT_NV12M) }, }, .bitsPerPixel = 12, .colourEncoding = PixelFormatInfo::ColourEncodingYUV, @@ -382,8 +382,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "NV21", .format = formats::NV21, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_NV21), - .multi = V4L2PixelFormat(V4L2_PIX_FMT_NV21M), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_NV21) }, + .multi = { V4L2PixelFormat(V4L2_PIX_FMT_NV21M) }, }, .bitsPerPixel = 12, .colourEncoding = PixelFormatInfo::ColourEncodingYUV, @@ -395,8 +395,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "NV16", .format = formats::NV16, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_NV16), - .multi = V4L2PixelFormat(V4L2_PIX_FMT_NV16M), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_NV16) }, + .multi = { V4L2PixelFormat(V4L2_PIX_FMT_NV16M) }, }, .bitsPerPixel = 16, .colourEncoding = PixelFormatInfo::ColourEncodingYUV, @@ -408,8 +408,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "NV61", .format = formats::NV61, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_NV61), - .multi = V4L2PixelFormat(V4L2_PIX_FMT_NV61M), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_NV61) }, + .multi = { V4L2PixelFormat(V4L2_PIX_FMT_NV61M) }, }, .bitsPerPixel = 16, .colourEncoding = PixelFormatInfo::ColourEncodingYUV, @@ -421,8 +421,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "NV24", .format = formats::NV24, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_NV24), - .multi = V4L2PixelFormat(), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_NV24) }, + .multi = { V4L2PixelFormat() }, }, .bitsPerPixel = 24, .colourEncoding = PixelFormatInfo::ColourEncodingYUV, @@ -434,8 +434,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "NV42", .format = formats::NV42, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_NV42), - .multi = V4L2PixelFormat(), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_NV42) }, + .multi = { V4L2PixelFormat() }, }, .bitsPerPixel = 24, .colourEncoding = PixelFormatInfo::ColourEncodingYUV, @@ -447,8 +447,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "YUV420", .format = formats::YUV420, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_YUV420), - .multi = V4L2PixelFormat(V4L2_PIX_FMT_YUV420M), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_YUV420) }, + .multi = { V4L2PixelFormat(V4L2_PIX_FMT_YUV420M) }, }, .bitsPerPixel = 12, .colourEncoding = PixelFormatInfo::ColourEncodingYUV, @@ -460,8 +460,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "YVU420", .format = formats::YVU420, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_YVU420), - .multi = V4L2PixelFormat(V4L2_PIX_FMT_YVU420M), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_YVU420) }, + .multi = { V4L2PixelFormat(V4L2_PIX_FMT_YVU420M) }, }, .bitsPerPixel = 12, .colourEncoding = PixelFormatInfo::ColourEncodingYUV, @@ -473,8 +473,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "YUV422", .format = formats::YUV422, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_YUV422P), - .multi = V4L2PixelFormat(V4L2_PIX_FMT_YUV422M), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_YUV422P) }, + .multi = { V4L2PixelFormat(V4L2_PIX_FMT_YUV422M) }, }, .bitsPerPixel = 16, .colourEncoding = PixelFormatInfo::ColourEncodingYUV, @@ -486,8 +486,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "YVU422", .format = formats::YVU422, .v4l2Formats = { - .single = V4L2PixelFormat(), - .multi = V4L2PixelFormat(V4L2_PIX_FMT_YVU422M), + .single = { V4L2PixelFormat() }, + .multi = { V4L2PixelFormat(V4L2_PIX_FMT_YVU422M) }, }, .bitsPerPixel = 16, .colourEncoding = PixelFormatInfo::ColourEncodingYUV, @@ -499,8 +499,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "YUV444", .format = formats::YUV444, .v4l2Formats = { - .single = V4L2PixelFormat(), - .multi = V4L2PixelFormat(V4L2_PIX_FMT_YUV444M), + .single = { V4L2PixelFormat() }, + .multi = { V4L2PixelFormat(V4L2_PIX_FMT_YUV444M) }, }, .bitsPerPixel = 24, .colourEncoding = PixelFormatInfo::ColourEncodingYUV, @@ -512,8 +512,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "YVU444", .format = formats::YVU444, .v4l2Formats = { - .single = V4L2PixelFormat(), - .multi = V4L2PixelFormat(V4L2_PIX_FMT_YVU444M), + .single = { V4L2PixelFormat() }, + .multi = { V4L2PixelFormat(V4L2_PIX_FMT_YVU444M) }, }, .bitsPerPixel = 24, .colourEncoding = PixelFormatInfo::ColourEncodingYUV, @@ -527,8 +527,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "R8", .format = formats::R8, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_GREY), - .multi = V4L2PixelFormat(), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_GREY) }, + .multi = { V4L2PixelFormat() }, }, .bitsPerPixel = 8, .colourEncoding = PixelFormatInfo::ColourEncodingYUV, @@ -540,8 +540,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "R10", .format = formats::R10, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_Y10), - .multi = V4L2PixelFormat(), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_Y10) }, + .multi = { V4L2PixelFormat() }, }, .bitsPerPixel = 10, .colourEncoding = PixelFormatInfo::ColourEncodingYUV, @@ -553,8 +553,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "R12", .format = formats::R12, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_Y12), - .multi = V4L2PixelFormat(), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_Y12) }, + .multi = { V4L2PixelFormat() }, }, .bitsPerPixel = 12, .colourEncoding = PixelFormatInfo::ColourEncodingYUV, @@ -566,8 +566,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "R10_CSI2P", .format = formats::R10, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_Y10P), - .multi = V4L2PixelFormat(), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_Y10P) }, + .multi = { V4L2PixelFormat() }, }, .bitsPerPixel = 10, .colourEncoding = PixelFormatInfo::ColourEncodingYUV, @@ -581,8 +581,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "SBGGR8", .format = formats::SBGGR8, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_SBGGR8), - .multi = V4L2PixelFormat(), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_SBGGR8) }, + .multi = { V4L2PixelFormat() }, }, .bitsPerPixel = 8, .colourEncoding = PixelFormatInfo::ColourEncodingRAW, @@ -594,8 +594,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "SGBRG8", .format = formats::SGBRG8, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_SGBRG8), - .multi = V4L2PixelFormat(), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_SGBRG8) }, + .multi = { V4L2PixelFormat() }, }, .bitsPerPixel = 8, .colourEncoding = PixelFormatInfo::ColourEncodingRAW, @@ -607,8 +607,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "SGRBG8", .format = formats::SGRBG8, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_SGRBG8), - .multi = V4L2PixelFormat(), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_SGRBG8) }, + .multi = { V4L2PixelFormat() }, }, .bitsPerPixel = 8, .colourEncoding = PixelFormatInfo::ColourEncodingRAW, @@ -620,8 +620,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "SRGGB8", .format = formats::SRGGB8, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_SRGGB8), - .multi = V4L2PixelFormat(), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_SRGGB8) }, + .multi = { V4L2PixelFormat() }, }, .bitsPerPixel = 8, .colourEncoding = PixelFormatInfo::ColourEncodingRAW, @@ -633,8 +633,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "SBGGR10", .format = formats::SBGGR10, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_SBGGR10), - .multi = V4L2PixelFormat(), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_SBGGR10) }, + .multi = { V4L2PixelFormat() }, }, .bitsPerPixel = 10, .colourEncoding = PixelFormatInfo::ColourEncodingRAW, @@ -646,8 +646,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "SGBRG10", .format = formats::SGBRG10, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_SGBRG10), - .multi = V4L2PixelFormat(), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_SGBRG10) }, + .multi = { V4L2PixelFormat() }, }, .bitsPerPixel = 10, .colourEncoding = PixelFormatInfo::ColourEncodingRAW, @@ -659,8 +659,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "SGRBG10", .format = formats::SGRBG10, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_SGRBG10), - .multi = V4L2PixelFormat(), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_SGRBG10) }, + .multi = { V4L2PixelFormat() }, }, .bitsPerPixel = 10, .colourEncoding = PixelFormatInfo::ColourEncodingRAW, @@ -672,8 +672,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "SRGGB10", .format = formats::SRGGB10, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_SRGGB10), - .multi = V4L2PixelFormat(), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_SRGGB10) }, + .multi = { V4L2PixelFormat() }, }, .bitsPerPixel = 10, .colourEncoding = PixelFormatInfo::ColourEncodingRAW, @@ -685,8 +685,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "SBGGR10_CSI2P", .format = formats::SBGGR10_CSI2P, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_SBGGR10P), - .multi = V4L2PixelFormat(), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_SBGGR10P) }, + .multi = { V4L2PixelFormat() }, }, .bitsPerPixel = 10, .colourEncoding = PixelFormatInfo::ColourEncodingRAW, @@ -698,8 +698,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "SGBRG10_CSI2P", .format = formats::SGBRG10_CSI2P, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_SGBRG10P), - .multi = V4L2PixelFormat(), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_SGBRG10P) }, + .multi = { V4L2PixelFormat() }, }, .bitsPerPixel = 10, .colourEncoding = PixelFormatInfo::ColourEncodingRAW, @@ -711,8 +711,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "SGRBG10_CSI2P", .format = formats::SGRBG10_CSI2P, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_SGRBG10P), - .multi = V4L2PixelFormat(), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_SGRBG10P) }, + .multi = { V4L2PixelFormat() }, }, .bitsPerPixel = 10, .colourEncoding = PixelFormatInfo::ColourEncodingRAW, @@ -724,8 +724,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "SRGGB10_CSI2P", .format = formats::SRGGB10_CSI2P, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_SRGGB10P), - .multi = V4L2PixelFormat(), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_SRGGB10P) }, + .multi = { V4L2PixelFormat() }, }, .bitsPerPixel = 10, .colourEncoding = PixelFormatInfo::ColourEncodingRAW, @@ -737,8 +737,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "SBGGR12", .format = formats::SBGGR12, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_SBGGR12), - .multi = V4L2PixelFormat(), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_SBGGR12) }, + .multi = { V4L2PixelFormat() }, }, .bitsPerPixel = 12, .colourEncoding = PixelFormatInfo::ColourEncodingRAW, @@ -750,8 +750,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "SGBRG12", .format = formats::SGBRG12, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_SGBRG12), - .multi = V4L2PixelFormat(), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_SGBRG12) }, + .multi = { V4L2PixelFormat() }, }, .bitsPerPixel = 12, .colourEncoding = PixelFormatInfo::ColourEncodingRAW, @@ -763,8 +763,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "SGRBG12", .format = formats::SGRBG12, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_SGRBG12), - .multi = V4L2PixelFormat(), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_SGRBG12) }, + .multi = { V4L2PixelFormat() }, }, .bitsPerPixel = 12, .colourEncoding = PixelFormatInfo::ColourEncodingRAW, @@ -776,8 +776,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "SRGGB12", .format = formats::SRGGB12, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_SRGGB12), - .multi = V4L2PixelFormat(), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_SRGGB12) }, + .multi = { V4L2PixelFormat() }, }, .bitsPerPixel = 12, .colourEncoding = PixelFormatInfo::ColourEncodingRAW, @@ -789,8 +789,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "SBGGR12_CSI2P", .format = formats::SBGGR12_CSI2P, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_SBGGR12P), - .multi = V4L2PixelFormat(), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_SBGGR12P) }, + .multi = { V4L2PixelFormat() }, }, .bitsPerPixel = 12, .colourEncoding = PixelFormatInfo::ColourEncodingRAW, @@ -802,8 +802,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "SGBRG12_CSI2P", .format = formats::SGBRG12_CSI2P, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_SGBRG12P), - .multi = V4L2PixelFormat(), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_SGBRG12P) }, + .multi = { V4L2PixelFormat() }, }, .bitsPerPixel = 12, .colourEncoding = PixelFormatInfo::ColourEncodingRAW, @@ -815,8 +815,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "SGRBG12_CSI2P", .format = formats::SGRBG12_CSI2P, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_SGRBG12P), - .multi = V4L2PixelFormat(), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_SGRBG12P) }, + .multi = { V4L2PixelFormat() }, }, .bitsPerPixel = 12, .colourEncoding = PixelFormatInfo::ColourEncodingRAW, @@ -828,8 +828,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "SRGGB12_CSI2P", .format = formats::SRGGB12_CSI2P, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_SRGGB12P), - .multi = V4L2PixelFormat(), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_SRGGB12P) }, + .multi = { V4L2PixelFormat() }, }, .bitsPerPixel = 12, .colourEncoding = PixelFormatInfo::ColourEncodingRAW, @@ -841,8 +841,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "SBGGR16", .format = formats::SBGGR16, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_SBGGR16), - .multi = V4L2PixelFormat(), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_SBGGR16) }, + .multi = { V4L2PixelFormat() }, }, .bitsPerPixel = 16, .colourEncoding = PixelFormatInfo::ColourEncodingRAW, @@ -854,8 +854,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "SGBRG16", .format = formats::SGBRG16, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_SGBRG16), - .multi = V4L2PixelFormat(), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_SGBRG16) }, + .multi = { V4L2PixelFormat() }, }, .bitsPerPixel = 16, .colourEncoding = PixelFormatInfo::ColourEncodingRAW, @@ -867,8 +867,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "SGRBG16", .format = formats::SGRBG16, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_SGRBG16), - .multi = V4L2PixelFormat(), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_SGRBG16) }, + .multi = { V4L2PixelFormat() }, }, .bitsPerPixel = 16, .colourEncoding = PixelFormatInfo::ColourEncodingRAW, @@ -880,8 +880,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "SRGGB16", .format = formats::SRGGB16, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_SRGGB16), - .multi = V4L2PixelFormat(), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_SRGGB16) }, + .multi = { V4L2PixelFormat() }, }, .bitsPerPixel = 16, .colourEncoding = PixelFormatInfo::ColourEncodingRAW, @@ -893,8 +893,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "SBGGR10_IPU3", .format = formats::SBGGR10_IPU3, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_IPU3_SBGGR10), - .multi = V4L2PixelFormat(), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_IPU3_SBGGR10) }, + .multi = { V4L2PixelFormat() }, }, .bitsPerPixel = 10, .colourEncoding = PixelFormatInfo::ColourEncodingRAW, @@ -907,8 +907,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "SGBRG10_IPU3", .format = formats::SGBRG10_IPU3, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_IPU3_SGBRG10), - .multi = V4L2PixelFormat(), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_IPU3_SGBRG10) }, + .multi = { V4L2PixelFormat() }, }, .bitsPerPixel = 10, .colourEncoding = PixelFormatInfo::ColourEncodingRAW, @@ -920,8 +920,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "SGRBG10_IPU3", .format = formats::SGRBG10_IPU3, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_IPU3_SGRBG10), - .multi = V4L2PixelFormat(), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_IPU3_SGRBG10) }, + .multi = { V4L2PixelFormat() }, }, .bitsPerPixel = 10, .colourEncoding = PixelFormatInfo::ColourEncodingRAW, @@ -933,8 +933,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "SRGGB10_IPU3", .format = formats::SRGGB10_IPU3, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_IPU3_SRGGB10), - .multi = V4L2PixelFormat(), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_IPU3_SRGGB10) }, + .multi = { V4L2PixelFormat() }, }, .bitsPerPixel = 10, .colourEncoding = PixelFormatInfo::ColourEncodingRAW, @@ -948,8 +948,8 @@ const std::map<PixelFormat, PixelFormatInfo> pixelFormatInfo{ .name = "MJPEG", .format = formats::MJPEG, .v4l2Formats = { - .single = V4L2PixelFormat(V4L2_PIX_FMT_MJPEG), - .multi = V4L2PixelFormat(), + .single = { V4L2PixelFormat(V4L2_PIX_FMT_MJPEG) }, + .multi = { V4L2PixelFormat() }, }, .bitsPerPixel = 0, .colourEncoding = PixelFormatInfo::ColourEncodingYUV, @@ -996,8 +996,8 @@ const PixelFormatInfo &PixelFormatInfo::info(const V4L2PixelFormat &format) { const auto &info = std::find_if(pixelFormatInfo.begin(), pixelFormatInfo.end(), [format](auto pair) { - return pair.second.v4l2Formats.single == format || - pair.second.v4l2Formats.multi == format; + return pair.second.v4l2Formats.single[0] == format || + pair.second.v4l2Formats.multi[0] == format; }); if (info == pixelFormatInfo.end()) return pixelFormatInfoInvalid; diff --git a/src/libcamera/v4l2_pixelformat.cpp b/src/libcamera/v4l2_pixelformat.cpp index 58fc4e9d..cf6c1858 100644 --- a/src/libcamera/v4l2_pixelformat.cpp +++ b/src/libcamera/v4l2_pixelformat.cpp @@ -321,7 +321,7 @@ V4L2PixelFormat V4L2PixelFormat::fromPixelFormat(const PixelFormat &pixelFormat, if (!info.isValid()) return V4L2PixelFormat(); - return multiplanar ? info.v4l2Formats.multi : info.v4l2Formats.single; + return multiplanar ? info.v4l2Formats.multi[0] : info.v4l2Formats.single[0]; } /** |