Message ID | 20241115101334.453104-10-dan.scally@ideasonboard.com |
---|---|
State | Accepted |
Headers | show |
Series |
|
Related | show |
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@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@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 >
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 } }, { 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 } },
Add support for the 20-bit bayer formats to libcamera's BayerFormat class. Signed-off-by: Daniel Scally <dan.scally@ideasonboard.com> --- Changes in v6: - New patch src/libcamera/bayer_format.cpp | 4 ++++ 1 file changed, 4 insertions(+)