MMAL: Add support for the missing raw12, raw16, and 10to8dpcm formats
authorDave Stevenson <dave.stevenson@raspberrypi.org>
Thu, 9 Mar 2017 10:39:09 +0000 (10:39 +0000)
committerpopcornmix <popcornmix@gmail.com>
Tue, 16 May 2017 12:52:01 +0000 (13:52 +0100)
Fill in the gaps in the 4CCs and mapping tables.
Used the V4L2 4CCs where they are defined.

interface/mmal/mmal_encodings.h
interface/mmal/util/mmal_il.c
interface/mmal/util/mmal_util.c

index 45589d763fcc33d1c09d649807ba8b97420921c4..dc99ca0235c0d4064a901d5161f22921fde6cb33 100644 (file)
@@ -93,8 +93,9 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #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
@@ -108,16 +109,23 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #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
index 681d5d5091b09ecbc8243794dc07ea1e0e39a10a..bb11a4c6160cb5605cee4f3a063793726b776c5b 100644 (file)
@@ -730,7 +730,13 @@ static struct {
    {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}
@@ -771,8 +777,20 @@ static struct {
    {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}
 };
 
index eb9decbe38274ef90b615f0780f26968100f08f5..0281d15ff8a4eccad4f626d6505a84020ad3a343 100644 (file)
@@ -112,11 +112,21 @@ static struct {
    {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}