Fill in the gaps in the 4CCs and mapping tables.
Used the V4L2 4CCs where they are defined.
#define MMAL_ENCODING_BGR24_SLICE MMAL_FOURCC('b','g','r','3')
#define MMAL_ENCODING_BGR32 MMAL_FOURCC('B','G','R','4')
#define MMAL_ENCODING_BGR32_SLICE MMAL_FOURCC('b','g','r','4')
+
//Bayer formats
-//FourCC values copied from V4L2
+//FourCC values copied from V4L2 where defined.
//10 bit per pixel packed Bayer formats.
#define MMAL_ENCODING_BAYER_SBGGR10P MMAL_FOURCC('p','B','A','A') //BGGR
#define MMAL_ENCODING_BAYER_SGRBG10P MMAL_FOURCC('p','g','A','A') //GRBG
#define MMAL_ENCODING_BAYER_SRGGB8 MMAL_FOURCC('R','G','G','B') //RGGB
//12 bit per pixel Bayer formats - not defined in V4L2, only 12bit expanded to 16.
-#define MMAL_ENCODING_BAYER_SBGGR12P MMAL_FOURCC('B','Y','1','2') //BGGR
+//Copy 10bpp packed 4CC pattern
+#define MMAL_ENCODING_BAYER_SBGGR12P MMAL_FOURCC('p','B','1','2') //BGGR
+#define MMAL_ENCODING_BAYER_SGRBG12P MMAL_FOURCC('p','g','1','2') //GRBG
+#define MMAL_ENCODING_BAYER_SGBRG12P MMAL_FOURCC('p','G','1','2') //GBRG
+#define MMAL_ENCODING_BAYER_SRGGB12P MMAL_FOURCC('p','R','1','2') //RGGB
//16 bit per pixel Bayer formats.
-#define MMAL_ENCODING_BAYER_SBGGR16 MMAL_FOURCC('B','Y','R','2') //BGGR
+#define MMAL_ENCODING_BAYER_SBGGR16 MMAL_FOURCC('R','G','1','6') //BGGR
+#define MMAL_ENCODING_BAYER_SGBRG16 MMAL_FOURCC('G','B','1','6') //GBRG
+#define MMAL_ENCODING_BAYER_SGRBG16 MMAL_FOURCC('G','R','1','6') //GRBG
+#define MMAL_ENCODING_BAYER_SRGGB16 MMAL_FOURCC('R','G','1','6') //RGGB
//10 bit per pixel DPCM compressed to 8bits Bayer formats.
#define MMAL_ENCODING_BAYER_SBGGR10DPCM8 MMAL_FOURCC('b','B','A','8') //BGGR
-//#define MMAL_ENCODING_BAYER_SGBRG10DPCM8 MMAL_FOURCC('b','G','A','8') //GBRG
-//#define MMAL_ENCODING_BAYER_SGRBG10DPCM8 MMAL_FOURCC('b','D','A','8') //GRBG
-//#define MMAL_ENCODING_BAYER_SRGGB10DPCM8 MMAL_FOURCC('b','R','A','8') //RGGB
+#define MMAL_ENCODING_BAYER_SGBRG10DPCM8 MMAL_FOURCC('b','G','A','8') //GBRG
+#define MMAL_ENCODING_BAYER_SGRBG10DPCM8 MMAL_FOURCC('B','D','1','0') //GRBG
+#define MMAL_ENCODING_BAYER_SRGGB10DPCM8 MMAL_FOURCC('b','R','A','8') //RGGB
/** SAND Video (YUVUV128) format, native format understood by VideoCore.
* This format is *not* opaque - if requested you will receive full frames
{MMAL_ENCODING_BAYER_SGBRG10P, OMX_COLOR_FormatRawBayer10bit},
{MMAL_ENCODING_BAYER_SRGGB10P, OMX_COLOR_FormatRawBayer10bit},
{MMAL_ENCODING_BAYER_SBGGR12P, OMX_COLOR_FormatRawBayer12bit},
+ {MMAL_ENCODING_BAYER_SGRBG12P, OMX_COLOR_FormatRawBayer12bit},
+ {MMAL_ENCODING_BAYER_SGBRG12P, OMX_COLOR_FormatRawBayer12bit},
+ {MMAL_ENCODING_BAYER_SRGGB12P, OMX_COLOR_FormatRawBayer12bit},
{MMAL_ENCODING_BAYER_SBGGR16, OMX_COLOR_FormatRawBayer16bit},
+ {MMAL_ENCODING_BAYER_SGBRG16, OMX_COLOR_FormatRawBayer16bit},
+ {MMAL_ENCODING_BAYER_SGRBG16, OMX_COLOR_FormatRawBayer16bit},
+ {MMAL_ENCODING_BAYER_SRGGB16, OMX_COLOR_FormatRawBayer16bit},
{MMAL_ENCODING_BAYER_SBGGR10DPCM8,OMX_COLOR_FormatRawBayer8bitcompressed},
{MMAL_ENCODING_OPAQUE, OMX_COLOR_FormatBRCMOpaque},
{MMAL_ENCODING_UNKNOWN, OMX_COLOR_FormatUnused}
{MMAL_ENCODING_BAYER_SRGGB10P, OMX_COLOR_FormatRawBayer10bit, OMX_BayerOrderRGGB},
{MMAL_ENCODING_BAYER_SBGGR12P, OMX_COLOR_FormatRawBayer12bit, OMX_BayerOrderBGGR},
+ {MMAL_ENCODING_BAYER_SGRBG12P, OMX_COLOR_FormatRawBayer12bit, OMX_BayerOrderGRBG},
+ {MMAL_ENCODING_BAYER_SGBRG12P, OMX_COLOR_FormatRawBayer12bit, OMX_BayerOrderGBRG},
+ {MMAL_ENCODING_BAYER_SRGGB12P, OMX_COLOR_FormatRawBayer12bit, OMX_BayerOrderRGGB},
+
{MMAL_ENCODING_BAYER_SBGGR16, OMX_COLOR_FormatRawBayer16bit, OMX_BayerOrderBGGR},
+ {MMAL_ENCODING_BAYER_SGRBG16, OMX_COLOR_FormatRawBayer16bit, OMX_BayerOrderGRBG},
+ {MMAL_ENCODING_BAYER_SGBRG16, OMX_COLOR_FormatRawBayer16bit, OMX_BayerOrderGBRG},
+ {MMAL_ENCODING_BAYER_SRGGB16, OMX_COLOR_FormatRawBayer16bit, OMX_BayerOrderRGGB},
+
{MMAL_ENCODING_BAYER_SBGGR10DPCM8,OMX_COLOR_FormatRawBayer8bitcompressed, OMX_BayerOrderBGGR},
+ {MMAL_ENCODING_BAYER_SGRBG10DPCM8,OMX_COLOR_FormatRawBayer8bitcompressed, OMX_BayerOrderGRBG},
+ {MMAL_ENCODING_BAYER_SGBRG10DPCM8,OMX_COLOR_FormatRawBayer8bitcompressed, OMX_BayerOrderGBRG},
+ {MMAL_ENCODING_BAYER_SRGGB10DPCM8,OMX_COLOR_FormatRawBayer8bitcompressed, OMX_BayerOrderRGGB},
+
{MMAL_ENCODING_UNKNOWN, OMX_COLOR_FormatMax, OMX_BayerOrderMax}
};
{MMAL_ENCODING_BAYER_SGRBG8, 1, 1, 32},
{MMAL_ENCODING_BAYER_SRGGB8, 1, 1, 32},
{MMAL_ENCODING_BAYER_SBGGR10DPCM8, 1, 1, 32},
+ {MMAL_ENCODING_BAYER_SGBRG10DPCM8, 1, 1, 32},
+ {MMAL_ENCODING_BAYER_SGRBG10DPCM8, 1, 1, 32},
+ {MMAL_ENCODING_BAYER_SRGGB10DPCM8, 1, 1, 32},
{MMAL_ENCODING_BAYER_SBGGR10P, 10,8, 32},
{MMAL_ENCODING_BAYER_SGRBG10P, 10,8, 32},
{MMAL_ENCODING_BAYER_SGBRG10P, 10,8, 32},
{MMAL_ENCODING_BAYER_SRGGB10P, 10,8, 32},
+ {MMAL_ENCODING_BAYER_SBGGR12P, 12,8, 32},
+ {MMAL_ENCODING_BAYER_SGRBG12P, 12,8, 32},
+ {MMAL_ENCODING_BAYER_SGBRG12P, 12,8, 32},
+ {MMAL_ENCODING_BAYER_SRGGB12P, 12,8, 32},
{MMAL_ENCODING_BAYER_SBGGR16, 2, 1, 32},
+ {MMAL_ENCODING_BAYER_SGBRG16, 2, 1, 32},
+ {MMAL_ENCODING_BAYER_SGRBG16, 2, 1, 32},
+ {MMAL_ENCODING_BAYER_SRGGB16, 2, 1, 32},
/* {MMAL_ENCODING_YUVUV128, 1, 1}, That's a special case which must not be included */
{MMAL_ENCODING_UNKNOWN, 0, 0}