15#ifndef ZEPHYR_INCLUDE_VIDEO_FORMATS_H
16#define ZEPHYR_INCLUDE_VIDEO_FORMATS_H
41#define VIDEO_FOURCC(a, b, c, d) \
42 ((uint32_t)(a) | ((uint32_t)(b) << 8) | ((uint32_t)(c) << 16) | ((uint32_t)(d) << 24))
53#define VIDEO_FOURCC_FROM_STR(str) VIDEO_FOURCC((str)[0], (str)[1], (str)[2], (str)[3])
64#define VIDEO_FOURCC_TO_STR(fourcc) \
66 (char)((fourcc) & 0xFF), \
67 (char)(((fourcc) >> 8) & 0xFF), \
68 (char)(((fourcc) >> 16) & 0xFF), \
69 (char)(((fourcc) >> 24) & 0xFF), \
93#define VIDEO_FOREACH_BAYER(X, ...) \
94 VIDEO_FOREACH_BAYER_PADDED(X, __VA_ARGS__) \
95 VIDEO_FOREACH_BAYER_MIPI_PACKED(X, __VA_ARGS__) \
96 VIDEO_FOREACH_BAYER_NON_PACKED(X, __VA_ARGS__)
104#define VIDEO_FOREACH_BAYER_PADDED(X, ...) \
105 X(VIDEO_PIX_FMT_SBGGR8P16, __VA_ARGS__) \
106 X(VIDEO_PIX_FMT_SGBRG8P16, __VA_ARGS__) \
107 X(VIDEO_PIX_FMT_SGRBG8P16, __VA_ARGS__) \
108 X(VIDEO_PIX_FMT_SRGGB8P16, __VA_ARGS__)
118#define VIDEO_PIX_FMT_SBGGR8P16 VIDEO_FOURCC('p', 'B', '8', '2')
128#define VIDEO_PIX_FMT_SGBRG8P16 VIDEO_FOURCC('p', 'G', '8', '2')
138#define VIDEO_PIX_FMT_SGRBG8P16 VIDEO_FOURCC('p', 'g', '8', '2')
148#define VIDEO_PIX_FMT_SRGGB8P16 VIDEO_FOURCC('p', 'R', '8', '2')
158#define VIDEO_FOREACH_BAYER_MIPI_PACKED(X, ...) \
159 X(VIDEO_PIX_FMT_SBGGR10P, __VA_ARGS__) \
160 X(VIDEO_PIX_FMT_SGBRG10P, __VA_ARGS__) \
161 X(VIDEO_PIX_FMT_SGRBG10P, __VA_ARGS__) \
162 X(VIDEO_PIX_FMT_SRGGB10P, __VA_ARGS__) \
163 X(VIDEO_PIX_FMT_SBGGR12P, __VA_ARGS__) \
164 X(VIDEO_PIX_FMT_SGBRG12P, __VA_ARGS__) \
165 X(VIDEO_PIX_FMT_SGRBG12P, __VA_ARGS__) \
166 X(VIDEO_PIX_FMT_SRGGB12P, __VA_ARGS__) \
167 X(VIDEO_PIX_FMT_SBGGR14P, __VA_ARGS__) \
168 X(VIDEO_PIX_FMT_SGBRG14P, __VA_ARGS__) \
169 X(VIDEO_PIX_FMT_SGRBG14P, __VA_ARGS__) \
170 X(VIDEO_PIX_FMT_SRGGB14P, __VA_ARGS__)
179#define VIDEO_PIX_FMT_SBGGR10P VIDEO_FOURCC('p', 'B', 'A', 'A')
188#define VIDEO_PIX_FMT_SGBRG10P VIDEO_FOURCC('p', 'G', 'A', 'A')
197#define VIDEO_PIX_FMT_SGRBG10P VIDEO_FOURCC('p', 'g', 'A', 'A')
206#define VIDEO_PIX_FMT_SRGGB10P VIDEO_FOURCC('p', 'R', 'A', 'A')
215#define VIDEO_PIX_FMT_SBGGR12P VIDEO_FOURCC('p', 'B', 'C', 'C')
224#define VIDEO_PIX_FMT_SGBRG12P VIDEO_FOURCC('p', 'G', 'C', 'C')
233#define VIDEO_PIX_FMT_SGRBG12P VIDEO_FOURCC('p', 'g', 'C', 'C')
242#define VIDEO_PIX_FMT_SRGGB12P VIDEO_FOURCC('p', 'R', 'C', 'C')
251#define VIDEO_PIX_FMT_SBGGR14P VIDEO_FOURCC('p', 'B', 'E', 'E')
260#define VIDEO_PIX_FMT_SGBRG14P VIDEO_FOURCC('p', 'G', 'E', 'E')
269#define VIDEO_PIX_FMT_SGRBG14P VIDEO_FOURCC('p', 'g', 'E', 'E')
278#define VIDEO_PIX_FMT_SRGGB14P VIDEO_FOURCC('p', 'R', 'E', 'E')
288#define VIDEO_FOREACH_BAYER_NON_PACKED(X, ...) \
289 X(VIDEO_PIX_FMT_SBGGR8, __VA_ARGS__) \
290 X(VIDEO_PIX_FMT_SGBRG8, __VA_ARGS__) \
291 X(VIDEO_PIX_FMT_SGRBG8, __VA_ARGS__) \
292 X(VIDEO_PIX_FMT_SRGGB8, __VA_ARGS__) \
293 X(VIDEO_PIX_FMT_SGBRG10, __VA_ARGS__) \
294 X(VIDEO_PIX_FMT_SGRBG10, __VA_ARGS__) \
295 X(VIDEO_PIX_FMT_SRGGB10, __VA_ARGS__) \
296 X(VIDEO_PIX_FMT_SBGGR12, __VA_ARGS__) \
297 X(VIDEO_PIX_FMT_SGBRG12, __VA_ARGS__) \
298 X(VIDEO_PIX_FMT_SGRBG12, __VA_ARGS__) \
299 X(VIDEO_PIX_FMT_SRGGB12, __VA_ARGS__) \
300 X(VIDEO_PIX_FMT_SBGGR14, __VA_ARGS__) \
301 X(VIDEO_PIX_FMT_SGBRG14, __VA_ARGS__) \
302 X(VIDEO_PIX_FMT_SGRBG14, __VA_ARGS__) \
303 X(VIDEO_PIX_FMT_SRGGB14, __VA_ARGS__) \
304 X(VIDEO_PIX_FMT_SBGGR16, __VA_ARGS__) \
305 X(VIDEO_PIX_FMT_SGBRG16, __VA_ARGS__) \
306 X(VIDEO_PIX_FMT_SGRBG16, __VA_ARGS__) \
307 X(VIDEO_PIX_FMT_SRGGB16, __VA_ARGS__)
316#define VIDEO_PIX_FMT_SBGGR8 VIDEO_FOURCC('B', 'A', '8', '1')
325#define VIDEO_PIX_FMT_SGBRG8 VIDEO_FOURCC('G', 'B', 'R', 'G')
334#define VIDEO_PIX_FMT_SGRBG8 VIDEO_FOURCC('G', 'R', 'B', 'G')
343#define VIDEO_PIX_FMT_SRGGB8 VIDEO_FOURCC('R', 'G', 'G', 'B')
351#define VIDEO_PIX_FMT_SBGGR10 VIDEO_FOURCC('B', 'G', '1', '0')
359#define VIDEO_PIX_FMT_SGBRG10 VIDEO_FOURCC('G', 'B', '1', '0')
367#define VIDEO_PIX_FMT_SGRBG10 VIDEO_FOURCC('B', 'A', '1', '0')
375#define VIDEO_PIX_FMT_SRGGB10 VIDEO_FOURCC('R', 'G', '1', '0')
383#define VIDEO_PIX_FMT_SBGGR12 VIDEO_FOURCC('B', 'G', '1', '2')
391#define VIDEO_PIX_FMT_SGBRG12 VIDEO_FOURCC('G', 'B', '1', '2')
399#define VIDEO_PIX_FMT_SGRBG12 VIDEO_FOURCC('B', 'A', '1', '2')
407#define VIDEO_PIX_FMT_SRGGB12 VIDEO_FOURCC('R', 'G', '1', '2')
415#define VIDEO_PIX_FMT_SBGGR14 VIDEO_FOURCC('B', 'G', '1', '4')
423#define VIDEO_PIX_FMT_SGBRG14 VIDEO_FOURCC('G', 'B', '1', '4')
431#define VIDEO_PIX_FMT_SGRBG14 VIDEO_FOURCC('G', 'R', '1', '4')
439#define VIDEO_PIX_FMT_SRGGB14 VIDEO_FOURCC('R', 'G', '1', '4')
447#define VIDEO_PIX_FMT_SBGGR16 VIDEO_FOURCC('B', 'Y', 'R', '2')
455#define VIDEO_PIX_FMT_SGBRG16 VIDEO_FOURCC('G', 'B', '1', '6')
463#define VIDEO_PIX_FMT_SGRBG16 VIDEO_FOURCC('G', 'R', '1', '6')
471#define VIDEO_PIX_FMT_SRGGB16 VIDEO_FOURCC('R', 'G', '1', '6')
495#define VIDEO_FOREACH_GRAYSCALE(X, ...) \
496 VIDEO_FOREACH_GRAYSCALE_NON_PACKED(X, __VA_ARGS__) \
497 VIDEO_FOREACH_GRAYSCALE_PADDED(X, __VA_ARGS__) \
498 VIDEO_FOREACH_GRAYSCALE_MIPI_PACKED(X, __VA_ARGS__)
508#define VIDEO_FOREACH_GRAYSCALE_NON_PACKED(X, ...) \
509 X(VIDEO_PIX_FMT_GREY, __VA_ARGS__) \
510 X(VIDEO_PIX_FMT_Y10, __VA_ARGS__) \
511 X(VIDEO_PIX_FMT_Y12, __VA_ARGS__) \
512 X(VIDEO_PIX_FMT_Y14, __VA_ARGS__) \
513 X(VIDEO_PIX_FMT_Y16, __VA_ARGS__)
524#define VIDEO_PIX_FMT_GREY VIDEO_FOURCC('G', 'R', 'E', 'Y')
534#define VIDEO_PIX_FMT_Y10 VIDEO_FOURCC('Y', '1', '0', ' ')
544#define VIDEO_PIX_FMT_Y12 VIDEO_FOURCC('Y', '1', '2', ' ')
554#define VIDEO_PIX_FMT_Y14 VIDEO_FOURCC('Y', '1', '4', ' ')
564#define VIDEO_PIX_FMT_Y16 VIDEO_FOURCC('Y', '1', '6', ' ')
572#define VIDEO_FOREACH_GRAYSCALE_PADDED(X, ...) \
573 X(VIDEO_PIX_FMT_Y8P16, __VA_ARGS__)
583#define VIDEO_PIX_FMT_Y8P16 VIDEO_FOURCC('Y', '8', 'P', '2')
591#define VIDEO_FOREACH_GRAYSCALE_MIPI_PACKED(X, ...) \
592 X(VIDEO_PIX_FMT_Y10P, __VA_ARGS__) \
593 X(VIDEO_PIX_FMT_Y12P, __VA_ARGS__) \
594 X(VIDEO_PIX_FMT_Y14P, __VA_ARGS__)
602#define VIDEO_PIX_FMT_Y10P VIDEO_FOURCC('Y', '1', '0', 'P')
611#define VIDEO_PIX_FMT_Y12P VIDEO_FOURCC('Y', '1', '2', 'P')
620#define VIDEO_PIX_FMT_Y14P VIDEO_FOURCC('Y', '1', '4', 'P')
638#define VIDEO_FOREACH_RGB(X, ...) \
639 VIDEO_FOREACH_RGB_PACKED(X, __VA_ARGS__) \
640 VIDEO_FOREACH_RGB_NON_PACKED(X, __VA_ARGS__) \
641 VIDEO_FOREACH_RGB_ALPHA(X, __VA_ARGS__) \
642 VIDEO_FOREACH_RGB_PADDED(X, __VA_ARGS__)
652#define VIDEO_FOREACH_RGB_PACKED(X, ...) \
653 X(VIDEO_PIX_FMT_RGB565X, __VA_ARGS__) \
654 X(VIDEO_PIX_FMT_RGB565, __VA_ARGS__)
665#define VIDEO_PIX_FMT_RGB565X VIDEO_FOURCC('R', 'G', 'B', 'R')
676#define VIDEO_PIX_FMT_RGB565 VIDEO_FOURCC('R', 'G', 'B', 'P')
686#define VIDEO_FOREACH_RGB_NON_PACKED(X, ...) \
687 X(VIDEO_PIX_FMT_BGR24, __VA_ARGS__) \
688 X(VIDEO_PIX_FMT_RGB24, __VA_ARGS__)
697#define VIDEO_PIX_FMT_BGR24 VIDEO_FOURCC('B', 'G', 'R', '3')
706#define VIDEO_PIX_FMT_RGB24 VIDEO_FOURCC('R', 'G', 'B', '3')
716#define VIDEO_FOREACH_RGB_ALPHA(X, ...) \
717 X(VIDEO_PIX_FMT_ARGB32, __VA_ARGS__) \
718 X(VIDEO_PIX_FMT_ABGR32, __VA_ARGS__) \
719 X(VIDEO_PIX_FMT_RGBA32, __VA_ARGS__) \
720 X(VIDEO_PIX_FMT_BGRA32, __VA_ARGS__)
729#define VIDEO_PIX_FMT_ARGB32 VIDEO_FOURCC('B', 'A', '2', '4')
740#define VIDEO_PIX_FMT_BGRA32 VIDEO_FOURCC('A', 'R', '2', '4')
749#define VIDEO_PIX_FMT_RGBA32 VIDEO_FOURCC('A', 'B', '2', '4')
760#define VIDEO_PIX_FMT_ABGR32 VIDEO_FOURCC('R', 'A', '2', '4')
770#define VIDEO_FOREACH_RGB_PADDED(X, ...) \
771 X(VIDEO_PIX_FMT_XRGB32, __VA_ARGS__)
780#define VIDEO_PIX_FMT_XRGB32 VIDEO_FOURCC('B', 'X', '2', '4')
791#define VIDEO_PIX_FMT_XBGR32 VIDEO_FOURCC('R', 'X', '2', '4')
802#define VIDEO_PIX_FMT_BGRX32 VIDEO_FOURCC('X', 'R', '2', '4')
811#define VIDEO_PIX_FMT_RGBX32 VIDEO_FOURCC('X', 'B', '2', '4')
829#define VIDEO_FOREACH_YUV(X, ...) \
830 VIDEO_FOREACH_YUV_FULL_PLANAR(X, __VA_ARGS__) \
831 VIDEO_FOREACH_YUV_NON_PLANAR(X, __VA_ARGS__) \
832 VIDEO_FOREACH_YUV_SEMI_PLANAR(X, __VA_ARGS__)
840#define VIDEO_FOREACH_YUV_NON_PLANAR(X, ...) \
841 X(VIDEO_PIX_FMT_YUYV, __VA_ARGS__) \
842 X(VIDEO_PIX_FMT_YVYU, __VA_ARGS__) \
843 X(VIDEO_PIX_FMT_VYUY, __VA_ARGS__) \
844 X(VIDEO_PIX_FMT_UYVY, __VA_ARGS__) \
845 X(VIDEO_PIX_FMT_YUV24, __VA_ARGS__) \
846 X(VIDEO_PIX_FMT_XYUV32, __VA_ARGS__)
856#define VIDEO_PIX_FMT_YUYV VIDEO_FOURCC('Y', 'U', 'Y', 'V')
863#define VIDEO_PIX_FMT_YVYU VIDEO_FOURCC('Y', 'V', 'Y', 'U')
870#define VIDEO_PIX_FMT_VYUY VIDEO_FOURCC('V', 'Y', 'U', 'Y')
877#define VIDEO_PIX_FMT_UYVY VIDEO_FOURCC('U', 'Y', 'V', 'Y')
886#define VIDEO_PIX_FMT_XYUV32 VIDEO_FOURCC('X', 'Y', 'U', 'V')
895#define VIDEO_PIX_FMT_YUV24 VIDEO_FOURCC('Y', 'U', 'V', '3')
903#define VIDEO_FOREACH_YUV_SEMI_PLANAR(X, ...) \
904 X(VIDEO_PIX_FMT_NV12, __VA_ARGS__) \
905 X(VIDEO_PIX_FMT_NV21, __VA_ARGS__) \
906 X(VIDEO_PIX_FMT_NV16, __VA_ARGS__) \
907 X(VIDEO_PIX_FMT_NV61, __VA_ARGS__) \
908 X(VIDEO_PIX_FMT_NV24, __VA_ARGS__) \
909 X(VIDEO_PIX_FMT_NV42, __VA_ARGS__)
933#define VIDEO_PIX_FMT_NV12 VIDEO_FOURCC('N', 'V', '1', '2')
957#define VIDEO_PIX_FMT_NV21 VIDEO_FOURCC('N', 'V', '2', '1')
983#define VIDEO_PIX_FMT_NV16 VIDEO_FOURCC('N', 'V', '1', '6')
1010#define VIDEO_PIX_FMT_NV61 VIDEO_FOURCC('N', 'V', '6', '1')
1036#define VIDEO_PIX_FMT_NV24 VIDEO_FOURCC('N', 'V', '2', '4')
1062#define VIDEO_PIX_FMT_NV42 VIDEO_FOURCC('N', 'V', '4', '2')
1070#define VIDEO_FOREACH_YUV_FULL_PLANAR(X, ...) \
1071 X(VIDEO_PIX_FMT_YUV420, __VA_ARGS__) \
1072 X(VIDEO_PIX_FMT_YVU420, __VA_ARGS__)
1101#define VIDEO_PIX_FMT_YUV420 VIDEO_FOURCC('Y', 'U', '1', '2')
1130#define VIDEO_PIX_FMT_YVU420 VIDEO_FOURCC('Y', 'V', '1', '2')
1147#define VIDEO_FOREACH_COMPRESSED(X, ...) \
1148 X(VIDEO_PIX_FMT_JPEG, __VA_ARGS__) \
1149 X(VIDEO_PIX_FMT_H264, __VA_ARGS__) \
1150 X(VIDEO_PIX_FMT_H264_NO_SC, __VA_ARGS__) \
1151 X(VIDEO_PIX_FMT_PNG, __VA_ARGS__)
1156#define VIDEO_PIX_FMT_JPEG VIDEO_FOURCC('J', 'P', 'E', 'G')
1161#define VIDEO_PIX_FMT_H264 VIDEO_FOURCC('H', '2', '6', '4')
1166#define VIDEO_PIX_FMT_H264_NO_SC VIDEO_FOURCC('A', 'V', 'C', '1')
1171#define VIDEO_PIX_FMT_PNG VIDEO_FOURCC('P', 'N', 'G', ' ')
1178#define _VIDEO_FMT_OR_EQ(pixfmt_a, pixfmt_b) || ((pixfmt_a) == (pixfmt_b))
1187#define VIDEO_FMT_IS_GRAYSCALE(pixfmt) \
1188 (0 VIDEO_FOREACH_GRAYSCALE(_VIDEO_FMT_OR_EQ, pixfmt))
1196#define VIDEO_FMT_IS_BAYER(pixfmt) \
1197 (0 VIDEO_FOREACH_BAYER(_VIDEO_FMT_OR_EQ, pixfmt))
1205#define VIDEO_FMT_IS_RGB(pixfmt) \
1206 (0 VIDEO_FOREACH_RGB(_VIDEO_FMT_OR_EQ, pixfmt))
1214#define VIDEO_FMT_IS_YUV(pixfmt) \
1215 (0 VIDEO_FOREACH_YUV(_VIDEO_FMT_OR_EQ, pixfmt))
1223#define VIDEO_FMT_IS_MIPI_PACKED(pixfmt) \
1224 (0 VIDEO_FOREACH_BAYER_MIPI_PACKED(_VIDEO_FMT_OR_EQ, pixfmt) \
1225 VIDEO_FOREACH_GRAYSCALE_MIPI_PACKED(_VIDEO_FMT_OR_EQ, pixfmt))
1233#define VIDEO_FMT_IS_PADDED(pixfmt) \
1234 (0 VIDEO_FOREACH_BAYER_PADDED(_VIDEO_FMT_OR_EQ, pixfmt) \
1235 VIDEO_FOREACH_GRAYSCALE_PADDED(_VIDEO_FMT_OR_EQ, pixfmt))
1243#define VIDEO_FMT_IS_SEMI_PLANAR(pixfmt) \
1244 (0 VIDEO_FOREACH_YUV_SEMI_PLANAR(_VIDEO_FMT_OR_EQ, pixfmt))
1252#define VIDEO_FMT_IS_FULL_PLANAR(pixfmt) \
1253 (0 VIDEO_FOREACH_YUV_FULL_PLANAR(_VIDEO_FMT_OR_EQ, pixfmt))
__UINT32_TYPE__ uint32_t
Definition stdint.h:90