@@ -11,15 +11,12 @@
#include <stdint.h>
#include <string>
-#include <libcamera/color_filter_array.h>
#include <libcamera/pixel_format.h>
#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;
@@ -14,9 +14,7 @@
#include <linux/media-bus-format.h>
-#include <libcamera/color_filter_array.h>
#include <libcamera/formats.h>
-#include <libcamera/transform.h>
/**
* \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<BayerFormat, Formats, BayerFormatComparator> 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<unsigned int, BayerFormat> 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<unsigned int, BayerFormat> 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<unsigned int>(f.bitDepth);
+ out << "RAW-" << static_cast<unsigned int>(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
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 <jai.luthra@ideasonboard.com> --- include/libcamera/internal/bayer_format.h | 10 +- src/libcamera/bayer_format.cpp | 233 ++++++++++-------------------- 2 files changed, 80 insertions(+), 163 deletions(-)