mirror of
https://github.com/raspberrypi/userland.git
synced 2025-12-06 04:49:12 +00:00
MMAL/IL: Add support for the 16bpp Bayer/Grey raw 10/12/14 formats
Unicam can unpack to 16bpp, but only using the bottom N bits, and V4L2 supports them all. It is also far easier for a CPU to process. Adds support to the framework and to the ISP component (changes the black level config).
This commit is contained in:
committed by
popcornmix
parent
093b30bbc2
commit
7deff646e8
@@ -145,12 +145,35 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
#define MMAL_ENCODING_BAYER_SGRBG10DPCM8 MMAL_FOURCC('B','D','1','0') //GRBG
|
||||
#define MMAL_ENCODING_BAYER_SRGGB10DPCM8 MMAL_FOURCC('b','R','A','8') //RGGB
|
||||
|
||||
//10 bit per pixel unpacked (16bit) Bayer formats.
|
||||
#define MMAL_ENCODING_BAYER_SBGGR10 MMAL_FOURCC('B','G','1','0') //BGGR
|
||||
#define MMAL_ENCODING_BAYER_SGRBG10 MMAL_FOURCC('B','A','1','0') //GRBG
|
||||
#define MMAL_ENCODING_BAYER_SGBRG10 MMAL_FOURCC('G','B','1','0') //GBRG
|
||||
#define MMAL_ENCODING_BAYER_SRGGB10 MMAL_FOURCC('R','G','1','0') //RGGB
|
||||
|
||||
//12 bit per pixel unpacked (16bit) Bayer formats
|
||||
#define MMAL_ENCODING_BAYER_SBGGR12 MMAL_FOURCC('B','G','1','2') //BGGR
|
||||
#define MMAL_ENCODING_BAYER_SGRBG12 MMAL_FOURCC('B','A','1','2') //GRBG
|
||||
#define MMAL_ENCODING_BAYER_SGBRG12 MMAL_FOURCC('G','B','1','2') //GBRG
|
||||
#define MMAL_ENCODING_BAYER_SRGGB12 MMAL_FOURCC('R','G','1','2') //RGGB
|
||||
|
||||
//14 bit per pixel unpacked (16bit) Bayer formats
|
||||
#define MMAL_ENCODING_BAYER_SBGGR14 MMAL_FOURCC('B','G','1','4') //BGGR
|
||||
#define MMAL_ENCODING_BAYER_SGBRG14 MMAL_FOURCC('G','B','1','4') //GBRG
|
||||
#define MMAL_ENCODING_BAYER_SGRBG14 MMAL_FOURCC('G','R','1','4') //GRBG
|
||||
#define MMAL_ENCODING_BAYER_SRGGB14 MMAL_FOURCC('R','G','1','4') //RGGB
|
||||
|
||||
//MIPI packed monochrome images
|
||||
#define MMAL_ENCODING_GREY MMAL_FOURCC('G', 'R', 'E', 'Y') //8bpp Greyscale
|
||||
#define MMAL_ENCODING_Y10P MMAL_FOURCC('Y', '1', '0', 'P') //10bpp Greyscale, MIPI RAW10 packed
|
||||
#define MMAL_ENCODING_Y12P MMAL_FOURCC('Y', '1', '2', 'P') //12bpp Greyscale, MIPI RAW12 packed
|
||||
#define MMAL_ENCODING_Y14P MMAL_FOURCC('Y', '1', '4', 'P') //14bpp Greyscale, MIPI RAW14 packed
|
||||
#define MMAL_ENCODING_Y16 MMAL_FOURCC('Y', '1', '6', ' ') //16bpp Greyscale
|
||||
//Unpacked monochrome formats (16bit per sample, but only N LSBs used)
|
||||
#define MMAL_ENCODING_Y10 MMAL_FOURCC('Y', '1', '0', ' ') //10bpp Greyscale
|
||||
#define MMAL_ENCODING_Y12 MMAL_FOURCC('Y', '1', '2', ' ') //12bpp Greyscale
|
||||
#define MMAL_ENCODING_Y14 MMAL_FOURCC('Y', '1', '4', ' ') //14bpp Greyscale
|
||||
|
||||
|
||||
/** SAND Video (YUVUV128) format, native format understood by VideoCore.
|
||||
* This format is *not* opaque - if requested you will receive full frames
|
||||
|
||||
@@ -767,6 +767,10 @@ static struct {
|
||||
{MMAL_ENCODING_BAYER_SGRBG12P, OMX_COLOR_FormatRawBayer12bit},
|
||||
{MMAL_ENCODING_BAYER_SGBRG12P, OMX_COLOR_FormatRawBayer12bit},
|
||||
{MMAL_ENCODING_BAYER_SRGGB12P, OMX_COLOR_FormatRawBayer12bit},
|
||||
{MMAL_ENCODING_BAYER_SBGGR14P, OMX_COLOR_FormatRawBayer14bit},
|
||||
{MMAL_ENCODING_BAYER_SGRBG14P, OMX_COLOR_FormatRawBayer14bit},
|
||||
{MMAL_ENCODING_BAYER_SGBRG14P, OMX_COLOR_FormatRawBayer14bit},
|
||||
{MMAL_ENCODING_BAYER_SRGGB14P, OMX_COLOR_FormatRawBayer14bit},
|
||||
{MMAL_ENCODING_BAYER_SBGGR16, OMX_COLOR_FormatRawBayer16bit},
|
||||
{MMAL_ENCODING_BAYER_SGBRG16, OMX_COLOR_FormatRawBayer16bit},
|
||||
{MMAL_ENCODING_BAYER_SGRBG16, OMX_COLOR_FormatRawBayer16bit},
|
||||
@@ -786,6 +790,21 @@ static struct {
|
||||
{MMAL_ENCODING_Y12P, OMX_COLOR_FormatRawGrey12bit},
|
||||
{MMAL_ENCODING_Y14P, OMX_COLOR_FormatRawGrey14bit},
|
||||
{MMAL_ENCODING_Y16, OMX_COLOR_FormatRawGrey16bit},
|
||||
{MMAL_ENCODING_Y10, OMX_COLOR_FormatRawGrey10bit16bpp},
|
||||
{MMAL_ENCODING_Y12, OMX_COLOR_FormatRawGrey12bit16bpp},
|
||||
{MMAL_ENCODING_Y14, OMX_COLOR_FormatRawGrey14bit16bpp},
|
||||
{MMAL_ENCODING_BAYER_SBGGR10, OMX_COLOR_FormatRawBayer10bit16bpp},
|
||||
{MMAL_ENCODING_BAYER_SGRBG10, OMX_COLOR_FormatRawBayer10bit16bpp},
|
||||
{MMAL_ENCODING_BAYER_SGBRG10, OMX_COLOR_FormatRawBayer10bit16bpp},
|
||||
{MMAL_ENCODING_BAYER_SRGGB10, OMX_COLOR_FormatRawBayer10bit16bpp},
|
||||
{MMAL_ENCODING_BAYER_SBGGR12, OMX_COLOR_FormatRawBayer12bit16bpp},
|
||||
{MMAL_ENCODING_BAYER_SGRBG12, OMX_COLOR_FormatRawBayer12bit16bpp},
|
||||
{MMAL_ENCODING_BAYER_SGBRG12, OMX_COLOR_FormatRawBayer12bit16bpp},
|
||||
{MMAL_ENCODING_BAYER_SRGGB12, OMX_COLOR_FormatRawBayer12bit16bpp},
|
||||
{MMAL_ENCODING_BAYER_SBGGR14, OMX_COLOR_FormatRawBayer14bit16bpp},
|
||||
{MMAL_ENCODING_BAYER_SGRBG14, OMX_COLOR_FormatRawBayer14bit16bpp},
|
||||
{MMAL_ENCODING_BAYER_SGBRG14, OMX_COLOR_FormatRawBayer14bit16bpp},
|
||||
{MMAL_ENCODING_BAYER_SRGGB14, OMX_COLOR_FormatRawBayer14bit16bpp},
|
||||
{MMAL_ENCODING_UNKNOWN, OMX_COLOR_FormatUnused}
|
||||
};
|
||||
|
||||
@@ -828,6 +847,11 @@ static struct {
|
||||
{MMAL_ENCODING_BAYER_SGBRG12P, OMX_COLOR_FormatRawBayer12bit, OMX_BayerOrderGBRG},
|
||||
{MMAL_ENCODING_BAYER_SRGGB12P, OMX_COLOR_FormatRawBayer12bit, OMX_BayerOrderRGGB},
|
||||
|
||||
{MMAL_ENCODING_BAYER_SBGGR14P, OMX_COLOR_FormatRawBayer14bit, OMX_BayerOrderBGGR},
|
||||
{MMAL_ENCODING_BAYER_SGRBG14P, OMX_COLOR_FormatRawBayer14bit, OMX_BayerOrderGRBG},
|
||||
{MMAL_ENCODING_BAYER_SGBRG14P, OMX_COLOR_FormatRawBayer14bit, OMX_BayerOrderGBRG},
|
||||
{MMAL_ENCODING_BAYER_SRGGB14P, OMX_COLOR_FormatRawBayer14bit, 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},
|
||||
@@ -838,6 +862,21 @@ static struct {
|
||||
{MMAL_ENCODING_BAYER_SGBRG10DPCM8,OMX_COLOR_FormatRawBayer8bitcompressed, OMX_BayerOrderGBRG},
|
||||
{MMAL_ENCODING_BAYER_SRGGB10DPCM8,OMX_COLOR_FormatRawBayer8bitcompressed, OMX_BayerOrderRGGB},
|
||||
|
||||
{MMAL_ENCODING_BAYER_SBGGR10, OMX_COLOR_FormatRawBayer10bit16bpp, OMX_BayerOrderBGGR},
|
||||
{MMAL_ENCODING_BAYER_SGRBG10, OMX_COLOR_FormatRawBayer10bit16bpp, OMX_BayerOrderGRBG},
|
||||
{MMAL_ENCODING_BAYER_SGBRG10, OMX_COLOR_FormatRawBayer10bit16bpp, OMX_BayerOrderGBRG},
|
||||
{MMAL_ENCODING_BAYER_SRGGB10, OMX_COLOR_FormatRawBayer10bit16bpp, OMX_BayerOrderRGGB},
|
||||
|
||||
{MMAL_ENCODING_BAYER_SBGGR12, OMX_COLOR_FormatRawBayer12bit16bpp, OMX_BayerOrderBGGR},
|
||||
{MMAL_ENCODING_BAYER_SGRBG12, OMX_COLOR_FormatRawBayer12bit16bpp, OMX_BayerOrderGRBG},
|
||||
{MMAL_ENCODING_BAYER_SGBRG12, OMX_COLOR_FormatRawBayer12bit16bpp, OMX_BayerOrderGBRG},
|
||||
{MMAL_ENCODING_BAYER_SRGGB12, OMX_COLOR_FormatRawBayer12bit16bpp, OMX_BayerOrderRGGB},
|
||||
|
||||
{MMAL_ENCODING_BAYER_SBGGR14, OMX_COLOR_FormatRawBayer14bit16bpp, OMX_BayerOrderBGGR},
|
||||
{MMAL_ENCODING_BAYER_SGRBG14, OMX_COLOR_FormatRawBayer14bit16bpp, OMX_BayerOrderGRBG},
|
||||
{MMAL_ENCODING_BAYER_SGBRG14, OMX_COLOR_FormatRawBayer14bit16bpp, OMX_BayerOrderGBRG},
|
||||
{MMAL_ENCODING_BAYER_SRGGB14, OMX_COLOR_FormatRawBayer14bit16bpp, OMX_BayerOrderRGGB},
|
||||
|
||||
{MMAL_ENCODING_UNKNOWN, OMX_COLOR_FormatMax, OMX_BayerOrderMax}
|
||||
};
|
||||
|
||||
|
||||
@@ -157,6 +157,12 @@ typedef enum OMX_COLOR_FORMATTYPE {
|
||||
OMX_COLOR_FormatRawGrey12bit,
|
||||
OMX_COLOR_FormatRawGrey14bit,
|
||||
OMX_COLOR_FormatRawGrey16bit,
|
||||
OMX_COLOR_FormatRawBayer10bit16bpp,
|
||||
OMX_COLOR_FormatRawBayer12bit16bpp,
|
||||
OMX_COLOR_FormatRawBayer14bit16bpp,
|
||||
OMX_COLOR_FormatRawGrey10bit16bpp,
|
||||
OMX_COLOR_FormatRawGrey12bit16bpp,
|
||||
OMX_COLOR_FormatRawGrey14bit16bpp,
|
||||
OMX_COLOR_FormatMax = 0x7FFFFFFF
|
||||
} OMX_COLOR_FORMATTYPE;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user