From patchwork Fri Oct 23 10:58:25 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jai Luthra X-Patchwork-Id: 28587 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 3B945C324C for ; Fri, 23 Oct 2026 11:00:18 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id E7DAD68FCE; Fri, 23 Oct 2026 13:00:17 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="VMMkAzJV"; 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 53C7D68FBF for ; Fri, 23 Oct 2026 13:00:16 +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 08F05104A; Fri, 23 Oct 2026 12:58:06 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1792753087; bh=liksVoGYePIdyMNgcNXYOuIOINiNUZn8O7qLaSyiLak=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=VMMkAzJVwtVJWc5UvKPG6ObRG3Fw1IR01VrotCWVEeRSZa2tkkH24I7K4odFBpuYy 7X7EG3hNwifDgakcUGQzc4jEYXfnC9eJZUUtJZzzfrXbT6NjmLHTnJkkpkDZdCdi/N /HVAXHIWwwYUus3gR/te7TbCvsBpKKtLHYdQeQwA= From: Jai Luthra Date: Fri, 23 Oct 2026 16:28:25 +0530 Subject: [PATCH WIP RFC 17/26] libcamera: bayer_format: Strip out ColorFilterArray from BayerFormat MIME-Version: 1.0 Message-Id: <20261023-b4-raw-model-v1-17-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=20083; i=jai.luthra@ideasonboard.com; h=from:subject:message-id; bh=liksVoGYePIdyMNgcNXYOuIOINiNUZn8O7qLaSyiLak=; b=owEBbQKS/ZANAwAKAUPekfkkmnFFAcsmYgBq2z3THEa9XLZ/UlVwbaNq8tkdnm7FBp57Wic0U j/5CY6/RkWJAjMEAAEKAB0WIQRN4NgY5dV16NRar8VD3pH5JJpxRQUCats90wAKCRBD3pH5JJpx Re3HEADTtqYVBgIBl7qciqXLwnbmWSUeY1ZZynioL+GQfTMlS85PFetM9Z+akjYV7+dLSnArvQH L49PjPVrCoYAvM0NTyjbeQtH0pk87bqZu5qKu9wzs0R2Oi0kIUjjp+eAxB2Jj/q7/wD0mUDmYRF IdIGELC3bEx2ihzxMh08S3qlk054v5fQ9MzylAwHFXyBUUiVRk7oefO6CcXWAta4Hw/Qmf0V1ao mSFLTLDN6BgObT8MoCk7yDZsrIb04ul6OqkNeve5IIP+G0vqUZ57Fjz2r++4yNCVci+zGZmPhHp dxj9kn9ki/E16+a9aINfLwgNot0AjHqWrL4E+FoMZbCu0DwbdXMUaLL/IiLM7vs9gWJohWHmB8m f1mnlFAWglZkaugmOYh/H3JO6fIwlQPYlveTRvLcQ/lVgM3eB+AnRWG9m+LDRq+thnBdzBYyLtW GrabBUAtcPN7cWRsYsSvuytAHvdcosUuVs6I9BD+izho0nTon5XvGqoe1W4b16auE5w8hq54MBX WPeCw27nOAPNuD6JMIxrQiSkNZKQvkIjX9uYsxNoQSjtkh1r6jZml9O0J1jr2RLNINjFsbPEKT8 a0+ZEH9DKkuksyUr0SVCbClpVvVBI9fjXg+goKgkRlEsIvaw57Wnz5VKHxz/fDa4fT77x+8CwQ0 Wc7Pq9T1BOfo1mQ== 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" Now that we have generic PixelFormats in place, complete the splitting of the ColorFilterArray from the BayerFormat class that we started a few commits before. This is a breaking change for most pipelines. Signed-off-by: Jai Luthra --- include/libcamera/internal/bayer_format.h | 10 +- src/libcamera/bayer_format.cpp | 233 ++++++++++-------------------- 2 files changed, 80 insertions(+), 163 deletions(-) diff --git a/include/libcamera/internal/bayer_format.h b/include/libcamera/internal/bayer_format.h index 701e063edcc5..2981f5b3f50d 100644 --- a/include/libcamera/internal/bayer_format.h +++ b/include/libcamera/internal/bayer_format.h @@ -11,15 +11,12 @@ #include #include -#include #include #include "libcamera/internal/v4l2_pixelformat.h" namespace libcamera { -enum class Transform; - class BayerFormat { public: @@ -32,12 +29,12 @@ public: }; constexpr BayerFormat() - : cfa(ColorFilterArray()), bitDepth(0), packing(Packing::None) + : bitDepth(0), packing(Packing::None) { } - constexpr BayerFormat(ColorFilterArray c, uint8_t b, Packing p) - : cfa(c), bitDepth(b), packing(p) + constexpr BayerFormat(uint8_t b, Packing p) + : bitDepth(b), packing(p) { } @@ -51,7 +48,6 @@ public: PixelFormat toPixelFormat() const; static BayerFormat fromPixelFormat(PixelFormat format); - ColorFilterArray cfa; uint8_t bitDepth; Packing packing; diff --git a/src/libcamera/bayer_format.cpp b/src/libcamera/bayer_format.cpp index c0d5af33dd17..9a4581a6f021 100644 --- a/src/libcamera/bayer_format.cpp +++ b/src/libcamera/bayer_format.cpp @@ -14,9 +14,7 @@ #include -#include #include -#include /** * \file bayer_format.h @@ -30,8 +28,10 @@ namespace libcamera { * \brief Class to represent a raw image Bayer format * * This class encodes the different Bayer formats in such a way that they can - * be easily manipulated. For example the bit depth, packing and color order of - * the format transmitted over the bus can be modified and transformed. + * be easily manipulated. For example the bit depth and packing of the format + * transmitted over the bus can be modified. The order of the colour channels + * itself is not encoded in a BayerFormat: it is described separately by the + * ColorFilterArray associated with the stream. */ /** @@ -61,11 +61,6 @@ struct BayerFormatComparator { else if (lhs.bitDepth > rhs.bitDepth) return false; - if (lhs.cfa.order < rhs.cfa.order) - return true; - else if (lhs.cfa.order > rhs.cfa.order) - return false; - if (lhs.packing < rhs.packing) return true; else @@ -79,143 +74,76 @@ struct Formats { }; const std::map bayerToFormat{ - { { ColorFilterArray::BGGR, 8, BayerFormat::Packing::None }, - { formats::SBGGR8, V4L2PixelFormat(V4L2_PIX_FMT_SBGGR8) } }, - { { ColorFilterArray::GBRG, 8, BayerFormat::Packing::None }, - { formats::SGBRG8, V4L2PixelFormat(V4L2_PIX_FMT_SGBRG8) } }, - { { ColorFilterArray::GRBG, 8, BayerFormat::Packing::None }, - { formats::SGRBG8, V4L2PixelFormat(V4L2_PIX_FMT_SGRBG8) } }, - { { ColorFilterArray::RGGB, 8, BayerFormat::Packing::None }, - { formats::SRGGB8, V4L2PixelFormat(V4L2_PIX_FMT_SRGGB8) } }, - { { ColorFilterArray::BGGR, 10, BayerFormat::Packing::None }, - { formats::SBGGR10, V4L2PixelFormat(V4L2_PIX_FMT_SBGGR10) } }, - { { ColorFilterArray::GBRG, 10, BayerFormat::Packing::None }, - { formats::SGBRG10, V4L2PixelFormat(V4L2_PIX_FMT_SGBRG10) } }, - { { ColorFilterArray::GRBG, 10, BayerFormat::Packing::None }, - { formats::SGRBG10, V4L2PixelFormat(V4L2_PIX_FMT_SGRBG10) } }, - { { ColorFilterArray::RGGB, 10, BayerFormat::Packing::None }, - { formats::SRGGB10, V4L2PixelFormat(V4L2_PIX_FMT_SRGGB10) } }, - { { ColorFilterArray::BGGR, 10, BayerFormat::Packing::CSI2 }, - { formats::SBGGR10_CSI2P, V4L2PixelFormat(V4L2_PIX_FMT_SBGGR10P) } }, - { { ColorFilterArray::GBRG, 10, BayerFormat::Packing::CSI2 }, - { formats::SGBRG10_CSI2P, V4L2PixelFormat(V4L2_PIX_FMT_SGBRG10P) } }, - { { ColorFilterArray::GRBG, 10, BayerFormat::Packing::CSI2 }, - { formats::SGRBG10_CSI2P, V4L2PixelFormat(V4L2_PIX_FMT_SGRBG10P) } }, - { { ColorFilterArray::RGGB, 10, BayerFormat::Packing::CSI2 }, - { formats::SRGGB10_CSI2P, V4L2PixelFormat(V4L2_PIX_FMT_SRGGB10P) } }, - { { ColorFilterArray::BGGR, 10, BayerFormat::Packing::IPU3 }, - { formats::SBGGR10_IPU3, V4L2PixelFormat(V4L2_PIX_FMT_IPU3_SBGGR10) } }, - { { ColorFilterArray::GBRG, 10, BayerFormat::Packing::IPU3 }, - { formats::SGBRG10_IPU3, V4L2PixelFormat(V4L2_PIX_FMT_IPU3_SGBRG10) } }, - { { ColorFilterArray::GRBG, 10, BayerFormat::Packing::IPU3 }, - { formats::SGRBG10_IPU3, V4L2PixelFormat(V4L2_PIX_FMT_IPU3_SGRBG10) } }, - { { ColorFilterArray::RGGB, 10, BayerFormat::Packing::IPU3 }, - { formats::SRGGB10_IPU3, V4L2PixelFormat(V4L2_PIX_FMT_IPU3_SRGGB10) } }, - { { ColorFilterArray::BGGR, 12, BayerFormat::Packing::None }, - { formats::SBGGR12, V4L2PixelFormat(V4L2_PIX_FMT_SBGGR12) } }, - { { ColorFilterArray::GBRG, 12, BayerFormat::Packing::None }, - { formats::SGBRG12, V4L2PixelFormat(V4L2_PIX_FMT_SGBRG12) } }, - { { ColorFilterArray::GRBG, 12, BayerFormat::Packing::None }, - { formats::SGRBG12, V4L2PixelFormat(V4L2_PIX_FMT_SGRBG12) } }, - { { ColorFilterArray::RGGB, 12, BayerFormat::Packing::None }, - { formats::SRGGB12, V4L2PixelFormat(V4L2_PIX_FMT_SRGGB12) } }, - { { ColorFilterArray::BGGR, 12, BayerFormat::Packing::CSI2 }, - { formats::SBGGR12_CSI2P, V4L2PixelFormat(V4L2_PIX_FMT_SBGGR12P) } }, - { { ColorFilterArray::GBRG, 12, BayerFormat::Packing::CSI2 }, - { formats::SGBRG12_CSI2P, V4L2PixelFormat(V4L2_PIX_FMT_SGBRG12P) } }, - { { ColorFilterArray::GRBG, 12, BayerFormat::Packing::CSI2 }, - { formats::SGRBG12_CSI2P, V4L2PixelFormat(V4L2_PIX_FMT_SGRBG12P) } }, - { { ColorFilterArray::RGGB, 12, BayerFormat::Packing::CSI2 }, - { formats::SRGGB12_CSI2P, V4L2PixelFormat(V4L2_PIX_FMT_SRGGB12P) } }, - { { ColorFilterArray::BGGR, 14, BayerFormat::Packing::None }, - { formats::SBGGR14, V4L2PixelFormat(V4L2_PIX_FMT_SBGGR14) } }, - { { ColorFilterArray::GBRG, 14, BayerFormat::Packing::None }, - { formats::SGBRG14, V4L2PixelFormat(V4L2_PIX_FMT_SGBRG14) } }, - { { ColorFilterArray::GRBG, 14, BayerFormat::Packing::None }, - { formats::SGRBG14, V4L2PixelFormat(V4L2_PIX_FMT_SGRBG14) } }, - { { ColorFilterArray::RGGB, 14, BayerFormat::Packing::None }, - { formats::SRGGB14, V4L2PixelFormat(V4L2_PIX_FMT_SRGGB14) } }, - { { ColorFilterArray::BGGR, 14, BayerFormat::Packing::CSI2 }, - { formats::SBGGR14_CSI2P, V4L2PixelFormat(V4L2_PIX_FMT_SBGGR14P) } }, - { { ColorFilterArray::GBRG, 14, BayerFormat::Packing::CSI2 }, - { formats::SGBRG14_CSI2P, V4L2PixelFormat(V4L2_PIX_FMT_SGBRG14P) } }, - { { ColorFilterArray::GRBG, 14, BayerFormat::Packing::CSI2 }, - { formats::SGRBG14_CSI2P, V4L2PixelFormat(V4L2_PIX_FMT_SGRBG14P) } }, - { { ColorFilterArray::RGGB, 14, BayerFormat::Packing::CSI2 }, - { formats::SRGGB14_CSI2P, V4L2PixelFormat(V4L2_PIX_FMT_SRGGB14P) } }, - { { ColorFilterArray::BGGR, 16, BayerFormat::Packing::None }, - { formats::SBGGR16, V4L2PixelFormat(V4L2_PIX_FMT_SBGGR16) } }, - { { ColorFilterArray::GBRG, 16, BayerFormat::Packing::None }, - { formats::SGBRG16, V4L2PixelFormat(V4L2_PIX_FMT_SGBRG16) } }, - { { ColorFilterArray::GRBG, 16, BayerFormat::Packing::None }, - { formats::SGRBG16, V4L2PixelFormat(V4L2_PIX_FMT_SGRBG16) } }, - { { ColorFilterArray::RGGB, 16, BayerFormat::Packing::None }, - { formats::SRGGB16, V4L2PixelFormat(V4L2_PIX_FMT_SRGGB16) } }, - { { ColorFilterArray::BGGR, 16, BayerFormat::Packing::PISP1 }, - { formats::BGGR_PISP_COMP1, V4L2PixelFormat(V4L2_PIX_FMT_PISP_COMP1_BGGR) } }, - { { ColorFilterArray::GBRG, 16, BayerFormat::Packing::PISP1 }, - { formats::GBRG_PISP_COMP1, V4L2PixelFormat(V4L2_PIX_FMT_PISP_COMP1_GBRG) } }, - { { ColorFilterArray::GRBG, 16, BayerFormat::Packing::PISP1 }, - { formats::GRBG_PISP_COMP1, V4L2PixelFormat(V4L2_PIX_FMT_PISP_COMP1_GRBG) } }, - { { ColorFilterArray::RGGB, 16, BayerFormat::Packing::PISP1 }, - { formats::RGGB_PISP_COMP1, V4L2PixelFormat(V4L2_PIX_FMT_PISP_COMP1_RGGB) } }, - { { ColorFilterArray::MONO, 8, BayerFormat::Packing::None }, - { formats::R8, V4L2PixelFormat(V4L2_PIX_FMT_GREY) } }, - { { ColorFilterArray::MONO, 10, BayerFormat::Packing::None }, - { formats::R10, V4L2PixelFormat(V4L2_PIX_FMT_Y10) } }, - { { ColorFilterArray::MONO, 10, BayerFormat::Packing::CSI2 }, - { formats::R10_CSI2P, V4L2PixelFormat(V4L2_PIX_FMT_Y10P) } }, - { { ColorFilterArray::MONO, 12, BayerFormat::Packing::None }, - { formats::R12, V4L2PixelFormat(V4L2_PIX_FMT_Y12) } }, - { { ColorFilterArray::MONO, 12, BayerFormat::Packing::CSI2 }, - { formats::R12_CSI2P, V4L2PixelFormat(V4L2_PIX_FMT_Y12P) } }, - { { ColorFilterArray::MONO, 16, BayerFormat::Packing::None }, - { formats::R16, V4L2PixelFormat(V4L2_PIX_FMT_Y16) } }, - { { ColorFilterArray::MONO, 16, BayerFormat::Packing::PISP1 }, - { formats::MONO_PISP_COMP1, V4L2PixelFormat(V4L2_PIX_FMT_PISP_COMP1_MONO) } }, + { { 8, BayerFormat::Packing::None }, + { formats::RAW8, V4L2PixelFormat(V4L2_PIX_FMT_RAW_8) } }, + { { 10, BayerFormat::Packing::None }, + { formats::RAW10, V4L2PixelFormat(V4L2_PIX_FMT_RAW_10) } }, + { { 10, BayerFormat::Packing::CSI2 }, + { formats::RAW10_CSI2P, V4L2PixelFormat(V4L2_PIX_FMT_RAW_CSI2_10) } }, + { { 10, BayerFormat::Packing::IPU3 }, + { formats::RAW10_IPU3, V4L2PixelFormat(V4L2_PIX_FMT_IPU3_RAW10) } }, + { { 12, BayerFormat::Packing::None }, + { formats::RAW12, V4L2PixelFormat(V4L2_PIX_FMT_RAW_12) } }, + { { 12, BayerFormat::Packing::CSI2 }, + { formats::RAW12_CSI2P, V4L2PixelFormat(V4L2_PIX_FMT_RAW_CSI2_12) } }, + { { 14, BayerFormat::Packing::None }, + { formats::RAW14, V4L2PixelFormat(V4L2_PIX_FMT_RAW_14) } }, + { { 14, BayerFormat::Packing::CSI2 }, + { formats::RAW14_CSI2P, V4L2PixelFormat(V4L2_PIX_FMT_RAW_CSI2_14) } }, + { { 16, BayerFormat::Packing::None }, + { formats::RAW16, V4L2PixelFormat(V4L2_PIX_FMT_RAW_16) } }, + { { 16, BayerFormat::Packing::PISP1 }, + { formats::RAW_PISP_COMP1, V4L2PixelFormat(V4L2_PIX_FMT_PISP_COMP1_RAW) } }, }; const std::unordered_map mbusCodeToBayer{ - { MEDIA_BUS_FMT_SBGGR8_1X8, { ColorFilterArray::BGGR, 8, BayerFormat::Packing::None } }, - { MEDIA_BUS_FMT_SGBRG8_1X8, { ColorFilterArray::GBRG, 8, BayerFormat::Packing::None } }, - { MEDIA_BUS_FMT_SGRBG8_1X8, { ColorFilterArray::GRBG, 8, BayerFormat::Packing::None } }, - { MEDIA_BUS_FMT_SRGGB8_1X8, { ColorFilterArray::RGGB, 8, BayerFormat::Packing::None } }, - { MEDIA_BUS_FMT_SBGGR10_ALAW8_1X8, { ColorFilterArray::BGGR, 8, BayerFormat::Packing::None } }, - { MEDIA_BUS_FMT_SGBRG10_ALAW8_1X8, { ColorFilterArray::GBRG, 8, BayerFormat::Packing::None } }, - { MEDIA_BUS_FMT_SGRBG10_ALAW8_1X8, { ColorFilterArray::GRBG, 8, BayerFormat::Packing::None } }, - { MEDIA_BUS_FMT_SRGGB10_ALAW8_1X8, { ColorFilterArray::RGGB, 8, BayerFormat::Packing::None } }, - { MEDIA_BUS_FMT_SBGGR10_DPCM8_1X8, { ColorFilterArray::BGGR, 8, BayerFormat::Packing::None } }, - { MEDIA_BUS_FMT_SGBRG10_DPCM8_1X8, { ColorFilterArray::GBRG, 8, BayerFormat::Packing::None } }, - { MEDIA_BUS_FMT_SGRBG10_DPCM8_1X8, { ColorFilterArray::GRBG, 8, BayerFormat::Packing::None } }, - { MEDIA_BUS_FMT_SRGGB10_DPCM8_1X8, { ColorFilterArray::RGGB, 8, BayerFormat::Packing::None } }, - { MEDIA_BUS_FMT_SBGGR10_2X8_PADHI_BE, { ColorFilterArray::BGGR, 10, BayerFormat::Packing::None } }, - { MEDIA_BUS_FMT_SBGGR10_2X8_PADHI_LE, { ColorFilterArray::BGGR, 10, BayerFormat::Packing::None } }, - { MEDIA_BUS_FMT_SBGGR10_2X8_PADLO_BE, { ColorFilterArray::BGGR, 10, BayerFormat::Packing::None } }, - { MEDIA_BUS_FMT_SBGGR10_2X8_PADLO_LE, { ColorFilterArray::BGGR, 10, BayerFormat::Packing::None } }, - { MEDIA_BUS_FMT_SBGGR10_1X10, { ColorFilterArray::BGGR, 10, BayerFormat::Packing::None } }, - { MEDIA_BUS_FMT_SGBRG10_1X10, { ColorFilterArray::GBRG, 10, BayerFormat::Packing::None } }, - { MEDIA_BUS_FMT_SGRBG10_1X10, { ColorFilterArray::GRBG, 10, BayerFormat::Packing::None } }, - { MEDIA_BUS_FMT_SRGGB10_1X10, { ColorFilterArray::RGGB, 10, BayerFormat::Packing::None } }, - { MEDIA_BUS_FMT_SBGGR12_1X12, { ColorFilterArray::BGGR, 12, BayerFormat::Packing::None } }, - { MEDIA_BUS_FMT_SGBRG12_1X12, { ColorFilterArray::GBRG, 12, BayerFormat::Packing::None } }, - { MEDIA_BUS_FMT_SGRBG12_1X12, { ColorFilterArray::GRBG, 12, BayerFormat::Packing::None } }, - { MEDIA_BUS_FMT_SRGGB12_1X12, { ColorFilterArray::RGGB, 12, BayerFormat::Packing::None } }, - { MEDIA_BUS_FMT_SBGGR14_1X14, { ColorFilterArray::BGGR, 14, BayerFormat::Packing::None } }, - { MEDIA_BUS_FMT_SGBRG14_1X14, { ColorFilterArray::GBRG, 14, BayerFormat::Packing::None } }, - { MEDIA_BUS_FMT_SGRBG14_1X14, { ColorFilterArray::GRBG, 14, BayerFormat::Packing::None } }, - { MEDIA_BUS_FMT_SRGGB14_1X14, { ColorFilterArray::RGGB, 14, BayerFormat::Packing::None } }, - { MEDIA_BUS_FMT_SBGGR16_1X16, { ColorFilterArray::BGGR, 16, BayerFormat::Packing::None } }, - { MEDIA_BUS_FMT_SGBRG16_1X16, { ColorFilterArray::GBRG, 16, BayerFormat::Packing::None } }, - { MEDIA_BUS_FMT_SGRBG16_1X16, { ColorFilterArray::GRBG, 16, BayerFormat::Packing::None } }, - { MEDIA_BUS_FMT_SRGGB16_1X16, { ColorFilterArray::RGGB, 16, BayerFormat::Packing::None } }, - { MEDIA_BUS_FMT_SBGGR20_1X20, { ColorFilterArray::BGGR, 20, BayerFormat::Packing::None } }, - { MEDIA_BUS_FMT_SGBRG20_1X20, { ColorFilterArray::GBRG, 20, BayerFormat::Packing::None } }, - { MEDIA_BUS_FMT_SGRBG20_1X20, { ColorFilterArray::GRBG, 20, BayerFormat::Packing::None } }, - { MEDIA_BUS_FMT_SRGGB20_1X20, { ColorFilterArray::RGGB, 20, BayerFormat::Packing::None } }, - { MEDIA_BUS_FMT_Y8_1X8, { ColorFilterArray::MONO, 8, BayerFormat::Packing::None } }, - { MEDIA_BUS_FMT_Y10_1X10, { ColorFilterArray::MONO, 10, BayerFormat::Packing::None } }, - { MEDIA_BUS_FMT_Y12_1X12, { ColorFilterArray::MONO, 12, BayerFormat::Packing::None } }, - { MEDIA_BUS_FMT_Y16_1X16, { ColorFilterArray::MONO, 16, BayerFormat::Packing::None } }, + { MEDIA_BUS_FMT_SBGGR8_1X8, { 8, BayerFormat::Packing::None } }, + { MEDIA_BUS_FMT_SGBRG8_1X8, { 8, BayerFormat::Packing::None } }, + { MEDIA_BUS_FMT_SGRBG8_1X8, { 8, BayerFormat::Packing::None } }, + { MEDIA_BUS_FMT_SRGGB8_1X8, { 8, BayerFormat::Packing::None } }, + { MEDIA_BUS_FMT_RAW_8, { 8, BayerFormat::Packing::None } }, + { MEDIA_BUS_FMT_Y8_1X8, { 8, BayerFormat::Packing::None } }, + { MEDIA_BUS_FMT_SBGGR10_ALAW8_1X8, { 8, BayerFormat::Packing::None } }, + { MEDIA_BUS_FMT_SGBRG10_ALAW8_1X8, { 8, BayerFormat::Packing::None } }, + { MEDIA_BUS_FMT_SGRBG10_ALAW8_1X8, { 8, BayerFormat::Packing::None } }, + { MEDIA_BUS_FMT_SRGGB10_ALAW8_1X8, { 8, BayerFormat::Packing::None } }, + { MEDIA_BUS_FMT_SBGGR10_DPCM8_1X8, { 8, BayerFormat::Packing::None } }, + { MEDIA_BUS_FMT_SGBRG10_DPCM8_1X8, { 8, BayerFormat::Packing::None } }, + { MEDIA_BUS_FMT_SGRBG10_DPCM8_1X8, { 8, BayerFormat::Packing::None } }, + { MEDIA_BUS_FMT_SRGGB10_DPCM8_1X8, { 8, BayerFormat::Packing::None } }, + { MEDIA_BUS_FMT_SBGGR10_2X8_PADHI_BE, { 10, BayerFormat::Packing::None } }, + { MEDIA_BUS_FMT_SBGGR10_2X8_PADHI_LE, { 10, BayerFormat::Packing::None } }, + { MEDIA_BUS_FMT_SBGGR10_2X8_PADLO_BE, { 10, BayerFormat::Packing::None } }, + { MEDIA_BUS_FMT_SBGGR10_2X8_PADLO_LE, { 10, BayerFormat::Packing::None } }, + { MEDIA_BUS_FMT_SBGGR10_1X10, { 10, BayerFormat::Packing::None } }, + { MEDIA_BUS_FMT_SGBRG10_1X10, { 10, BayerFormat::Packing::None } }, + { MEDIA_BUS_FMT_SGRBG10_1X10, { 10, BayerFormat::Packing::None } }, + { MEDIA_BUS_FMT_SRGGB10_1X10, { 10, BayerFormat::Packing::None } }, + { MEDIA_BUS_FMT_Y10_1X10, { 10, BayerFormat::Packing::None } }, + { MEDIA_BUS_FMT_RAW_10, { 10, BayerFormat::Packing::None } }, + { MEDIA_BUS_FMT_SBGGR12_1X12, { 12, BayerFormat::Packing::None } }, + { MEDIA_BUS_FMT_SGBRG12_1X12, { 12, BayerFormat::Packing::None } }, + { MEDIA_BUS_FMT_SGRBG12_1X12, { 12, BayerFormat::Packing::None } }, + { MEDIA_BUS_FMT_SRGGB12_1X12, { 12, BayerFormat::Packing::None } }, + { MEDIA_BUS_FMT_RAW_12, { 12, BayerFormat::Packing::None } }, + { MEDIA_BUS_FMT_Y12_1X12, { 12, BayerFormat::Packing::None } }, + { MEDIA_BUS_FMT_SBGGR14_1X14, { 14, BayerFormat::Packing::None } }, + { MEDIA_BUS_FMT_SGBRG14_1X14, { 14, BayerFormat::Packing::None } }, + { MEDIA_BUS_FMT_SGRBG14_1X14, { 14, BayerFormat::Packing::None } }, + { MEDIA_BUS_FMT_SRGGB14_1X14, { 14, BayerFormat::Packing::None } }, + { MEDIA_BUS_FMT_RAW_14, { 14, BayerFormat::Packing::None } }, + { MEDIA_BUS_FMT_Y14_1X14, { 14, BayerFormat::Packing::None } }, + { MEDIA_BUS_FMT_SBGGR16_1X16, { 16, BayerFormat::Packing::None } }, + { MEDIA_BUS_FMT_SGBRG16_1X16, { 16, BayerFormat::Packing::None } }, + { MEDIA_BUS_FMT_SGRBG16_1X16, { 16, BayerFormat::Packing::None } }, + { MEDIA_BUS_FMT_SRGGB16_1X16, { 16, BayerFormat::Packing::None } }, + { MEDIA_BUS_FMT_RAW_16, { 16, BayerFormat::Packing::None } }, + { MEDIA_BUS_FMT_Y16_1X16, { 16, BayerFormat::Packing::None } }, + { MEDIA_BUS_FMT_SBGGR20_1X20, { 20, BayerFormat::Packing::None } }, + { MEDIA_BUS_FMT_SGBRG20_1X20, { 20, BayerFormat::Packing::None } }, + { MEDIA_BUS_FMT_SGRBG20_1X20, { 20, BayerFormat::Packing::None } }, + { MEDIA_BUS_FMT_SRGGB20_1X20, { 20, BayerFormat::Packing::None } }, + { MEDIA_BUS_FMT_RAW_20, { 20, BayerFormat::Packing::None } }, }; } /* namespace */ @@ -226,9 +154,8 @@ const std::unordered_map mbusCodeToBayer{ */ /** - * \fn BayerFormat::BayerFormat(ColorFilterArray c, uint8_t b, Packing p) + * \fn BayerFormat::BayerFormat(uint8_t b, Packing p) * \brief Construct a BayerFormat from explicit values - * \param[in] c The color filter array pattern * \param[in] b The bit depth of the Bayer samples * \param[in] p The type of packing applied to the pixel values */ @@ -270,12 +197,11 @@ std::string BayerFormat::toString() const /** * \brief Compare two BayerFormats for equality - * \return True if order, bitDepth and packing are equal, or false otherwise + * \return True if bitDepth and packing are equal, or false otherwise */ bool operator==(const BayerFormat &lhs, const BayerFormat &rhs) { - return lhs.cfa.order == rhs.cfa.order && lhs.bitDepth == rhs.bitDepth && - lhs.packing == rhs.packing; + return lhs.bitDepth == rhs.bitDepth && lhs.packing == rhs.packing; } /** @@ -286,13 +212,13 @@ bool operator==(const BayerFormat &lhs, const BayerFormat &rhs) */ std::ostream &operator<<(std::ostream &out, const BayerFormat &f) { - if (!f.isValid() || f.cfa.order > ColorFilterArray::MONO) { + if (!f.isValid()) { out << "INVALID"; return out; } /* The cast is required to avoid bitDepth being interpreted as a char. */ - out << f.cfa << "-" << static_cast(f.bitDepth); + out << "RAW-" << static_cast(f.bitDepth); if (f.packing == BayerFormat::Packing::CSI2) out << "-CSI2P"; @@ -309,7 +235,7 @@ std::ostream &operator<<(std::ostream &out, const BayerFormat &f) /** * \fn bool operator!=(const BayerFormat &lhs, const BayerFormat &rhs) * \brief Compare two BayerFormats for inequality - * \return True if either order, bitdepth or packing are not equal, or false + * \return True if either bitdepth or packing are not equal, or false * otherwise */ @@ -372,11 +298,6 @@ BayerFormat BayerFormat::fromPixelFormat(PixelFormat format) return BayerFormat(); } -/** - * \var BayerFormat::cfa - * \brief The color filter array pattern - */ - /** * \var BayerFormat::bitDepth * \brief The bit depth of the samples in the Bayer pattern