[06/10] libcamera: bayer_format: Add entries for the CRU packed RAWnn formats
diff mbox series

Message ID 20250724065256.75175-7-dan.scally@ideasonboard.com
State New
Headers show
Series
  • Support memory input mode in mali-c55
Related show

Commit Message

Dan Scally July 24, 2025, 6:52 a.m. UTC
Add entries to bayer_format.pp describing the CRU packed, bayer order
agnostic formats.

Signed-off-by: Daniel Scally <dan.scally@ideasonboard.com>
---
 src/libcamera/bayer_format.cpp | 8 ++++++++
 1 file changed, 8 insertions(+)

Comments

Jacopo Mondi Oct. 30, 2025, 11:49 a.m. UTC | #1
Hi Dan

On Thu, Jul 24, 2025 at 07:52:52AM +0100, Daniel Scally wrote:
> Add entries to bayer_format.pp describing the CRU packed, bayer order
> agnostic formats.
>
> Signed-off-by: Daniel Scally <dan.scally@ideasonboard.com>
> ---
>  src/libcamera/bayer_format.cpp | 8 ++++++++
>  1 file changed, 8 insertions(+)
>
> diff --git a/src/libcamera/bayer_format.cpp b/src/libcamera/bayer_format.cpp
> index 686a5c1e..1e016a6a 100644
> --- a/src/libcamera/bayer_format.cpp
> +++ b/src/libcamera/bayer_format.cpp
> @@ -133,6 +133,8 @@ const std::map<BayerFormat, Formats, BayerFormatComparator> bayerToFormat{
>  		{ formats::SGRBG10_IPU3, V4L2PixelFormat(V4L2_PIX_FMT_IPU3_SGRBG10) } },
>  	{ { BayerFormat::RGGB, 10, BayerFormat::Packing::IPU3 },
>  		{ formats::SRGGB10_IPU3, V4L2PixelFormat(V4L2_PIX_FMT_IPU3_SRGGB10) } },
> +	{ { BayerFormat::NONE, 10, BayerFormat::Packing::CRU },
> +		{ formats::RAW10_CRU, V4L2PixelFormat(V4L2_PIX_FMT_RAW_CRU10) } },
>  	{ { BayerFormat::BGGR, 12, BayerFormat::Packing::None },
>  		{ formats::SBGGR12, V4L2PixelFormat(V4L2_PIX_FMT_SBGGR12) } },
>  	{ { BayerFormat::GBRG, 12, BayerFormat::Packing::None },
> @@ -149,6 +151,8 @@ const std::map<BayerFormat, Formats, BayerFormatComparator> bayerToFormat{
>  		{ formats::SGRBG12_CSI2P, V4L2PixelFormat(V4L2_PIX_FMT_SGRBG12P) } },
>  	{ { BayerFormat::RGGB, 12, BayerFormat::Packing::CSI2 },
>  		{ formats::SRGGB12_CSI2P, V4L2PixelFormat(V4L2_PIX_FMT_SRGGB12P) } },
> +	{ { BayerFormat::NONE, 12, BayerFormat::Packing::CRU },
> +		{ formats::RAW12_CRU, V4L2PixelFormat(V4L2_PIX_FMT_RAW_CRU12) } },
>  	{ { BayerFormat::BGGR, 14, BayerFormat::Packing::None },
>  		{ formats::SBGGR14, V4L2PixelFormat(V4L2_PIX_FMT_SBGGR14) } },
>  	{ { BayerFormat::GBRG, 14, BayerFormat::Packing::None },
> @@ -165,6 +169,8 @@ const std::map<BayerFormat, Formats, BayerFormatComparator> bayerToFormat{
>  		{ formats::SGRBG14_CSI2P, V4L2PixelFormat(V4L2_PIX_FMT_SGRBG14P) } },
>  	{ { BayerFormat::RGGB, 14, BayerFormat::Packing::CSI2 },
>  		{ formats::SRGGB14_CSI2P, V4L2PixelFormat(V4L2_PIX_FMT_SRGGB14P) } },
> +	{ { BayerFormat::NONE, 14, BayerFormat::Packing::CRU },
> +		{ formats::RAW14_CRU, V4L2PixelFormat(V4L2_PIX_FMT_RAW_CRU14) } },
>  	{ { BayerFormat::BGGR, 16, BayerFormat::Packing::None },
>  		{ formats::SBGGR16, V4L2PixelFormat(V4L2_PIX_FMT_SBGGR16) } },
>  	{ { BayerFormat::GBRG, 16, BayerFormat::Packing::None },
> @@ -195,6 +201,8 @@ const std::map<BayerFormat, Formats, BayerFormatComparator> bayerToFormat{
>  		{ formats::R16, V4L2PixelFormat(V4L2_PIX_FMT_Y16) } },
>  	{ { BayerFormat::MONO, 16, BayerFormat::Packing::PISP1 },
>  		{ formats::MONO_PISP_COMP1, V4L2PixelFormat(V4L2_PIX_FMT_PISP_COMP1_MONO) } },
> +	{ { BayerFormat::NONE, 20, BayerFormat::Packing::CRU },
> +		{ formats::RAW20_CRU, V4L2PixelFormat(V4L2_PIX_FMT_RAW_CRU20) } },

Ah, I've now found where the 20 bits format are documented, in the RZ
V2H TRM but I still can't find them on the G2L one.

I would be interesting to know if the documentation is out-of-date for
the G2L or thereactually are differences between the two version.

Anyway, we don't really care about G2L as it doesn't have an ISP, so
V2H is our reference (another reason for not mentioning G2L anywhere
in this series).

For this patch
Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>


>  };
>
>  const std::unordered_map<unsigned int, BayerFormat> mbusCodeToBayer{
> --
> 2.30.2
>

Patch
diff mbox series

diff --git a/src/libcamera/bayer_format.cpp b/src/libcamera/bayer_format.cpp
index 686a5c1e..1e016a6a 100644
--- a/src/libcamera/bayer_format.cpp
+++ b/src/libcamera/bayer_format.cpp
@@ -133,6 +133,8 @@  const std::map<BayerFormat, Formats, BayerFormatComparator> bayerToFormat{
 		{ formats::SGRBG10_IPU3, V4L2PixelFormat(V4L2_PIX_FMT_IPU3_SGRBG10) } },
 	{ { BayerFormat::RGGB, 10, BayerFormat::Packing::IPU3 },
 		{ formats::SRGGB10_IPU3, V4L2PixelFormat(V4L2_PIX_FMT_IPU3_SRGGB10) } },
+	{ { BayerFormat::NONE, 10, BayerFormat::Packing::CRU },
+		{ formats::RAW10_CRU, V4L2PixelFormat(V4L2_PIX_FMT_RAW_CRU10) } },
 	{ { BayerFormat::BGGR, 12, BayerFormat::Packing::None },
 		{ formats::SBGGR12, V4L2PixelFormat(V4L2_PIX_FMT_SBGGR12) } },
 	{ { BayerFormat::GBRG, 12, BayerFormat::Packing::None },
@@ -149,6 +151,8 @@  const std::map<BayerFormat, Formats, BayerFormatComparator> bayerToFormat{
 		{ formats::SGRBG12_CSI2P, V4L2PixelFormat(V4L2_PIX_FMT_SGRBG12P) } },
 	{ { BayerFormat::RGGB, 12, BayerFormat::Packing::CSI2 },
 		{ formats::SRGGB12_CSI2P, V4L2PixelFormat(V4L2_PIX_FMT_SRGGB12P) } },
+	{ { BayerFormat::NONE, 12, BayerFormat::Packing::CRU },
+		{ formats::RAW12_CRU, V4L2PixelFormat(V4L2_PIX_FMT_RAW_CRU12) } },
 	{ { BayerFormat::BGGR, 14, BayerFormat::Packing::None },
 		{ formats::SBGGR14, V4L2PixelFormat(V4L2_PIX_FMT_SBGGR14) } },
 	{ { BayerFormat::GBRG, 14, BayerFormat::Packing::None },
@@ -165,6 +169,8 @@  const std::map<BayerFormat, Formats, BayerFormatComparator> bayerToFormat{
 		{ formats::SGRBG14_CSI2P, V4L2PixelFormat(V4L2_PIX_FMT_SGRBG14P) } },
 	{ { BayerFormat::RGGB, 14, BayerFormat::Packing::CSI2 },
 		{ formats::SRGGB14_CSI2P, V4L2PixelFormat(V4L2_PIX_FMT_SRGGB14P) } },
+	{ { BayerFormat::NONE, 14, BayerFormat::Packing::CRU },
+		{ formats::RAW14_CRU, V4L2PixelFormat(V4L2_PIX_FMT_RAW_CRU14) } },
 	{ { BayerFormat::BGGR, 16, BayerFormat::Packing::None },
 		{ formats::SBGGR16, V4L2PixelFormat(V4L2_PIX_FMT_SBGGR16) } },
 	{ { BayerFormat::GBRG, 16, BayerFormat::Packing::None },
@@ -195,6 +201,8 @@  const std::map<BayerFormat, Formats, BayerFormatComparator> bayerToFormat{
 		{ formats::R16, V4L2PixelFormat(V4L2_PIX_FMT_Y16) } },
 	{ { BayerFormat::MONO, 16, BayerFormat::Packing::PISP1 },
 		{ formats::MONO_PISP_COMP1, V4L2PixelFormat(V4L2_PIX_FMT_PISP_COMP1_MONO) } },
+	{ { BayerFormat::NONE, 20, BayerFormat::Packing::CRU },
+		{ formats::RAW20_CRU, V4L2PixelFormat(V4L2_PIX_FMT_RAW_CRU20) } },
 };
 
 const std::unordered_map<unsigned int, BayerFormat> mbusCodeToBayer{