From patchwork Fri Oct 23 10:58:22 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jai Luthra X-Patchwork-Id: 28584 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 E527AC324C for ; Fri, 23 Oct 2026 11:00:02 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 7F10668FD5; Fri, 23 Oct 2026 13:00:02 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="XYBO0auz"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 1B94568FAB for ; Fri, 23 Oct 2026 13:00:01 +0200 (CEST) Received: from mail.ideasonboard.com (unknown [IPv6:2401:4900:1c30:59f6:be2b:2877:6bc4:392]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id AAA5F1F3D; Fri, 23 Oct 2026 12:57:51 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1792753072; bh=67KPdihOtgdGSwRQdTgzl5wXJJsnK+oZLBcU+Auima0=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=XYBO0auzHNS2lfXX7skd6ntg9NWlSbwjhD4nWpcz/lj0w07U991xYL8byxdXBGCPc p1uNZSkiMO1thDGxrU1DOfO+9LLEAp731kFZbsfWbqMH4v8r2gEC91hbMVY7KgSUE1 i0vuW8RNpY3ep0B87EwDT1lP86U327PklXRX4Yhk= From: Jai Luthra Date: Fri, 23 Oct 2026 16:28:22 +0530 Subject: [PATCH WIP RFC 14/26] libcamera: formats: Switch to generic layout-agnostic formats MIME-Version: 1.0 Message-Id: <20261023-b4-raw-model-v1-14-eadb9948901b@ideasonboard.com> References: <20261023-b4-raw-model-v1-0-eadb9948901b@ideasonboard.com> In-Reply-To: <20261023-b4-raw-model-v1-0-eadb9948901b@ideasonboard.com> To: libcamera-devel@lists.libcamera.org Cc: Laurent Pinchart , Kieran Bingham , Sakari Ailus , Naushir Patuck , Jai Luthra X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=29795; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=67KPdihOtgdGSwRQdTgzl5wXJJsnK+oZLBcU+Auima0=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBq2z3QI2EDhj66IIAnOEN0cdrNVXP6+vz7/pXfb PyQ+FymQZeJAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCats90AAKCRBD3pH5JJpx RWPTEACCKQ91XgYHeFcVeaaAy/7yqdQ7yYOkPa1lg7qCdx0IA5d7JeFpAnPmazu0yUo7nPhQ2lE OQdllF7lCfapdvCA/VKunCU4mmp3pC7ZVwAfITLoJsZX2wEf8/WUtVfCZrs8LXVSSSRiS4zgCSB fxlAb3Bzytos/HImZG5pK7p4tiKtKVQOfJHNX4VzvhGP2JSpg2/fBzHy4+KZsG+pgA/2uqXpEjL fAzgXIe3NxHO/IyQQenciZCShZaxxWSFuyiaPrYCxMsMlemH5MjhdcUxYwpZCSWDvaTh3I7FyrV JxWFjPObPMDhgGbPSGAIUGitLDLbf9dQoTJHNWzgHgDwMvkawodihtHCDHGyBFEmwg1WfmJrXc9 3bZq3ztPLRdhGmqA7kO5qDf4xUVkrowEBGHjB3YmKTCkjiC6FTzb4HQkXBBLbBvDjDWWJ6JOIsm g0bP9vhLytibA1fDY9lWUFFpfd7td2PzV3UuJBe5JYrEP9pgO5ORoLD48TbbKoyOGSFSocsrHNo yMtLEOTn8TA9Vh9/xqZoR9mLcVItIGT0f6Q2yV4Ctr98Wx230KB3Nv/c7Bv6TnV8Z02coGXGdaK GSXf6tk/iR1lYPTDaXL7WCwbxpP9qwtjfq8Mott+cYvQsA27uYsKMCpJaSkZUzLtaVM6wJthFVK XxsgsQds43fscKA== X-Developer-Key: i=jai.luthra@ideasonboard.com; a=openpgp; fpr=4DE0D818E5D575E8D45AAFC543DE91F9249A7145 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: , Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" The new common raw sensor model in V4L2 separates out the layout of pixel data (bayer order, embedded line layout etc.) from the bit-depth and packing used on the bus. Follow suit throughout libcamera, by dropping the old PixelFormats that encoded the bayer-order, and switching to generic formats for raw streams. Signed-off-by: Jai Luthra --- For the WIP series I decided to drop the old formats altogether to make the migration easier internally. Once the migration is complete, I will add them back in, but warning the external users that these are now deprecated. --- src/libcamera/formats.cpp | 440 +++++++++---------------------------- src/libcamera/formats.yaml | 136 +++--------- src/libcamera/v4l2_pixelformat.cpp | 90 +++++--- 3 files changed, 183 insertions(+), 483 deletions(-) diff --git a/src/libcamera/formats.cpp b/src/libcamera/formats.cpp index bfcdfc08960d..2a79a3b6c7f8 100644 --- a/src/libcamera/formats.cpp +++ b/src/libcamera/formats.cpp @@ -568,330 +568,144 @@ const std::map pixelFormatInfo{ } }, /* Bayer formats. */ - { formats::SBGGR8, { - .name = "SBGGR8", - .format = formats::SBGGR8, - .v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_SBGGR8), }, + { formats::RAW8, { + .name = "RAW8", + .format = formats::RAW8, + .v4l2Formats = { + V4L2PixelFormat(V4L2_PIX_FMT_RAW_8), + V4L2PixelFormat(V4L2_PIX_FMT_SBGGR8), + V4L2PixelFormat(V4L2_PIX_FMT_SGBRG8), + V4L2PixelFormat(V4L2_PIX_FMT_SGRBG8), + V4L2PixelFormat(V4L2_PIX_FMT_SRGGB8), + }, .bitsPerPixel = 8, .colourEncoding = PixelFormatInfo::ColourEncodingRAW, .packed = false, .pixelsPerGroup = 2, .planes = {{ { 2, 1 }, { 0, 0 }, { 0, 0 } }}, } }, - { formats::SGBRG8, { - .name = "SGBRG8", - .format = formats::SGBRG8, - .v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_SGBRG8), }, - .bitsPerPixel = 8, - .colourEncoding = PixelFormatInfo::ColourEncodingRAW, - .packed = false, - .pixelsPerGroup = 2, - .planes = {{ { 2, 1 }, { 0, 0 }, { 0, 0 } }}, - } }, - { formats::SGRBG8, { - .name = "SGRBG8", - .format = formats::SGRBG8, - .v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_SGRBG8), }, - .bitsPerPixel = 8, - .colourEncoding = PixelFormatInfo::ColourEncodingRAW, - .packed = false, - .pixelsPerGroup = 2, - .planes = {{ { 2, 1 }, { 0, 0 }, { 0, 0 } }}, - } }, - { formats::SRGGB8, { - .name = "SRGGB8", - .format = formats::SRGGB8, - .v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_SRGGB8), }, - .bitsPerPixel = 8, - .colourEncoding = PixelFormatInfo::ColourEncodingRAW, - .packed = false, - .pixelsPerGroup = 2, - .planes = {{ { 2, 1 }, { 0, 0 }, { 0, 0 } }}, - } }, - { formats::SBGGR10, { - .name = "SBGGR10", - .format = formats::SBGGR10, - .v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_SBGGR10), }, + { formats::RAW10, { + .name = "RAW10", + .format = formats::RAW10, + .v4l2Formats = { + V4L2PixelFormat(V4L2_PIX_FMT_RAW_10), + V4L2PixelFormat(V4L2_PIX_FMT_SBGGR10), + V4L2PixelFormat(V4L2_PIX_FMT_SGBRG10), + V4L2PixelFormat(V4L2_PIX_FMT_SGRBG10), + V4L2PixelFormat(V4L2_PIX_FMT_SRGGB10), + }, .bitsPerPixel = 10, .colourEncoding = PixelFormatInfo::ColourEncodingRAW, .packed = false, .pixelsPerGroup = 2, .planes = {{ { 4, 1 }, { 0, 0 }, { 0, 0 } }}, } }, - { formats::SGBRG10, { - .name = "SGBRG10", - .format = formats::SGBRG10, - .v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_SGBRG10), }, - .bitsPerPixel = 10, - .colourEncoding = PixelFormatInfo::ColourEncodingRAW, - .packed = false, - .pixelsPerGroup = 2, - .planes = {{ { 4, 1 }, { 0, 0 }, { 0, 0 } }}, - } }, - { formats::SGRBG10, { - .name = "SGRBG10", - .format = formats::SGRBG10, - .v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_SGRBG10), }, - .bitsPerPixel = 10, - .colourEncoding = PixelFormatInfo::ColourEncodingRAW, - .packed = false, - .pixelsPerGroup = 2, - .planes = {{ { 4, 1 }, { 0, 0 }, { 0, 0 } }}, - } }, - { formats::SRGGB10, { - .name = "SRGGB10", - .format = formats::SRGGB10, - .v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_SRGGB10), }, - .bitsPerPixel = 10, - .colourEncoding = PixelFormatInfo::ColourEncodingRAW, - .packed = false, - .pixelsPerGroup = 2, - .planes = {{ { 4, 1 }, { 0, 0 }, { 0, 0 } }}, - } }, - { formats::SBGGR10_CSI2P, { - .name = "SBGGR10_CSI2P", - .format = formats::SBGGR10_CSI2P, - .v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_SBGGR10P), }, + { formats::RAW10_CSI2P, { + .name = "RAW10_CSI2P", + .format = formats::RAW10_CSI2P, + .v4l2Formats = { + V4L2PixelFormat(V4L2_PIX_FMT_RAW_CSI2_10), + V4L2PixelFormat(V4L2_PIX_FMT_SBGGR10P), + V4L2PixelFormat(V4L2_PIX_FMT_SGBRG10P), + V4L2PixelFormat(V4L2_PIX_FMT_SGRBG10P), + V4L2PixelFormat(V4L2_PIX_FMT_SRGGB10P), + }, .bitsPerPixel = 10, .colourEncoding = PixelFormatInfo::ColourEncodingRAW, .packed = true, .pixelsPerGroup = 4, .planes = {{ { 5, 1 }, { 0, 0 }, { 0, 0 } }}, } }, - { formats::SGBRG10_CSI2P, { - .name = "SGBRG10_CSI2P", - .format = formats::SGBRG10_CSI2P, - .v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_SGBRG10P), }, - .bitsPerPixel = 10, - .colourEncoding = PixelFormatInfo::ColourEncodingRAW, - .packed = true, - .pixelsPerGroup = 4, - .planes = {{ { 5, 1 }, { 0, 0 }, { 0, 0 } }}, - } }, - { formats::SGRBG10_CSI2P, { - .name = "SGRBG10_CSI2P", - .format = formats::SGRBG10_CSI2P, - .v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_SGRBG10P), }, - .bitsPerPixel = 10, - .colourEncoding = PixelFormatInfo::ColourEncodingRAW, - .packed = true, - .pixelsPerGroup = 4, - .planes = {{ { 5, 1 }, { 0, 0 }, { 0, 0 } }}, - } }, - { formats::SRGGB10_CSI2P, { - .name = "SRGGB10_CSI2P", - .format = formats::SRGGB10_CSI2P, - .v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_SRGGB10P), }, - .bitsPerPixel = 10, - .colourEncoding = PixelFormatInfo::ColourEncodingRAW, - .packed = true, - .pixelsPerGroup = 4, - .planes = {{ { 5, 1 }, { 0, 0 }, { 0, 0 } }}, - } }, - { formats::SBGGR12, { - .name = "SBGGR12", - .format = formats::SBGGR12, - .v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_SBGGR12), }, + { formats::RAW12, { + .name = "RAW12", + .format = formats::RAW12, + .v4l2Formats = { + V4L2PixelFormat(V4L2_PIX_FMT_RAW_12), + V4L2PixelFormat(V4L2_PIX_FMT_SBGGR12), + V4L2PixelFormat(V4L2_PIX_FMT_SGBRG12), + V4L2PixelFormat(V4L2_PIX_FMT_SGRBG12), + V4L2PixelFormat(V4L2_PIX_FMT_SRGGB12), + }, .bitsPerPixel = 12, .colourEncoding = PixelFormatInfo::ColourEncodingRAW, .packed = false, .pixelsPerGroup = 2, .planes = {{ { 4, 1 }, { 0, 0 }, { 0, 0 } }}, } }, - { formats::SGBRG12, { - .name = "SGBRG12", - .format = formats::SGBRG12, - .v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_SGBRG12), }, - .bitsPerPixel = 12, - .colourEncoding = PixelFormatInfo::ColourEncodingRAW, - .packed = false, - .pixelsPerGroup = 2, - .planes = {{ { 4, 1 }, { 0, 0 }, { 0, 0 } }}, - } }, - { formats::SGRBG12, { - .name = "SGRBG12", - .format = formats::SGRBG12, - .v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_SGRBG12), }, - .bitsPerPixel = 12, - .colourEncoding = PixelFormatInfo::ColourEncodingRAW, - .packed = false, - .pixelsPerGroup = 2, - .planes = {{ { 4, 1 }, { 0, 0 }, { 0, 0 } }}, - } }, - { formats::SRGGB12, { - .name = "SRGGB12", - .format = formats::SRGGB12, - .v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_SRGGB12), }, - .bitsPerPixel = 12, - .colourEncoding = PixelFormatInfo::ColourEncodingRAW, - .packed = false, - .pixelsPerGroup = 2, - .planes = {{ { 4, 1 }, { 0, 0 }, { 0, 0 } }}, - } }, - { formats::SBGGR12_CSI2P, { - .name = "SBGGR12_CSI2P", - .format = formats::SBGGR12_CSI2P, - .v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_SBGGR12P), }, + { formats::RAW12_CSI2P, { + .name = "RAW12_CSI2P", + .format = formats::RAW12_CSI2P, + .v4l2Formats = { + V4L2PixelFormat(V4L2_PIX_FMT_RAW_CSI2_12), + V4L2PixelFormat(V4L2_PIX_FMT_SBGGR12P), + V4L2PixelFormat(V4L2_PIX_FMT_SGBRG12P), + V4L2PixelFormat(V4L2_PIX_FMT_SGRBG12P), + V4L2PixelFormat(V4L2_PIX_FMT_SRGGB12P), + }, .bitsPerPixel = 12, .colourEncoding = PixelFormatInfo::ColourEncodingRAW, .packed = true, .pixelsPerGroup = 2, .planes = {{ { 3, 1 }, { 0, 0 }, { 0, 0 } }}, } }, - { formats::SGBRG12_CSI2P, { - .name = "SGBRG12_CSI2P", - .format = formats::SGBRG12_CSI2P, - .v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_SGBRG12P), }, - .bitsPerPixel = 12, - .colourEncoding = PixelFormatInfo::ColourEncodingRAW, - .packed = true, - .pixelsPerGroup = 2, - .planes = {{ { 3, 1 }, { 0, 0 }, { 0, 0 } }}, - } }, - { formats::SGRBG12_CSI2P, { - .name = "SGRBG12_CSI2P", - .format = formats::SGRBG12_CSI2P, - .v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_SGRBG12P), }, - .bitsPerPixel = 12, - .colourEncoding = PixelFormatInfo::ColourEncodingRAW, - .packed = true, - .pixelsPerGroup = 2, - .planes = {{ { 3, 1 }, { 0, 0 }, { 0, 0 } }}, - } }, - { formats::SRGGB12_CSI2P, { - .name = "SRGGB12_CSI2P", - .format = formats::SRGGB12_CSI2P, - .v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_SRGGB12P), }, - .bitsPerPixel = 12, - .colourEncoding = PixelFormatInfo::ColourEncodingRAW, - .packed = true, - .pixelsPerGroup = 2, - .planes = {{ { 3, 1 }, { 0, 0 }, { 0, 0 } }}, - } }, - { formats::SBGGR14, { - .name = "SBGGR14", - .format = formats::SBGGR14, - .v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_SBGGR14), }, + { formats::RAW14, { + .name = "RAW14", + .format = formats::RAW14, + .v4l2Formats = { + V4L2PixelFormat(V4L2_PIX_FMT_RAW_14), + V4L2PixelFormat(V4L2_PIX_FMT_SBGGR14), + V4L2PixelFormat(V4L2_PIX_FMT_SGBRG14), + V4L2PixelFormat(V4L2_PIX_FMT_SGRBG14), + V4L2PixelFormat(V4L2_PIX_FMT_SRGGB14), + }, .bitsPerPixel = 14, .colourEncoding = PixelFormatInfo::ColourEncodingRAW, .packed = false, .pixelsPerGroup = 2, .planes = {{ { 4, 1 }, { 0, 0 }, { 0, 0 } }}, } }, - { formats::SGBRG14, { - .name = "SGBRG14", - .format = formats::SGBRG14, - .v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_SGBRG14), }, - .bitsPerPixel = 14, - .colourEncoding = PixelFormatInfo::ColourEncodingRAW, - .packed = false, - .pixelsPerGroup = 2, - .planes = {{ { 4, 1 }, { 0, 0 }, { 0, 0 } }}, - } }, - { formats::SGRBG14, { - .name = "SGRBG14", - .format = formats::SGRBG14, - .v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_SGRBG14), }, - .bitsPerPixel = 14, - .colourEncoding = PixelFormatInfo::ColourEncodingRAW, - .packed = false, - .pixelsPerGroup = 2, - .planes = {{ { 4, 1 }, { 0, 0 }, { 0, 0 } }}, - } }, - { formats::SRGGB14, { - .name = "SRGGB14", - .format = formats::SRGGB14, - .v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_SRGGB14), }, - .bitsPerPixel = 14, - .colourEncoding = PixelFormatInfo::ColourEncodingRAW, - .packed = false, - .pixelsPerGroup = 2, - .planes = {{ { 4, 1 }, { 0, 0 }, { 0, 0 } }}, - } }, - { formats::SBGGR14_CSI2P, { - .name = "SBGGR14_CSI2P", - .format = formats::SBGGR14_CSI2P, - .v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_SBGGR14P), }, + { formats::RAW14_CSI2P, { + .name = "RAW14_CSI2P", + .format = formats::RAW14_CSI2P, + .v4l2Formats = { + V4L2PixelFormat(V4L2_PIX_FMT_RAW_CSI2_14), + V4L2PixelFormat(V4L2_PIX_FMT_SBGGR14P), + V4L2PixelFormat(V4L2_PIX_FMT_SGBRG14P), + V4L2PixelFormat(V4L2_PIX_FMT_SGRBG14P), + V4L2PixelFormat(V4L2_PIX_FMT_SRGGB14P), + }, .bitsPerPixel = 14, .colourEncoding = PixelFormatInfo::ColourEncodingRAW, .packed = true, .pixelsPerGroup = 4, .planes = {{ { 7, 1 }, { 0, 0 }, { 0, 0 } }}, } }, - { formats::SGBRG14_CSI2P, { - .name = "SGBRG14_CSI2P", - .format = formats::SGBRG14_CSI2P, - .v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_SGBRG14P), }, - .bitsPerPixel = 14, - .colourEncoding = PixelFormatInfo::ColourEncodingRAW, - .packed = true, - .pixelsPerGroup = 4, - .planes = {{ { 7, 1 }, { 0, 0 }, { 0, 0 } }}, - } }, - { formats::SGRBG14_CSI2P, { - .name = "SGRBG14_CSI2P", - .format = formats::SGRBG14_CSI2P, - .v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_SGRBG14P), }, - .bitsPerPixel = 14, - .colourEncoding = PixelFormatInfo::ColourEncodingRAW, - .packed = true, - .pixelsPerGroup = 4, - .planes = {{ { 7, 1 }, { 0, 0 }, { 0, 0 } }}, - } }, - { formats::SRGGB14_CSI2P, { - .name = "SRGGB14_CSI2P", - .format = formats::SRGGB14_CSI2P, - .v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_SRGGB14P), }, - .bitsPerPixel = 14, - .colourEncoding = PixelFormatInfo::ColourEncodingRAW, - .packed = true, - .pixelsPerGroup = 4, - .planes = {{ { 7, 1 }, { 0, 0 }, { 0, 0 } }}, - } }, - { formats::SBGGR16, { - .name = "SBGGR16", - .format = formats::SBGGR16, - .v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_SBGGR16), }, + { formats::RAW16, { + .name = "RAW16", + .format = formats::RAW16, + .v4l2Formats = { + V4L2PixelFormat(V4L2_PIX_FMT_RAW_16), + V4L2PixelFormat(V4L2_PIX_FMT_SBGGR16), + V4L2PixelFormat(V4L2_PIX_FMT_SGBRG16), + V4L2PixelFormat(V4L2_PIX_FMT_SGRBG16), + V4L2PixelFormat(V4L2_PIX_FMT_SRGGB16), + }, .bitsPerPixel = 16, .colourEncoding = PixelFormatInfo::ColourEncodingRAW, .packed = false, .pixelsPerGroup = 2, .planes = {{ { 4, 1 }, { 0, 0 }, { 0, 0 } }}, } }, - { formats::SGBRG16, { - .name = "SGBRG16", - .format = formats::SGBRG16, - .v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_SGBRG16), }, - .bitsPerPixel = 16, - .colourEncoding = PixelFormatInfo::ColourEncodingRAW, - .packed = false, - .pixelsPerGroup = 2, - .planes = {{ { 4, 1 }, { 0, 0 }, { 0, 0 } }}, - } }, - { formats::SGRBG16, { - .name = "SGRBG16", - .format = formats::SGRBG16, - .v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_SGRBG16), }, - .bitsPerPixel = 16, - .colourEncoding = PixelFormatInfo::ColourEncodingRAW, - .packed = false, - .pixelsPerGroup = 2, - .planes = {{ { 4, 1 }, { 0, 0 }, { 0, 0 } }}, - } }, - { formats::SRGGB16, { - .name = "SRGGB16", - .format = formats::SRGGB16, - .v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_SRGGB16), }, - .bitsPerPixel = 16, - .colourEncoding = PixelFormatInfo::ColourEncodingRAW, - .packed = false, - .pixelsPerGroup = 2, - .planes = {{ { 4, 1 }, { 0, 0 }, { 0, 0 } }}, - } }, - { formats::SBGGR10_IPU3, { - .name = "SBGGR10_IPU3", - .format = formats::SBGGR10_IPU3, - .v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_IPU3_SBGGR10), }, + { formats::RAW10_IPU3, { + .name = "RAW10_IPU3", + .format = formats::RAW10_IPU3, + .v4l2Formats = { + V4L2PixelFormat(V4L2_PIX_FMT_IPU3_RAW10), + V4L2PixelFormat(V4L2_PIX_FMT_IPU3_SBGGR10), + V4L2PixelFormat(V4L2_PIX_FMT_IPU3_SGBRG10), + V4L2PixelFormat(V4L2_PIX_FMT_IPU3_SGRBG10), + V4L2PixelFormat(V4L2_PIX_FMT_IPU3_SRGGB10), + }, .bitsPerPixel = 10, .colourEncoding = PixelFormatInfo::ColourEncodingRAW, .packed = true, @@ -899,70 +713,16 @@ const std::map pixelFormatInfo{ .pixelsPerGroup = 25, .planes = {{ { 32, 1 }, { 0, 0 }, { 0, 0 } }}, } }, - { formats::SGBRG10_IPU3, { - .name = "SGBRG10_IPU3", - .format = formats::SGBRG10_IPU3, - .v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_IPU3_SGBRG10), }, - .bitsPerPixel = 10, - .colourEncoding = PixelFormatInfo::ColourEncodingRAW, - .packed = true, - .pixelsPerGroup = 25, - .planes = {{ { 32, 1 }, { 0, 0 }, { 0, 0 } }}, - } }, - { formats::SGRBG10_IPU3, { - .name = "SGRBG10_IPU3", - .format = formats::SGRBG10_IPU3, - .v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_IPU3_SGRBG10), }, - .bitsPerPixel = 10, - .colourEncoding = PixelFormatInfo::ColourEncodingRAW, - .packed = true, - .pixelsPerGroup = 25, - .planes = {{ { 32, 1 }, { 0, 0 }, { 0, 0 } }}, - } }, - { formats::SRGGB10_IPU3, { - .name = "SRGGB10_IPU3", - .format = formats::SRGGB10_IPU3, - .v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_IPU3_SRGGB10), }, - .bitsPerPixel = 10, - .colourEncoding = PixelFormatInfo::ColourEncodingRAW, - .packed = true, - .pixelsPerGroup = 25, - .planes = {{ { 32, 1 }, { 0, 0 }, { 0, 0 } }}, - } }, - { formats::BGGR_PISP_COMP1, { - .name = "BGGR_PISP_COMP1", - .format = formats::BGGR_PISP_COMP1, - .v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_PISP_COMP1_BGGR), }, - .bitsPerPixel = 8, - .colourEncoding = PixelFormatInfo::ColourEncodingRAW, - .packed = true, - .pixelsPerGroup = 2, - .planes = {{ { 2, 1 }, { 0, 0 }, { 0, 0 } }}, - } }, - { formats::GBRG_PISP_COMP1, { - .name = "GBRG_PISP_COMP1", - .format = formats::GBRG_PISP_COMP1, - .v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_PISP_COMP1_GBRG), }, - .bitsPerPixel = 8, - .colourEncoding = PixelFormatInfo::ColourEncodingRAW, - .packed = true, - .pixelsPerGroup = 2, - .planes = {{ { 2, 1 }, { 0, 0 }, { 0, 0 } }}, - } }, - { formats::GRBG_PISP_COMP1, { - .name = "GRBG_PISP_COMP1", - .format = formats::GRBG_PISP_COMP1, - .v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_PISP_COMP1_GRBG), }, - .bitsPerPixel = 8, - .colourEncoding = PixelFormatInfo::ColourEncodingRAW, - .packed = true, - .pixelsPerGroup = 2, - .planes = {{ { 2, 1 }, { 0, 0 }, { 0, 0 } }}, - } }, - { formats::RGGB_PISP_COMP1, { - .name = "RGGB_PISP_COMP1", - .format = formats::RGGB_PISP_COMP1, - .v4l2Formats = { V4L2PixelFormat(V4L2_PIX_FMT_PISP_COMP1_RGGB), }, + { formats::RAW_PISP_COMP1, { + .name = "RAW_PISP_COMP1", + .format = formats::RAW_PISP_COMP1, + .v4l2Formats = { + V4L2PixelFormat(V4L2_PIX_FMT_PISP_COMP1_RAW), + V4L2PixelFormat(V4L2_PIX_FMT_PISP_COMP1_BGGR), + V4L2PixelFormat(V4L2_PIX_FMT_PISP_COMP1_GBRG), + V4L2PixelFormat(V4L2_PIX_FMT_PISP_COMP1_GRBG), + V4L2PixelFormat(V4L2_PIX_FMT_PISP_COMP1_RGGB), + }, .bitsPerPixel = 8, .colourEncoding = PixelFormatInfo::ColourEncodingRAW, .packed = true, diff --git a/src/libcamera/formats.yaml b/src/libcamera/formats.yaml index d256fd2c1bfe..d71c65078587 100644 --- a/src/libcamera/formats.yaml +++ b/src/libcamera/formats.yaml @@ -16,6 +16,16 @@ formats: - R16: fourcc: DRM_FORMAT_R16 + - R10_CSI2P: + fourcc: DRM_FORMAT_R10 + mod: MIPI_FORMAT_MOD_CSI2_PACKED + - R12_CSI2P: + fourcc: DRM_FORMAT_R12 + mod: MIPI_FORMAT_MOD_CSI2_PACKED + - R14_CSI2P: + fourcc: DRM_FORMAT_R14 + mod: MIPI_FORMAT_MOD_CSI2_PACKED + - RGB565: fourcc: DRM_FORMAT_RGB565 - RGB565_BE: @@ -92,123 +102,35 @@ formats: - MJPEG: fourcc: DRM_FORMAT_MJPEG - - SRGGB8: - fourcc: DRM_FORMAT_SRGGB8 - - SGRBG8: - fourcc: DRM_FORMAT_SGRBG8 - - SGBRG8: - fourcc: DRM_FORMAT_SGBRG8 - - SBGGR8: - fourcc: DRM_FORMAT_SBGGR8 + - RAW8: + fourcc: DRM_FORMAT_R8 + - RAW10: + fourcc: DRM_FORMAT_R10 + - RAW12: + fourcc: DRM_FORMAT_R12 + - RAW14: + fourcc: DRM_FORMAT_R14 + - RAW16: + fourcc: DRM_FORMAT_R16 - - SRGGB10: - fourcc: DRM_FORMAT_SRGGB10 - - SGRBG10: - fourcc: DRM_FORMAT_SGRBG10 - - SGBRG10: - fourcc: DRM_FORMAT_SGBRG10 - - SBGGR10: - fourcc: DRM_FORMAT_SBGGR10 - - - SRGGB12: - fourcc: DRM_FORMAT_SRGGB12 - - SGRBG12: - fourcc: DRM_FORMAT_SGRBG12 - - SGBRG12: - fourcc: DRM_FORMAT_SGBRG12 - - SBGGR12: - fourcc: DRM_FORMAT_SBGGR12 - - - SRGGB14: - fourcc: DRM_FORMAT_SRGGB14 - - SGRBG14: - fourcc: DRM_FORMAT_SGRBG14 - - SGBRG14: - fourcc: DRM_FORMAT_SGBRG14 - - SBGGR14: - fourcc: DRM_FORMAT_SBGGR14 - - - SRGGB16: - fourcc: DRM_FORMAT_SRGGB16 - - SGRBG16: - fourcc: DRM_FORMAT_SGRBG16 - - SGBRG16: - fourcc: DRM_FORMAT_SGBRG16 - - SBGGR16: - fourcc: DRM_FORMAT_SBGGR16 - - - R10_CSI2P: + - RAW10_CSI2P: fourcc: DRM_FORMAT_R10 mod: MIPI_FORMAT_MOD_CSI2_PACKED - - R12_CSI2P: + - RAW12_CSI2P: fourcc: DRM_FORMAT_R12 mod: MIPI_FORMAT_MOD_CSI2_PACKED - - - SRGGB10_CSI2P: - fourcc: DRM_FORMAT_SRGGB10 - mod: MIPI_FORMAT_MOD_CSI2_PACKED - - SGRBG10_CSI2P: - fourcc: DRM_FORMAT_SGRBG10 - mod: MIPI_FORMAT_MOD_CSI2_PACKED - - SGBRG10_CSI2P: - fourcc: DRM_FORMAT_SGBRG10 - mod: MIPI_FORMAT_MOD_CSI2_PACKED - - SBGGR10_CSI2P: - fourcc: DRM_FORMAT_SBGGR10 + - RAW14_CSI2P: + fourcc: DRM_FORMAT_R14 mod: MIPI_FORMAT_MOD_CSI2_PACKED - - SRGGB12_CSI2P: - fourcc: DRM_FORMAT_SRGGB12 - mod: MIPI_FORMAT_MOD_CSI2_PACKED - - SGRBG12_CSI2P: - fourcc: DRM_FORMAT_SGRBG12 - mod: MIPI_FORMAT_MOD_CSI2_PACKED - - SGBRG12_CSI2P: - fourcc: DRM_FORMAT_SGBRG12 - mod: MIPI_FORMAT_MOD_CSI2_PACKED - - SBGGR12_CSI2P: - fourcc: DRM_FORMAT_SBGGR12 - mod: MIPI_FORMAT_MOD_CSI2_PACKED - - - SRGGB14_CSI2P: - fourcc: DRM_FORMAT_SRGGB14 - mod: MIPI_FORMAT_MOD_CSI2_PACKED - - SGRBG14_CSI2P: - fourcc: DRM_FORMAT_SGRBG14 - mod: MIPI_FORMAT_MOD_CSI2_PACKED - - SGBRG14_CSI2P: - fourcc: DRM_FORMAT_SGBRG14 - mod: MIPI_FORMAT_MOD_CSI2_PACKED - - SBGGR14_CSI2P: - fourcc: DRM_FORMAT_SBGGR14 - mod: MIPI_FORMAT_MOD_CSI2_PACKED - - - SRGGB10_IPU3: - fourcc: DRM_FORMAT_SRGGB10 - mod: IPU3_FORMAT_MOD_PACKED - - SGRBG10_IPU3: - fourcc: DRM_FORMAT_SGRBG10 - mod: IPU3_FORMAT_MOD_PACKED - - SGBRG10_IPU3: - fourcc: DRM_FORMAT_SGBRG10 - mod: IPU3_FORMAT_MOD_PACKED - - SBGGR10_IPU3: - fourcc: DRM_FORMAT_SBGGR10 + - RAW10_IPU3: + fourcc: DRM_FORMAT_R10 mod: IPU3_FORMAT_MOD_PACKED - - RGGB_PISP_COMP1: - fourcc: DRM_FORMAT_SRGGB16 - mod: PISP_FORMAT_MOD_COMPRESS_MODE1 - - GRBG_PISP_COMP1: - fourcc: DRM_FORMAT_SGRBG16 - mod: PISP_FORMAT_MOD_COMPRESS_MODE1 - - GBRG_PISP_COMP1: - fourcc: DRM_FORMAT_SGBRG16 - mod: PISP_FORMAT_MOD_COMPRESS_MODE1 - - BGGR_PISP_COMP1: - fourcc: DRM_FORMAT_SBGGR16 - mod: PISP_FORMAT_MOD_COMPRESS_MODE1 - MONO_PISP_COMP1: fourcc: DRM_FORMAT_R16 mod: PISP_FORMAT_MOD_COMPRESS_MODE1 + - RAW_PISP_COMP1: + fourcc: DRM_FORMAT_R16 + mod: PISP_FORMAT_MOD_COMPRESS_MODE1 ... diff --git a/src/libcamera/v4l2_pixelformat.cpp b/src/libcamera/v4l2_pixelformat.cpp index c3e01a10e72a..d51987c5ad8a 100644 --- a/src/libcamera/v4l2_pixelformat.cpp +++ b/src/libcamera/v4l2_pixelformat.cpp @@ -145,78 +145,96 @@ const std::map vpf2pf{ { formats::R16, "16-bit Greyscale" } }, /* Bayer formats. */ + { V4L2PixelFormat(V4L2_PIX_FMT_RAW_8), + { formats::RAW8, "8-bit Raw" } }, { V4L2PixelFormat(V4L2_PIX_FMT_SBGGR8), - { formats::SBGGR8, "8-bit Bayer BGBG/GRGR" } }, + { formats::RAW8, "8-bit Bayer BGBG/GRGR" } }, { V4L2PixelFormat(V4L2_PIX_FMT_SGBRG8), - { formats::SGBRG8, "8-bit Bayer GBGB/RGRG" } }, + { formats::RAW8, "8-bit Bayer GBGB/RGRG" } }, { V4L2PixelFormat(V4L2_PIX_FMT_SGRBG8), - { formats::SGRBG8, "8-bit Bayer GRGR/BGBG" } }, + { formats::RAW8, "8-bit Bayer GRGR/BGBG" } }, { V4L2PixelFormat(V4L2_PIX_FMT_SRGGB8), - { formats::SRGGB8, "8-bit Bayer RGRG/GBGB" } }, + { formats::RAW8, "8-bit Bayer RGRG/GBGB" } }, + { V4L2PixelFormat(V4L2_PIX_FMT_RAW_10), + { formats::RAW10, "10-bit Raw" } }, { V4L2PixelFormat(V4L2_PIX_FMT_SBGGR10), - { formats::SBGGR10, "10-bit Bayer BGBG/GRGR" } }, + { formats::RAW10, "10-bit Bayer BGBG/GRGR" } }, { V4L2PixelFormat(V4L2_PIX_FMT_SGBRG10), - { formats::SGBRG10, "10-bit Bayer GBGB/RGRG" } }, + { formats::RAW10, "10-bit Bayer GBGB/RGRG" } }, { V4L2PixelFormat(V4L2_PIX_FMT_SGRBG10), - { formats::SGRBG10, "10-bit Bayer GRGR/BGBG" } }, + { formats::RAW10, "10-bit Bayer GRGR/BGBG" } }, { V4L2PixelFormat(V4L2_PIX_FMT_SRGGB10), - { formats::SRGGB10, "10-bit Bayer RGRG/GBGB" } }, + { formats::RAW10, "10-bit Bayer RGRG/GBGB" } }, + { V4L2PixelFormat(V4L2_PIX_FMT_RAW_CSI2_10), + { formats::RAW10_CSI2P, "10-bit Raw Packed" } }, { V4L2PixelFormat(V4L2_PIX_FMT_SBGGR10P), - { formats::SBGGR10_CSI2P, "10-bit Bayer BGBG/GRGR Packed" } }, + { formats::RAW10_CSI2P, "10-bit Bayer BGBG/GRGR Packed" } }, { V4L2PixelFormat(V4L2_PIX_FMT_SGBRG10P), - { formats::SGBRG10_CSI2P, "10-bit Bayer GBGB/RGRG Packed" } }, + { formats::RAW10_CSI2P, "10-bit Bayer GBGB/RGRG Packed" } }, { V4L2PixelFormat(V4L2_PIX_FMT_SGRBG10P), - { formats::SGRBG10_CSI2P, "10-bit Bayer GRGR/BGBG Packed" } }, + { formats::RAW10_CSI2P, "10-bit Bayer GRGR/BGBG Packed" } }, { V4L2PixelFormat(V4L2_PIX_FMT_SRGGB10P), - { formats::SRGGB10_CSI2P, "10-bit Bayer RGRG/GBGB Packed" } }, + { formats::RAW10_CSI2P, "10-bit Bayer RGRG/GBGB Packed" } }, + { V4L2PixelFormat(V4L2_PIX_FMT_RAW_12), + { formats::RAW12, "12-bit Raw" } }, { V4L2PixelFormat(V4L2_PIX_FMT_SBGGR12), - { formats::SBGGR12, "12-bit Bayer BGBG/GRGR" } }, + { formats::RAW12, "12-bit Bayer BGBG/GRGR" } }, { V4L2PixelFormat(V4L2_PIX_FMT_SGBRG12), - { formats::SGBRG12, "12-bit Bayer GBGB/RGRG" } }, + { formats::RAW12, "12-bit Bayer GBGB/RGRG" } }, { V4L2PixelFormat(V4L2_PIX_FMT_SGRBG12), - { formats::SGRBG12, "12-bit Bayer GRGR/BGBG" } }, + { formats::RAW12, "12-bit Bayer GRGR/BGBG" } }, { V4L2PixelFormat(V4L2_PIX_FMT_SRGGB12), - { formats::SRGGB12, "12-bit Bayer RGRG/GBGB" } }, + { formats::RAW12, "12-bit Bayer RGRG/GBGB" } }, + { V4L2PixelFormat(V4L2_PIX_FMT_RAW_CSI2_12), + { formats::RAW12_CSI2P, "12-bit Raw Packed" } }, { V4L2PixelFormat(V4L2_PIX_FMT_SBGGR12P), - { formats::SBGGR12_CSI2P, "12-bit Bayer BGBG/GRGR Packed" } }, + { formats::RAW12_CSI2P, "12-bit Bayer BGBG/GRGR Packed" } }, { V4L2PixelFormat(V4L2_PIX_FMT_SGBRG12P), - { formats::SGBRG12_CSI2P, "12-bit Bayer GBGB/RGRG Packed" } }, + { formats::RAW12_CSI2P, "12-bit Bayer GBGB/RGRG Packed" } }, { V4L2PixelFormat(V4L2_PIX_FMT_SGRBG12P), - { formats::SGRBG12_CSI2P, "12-bit Bayer GRGR/BGBG Packed" } }, + { formats::RAW12_CSI2P, "12-bit Bayer GRGR/BGBG Packed" } }, { V4L2PixelFormat(V4L2_PIX_FMT_SRGGB12P), - { formats::SRGGB12_CSI2P, "12-bit Bayer RGRG/GBGB Packed" } }, + { formats::RAW12_CSI2P, "12-bit Bayer RGRG/GBGB Packed" } }, + { V4L2PixelFormat(V4L2_PIX_FMT_RAW_14), + { formats::RAW14, "14-bit Raw" } }, { V4L2PixelFormat(V4L2_PIX_FMT_SBGGR14), - { formats::SBGGR14, "14-bit Bayer BGBG/GRGR" } }, + { formats::RAW14, "14-bit Bayer BGBG/GRGR" } }, { V4L2PixelFormat(V4L2_PIX_FMT_SGBRG14), - { formats::SGBRG14, "14-bit Bayer GBGB/RGRG" } }, + { formats::RAW14, "14-bit Bayer GBGB/RGRG" } }, { V4L2PixelFormat(V4L2_PIX_FMT_SGRBG14), - { formats::SGRBG14, "14-bit Bayer GRGR/BGBG" } }, + { formats::RAW14, "14-bit Bayer GRGR/BGBG" } }, { V4L2PixelFormat(V4L2_PIX_FMT_SRGGB14), - { formats::SRGGB14, "14-bit Bayer RGRG/GBGB" } }, + { formats::RAW14, "14-bit Bayer RGRG/GBGB" } }, + { V4L2PixelFormat(V4L2_PIX_FMT_RAW_CSI2_14), + { formats::RAW14_CSI2P, "14-bit Raw Packed" } }, { V4L2PixelFormat(V4L2_PIX_FMT_SBGGR14P), - { formats::SBGGR14_CSI2P, "14-bit Bayer BGBG/GRGR Packed" } }, + { formats::RAW14_CSI2P, "14-bit Bayer BGBG/GRGR Packed" } }, { V4L2PixelFormat(V4L2_PIX_FMT_SGBRG14P), - { formats::SGBRG14_CSI2P, "14-bit Bayer GBGB/RGRG Packed" } }, + { formats::RAW14_CSI2P, "14-bit Bayer GBGB/RGRG Packed" } }, { V4L2PixelFormat(V4L2_PIX_FMT_SGRBG14P), - { formats::SGRBG14_CSI2P, "14-bit Bayer GRGR/BGBG Packed" } }, + { formats::RAW14_CSI2P, "14-bit Bayer GRGR/BGBG Packed" } }, { V4L2PixelFormat(V4L2_PIX_FMT_SRGGB14P), - { formats::SRGGB14_CSI2P, "14-bit Bayer RGRG/GBGB Packed" } }, + { formats::RAW14_CSI2P, "14-bit Bayer RGRG/GBGB Packed" } }, + { V4L2PixelFormat(V4L2_PIX_FMT_RAW_16), + { formats::RAW16, "16-bit Raw" } }, { V4L2PixelFormat(V4L2_PIX_FMT_SBGGR16), - { formats::SBGGR16, "16-bit Bayer BGBG/GRGR" } }, + { formats::RAW16, "16-bit Bayer BGBG/GRGR" } }, { V4L2PixelFormat(V4L2_PIX_FMT_SGBRG16), - { formats::SGBRG16, "16-bit Bayer GBGB/RGRG" } }, + { formats::RAW16, "16-bit Bayer GBGB/RGRG" } }, { V4L2PixelFormat(V4L2_PIX_FMT_SGRBG16), - { formats::SGRBG16, "16-bit Bayer GRGR/BGBG" } }, + { formats::RAW16, "16-bit Bayer GRGR/BGBG" } }, { V4L2PixelFormat(V4L2_PIX_FMT_SRGGB16), - { formats::SRGGB16, "16-bit Bayer RGRG/GBGB" } }, + { formats::RAW16, "16-bit Bayer RGRG/GBGB" } }, + { V4L2PixelFormat(V4L2_PIX_FMT_PISP_COMP1_RAW), + { formats::RAW_PISP_COMP1, "16-bit Raw PiSP Compress Mode 1" } }, { V4L2PixelFormat(V4L2_PIX_FMT_PISP_COMP1_BGGR), - { formats::BGGR_PISP_COMP1, "16-bit Bayer BGBG/GRGR PiSP Compress Mode 1" } }, + { formats::RAW_PISP_COMP1, "16-bit Bayer BGBG/GRGR PiSP Compress Mode 1" } }, { V4L2PixelFormat(V4L2_PIX_FMT_PISP_COMP1_GBRG), - { formats::GBRG_PISP_COMP1, "16-bit Bayer GBGB/RGRG PiSP Compress Mode 1" } }, + { formats::RAW_PISP_COMP1, "16-bit Bayer GBGB/RGRG PiSP Compress Mode 1" } }, { V4L2PixelFormat(V4L2_PIX_FMT_PISP_COMP1_GRBG), - { formats::GRBG_PISP_COMP1, "16-bit Bayer GRGR/BGBG PiSP Compress Mode 1" } }, + { formats::RAW_PISP_COMP1, "16-bit Bayer GRGR/BGBG PiSP Compress Mode 1" } }, { V4L2PixelFormat(V4L2_PIX_FMT_PISP_COMP1_RGGB), - { formats::RGGB_PISP_COMP1, "16-bit Bayer RGRG/GBGB PiSP Compress Mode 1" } }, + { formats::RAW_PISP_COMP1, "16-bit Bayer RGRG/GBGB PiSP Compress Mode 1" } }, { V4L2PixelFormat(V4L2_PIX_FMT_PISP_COMP1_MONO), { formats::MONO_PISP_COMP1, "16-bit Mono PiSP Compress Mode 1" } },