14#include <mpix/types.h>
15#include <mpix/utils.h>
23#define MPIX_FOURCC_TO_STR(fourcc) \
25 (char)(((fourcc) >> 0) & 0xFF), \
26 (char)(((fourcc) >> 8) & 0xFF), \
27 (char)(((fourcc) >> 16) & 0xFF), \
28 (char)(((fourcc) >> 24) & 0xFF), \
40#define MPIX_FOURCC(a, b, c, d) \
41 ((uint32_t)(a) | ((uint32_t)(b) << 8) | ((uint32_t)(c) << 16) | ((uint32_t)(d) << 24))
56 if (strncmp(str,
"PLT", 3) != 0 || !IN_RANGE(str[3],
'1',
'9')) {
74 if (!IN_RANGE(bit_depth, 1, 9)) {
94#define MPIX_FMT_RGB332 MPIX_FOURCC('R', 'G', 'B', '1')
105#define MPIX_FMT_RGB565 MPIX_FOURCC('R', 'G', 'B', 'P')
116#define MPIX_FMT_RGB565X MPIX_FOURCC('R', 'G', 'B', 'R')
125#define MPIX_FMT_RGB24 MPIX_FOURCC('R', 'G', 'B', '3')
134#define MPIX_FMT_XRGB32 MPIX_FOURCC('B', 'X', '2', '4')
153#define MPIX_FMT_YUV12 MPIX_FOURCC('Y', 'U', 'V', 'C')
160#define MPIX_FMT_YUV24 MPIX_FOURCC('Y', 'U', 'V', '3')
170#define MPIX_FMT_YUYV MPIX_FOURCC('Y', 'U', 'Y', 'V')
189#define MPIX_FMT_GREY MPIX_FOURCC('G', 'R', 'E', 'Y')
199#define MPIX_FMT_Y10 MPIX_FOURCC('Y', '1', '0', ' ')
209#define MPIX_FMT_Y12 MPIX_FOURCC('Y', '1', '2', ' ')
219#define MPIX_FMT_Y14 MPIX_FOURCC('Y', '1', '4', ' ')
229#define MPIX_FMT_Y16 MPIX_FOURCC('Y', '1', '6', ' ')
246#define MPIX_FMT_SBGGR8 MPIX_FOURCC('B', 'A', '8', '1')
255#define MPIX_FMT_SGBRG8 MPIX_FOURCC('G', 'B', 'R', 'G')
264#define MPIX_FMT_SGRBG8 MPIX_FOURCC('G', 'R', 'B', 'G')
273#define MPIX_FMT_SRGGB8 MPIX_FOURCC('R', 'G', 'G', 'B')
293#define MPIX_FMT_SRGGI8 MPIX_FOURCC('R', 'G', 'I', '8')
304#define MPIX_FMT_SGRIG8 MPIX_FOURCC('G', 'R', 'I', '8')
311#define MPIX_FMT_SBGGI8 MPIX_FOURCC('B', 'G', 'I', '8')
318#define MPIX_FMT_SGBIG8 MPIX_FOURCC('G', 'B', 'I', '8')
325#define MPIX_FMT_SGIRG8 MPIX_FOURCC('G', 'I', 'R', '8')
332#define MPIX_FMT_SIGGR8 MPIX_FOURCC('I', 'G', 'R', '8')
339#define MPIX_FMT_SGIBG8 MPIX_FOURCC('G', 'I', 'B', '8')
346#define MPIX_FMT_SIGGB8 MPIX_FOURCC('I', 'G', 'B', '8')
357#define MPIX_FMT_SRGGI10 MPIX_FOURCC('R', 'G', 'I', '0')
364#define MPIX_FMT_SGRIG10 MPIX_FOURCC('G', 'R', 'I', '0')
371#define MPIX_FMT_SBGGI10 MPIX_FOURCC('B', 'G', 'I', '0')
378#define MPIX_FMT_SGBIG10 MPIX_FOURCC('G', 'B', 'I', '0')
385#define MPIX_FMT_SGIRG10 MPIX_FOURCC('G', 'I', 'R', '0')
392#define MPIX_FMT_SIGGR10 MPIX_FOURCC('I', 'G', 'R', '0')
399#define MPIX_FMT_SGIBG10 MPIX_FOURCC('G', 'I', 'B', '0')
406#define MPIX_FMT_SIGGB10 MPIX_FOURCC('I', 'G', 'B', '0')
425#define MPIX_FMT_PALETTE1 MPIX_FOURCC('P', 'L', 'T', '1')
436#define MPIX_FMT_PALETTE2 MPIX_FOURCC('P', 'L', 'T', '2')
448#define MPIX_FMT_PALETTE3 MPIX_FOURCC('P', 'L', 'T', '3')
459#define MPIX_FMT_PALETTE4 MPIX_FOURCC('P', 'L', 'T', '4')
471#define MPIX_FMT_PALETTE5 MPIX_FOURCC('P', 'L', 'T', '5')
483#define MPIX_FMT_PALETTE6 MPIX_FOURCC('P', 'L', 'T', '6')
495#define MPIX_FMT_PALETTE7 MPIX_FOURCC('P', 'L', 'T', '7')
506#define MPIX_FMT_PALETTE8 MPIX_FOURCC('P', 'L', 'T', '8')
521#define MPIX_FMT_JPEG MPIX_FOURCC('J', 'P', 'E', 'G')
527#define MPIX_FMT_QOI MPIX_FOURCC('Q', 'O', 'I', 'F')