[PATCH v6 09/14] libcamera: bayer_format: Add 20-bit bayer formats
Kieran Bingham
kieran.bingham at ideasonboard.com
Fri Nov 15 13:24:13 CET 2024
Quoting Daniel Scally (2024-11-15 10:13:29)
> Add support for the 20-bit bayer formats to libcamera's BayerFormat class.
>
> Signed-off-by: Daniel Scally <dan.scally at ideasonboard.com>
> ---
> Changes in v6:
>
> - New patch
>
> src/libcamera/bayer_format.cpp | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/src/libcamera/bayer_format.cpp b/src/libcamera/bayer_format.cpp
> index c2120d1c..3dab91fc 100644
> --- a/src/libcamera/bayer_format.cpp
> +++ b/src/libcamera/bayer_format.cpp
> @@ -225,6 +225,10 @@ const std::unordered_map<unsigned int, BayerFormat> mbusCodeToBayer{
> { MEDIA_BUS_FMT_SGBRG16_1X16, { BayerFormat::GBRG, 16, BayerFormat::Packing::None } },
> { MEDIA_BUS_FMT_SGRBG16_1X16, { BayerFormat::GRBG, 16, BayerFormat::Packing::None } },
> { MEDIA_BUS_FMT_SRGGB16_1X16, { BayerFormat::RGGB, 16, BayerFormat::Packing::None } },
> + { MEDIA_BUS_FMT_SBGGR20_1X20, { BayerFormat::BGGR, 20, BayerFormat::Packing::None } },
> + { MEDIA_BUS_FMT_SGBRG20_1X20, { BayerFormat::GBRG, 20, BayerFormat::Packing::None } },
> + { MEDIA_BUS_FMT_SGRBG20_1X20, { BayerFormat::GRBG, 20, BayerFormat::Packing::None } },
> + { MEDIA_BUS_FMT_SRGGB20_1X20, { BayerFormat::RGGB, 20, BayerFormat::Packing::None } },
These entries are so annoyingly duplicated... (not /your/ fault).
I wonder if we should/could macro this out with the preprocessor to :
#define MBUS_BAYER_FORMAT_CODE(code, bits) \
{ MEDIA_BUS_FMT_S#code#bits_1X#bits, { BayerFormat::GRBG, #bits, BayerFormat::Packing::None },
#define MBUS_BAYER_FORMAT(bits) \
MBUS_BAYER_FORMAT_CODE(BGGR, bits) \
MBUS_BAYER_FORMAT_CODE(GBRG, bits) \
MBUS_BAYER_FORMAT_CODE(GRBG, bits) \
MBUS_BAYER_FORMAT_CODE(RGGB, bits)
(That string join at MEDIA_BUS_FMT_S#code#bits_1X#bits, would probably
be tricky)
and then this table would have
{
...
MBUS_BAYER_FORMAT(8),
MBUS_BAYER_FORMAT(10),
MBUS_BAYER_FORMAT(12),
MBUS_BAYER_FORMAT(16),
...
}
(names/parameters could always be changed)
The packed formats could be mapped with more specific helpers too to
produce the table perhaps...
Maybe it's overkill - but maybe it would help maintain the table and
make it more readable for the 'whole' table content/intent...
But ... that's a yak ... so if you don't think that's interesting - I
think this patch is still valid:
Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
> { MEDIA_BUS_FMT_Y8_1X8, { BayerFormat::MONO, 8, BayerFormat::Packing::None } },
> { MEDIA_BUS_FMT_Y10_1X10, { BayerFormat::MONO, 10, BayerFormat::Packing::None } },
> { MEDIA_BUS_FMT_Y12_1X12, { BayerFormat::MONO, 12, BayerFormat::Packing::None } },
> --
> 2.30.2
>
More information about the libcamera-devel
mailing list