From patchwork Sat Jul 23 09:53:23 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jacopo Mondi X-Patchwork-Id: 16740 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id C0432BE173 for ; Sat, 23 Jul 2022 09:53:49 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 786C663315; Sat, 23 Jul 2022 11:53:49 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org; s=mail; t=1658570029; bh=ArpbPgOsEsRlAYmL84t9r72AurH5FKNwpuhY/Hg5Ibs=; h=To:Date:In-Reply-To:References:Subject:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=gU6ycnpUZiCj0lZsSXzOoX1trG0ONECMGObiKooCQ9HcjYc7lnnYdtHvW21wQpUgA ZNVYhB1qjeR/FCfQtACD/ZFtZp7jpRPf0jqQpoN61u9mqgZ9sgFWMrUJCzVhixj5z+ 1kv549t37m+Hmq0j+g61RSsexlA2kSlWRIeaMZ9tnXVAkNYXDNKOBUT6Zaa54fjHXM QkTyrSpgXAWKmakxy8tSQJGHH+aeNEPcwQv4M6H+ChhIwUSXx1G8rBUS6KSXQgCAYq F6m6CQA2tmxfvkLAM0KUwCIc2+qhapHYvLIqppcVql7W+AfQ0fw6Fo8E5pHL78aqGi f9yyyhsfRd4Lg== Received: from relay8-d.mail.gandi.net (relay8-d.mail.gandi.net [217.70.183.201]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 01F946330E for ; Sat, 23 Jul 2022 11:53:48 +0200 (CEST) Received: (Authenticated sender: jacopo@jmondi.org) by mail.gandi.net (Postfix) with ESMTPSA id 9F8931BF20A; Sat, 23 Jul 2022 09:53:45 +0000 (UTC) To: libcamera-devel@lists.libcamera.org Date: Sat, 23 Jul 2022 11:53:23 +0200 Message-Id: <20220723095330.43542-2-jacopo@jmondi.org> X-Mailer: git-send-email 2.37.1 In-Reply-To: <20220723095330.43542-1-jacopo@jmondi.org> References: <20220723095330.43542-1-jacopo@jmondi.org> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH v2 1/8] libcamera: formats: Support multiple V4L2 pixel formats X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Jacopo Mondi via libcamera-devel From: Jacopo Mondi Reply-To: Jacopo Mondi Cc: jozef@mlich.cz, Pavel Machek Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" 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 --- include/libcamera/internal/formats.h | 4 +- src/libcamera/formats.cpp | 248 +++++++++++++-------------- 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 ee599765be47..90c8b2cda78a 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 single; + std::vector multi; } v4l2Formats; unsigned int bitsPerPixel; enum ColourEncoding colourEncoding; diff --git a/src/libcamera/formats.cpp b/src/libcamera/formats.cpp index 283ecb3d89d8..f7e9adc7ff77 100644 --- a/src/libcamera/formats.cpp +++ b/src/libcamera/formats.cpp @@ -157,8 +157,8 @@ const std::map 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 58fc4e9d2032..cf6c1858bd1a 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]; } /**