Zephyr API Documentation 4.4.0-rc1
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
Video pixel formats

The '|' characters separate the pixels or logical blocks, and spaces separate the bytes. More...

Macros

#define VIDEO_FOURCC(a, b, c, d)
 Four-character-code uniquely identifying the pixel format.
#define VIDEO_FOURCC_FROM_STR(str)
 Convert a four-character-string to a four-character-code.
#define VIDEO_FOURCC_TO_STR(fourcc)
 Convert a four-character-code to a four-character-string.
#define VIDEO_FMT_IS_GRAYSCALE(pixfmt)
 Test if a fourcc is a grayscale format.
#define VIDEO_FMT_IS_BAYER(pixfmt)
 Test if a fourcc is a Bayer format.
#define VIDEO_FMT_IS_RGB(pixfmt)
 Test if a fourcc is an RGB format (bayer excluded).
#define VIDEO_FMT_IS_YUV(pixfmt)
 Test if a fourcc is an YUV format.
#define VIDEO_FMT_IS_MIPI_PACKED(pixfmt)
 Test if a fourcc is any of the MIPI-packed formats.
#define VIDEO_FMT_IS_PADDED(pixfmt)
 Test if a fourcc is any of the MIPI-packed formats.
#define VIDEO_FMT_IS_SEMI_PLANAR(pixfmt)
 Test if a fourcc is any of the semi-planar formats.
#define VIDEO_FMT_IS_FULL_PLANAR(pixfmt)
 Test if a fourcc is any of the full-planar formats.

Functions

static unsigned int video_bits_per_pixel (uint32_t pixfmt)
 Get number of bits per pixel of a pixel format.

Bayer formats (R, G, B channels).

The full color information is spread over multiple pixels.

When the format includes more than 8-bit per pixel, a strategy becomes needed to pack the bits over multiple bytes, as illustrated for each format.

The number above the 'R', 'r', 'G', 'g', 'B', 'b' are hints about which pixel number the following bits belong to.

#define VIDEO_FOREACH_BAYER(X, ...)
 Repeat a macro for every Bayer format, passed as first parameter.
#define VIDEO_FOREACH_BAYER_PADDED(X, ...)
 Repeat a macro for every Bayer padded format, passed as first parameter.
#define VIDEO_PIX_FMT_SBGGR8P16   VIDEO_FOURCC('p', 'B', '8', '2')
 8-bit bayer format, split in two 4-bit blocks each zero-padded, little endian.
#define VIDEO_PIX_FMT_SGBRG8P16   VIDEO_FOURCC('p', 'G', '8', '2')
 8-bit bayer format, split in two 4-bit blocks each zero-padded, little endian.
#define VIDEO_PIX_FMT_SGRBG8P16   VIDEO_FOURCC('p', 'g', '8', '2')
 8-bit bayer format, split in two 4-bit blocks each zero-padded, little endian.
#define VIDEO_PIX_FMT_SRGGB8P16   VIDEO_FOURCC('p', 'R', '8', '2')
 8-bit bayer format, split in two 4-bit blocks each zero-padded, little endian.
#define VIDEO_FOREACH_BAYER_MIPI_PACKED(X, ...)
 Repeat a macro for every Bayer MIPI-packed format, passed as first parameter.
#define VIDEO_PIX_FMT_SBGGR10P   VIDEO_FOURCC('p', 'B', 'A', 'A')
#define VIDEO_PIX_FMT_SGBRG10P   VIDEO_FOURCC('p', 'G', 'A', 'A')
#define VIDEO_PIX_FMT_SGRBG10P   VIDEO_FOURCC('p', 'g', 'A', 'A')
#define VIDEO_PIX_FMT_SRGGB10P   VIDEO_FOURCC('p', 'R', 'A', 'A')
#define VIDEO_PIX_FMT_SBGGR12P   VIDEO_FOURCC('p', 'B', 'C', 'C')
#define VIDEO_PIX_FMT_SGBRG12P   VIDEO_FOURCC('p', 'G', 'C', 'C')
#define VIDEO_PIX_FMT_SGRBG12P   VIDEO_FOURCC('p', 'g', 'C', 'C')
#define VIDEO_PIX_FMT_SRGGB12P   VIDEO_FOURCC('p', 'R', 'C', 'C')
#define VIDEO_PIX_FMT_SBGGR14P   VIDEO_FOURCC('p', 'B', 'E', 'E')
#define VIDEO_PIX_FMT_SGBRG14P   VIDEO_FOURCC('p', 'G', 'E', 'E')
#define VIDEO_PIX_FMT_SGRBG14P   VIDEO_FOURCC('p', 'g', 'E', 'E')
#define VIDEO_PIX_FMT_SRGGB14P   VIDEO_FOURCC('p', 'R', 'E', 'E')
#define VIDEO_FOREACH_BAYER_NON_PACKED(X, ...)
 Repeat a macro for every Bayer non-packed format, passed as first parameter.
#define VIDEO_PIX_FMT_SBGGR8   VIDEO_FOURCC('B', 'A', '8', '1')
#define VIDEO_PIX_FMT_SGBRG8   VIDEO_FOURCC('G', 'B', 'R', 'G')
#define VIDEO_PIX_FMT_SGRBG8   VIDEO_FOURCC('G', 'R', 'B', 'G')
#define VIDEO_PIX_FMT_SRGGB8   VIDEO_FOURCC('R', 'G', 'G', 'B')
#define VIDEO_PIX_FMT_SBGGR10   VIDEO_FOURCC('B', 'G', '1', '0')
#define VIDEO_PIX_FMT_SGBRG10   VIDEO_FOURCC('G', 'B', '1', '0')
#define VIDEO_PIX_FMT_SGRBG10   VIDEO_FOURCC('B', 'A', '1', '0')
#define VIDEO_PIX_FMT_SRGGB10   VIDEO_FOURCC('R', 'G', '1', '0')
#define VIDEO_PIX_FMT_SBGGR12   VIDEO_FOURCC('B', 'G', '1', '2')
#define VIDEO_PIX_FMT_SGBRG12   VIDEO_FOURCC('G', 'B', '1', '2')
#define VIDEO_PIX_FMT_SGRBG12   VIDEO_FOURCC('B', 'A', '1', '2')
#define VIDEO_PIX_FMT_SRGGB12   VIDEO_FOURCC('R', 'G', '1', '2')
#define VIDEO_PIX_FMT_SBGGR14   VIDEO_FOURCC('B', 'G', '1', '4')
#define VIDEO_PIX_FMT_SGBRG14   VIDEO_FOURCC('G', 'B', '1', '4')
#define VIDEO_PIX_FMT_SGRBG14   VIDEO_FOURCC('G', 'R', '1', '4')
#define VIDEO_PIX_FMT_SRGGB14   VIDEO_FOURCC('R', 'G', '1', '4')
#define VIDEO_PIX_FMT_SBGGR16   VIDEO_FOURCC('B', 'Y', 'R', '2')
#define VIDEO_PIX_FMT_SGBRG16   VIDEO_FOURCC('G', 'B', '1', '6')
#define VIDEO_PIX_FMT_SGRBG16   VIDEO_FOURCC('G', 'R', '1', '6')
#define VIDEO_PIX_FMT_SRGGB16   VIDEO_FOURCC('R', 'G', '1', '6')

Grayscale formats

Luminance (Y) channel only, in various bit depth and packing.

When the format includes more than 8-bit per pixel, a strategy becomes needed to pack the bits over multiple bytes, as illustrated for each format.

The number above the 'Y', 'y' are hints about which pixel number the following bits belong to.

#define VIDEO_FOREACH_GRAYSCALE(X, ...)
 Repeat a macro for every grayscale format, passed as first parameter.
#define VIDEO_FOREACH_GRAYSCALE_NON_PACKED(X, ...)
 Repeat a macro for every grayscale non-packed format, passed as first parameter.
#define VIDEO_PIX_FMT_GREY   VIDEO_FOURCC('G', 'R', 'E', 'Y')
 Same as Y8 (8-bit luma-only) following the standard FOURCC naming, or L8 in some graphics libraries.
#define VIDEO_PIX_FMT_Y10   VIDEO_FOURCC('Y', '1', '0', ' ')
 Little endian, with the 6 most significant bits set to Zero.
#define VIDEO_PIX_FMT_Y12   VIDEO_FOURCC('Y', '1', '2', ' ')
 Little endian, with the 4 most significant bits set to Zero.
#define VIDEO_PIX_FMT_Y14   VIDEO_FOURCC('Y', '1', '4', ' ')
 Little endian, with the 2 most significant bits set to Zero.
#define VIDEO_PIX_FMT_Y16   VIDEO_FOURCC('Y', '1', '6', ' ')
 Little endian.
#define VIDEO_FOREACH_GRAYSCALE_PADDED(X, ...)
 Repeat a macro for every grayscale padded format, passed as first parameter.
#define VIDEO_PIX_FMT_Y8P16   VIDEO_FOURCC('Y', '8', 'P', '2')
 8-bit luma-only split in two 4-bit blocks each zero-padded, little endian.
#define VIDEO_FOREACH_GRAYSCALE_MIPI_PACKED(X, ...)
 Repeat a macro for every grayscale MIPI-packed format, passed as first parameter.
#define VIDEO_PIX_FMT_Y10P   VIDEO_FOURCC('Y', '1', '0', 'P')
#define VIDEO_PIX_FMT_Y12P   VIDEO_FOURCC('Y', '1', '2', 'P')
#define VIDEO_PIX_FMT_Y14P   VIDEO_FOURCC('Y', '1', '4', 'P')

RGB formats

Per-color (R, G, B) channels.

#define VIDEO_FOREACH_RGB(X, ...)
 Repeat a macro for every RGB format, passed as first parameter.
#define VIDEO_FOREACH_RGB_PACKED(X, ...)
 Repeat a macro for every RGB packed format, passed as first parameter.
#define VIDEO_PIX_FMT_RGB565X   VIDEO_FOURCC('R', 'G', 'B', 'R')
 5 red bits [15:11], 6 green bits [10:5], 5 blue bits [4:0].
#define VIDEO_PIX_FMT_RGB565   VIDEO_FOURCC('R', 'G', 'B', 'P')
 5 red bits [15:11], 6 green bits [10:5], 5 blue bits [4:0].
#define VIDEO_FOREACH_RGB_NON_PACKED(X, ...)
 Repeat a macro for every RGB non-packed format, passed as first parameter.
#define VIDEO_PIX_FMT_BGR24   VIDEO_FOURCC('B', 'G', 'R', '3')
 24 bit RGB format with 8 bit per component
#define VIDEO_PIX_FMT_RGB24   VIDEO_FOURCC('R', 'G', 'B', '3')
 24 bit RGB format with 8 bit per component
#define VIDEO_FOREACH_RGB_ALPHA(X, ...)
 Repeat a macro for every RGB alpha format, passed as first parameter.
#define VIDEO_PIX_FMT_ARGB32   VIDEO_FOURCC('B', 'A', '2', '4')
 The first byte is alpha (A) for each pixel.
#define VIDEO_PIX_FMT_BGRA32   VIDEO_FOURCC('A', 'R', '2', '4')
 The last byte is alpha (A) for each pixel.
#define VIDEO_PIX_FMT_RGBA32   VIDEO_FOURCC('A', 'B', '2', '4')
 The last byte is alpha (A) for each pixel.
#define VIDEO_PIX_FMT_ABGR32   VIDEO_FOURCC('R', 'A', '2', '4')
 The first byte is alpha (A) for each pixel.
#define VIDEO_FOREACH_RGB_PADDED(X, ...)
 Repeat a macro for every RGB padded format, passed as first parameter.
#define VIDEO_PIX_FMT_XRGB32   VIDEO_FOURCC('B', 'X', '2', '4')
 The first byte is empty (X) for each pixel.
#define VIDEO_PIX_FMT_XBGR32   VIDEO_FOURCC('R', 'X', '2', '4')
 The first byte is empty (X) for each pixel.
#define VIDEO_PIX_FMT_BGRX32   VIDEO_FOURCC('X', 'R', '2', '4')
 The last byte is empty (X) for each pixel.
#define VIDEO_PIX_FMT_RGBX32   VIDEO_FOURCC('X', 'B', '2', '4')
 The last byte is empty (X) for each pixel.

YUV formats

Luminance (Y) and chrominance (U, V) channels.

#define VIDEO_FOREACH_YUV(X, ...)
 Repeat a macro for every YUV format, passed as first parameter.
#define VIDEO_FOREACH_YUV_NON_PLANAR(X, ...)
 Repeat a macro for every YUV Non-Planar format, passed as first parameter.
#define VIDEO_PIX_FMT_YUYV   VIDEO_FOURCC('Y', 'U', 'Y', 'V')
 There is either a missing channel per pixel, U or V.
#define VIDEO_PIX_FMT_YVYU   VIDEO_FOURCC('Y', 'V', 'Y', 'U')
#define VIDEO_PIX_FMT_VYUY   VIDEO_FOURCC('V', 'Y', 'U', 'Y')
#define VIDEO_PIX_FMT_UYVY   VIDEO_FOURCC('U', 'Y', 'V', 'Y')
#define VIDEO_PIX_FMT_XYUV32   VIDEO_FOURCC('X', 'Y', 'U', 'V')
 The first byte is empty (X) for each pixel.
#define VIDEO_PIX_FMT_YUV24   VIDEO_FOURCC('Y', 'U', 'V', '3')
 24 bit YUV format with 8 bit per component
#define VIDEO_FOREACH_YUV_SEMI_PLANAR(X, ...)
 Repeat a macro for every YUV Semi-Planar format, passed as first parameter.
#define VIDEO_PIX_FMT_NV12   VIDEO_FOURCC('N', 'V', '1', '2')
 Chroma (U/V) are subsampled horizontaly and vertically.
#define VIDEO_PIX_FMT_NV21   VIDEO_FOURCC('N', 'V', '2', '1')
 Chroma (U/V) are subsampled horizontaly and vertically.
#define VIDEO_PIX_FMT_NV16   VIDEO_FOURCC('N', 'V', '1', '6')
 Chroma (U/V) are subsampled horizontaly.
#define VIDEO_PIX_FMT_NV61   VIDEO_FOURCC('N', 'V', '6', '1')
 Chroma (U/V) are subsampled horizontaly.
#define VIDEO_PIX_FMT_NV24   VIDEO_FOURCC('N', 'V', '2', '4')
 Chroma (U/V) are not subsampled.
#define VIDEO_PIX_FMT_NV42   VIDEO_FOURCC('N', 'V', '4', '2')
 Chroma (U/V) are not subsampled.
#define VIDEO_FOREACH_YUV_FULL_PLANAR(X, ...)
 Repeat a macro for every YUV Full-Planar format, passed as first parameter.
#define VIDEO_PIX_FMT_YUV420   VIDEO_FOURCC('Y', 'U', '1', '2')
 Chroma (U/V) are subsampled horizontaly and vertically.
#define VIDEO_PIX_FMT_YVU420   VIDEO_FOURCC('Y', 'V', '1', '2')
 Chroma (U/V) are subsampled horizontaly and vertically.

Compressed formats

#define VIDEO_FOREACH_COMPRESSED(X, ...)
 Repeat a macro for every compressed format, passed as first parameter.
#define VIDEO_PIX_FMT_JPEG   VIDEO_FOURCC('J', 'P', 'E', 'G')
 Both JPEG (single frame) and Motion-JPEG (MJPEG, multiple JPEG frames concatenated).
#define VIDEO_PIX_FMT_H264   VIDEO_FOURCC('H', '2', '6', '4')
 H264 with start code.
#define VIDEO_PIX_FMT_H264_NO_SC   VIDEO_FOURCC('A', 'V', 'C', '1')
 H264 without start code.
#define VIDEO_PIX_FMT_PNG   VIDEO_FOURCC('P', 'N', 'G', ' ')
 PNG.

Detailed Description

The '|' characters separate the pixels or logical blocks, and spaces separate the bytes.

The uppercase letter represents the most significant bit. The lowercase letters represent the rest of the bits.

Macro Definition Documentation

◆ VIDEO_FMT_IS_BAYER

#define VIDEO_FMT_IS_BAYER ( pixfmt)

#include <zephyr/drivers/video.h>

Value:
(0 VIDEO_FOREACH_BAYER(_VIDEO_FMT_OR_EQ, pixfmt))
#define VIDEO_FOREACH_BAYER(X,...)
Repeat a macro for every Bayer format, passed as first parameter.
Definition video.h:1210

Test if a fourcc is a Bayer format.

Parameters
pixfmtFourCC of the pixel format to test
Returns
Whether the format is known to match this category

◆ VIDEO_FMT_IS_FULL_PLANAR

#define VIDEO_FMT_IS_FULL_PLANAR ( pixfmt)

#include <zephyr/drivers/video.h>

Value:
(0 VIDEO_FOREACH_YUV_FULL_PLANAR(_VIDEO_FMT_OR_EQ, pixfmt))
#define VIDEO_FOREACH_YUV_FULL_PLANAR(X,...)
Repeat a macro for every YUV Full-Planar format, passed as first parameter.
Definition video.h:2187

Test if a fourcc is any of the full-planar formats.

Parameters
pixfmtFourCC of the pixel format to test
Returns
Whether the format is known to match this category

◆ VIDEO_FMT_IS_GRAYSCALE

#define VIDEO_FMT_IS_GRAYSCALE ( pixfmt)

#include <zephyr/drivers/video.h>

Value:
(0 VIDEO_FOREACH_GRAYSCALE(_VIDEO_FMT_OR_EQ, pixfmt))
#define VIDEO_FOREACH_GRAYSCALE(X,...)
Repeat a macro for every grayscale format, passed as first parameter.
Definition video.h:1612

Test if a fourcc is a grayscale format.

Parameters
pixfmtFourCC of the pixel format to test
Returns
Whether the format is known to match this category

◆ VIDEO_FMT_IS_MIPI_PACKED

#define VIDEO_FMT_IS_MIPI_PACKED ( pixfmt)

#include <zephyr/drivers/video.h>

Value:
(0 VIDEO_FOREACH_BAYER_MIPI_PACKED(_VIDEO_FMT_OR_EQ, pixfmt) \
VIDEO_FOREACH_GRAYSCALE_MIPI_PACKED(_VIDEO_FMT_OR_EQ, pixfmt))
#define VIDEO_FOREACH_BAYER_MIPI_PACKED(X,...)
Repeat a macro for every Bayer MIPI-packed format, passed as first parameter.
Definition video.h:1275

Test if a fourcc is any of the MIPI-packed formats.

Parameters
pixfmtFourCC of the pixel format to test
Returns
Whether the format is known to match this category

◆ VIDEO_FMT_IS_PADDED

#define VIDEO_FMT_IS_PADDED ( pixfmt)

#include <zephyr/drivers/video.h>

Value:
(0 VIDEO_FOREACH_BAYER_PADDED(_VIDEO_FMT_OR_EQ, pixfmt) \
VIDEO_FOREACH_GRAYSCALE_PADDED(_VIDEO_FMT_OR_EQ, pixfmt))
#define VIDEO_FOREACH_BAYER_PADDED(X,...)
Repeat a macro for every Bayer padded format, passed as first parameter.
Definition video.h:1221

Test if a fourcc is any of the MIPI-packed formats.

Parameters
pixfmtFourCC of the pixel format to test
Returns
Whether the format is known to match this category

◆ VIDEO_FMT_IS_RGB

#define VIDEO_FMT_IS_RGB ( pixfmt)

#include <zephyr/drivers/video.h>

Value:
(0 VIDEO_FOREACH_RGB(_VIDEO_FMT_OR_EQ, pixfmt))
#define VIDEO_FOREACH_RGB(X,...)
Repeat a macro for every RGB format, passed as first parameter.
Definition video.h:1755

Test if a fourcc is an RGB format (bayer excluded).

Parameters
pixfmtFourCC of the pixel format to test
Returns
Whether the format is known to match this category

◆ VIDEO_FMT_IS_SEMI_PLANAR

#define VIDEO_FMT_IS_SEMI_PLANAR ( pixfmt)

#include <zephyr/drivers/video.h>

Value:
(0 VIDEO_FOREACH_YUV_SEMI_PLANAR(_VIDEO_FMT_OR_EQ, pixfmt))
#define VIDEO_FOREACH_YUV_SEMI_PLANAR(X,...)
Repeat a macro for every YUV Semi-Planar format, passed as first parameter.
Definition video.h:2020

Test if a fourcc is any of the semi-planar formats.

Parameters
pixfmtFourCC of the pixel format to test
Returns
Whether the format is known to match this category

◆ VIDEO_FMT_IS_YUV

#define VIDEO_FMT_IS_YUV ( pixfmt)

#include <zephyr/drivers/video.h>

Value:
(0 VIDEO_FOREACH_YUV(_VIDEO_FMT_OR_EQ, pixfmt))
#define VIDEO_FOREACH_YUV(X,...)
Repeat a macro for every YUV format, passed as first parameter.
Definition video.h:1946

Test if a fourcc is an YUV format.

Parameters
pixfmtFourCC of the pixel format to test
Returns
Whether the format is known to match this category

◆ VIDEO_FOREACH_BAYER

#define VIDEO_FOREACH_BAYER ( X,
... )

#include <zephyr/drivers/video.h>

Value:
VIDEO_FOREACH_BAYER_PADDED(X, __VA_ARGS__) \
VIDEO_FOREACH_BAYER_MIPI_PACKED(X, __VA_ARGS__) \
VIDEO_FOREACH_BAYER_NON_PACKED(X, __VA_ARGS__)

Repeat a macro for every Bayer format, passed as first parameter.

Parameters
Xmacro to replicate
...extra parameters

◆ VIDEO_FOREACH_BAYER_MIPI_PACKED

#define VIDEO_FOREACH_BAYER_MIPI_PACKED ( X,
... )

#include <zephyr/drivers/video.h>

Value:
X(VIDEO_PIX_FMT_SBGGR10P, __VA_ARGS__) \
X(VIDEO_PIX_FMT_SGBRG10P, __VA_ARGS__) \
X(VIDEO_PIX_FMT_SGRBG10P, __VA_ARGS__) \
X(VIDEO_PIX_FMT_SRGGB10P, __VA_ARGS__) \
X(VIDEO_PIX_FMT_SBGGR12P, __VA_ARGS__) \
X(VIDEO_PIX_FMT_SGBRG12P, __VA_ARGS__) \
X(VIDEO_PIX_FMT_SGRBG12P, __VA_ARGS__) \
X(VIDEO_PIX_FMT_SRGGB12P, __VA_ARGS__) \
X(VIDEO_PIX_FMT_SBGGR14P, __VA_ARGS__) \
X(VIDEO_PIX_FMT_SGBRG14P, __VA_ARGS__) \
X(VIDEO_PIX_FMT_SGRBG14P, __VA_ARGS__) \
X(VIDEO_PIX_FMT_SRGGB14P, __VA_ARGS__)
#define VIDEO_PIX_FMT_SGRBG12P
Definition video.h:1350
#define VIDEO_PIX_FMT_SRGGB12P
Definition video.h:1359
#define VIDEO_PIX_FMT_SBGGR10P
Definition video.h:1296
#define VIDEO_PIX_FMT_SRGGB10P
Definition video.h:1323
#define VIDEO_PIX_FMT_SRGGB14P
Definition video.h:1395
#define VIDEO_PIX_FMT_SGBRG14P
Definition video.h:1377
#define VIDEO_PIX_FMT_SGRBG10P
Definition video.h:1314
#define VIDEO_PIX_FMT_SBGGR12P
Definition video.h:1332
#define VIDEO_PIX_FMT_SBGGR14P
Definition video.h:1368
#define VIDEO_PIX_FMT_SGBRG10P
Definition video.h:1305
#define VIDEO_PIX_FMT_SGRBG14P
Definition video.h:1386
#define VIDEO_PIX_FMT_SGBRG12P
Definition video.h:1341

Repeat a macro for every Bayer MIPI-packed format, passed as first parameter.

A red, green, blue channel for every pixel, other than 8-bit per pixel.

Parameters
Xmacro to replicate
...extra parameters

◆ VIDEO_FOREACH_BAYER_NON_PACKED

#define VIDEO_FOREACH_BAYER_NON_PACKED ( X,
... )

#include <zephyr/drivers/video.h>

Value:
X(VIDEO_PIX_FMT_SBGGR8, __VA_ARGS__) \
X(VIDEO_PIX_FMT_SGBRG8, __VA_ARGS__) \
X(VIDEO_PIX_FMT_SGRBG8, __VA_ARGS__) \
X(VIDEO_PIX_FMT_SRGGB8, __VA_ARGS__) \
X(VIDEO_PIX_FMT_SGBRG10, __VA_ARGS__) \
X(VIDEO_PIX_FMT_SGRBG10, __VA_ARGS__) \
X(VIDEO_PIX_FMT_SRGGB10, __VA_ARGS__) \
X(VIDEO_PIX_FMT_SBGGR12, __VA_ARGS__) \
X(VIDEO_PIX_FMT_SGBRG12, __VA_ARGS__) \
X(VIDEO_PIX_FMT_SGRBG12, __VA_ARGS__) \
X(VIDEO_PIX_FMT_SRGGB12, __VA_ARGS__) \
X(VIDEO_PIX_FMT_SBGGR14, __VA_ARGS__) \
X(VIDEO_PIX_FMT_SGBRG14, __VA_ARGS__) \
X(VIDEO_PIX_FMT_SGRBG14, __VA_ARGS__) \
X(VIDEO_PIX_FMT_SRGGB14, __VA_ARGS__) \
X(VIDEO_PIX_FMT_SBGGR16, __VA_ARGS__) \
X(VIDEO_PIX_FMT_SGBRG16, __VA_ARGS__) \
X(VIDEO_PIX_FMT_SGRBG16, __VA_ARGS__) \
X(VIDEO_PIX_FMT_SRGGB16, __VA_ARGS__)
#define VIDEO_PIX_FMT_SGRBG10
Definition video.h:1484
#define VIDEO_PIX_FMT_SGRBG8
Definition video.h:1451
#define VIDEO_PIX_FMT_SRGGB10
Definition video.h:1492
#define VIDEO_PIX_FMT_SBGGR14
Definition video.h:1532
#define VIDEO_PIX_FMT_SGRBG16
Definition video.h:1580
#define VIDEO_PIX_FMT_SRGGB16
Definition video.h:1588
#define VIDEO_PIX_FMT_SGBRG14
Definition video.h:1540
#define VIDEO_PIX_FMT_SRGGB12
Definition video.h:1524
#define VIDEO_PIX_FMT_SGBRG16
Definition video.h:1572
#define VIDEO_PIX_FMT_SGBRG10
Definition video.h:1476
#define VIDEO_PIX_FMT_SBGGR12
Definition video.h:1500
#define VIDEO_PIX_FMT_SGBRG12
Definition video.h:1508
#define VIDEO_PIX_FMT_SRGGB14
Definition video.h:1556
#define VIDEO_PIX_FMT_SGBRG8
Definition video.h:1442
#define VIDEO_PIX_FMT_SBGGR8
Definition video.h:1433
#define VIDEO_PIX_FMT_SRGGB8
Definition video.h:1460
#define VIDEO_PIX_FMT_SBGGR16
Definition video.h:1564
#define VIDEO_PIX_FMT_SGRBG12
Definition video.h:1516
#define VIDEO_PIX_FMT_SGRBG14
Definition video.h:1548

Repeat a macro for every Bayer non-packed format, passed as first parameter.

A red, green, blue channel for every pixel, other than 8-bit per pixel.

Parameters
Xmacro to replicate
...extra parameters

◆ VIDEO_FOREACH_BAYER_PADDED

#define VIDEO_FOREACH_BAYER_PADDED ( X,
... )

#include <zephyr/drivers/video.h>

Value:
X(VIDEO_PIX_FMT_SBGGR8P16, __VA_ARGS__) \
X(VIDEO_PIX_FMT_SGBRG8P16, __VA_ARGS__) \
X(VIDEO_PIX_FMT_SGRBG8P16, __VA_ARGS__) \
X(VIDEO_PIX_FMT_SRGGB8P16, __VA_ARGS__)
#define VIDEO_PIX_FMT_SGBRG8P16
8-bit bayer format, split in two 4-bit blocks each zero-padded, little endian.
Definition video.h:1245
#define VIDEO_PIX_FMT_SGRBG8P16
8-bit bayer format, split in two 4-bit blocks each zero-padded, little endian.
Definition video.h:1255
#define VIDEO_PIX_FMT_SRGGB8P16
8-bit bayer format, split in two 4-bit blocks each zero-padded, little endian.
Definition video.h:1265
#define VIDEO_PIX_FMT_SBGGR8P16
8-bit bayer format, split in two 4-bit blocks each zero-padded, little endian.
Definition video.h:1235

Repeat a macro for every Bayer padded format, passed as first parameter.

Parameters
Xmacro to replicate
...extra parameters

◆ VIDEO_FOREACH_COMPRESSED

#define VIDEO_FOREACH_COMPRESSED ( X,
... )

#include <zephyr/drivers/video.h>

Value:
X(VIDEO_PIX_FMT_JPEG, __VA_ARGS__) \
X(VIDEO_PIX_FMT_H264, __VA_ARGS__) \
X(VIDEO_PIX_FMT_H264_NO_SC, __VA_ARGS__) \
X(VIDEO_PIX_FMT_PNG, __VA_ARGS__)
#define VIDEO_PIX_FMT_JPEG
Both JPEG (single frame) and Motion-JPEG (MJPEG, multiple JPEG frames concatenated).
Definition video.h:2273
#define VIDEO_PIX_FMT_H264
H264 with start code.
Definition video.h:2278
#define VIDEO_PIX_FMT_H264_NO_SC
H264 without start code.
Definition video.h:2283
#define VIDEO_PIX_FMT_PNG
PNG.
Definition video.h:2288

Repeat a macro for every compressed format, passed as first parameter.

Parameters
Xmacro to replicate
...extra parameters

◆ VIDEO_FOREACH_GRAYSCALE

#define VIDEO_FOREACH_GRAYSCALE ( X,
... )

#include <zephyr/drivers/video.h>

Value:
VIDEO_FOREACH_GRAYSCALE_PADDED(X, __VA_ARGS__) \
VIDEO_FOREACH_GRAYSCALE_MIPI_PACKED(X, __VA_ARGS__)
#define VIDEO_FOREACH_GRAYSCALE_NON_PACKED(X,...)
Repeat a macro for every grayscale non-packed format, passed as first parameter.
Definition video.h:1625

Repeat a macro for every grayscale format, passed as first parameter.

Parameters
Xmacro to replicate
...extra parameters

◆ VIDEO_FOREACH_GRAYSCALE_MIPI_PACKED

#define VIDEO_FOREACH_GRAYSCALE_MIPI_PACKED ( X,
... )

#include <zephyr/drivers/video.h>

Value:
X(VIDEO_PIX_FMT_Y10P, __VA_ARGS__) \
X(VIDEO_PIX_FMT_Y12P, __VA_ARGS__) \
X(VIDEO_PIX_FMT_Y14P, __VA_ARGS__)
#define VIDEO_PIX_FMT_Y12P
Definition video.h:1728
#define VIDEO_PIX_FMT_Y10P
Definition video.h:1719
#define VIDEO_PIX_FMT_Y14P
Definition video.h:1737

Repeat a macro for every grayscale MIPI-packed format, passed as first parameter.

Parameters
Xmacro to replicate
...extra parameters

◆ VIDEO_FOREACH_GRAYSCALE_NON_PACKED

#define VIDEO_FOREACH_GRAYSCALE_NON_PACKED ( X,
... )

#include <zephyr/drivers/video.h>

Value:
X(VIDEO_PIX_FMT_GREY, __VA_ARGS__) \
X(VIDEO_PIX_FMT_Y10, __VA_ARGS__) \
X(VIDEO_PIX_FMT_Y12, __VA_ARGS__) \
X(VIDEO_PIX_FMT_Y14, __VA_ARGS__) \
X(VIDEO_PIX_FMT_Y16, __VA_ARGS__)
#define VIDEO_PIX_FMT_Y10
Little endian, with the 6 most significant bits set to Zero.
Definition video.h:1651
#define VIDEO_PIX_FMT_Y12
Little endian, with the 4 most significant bits set to Zero.
Definition video.h:1661
#define VIDEO_PIX_FMT_Y14
Little endian, with the 2 most significant bits set to Zero.
Definition video.h:1671
#define VIDEO_PIX_FMT_GREY
Same as Y8 (8-bit luma-only) following the standard FOURCC naming, or L8 in some graphics libraries.
Definition video.h:1641
#define VIDEO_PIX_FMT_Y16
Little endian.
Definition video.h:1681

Repeat a macro for every grayscale non-packed format, passed as first parameter.

A red, green, blue channel for every pixel, other than 8-bit per pixel.

Parameters
Xmacro to replicate
...extra parameters

◆ VIDEO_FOREACH_GRAYSCALE_PADDED

#define VIDEO_FOREACH_GRAYSCALE_PADDED ( X,
... )

#include <zephyr/drivers/video.h>

Value:
X(VIDEO_PIX_FMT_Y8P16, __VA_ARGS__)
#define VIDEO_PIX_FMT_Y8P16
8-bit luma-only split in two 4-bit blocks each zero-padded, little endian.
Definition video.h:1700

Repeat a macro for every grayscale padded format, passed as first parameter.

Parameters
Xmacro to replicate
...extra parameters

◆ VIDEO_FOREACH_RGB

#define VIDEO_FOREACH_RGB ( X,
... )

#include <zephyr/drivers/video.h>

Value:
VIDEO_FOREACH_RGB_PACKED(X, __VA_ARGS__) \
VIDEO_FOREACH_RGB_NON_PACKED(X, __VA_ARGS__) \
VIDEO_FOREACH_RGB_ALPHA(X, __VA_ARGS__) \
VIDEO_FOREACH_RGB_PADDED(X, __VA_ARGS__)
#define VIDEO_FOREACH_RGB_PACKED(X,...)
Repeat a macro for every RGB packed format, passed as first parameter.
Definition video.h:1769

Repeat a macro for every RGB format, passed as first parameter.

Parameters
Xmacro to replicate
...extra parameters

◆ VIDEO_FOREACH_RGB_ALPHA

#define VIDEO_FOREACH_RGB_ALPHA ( X,
... )

#include <zephyr/drivers/video.h>

Value:
X(VIDEO_PIX_FMT_ARGB32, __VA_ARGS__) \
X(VIDEO_PIX_FMT_ABGR32, __VA_ARGS__) \
X(VIDEO_PIX_FMT_RGBA32, __VA_ARGS__) \
X(VIDEO_PIX_FMT_BGRA32, __VA_ARGS__)
#define VIDEO_PIX_FMT_BGRA32
The last byte is alpha (A) for each pixel.
Definition video.h:1857
#define VIDEO_PIX_FMT_ARGB32
The first byte is alpha (A) for each pixel.
Definition video.h:1846
#define VIDEO_PIX_FMT_RGBA32
The last byte is alpha (A) for each pixel.
Definition video.h:1866
#define VIDEO_PIX_FMT_ABGR32
The first byte is alpha (A) for each pixel.
Definition video.h:1877

Repeat a macro for every RGB alpha format, passed as first parameter.

A red, green, blue, alpha channel for every pixel.

Parameters
Xmacro to replicate
...extra parameters

◆ VIDEO_FOREACH_RGB_NON_PACKED

#define VIDEO_FOREACH_RGB_NON_PACKED ( X,
... )

#include <zephyr/drivers/video.h>

Value:
X(VIDEO_PIX_FMT_BGR24, __VA_ARGS__) \
X(VIDEO_PIX_FMT_RGB24, __VA_ARGS__)
#define VIDEO_PIX_FMT_RGB24
24 bit RGB format with 8 bit per component
Definition video.h:1823
#define VIDEO_PIX_FMT_BGR24
24 bit RGB format with 8 bit per component
Definition video.h:1814

Repeat a macro for every RGB non-packed format, passed as first parameter.

A red, green, blue channel for every pixel, 8-bit per pixel.

Parameters
Xmacro to replicate
...extra parameters

◆ VIDEO_FOREACH_RGB_PACKED

#define VIDEO_FOREACH_RGB_PACKED ( X,
... )

#include <zephyr/drivers/video.h>

Value:
X(VIDEO_PIX_FMT_RGB565X, __VA_ARGS__) \
X(VIDEO_PIX_FMT_RGB565, __VA_ARGS__)
#define VIDEO_PIX_FMT_RGB565
5 red bits [15:11], 6 green bits [10:5], 5 blue bits [4:0].
Definition video.h:1793
#define VIDEO_PIX_FMT_RGB565X
5 red bits [15:11], 6 green bits [10:5], 5 blue bits [4:0].
Definition video.h:1782

Repeat a macro for every RGB packed format, passed as first parameter.

A red, green, blue channel for every pixel, other than 8-bit per pixel.

Parameters
Xmacro to replicate
...extra parameters

◆ VIDEO_FOREACH_RGB_PADDED

#define VIDEO_FOREACH_RGB_PADDED ( X,
... )

#include <zephyr/drivers/video.h>

Value:
X(VIDEO_PIX_FMT_XRGB32, __VA_ARGS__)
#define VIDEO_PIX_FMT_XRGB32
The first byte is empty (X) for each pixel.
Definition video.h:1897

Repeat a macro for every RGB padded format, passed as first parameter.

A red, green, blue channel for every pixel.

Parameters
Xmacro to replicate
...extra parameters

◆ VIDEO_FOREACH_YUV

#define VIDEO_FOREACH_YUV ( X,
... )

#include <zephyr/drivers/video.h>

Value:
VIDEO_FOREACH_YUV_NON_PLANAR(X, __VA_ARGS__) \
VIDEO_FOREACH_YUV_SEMI_PLANAR(X, __VA_ARGS__)

Repeat a macro for every YUV format, passed as first parameter.

Parameters
Xmacro to replicate
...extra parameters

◆ VIDEO_FOREACH_YUV_FULL_PLANAR

#define VIDEO_FOREACH_YUV_FULL_PLANAR ( X,
... )

#include <zephyr/drivers/video.h>

Value:
X(VIDEO_PIX_FMT_YUV420, __VA_ARGS__) \
X(VIDEO_PIX_FMT_YVU420, __VA_ARGS__)
#define VIDEO_PIX_FMT_YUV420
Chroma (U/V) are subsampled horizontaly and vertically.
Definition video.h:2218
#define VIDEO_PIX_FMT_YVU420
Chroma (U/V) are subsampled horizontaly and vertically.
Definition video.h:2247

Repeat a macro for every YUV Full-Planar format, passed as first parameter.

Parameters
Xmacro to replicate
...extra parameters

◆ VIDEO_FOREACH_YUV_NON_PLANAR

#define VIDEO_FOREACH_YUV_NON_PLANAR ( X,
... )

#include <zephyr/drivers/video.h>

Value:
X(VIDEO_PIX_FMT_YUYV, __VA_ARGS__) \
X(VIDEO_PIX_FMT_YVYU, __VA_ARGS__) \
X(VIDEO_PIX_FMT_VYUY, __VA_ARGS__) \
X(VIDEO_PIX_FMT_UYVY, __VA_ARGS__) \
X(VIDEO_PIX_FMT_YUV24, __VA_ARGS__) \
X(VIDEO_PIX_FMT_XYUV32, __VA_ARGS__)
#define VIDEO_PIX_FMT_XYUV32
The first byte is empty (X) for each pixel.
Definition video.h:2003
#define VIDEO_PIX_FMT_YVYU
Definition video.h:1980
#define VIDEO_PIX_FMT_VYUY
Definition video.h:1987
#define VIDEO_PIX_FMT_YUV24
24 bit YUV format with 8 bit per component
Definition video.h:2012
#define VIDEO_PIX_FMT_YUYV
There is either a missing channel per pixel, U or V.
Definition video.h:1973
#define VIDEO_PIX_FMT_UYVY
Definition video.h:1994

Repeat a macro for every YUV Non-Planar format, passed as first parameter.

Parameters
Xmacro to replicate
...extra parameters

◆ VIDEO_FOREACH_YUV_SEMI_PLANAR

#define VIDEO_FOREACH_YUV_SEMI_PLANAR ( X,
... )

#include <zephyr/drivers/video.h>

Value:
X(VIDEO_PIX_FMT_NV12, __VA_ARGS__) \
X(VIDEO_PIX_FMT_NV21, __VA_ARGS__) \
X(VIDEO_PIX_FMT_NV16, __VA_ARGS__) \
X(VIDEO_PIX_FMT_NV61, __VA_ARGS__) \
X(VIDEO_PIX_FMT_NV24, __VA_ARGS__) \
X(VIDEO_PIX_FMT_NV42, __VA_ARGS__)
#define VIDEO_PIX_FMT_NV24
Chroma (U/V) are not subsampled.
Definition video.h:2153
#define VIDEO_PIX_FMT_NV21
Chroma (U/V) are subsampled horizontaly and vertically.
Definition video.h:2074
#define VIDEO_PIX_FMT_NV61
Chroma (U/V) are subsampled horizontaly.
Definition video.h:2127
#define VIDEO_PIX_FMT_NV12
Chroma (U/V) are subsampled horizontaly and vertically.
Definition video.h:2050
#define VIDEO_PIX_FMT_NV16
Chroma (U/V) are subsampled horizontaly.
Definition video.h:2100
#define VIDEO_PIX_FMT_NV42
Chroma (U/V) are not subsampled.
Definition video.h:2179

Repeat a macro for every YUV Semi-Planar format, passed as first parameter.

Parameters
Xmacro to replicate
...extra parameters

◆ VIDEO_FOURCC

#define VIDEO_FOURCC ( a,
b,
c,
d )

#include <zephyr/drivers/video.h>

Value:
((uint32_t)(a) | ((uint32_t)(b) << 8) | ((uint32_t)(c) << 16) | ((uint32_t)(d) << 24))
irp nz macro MOVR cc d
Definition asm-macro-32-bit-gnu.h:11
__UINT32_TYPE__ uint32_t
Definition stdint.h:90

Four-character-code uniquely identifying the pixel format.

◆ VIDEO_FOURCC_FROM_STR

#define VIDEO_FOURCC_FROM_STR ( str)

#include <zephyr/drivers/video.h>

Value:
VIDEO_FOURCC((str)[0], (str)[1], (str)[2], (str)[3])
#define VIDEO_FOURCC(a, b, c, d)
Four-character-code uniquely identifying the pixel format.
Definition video.h:1158

Convert a four-character-string to a four-character-code.

Convert a string literal or variable into a four-character-code as defined by VIDEO_FOURCC.

Parameters
strString to be converted
Returns
Four-character-code.

◆ VIDEO_FOURCC_TO_STR

#define VIDEO_FOURCC_TO_STR ( fourcc)

#include <zephyr/drivers/video.h>

Value:
((char[]){ \
(char)((fourcc) & 0xFF), \
(char)(((fourcc) >> 8) & 0xFF), \
(char)(((fourcc) >> 16) & 0xFF), \
(char)(((fourcc) >> 24) & 0xFF), \
'\0' \
})

Convert a four-character-code to a four-character-string.

Convert a four-character code as defined by VIDEO_FOURCC into a string that can be used anywhere, such as in debug logs with the s print formatter.

Parameters
fourccThe 32-bit four-character-code integer to be converted, in CPU-native endinaness.
Returns
Four-character-string built out of it.

◆ VIDEO_PIX_FMT_ABGR32

#define VIDEO_PIX_FMT_ABGR32   VIDEO_FOURCC('R', 'A', '2', '4')

#include <zephyr/drivers/video.h>

The first byte is alpha (A) for each pixel.

Warning
Linux calls this format BGRA32 due to a historical typo
| Aaaaaaaa Bbbbbbbb Gggggggg Rrrrrrrr | ...

◆ VIDEO_PIX_FMT_ARGB32

#define VIDEO_PIX_FMT_ARGB32   VIDEO_FOURCC('B', 'A', '2', '4')

#include <zephyr/drivers/video.h>

The first byte is alpha (A) for each pixel.

| Aaaaaaaa Rrrrrrrr Gggggggg Bbbbbbbb | ...

◆ VIDEO_PIX_FMT_BGR24

#define VIDEO_PIX_FMT_BGR24   VIDEO_FOURCC('B', 'G', 'R', '3')

#include <zephyr/drivers/video.h>

24 bit RGB format with 8 bit per component

| Bbbbbbbb Gggggggg Rggggggg | ...

◆ VIDEO_PIX_FMT_BGRA32

#define VIDEO_PIX_FMT_BGRA32   VIDEO_FOURCC('A', 'R', '2', '4')

#include <zephyr/drivers/video.h>

The last byte is alpha (A) for each pixel.

  • Warning
    Linux calls this format ABGR32 due to a historical typo
    | Bbbbbbbb Gggggggg Rrrrrrrr Aaaaaaaa | ...

◆ VIDEO_PIX_FMT_BGRX32

#define VIDEO_PIX_FMT_BGRX32   VIDEO_FOURCC('X', 'R', '2', '4')

#include <zephyr/drivers/video.h>

The last byte is empty (X) for each pixel.

Warning
Linux calls this format XBGR32 due to a historical typo
| Bbbbbbbb Gggggggg Rrrrrrrr Xxxxxxxx | ...

◆ VIDEO_PIX_FMT_GREY

#define VIDEO_PIX_FMT_GREY   VIDEO_FOURCC('G', 'R', 'E', 'Y')

#include <zephyr/drivers/video.h>

Same as Y8 (8-bit luma-only) following the standard FOURCC naming, or L8 in some graphics libraries.

0 1 2 3
| Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | ...

◆ VIDEO_PIX_FMT_H264

#define VIDEO_PIX_FMT_H264   VIDEO_FOURCC('H', '2', '6', '4')

#include <zephyr/drivers/video.h>

H264 with start code.

◆ VIDEO_PIX_FMT_H264_NO_SC

#define VIDEO_PIX_FMT_H264_NO_SC   VIDEO_FOURCC('A', 'V', 'C', '1')

#include <zephyr/drivers/video.h>

H264 without start code.

◆ VIDEO_PIX_FMT_JPEG

#define VIDEO_PIX_FMT_JPEG   VIDEO_FOURCC('J', 'P', 'E', 'G')

#include <zephyr/drivers/video.h>

Both JPEG (single frame) and Motion-JPEG (MJPEG, multiple JPEG frames concatenated).

◆ VIDEO_PIX_FMT_NV12

#define VIDEO_PIX_FMT_NV12   VIDEO_FOURCC('N', 'V', '1', '2')

#include <zephyr/drivers/video.h>

Chroma (U/V) are subsampled horizontaly and vertically.

| Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | ...
| Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | ...
| ... |
| Uuuuuuuu Vvvvvvvv | Uuuuuuuu Vvvvvvvv | ...
| ... |

Below diagram show how luma and chroma relate to each others

Y0 Y1 Y2 Y3 ...
Y6 Y7 Y8 Y9 ...
...
U0/1/6/7 V0/1/6/7 U2/3/8/9 V2/3/8/9 ...
...

◆ VIDEO_PIX_FMT_NV16

#define VIDEO_PIX_FMT_NV16   VIDEO_FOURCC('N', 'V', '1', '6')

#include <zephyr/drivers/video.h>

Chroma (U/V) are subsampled horizontaly.

| Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | ...
| Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | ...
| ... |
| Uuuuuuuu Vvvvvvvv | Uuuuuuuu Vvvvvvvv | ...
| Uuuuuuuu Vvvvvvvv | Uuuuuuuu Vvvvvvvv | ...
| ... |

Below diagram show how luma and chroma relate to each others

Y0 Y1 Y2 Y3 ...
Y6 Y7 Y8 Y9 ...
...
U0/1 V0/1 U2/3 V2/3 ...
U6/7 V6/7 U8/9 V8/9 ...
...

◆ VIDEO_PIX_FMT_NV21

#define VIDEO_PIX_FMT_NV21   VIDEO_FOURCC('N', 'V', '2', '1')

#include <zephyr/drivers/video.h>

Chroma (U/V) are subsampled horizontaly and vertically.

| Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | ...
| Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | ...
| ... |
| Vvvvvvvv Uuuuuuuu | Vvvvvvvv Uuuuuuuu | ...
| ... |

Below diagram show how luma and chroma relate to each others

Y0 Y1 Y2 Y3 ...
Y6 Y7 Y8 Y9 ...
...
V0/1/6/7 U0/1/6/7 V2/3/8/9 U2/3/8/9 ...
...

◆ VIDEO_PIX_FMT_NV24

#define VIDEO_PIX_FMT_NV24   VIDEO_FOURCC('N', 'V', '2', '4')

#include <zephyr/drivers/video.h>

Chroma (U/V) are not subsampled.

| Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy |
| Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy |
| ... |
| Uuuuuuuu Vvvvvvvv | Uuuuuuuu Vvvvvvvv | Uuuuuuuu Vvvvvvvv | Uuuuuuuu Vvvvvvvv |
| Uuuuuuuu Vvvvvvvv | Uuuuuuuu Vvvvvvvv | Uuuuuuuu Vvvvvvvv | Uuuuuuuu Vvvvvvvv |
| ... |

Below diagram show how luma and chroma relate to each others

Y0 Y1 Y2 Y3 ...
Y6 Y7 Y8 Y9 ...
...
U0 V0 U1 V1 U2 V2 U3 V3 ...
U6 V6 U7 V7 U8 V8 U9 V9 ...
...

◆ VIDEO_PIX_FMT_NV42

#define VIDEO_PIX_FMT_NV42   VIDEO_FOURCC('N', 'V', '4', '2')

#include <zephyr/drivers/video.h>

Chroma (U/V) are not subsampled.

| Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy |
| Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy |
| ... |
| Vvvvvvvv Uuuuuuuu | Vvvvvvvv Uuuuuuuu | Vvvvvvvv Uuuuuuuu | Vvvvvvvv Uuuuuuuu |
| Vvvvvvvv Uuuuuuuu | Vvvvvvvv Uuuuuuuu | Vvvvvvvv Uuuuuuuu | Vvvvvvvv Uuuuuuuu |
| ... |

Below diagram show how luma and chroma relate to each others

Y0 Y1 Y2 Y3 ...
Y6 Y7 Y8 Y9 ...
...
V0 U0 V1 U1 V2 U2 V3 U3 ...
V6 U6 V7 U7 V8 U8 V9 U9 ...
...

◆ VIDEO_PIX_FMT_NV61

#define VIDEO_PIX_FMT_NV61   VIDEO_FOURCC('N', 'V', '6', '1')

#include <zephyr/drivers/video.h>

Chroma (U/V) are subsampled horizontaly.

| Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | ...
| Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | ...
| ... |
| Vvvvvvvv Uuuuuuuu | Vvvvvvvv Uuuuuuuu | ...
| Vvvvvvvv Uuuuuuuu | Vvvvvvvv Uuuuuuuu | ...
| ... |

Below diagram show how luma and chroma relate to each others

Y0 Y1 Y2 Y3 ...
Y6 Y7 Y8 Y9 ...
...
V0/1 U0/1 V2/3 U2/3 ...
V6/7 U6/7 V8/9 U8/9 ...
...

◆ VIDEO_PIX_FMT_PNG

#define VIDEO_PIX_FMT_PNG   VIDEO_FOURCC('P', 'N', 'G', ' ')

#include <zephyr/drivers/video.h>

PNG.

◆ VIDEO_PIX_FMT_RGB24

#define VIDEO_PIX_FMT_RGB24   VIDEO_FOURCC('R', 'G', 'B', '3')

#include <zephyr/drivers/video.h>

24 bit RGB format with 8 bit per component

| Rggggggg Gggggggg Bbbbbbbb | ...

◆ VIDEO_PIX_FMT_RGB565

#define VIDEO_PIX_FMT_RGB565   VIDEO_FOURCC('R', 'G', 'B', 'P')

#include <zephyr/drivers/video.h>

5 red bits [15:11], 6 green bits [10:5], 5 blue bits [4:0].

This 16-bit integer is then packed in little endian format over two bytes:

7......0 15.....8
| gggBbbbb RrrrrGgg | ...

◆ VIDEO_PIX_FMT_RGB565X

#define VIDEO_PIX_FMT_RGB565X   VIDEO_FOURCC('R', 'G', 'B', 'R')

#include <zephyr/drivers/video.h>

5 red bits [15:11], 6 green bits [10:5], 5 blue bits [4:0].

This 16-bit integer is then packed in big endian format over two bytes:

15.....8 7......0
| RrrrrGgg gggBbbbb | ...

◆ VIDEO_PIX_FMT_RGBA32

#define VIDEO_PIX_FMT_RGBA32   VIDEO_FOURCC('A', 'B', '2', '4')

#include <zephyr/drivers/video.h>

The last byte is alpha (A) for each pixel.

| Rrrrrrrr Gggggggg Bbbbbbbb Aaaaaaaa | ...

◆ VIDEO_PIX_FMT_RGBX32

#define VIDEO_PIX_FMT_RGBX32   VIDEO_FOURCC('X', 'B', '2', '4')

#include <zephyr/drivers/video.h>

The last byte is empty (X) for each pixel.

| Rrrrrrrr Gggggggg Bbbbbbbb Xxxxxxxx | ...

◆ VIDEO_PIX_FMT_SBGGR10

#define VIDEO_PIX_FMT_SBGGR10   VIDEO_FOURCC('B', 'G', '1', '0')

#include <zephyr/drivers/video.h>

| bbbbbbbb 000000Bb | gggggggg 000000Gg | bbbbbbbb 000000Bb | gggggggg 000000Gg | ...
| gggggggg 000000Gg | rrrrrrrr 000000Rr | gggggggg 000000Gg | rrrrrrrr 000000Rr | ...

◆ VIDEO_PIX_FMT_SBGGR10P

#define VIDEO_PIX_FMT_SBGGR10P   VIDEO_FOURCC('p', 'B', 'A', 'A')

#include <zephyr/drivers/video.h>

0 1 2 3 3 2 1 0
| Bbbbbbbb | Gggggggg | Bbbbbbbb | Gggggggg | ggbbggbb | ...
| Gggggggg | Rrrrrrrr | Gggggggg | Rrrrrrrr | rrggrrgg | ...

◆ VIDEO_PIX_FMT_SBGGR12

#define VIDEO_PIX_FMT_SBGGR12   VIDEO_FOURCC('B', 'G', '1', '2')

#include <zephyr/drivers/video.h>

| bbbbbbbb 0000Bbbb | gggggggg 0000Gggg | bbbbbbbb 0000Bbbb | gggggggg 0000Gggg | ...
| gggggggg 0000Gggg | rrrrrrrr 0000Rrrr | gggggggg 0000Gggg | rrrrrrrr 0000Rrrr | ...

◆ VIDEO_PIX_FMT_SBGGR12P

#define VIDEO_PIX_FMT_SBGGR12P   VIDEO_FOURCC('p', 'B', 'C', 'C')

#include <zephyr/drivers/video.h>

0 1 1 0 2 3 3 2
| Bbbbbbbb | Gggggggg | ggggbbbb | Bbbbbbbb | Gggggggg | ggggbbbb | ...
| Gggggggg | Rrrrrrrr | rrrrgggg | Gggggggg | Rrrrrrrr | rrrrgggg | ...

◆ VIDEO_PIX_FMT_SBGGR14

#define VIDEO_PIX_FMT_SBGGR14   VIDEO_FOURCC('B', 'G', '1', '4')

#include <zephyr/drivers/video.h>

| bbbbbbbb 00Bbbbbb | gggggggg 00Gggggg | bbbbbbbb 00Bbbbbb | gggggggg 00Gggggg | ...
| gggggggg 00Gggggg | rrrrrrrr 00Rrrrrr | gggggggg 00Gggggg | rrrrrrrr 00Rrrrrr | ...

◆ VIDEO_PIX_FMT_SBGGR14P

#define VIDEO_PIX_FMT_SBGGR14P   VIDEO_FOURCC('p', 'B', 'E', 'E')

#include <zephyr/drivers/video.h>

0 1 2 3 1 0 2 1 3 2
| Bbbbbbbb | Gggggggg | Bbbbbbbb | Gggggggg | ggbbbbbb bbbbgggg ggggggbb | ...
| Gggggggg | Rrrrrrrr | Gggggggg | Rrrrrrrr | rrgggggg ggggrrrr rrrrrrgg | ...

◆ VIDEO_PIX_FMT_SBGGR16

#define VIDEO_PIX_FMT_SBGGR16   VIDEO_FOURCC('B', 'Y', 'R', '2')

#include <zephyr/drivers/video.h>

| bbbbbbbb Bbbbbbbb | gggggggg Gggggggg | bbbbbbbb Bbbbbbbb | gggggggg Gggggggg | ...
| gggggggg Gggggggg | rrrrrrrr Rrrrrrrr | gggggggg Gggggggg | rrrrrrrr Rrrrrrrr | ...

◆ VIDEO_PIX_FMT_SBGGR8

#define VIDEO_PIX_FMT_SBGGR8   VIDEO_FOURCC('B', 'A', '8', '1')

#include <zephyr/drivers/video.h>

0 1 2 3
| Bbbbbbbb | Gggggggg | Bbbbbbbb | Gggggggg | ...
| Gggggggg | Rrrrrrrr | Gggggggg | Rrrrrrrr | ...

◆ VIDEO_PIX_FMT_SBGGR8P16

#define VIDEO_PIX_FMT_SBGGR8P16   VIDEO_FOURCC('p', 'B', '8', '2')

#include <zephyr/drivers/video.h>

8-bit bayer format, split in two 4-bit blocks each zero-padded, little endian.

0 1 2 3
| 0000bbbb 0000Bbbb | 0000gggg 0000Gggg | 0000gggg 0000Gggg | 0000rrrr 0000Rrrr | ...

◆ VIDEO_PIX_FMT_SGBRG10

#define VIDEO_PIX_FMT_SGBRG10   VIDEO_FOURCC('G', 'B', '1', '0')

#include <zephyr/drivers/video.h>

| gggggggg 000000Gg | bbbbbbbb 000000Bb | gggggggg 000000Gg | bbbbbbbb 000000Bb | ...
| rrrrrrrr 000000Rr | gggggggg 000000Gg | rrrrrrrr 000000Rr | gggggggg 000000Gg | ...

◆ VIDEO_PIX_FMT_SGBRG10P

#define VIDEO_PIX_FMT_SGBRG10P   VIDEO_FOURCC('p', 'G', 'A', 'A')

#include <zephyr/drivers/video.h>

0 1 2 3 3 2 1 0
| Gggggggg | Bbbbbbbb | Gggggggg | Bbbbbbbb | bbggbbgg | ...
| Rrrrrrrr | Gggggggg | Rrrrrrrr | Gggggggg | ggrrggrr | ...

◆ VIDEO_PIX_FMT_SGBRG12

#define VIDEO_PIX_FMT_SGBRG12   VIDEO_FOURCC('G', 'B', '1', '2')

#include <zephyr/drivers/video.h>

| gggggggg 0000Gggg | bbbbbbbb 0000Bbbb | gggggggg 0000Gggg | bbbbbbbb 0000Bbbb | ...
| rrrrrrrr 0000Rrrr | gggggggg 0000Gggg | rrrrrrrr 0000Rrrr | gggggggg 0000Gggg | ...

◆ VIDEO_PIX_FMT_SGBRG12P

#define VIDEO_PIX_FMT_SGBRG12P   VIDEO_FOURCC('p', 'G', 'C', 'C')

#include <zephyr/drivers/video.h>

0 1 1 0 2 3 3 2
| Gggggggg | Bbbbbbbb | bbbbgggg | Gggggggg | Bbbbbbbb | bbbbgggg | ...
| Rrrrrrrr | Gggggggg | ggggrrrr | Rrrrrrrr | Gggggggg | ggggrrrr | ...

◆ VIDEO_PIX_FMT_SGBRG14

#define VIDEO_PIX_FMT_SGBRG14   VIDEO_FOURCC('G', 'B', '1', '4')

#include <zephyr/drivers/video.h>

| gggggggg 00Gggggg | bbbbbbbb 00Bbbbbb | gggggggg 00Gggggg | bbbbbbbb 00Bbbbbb | ...
| rrrrrrrr 00Rrrrrr | gggggggg 00Gggggg | rrrrrrrr 00Rrrrrr | gggggggg 00Gggggg | ...

◆ VIDEO_PIX_FMT_SGBRG14P

#define VIDEO_PIX_FMT_SGBRG14P   VIDEO_FOURCC('p', 'G', 'E', 'E')

#include <zephyr/drivers/video.h>

0 1 2 3 1 0 2 1 3 2
| Gggggggg | Bbbbbbbb | Gggggggg | Bbbbbbbb | bbgggggg ggggbbbb bbbbbbgg | ...
| Rrrrrrrr | Gggggggg | Rrrrrrrr | Gggggggg | ggrrrrrr rrrrgggg ggggggrr | ...

◆ VIDEO_PIX_FMT_SGBRG16

#define VIDEO_PIX_FMT_SGBRG16   VIDEO_FOURCC('G', 'B', '1', '6')

#include <zephyr/drivers/video.h>

| gggggggg Gggggggg | bbbbbbbb Bbbbbbbb | gggggggg Gggggggg | bbbbbbbb Bbbbbbbb | ...
| rrrrrrrr Rrrrrrrr | gggggggg Gggggggg | rrrrrrrr Rrrrrrrr | gggggggg Gggggggg | ...

◆ VIDEO_PIX_FMT_SGBRG8

#define VIDEO_PIX_FMT_SGBRG8   VIDEO_FOURCC('G', 'B', 'R', 'G')

#include <zephyr/drivers/video.h>

0 1 2 3
| Gggggggg | Bbbbbbbb | Gggggggg | Bbbbbbbb | ...
| Rrrrrrrr | Gggggggg | Rrrrrrrr | Gggggggg | ...

◆ VIDEO_PIX_FMT_SGBRG8P16

#define VIDEO_PIX_FMT_SGBRG8P16   VIDEO_FOURCC('p', 'G', '8', '2')

#include <zephyr/drivers/video.h>

8-bit bayer format, split in two 4-bit blocks each zero-padded, little endian.

0 1 2 3
| 0000gggg 0000Gggg | 0000bbbb 0000Bbbb | 0000rrrr 0000Rrrr | 0000gggg 0000Gggg | ...

◆ VIDEO_PIX_FMT_SGRBG10

#define VIDEO_PIX_FMT_SGRBG10   VIDEO_FOURCC('B', 'A', '1', '0')

#include <zephyr/drivers/video.h>

| gggggggg 000000Gg | rrrrrrrr 000000Rr | gggggggg 000000Gg | rrrrrrrr 000000Rr | ...
| bbbbbbbb 000000Bb | gggggggg 000000Gg | bbbbbbbb 000000Bb | gggggggg 000000Gg | ...

◆ VIDEO_PIX_FMT_SGRBG10P

#define VIDEO_PIX_FMT_SGRBG10P   VIDEO_FOURCC('p', 'g', 'A', 'A')

#include <zephyr/drivers/video.h>

0 1 2 3 3 2 1 0
| Gggggggg | Rrrrrrrr | Gggggggg | Rrrrrrrr | rrggrrgg | ...
| Bbbbbbbb | Gggggggg | Bbbbbbbb | Gggggggg | ggbbggbb | ...

◆ VIDEO_PIX_FMT_SGRBG12

#define VIDEO_PIX_FMT_SGRBG12   VIDEO_FOURCC('B', 'A', '1', '2')

#include <zephyr/drivers/video.h>

| gggggggg 0000Gggg | rrrrrrrr 0000Rrrr | gggggggg 0000Gggg | rrrrrrrr 0000Rrrr | ...
| bbbbbbbb 0000Bbbb | gggggggg 0000Gggg | bbbbbbbb 0000Bbbb | gggggggg 0000Gggg | ...

◆ VIDEO_PIX_FMT_SGRBG12P

#define VIDEO_PIX_FMT_SGRBG12P   VIDEO_FOURCC('p', 'g', 'C', 'C')

#include <zephyr/drivers/video.h>

0 1 1 0 2 3 3 2
| Gggggggg | Rrrrrrrr | rrrrgggg | Gggggggg | Rrrrrrrr | rrrrgggg | ...
| Bbbbbbbb | Gggggggg | ggggbbbb | Bbbbbbbb | Gggggggg | ggggbbbb | ...

◆ VIDEO_PIX_FMT_SGRBG14

#define VIDEO_PIX_FMT_SGRBG14   VIDEO_FOURCC('G', 'R', '1', '4')

#include <zephyr/drivers/video.h>

| gggggggg 00Gggggg | rrrrrrrr 00Rrrrrr | gggggggg 00Gggggg | rrrrrrrr 00Rrrrrr | ...
| bbbbbbbb 00Bbbbbb | gggggggg 00Gggggg | bbbbbbbb 00Bbbbbb | gggggggg 00Gggggg | ...

◆ VIDEO_PIX_FMT_SGRBG14P

#define VIDEO_PIX_FMT_SGRBG14P   VIDEO_FOURCC('p', 'g', 'E', 'E')

#include <zephyr/drivers/video.h>

0 1 2 3 1 0 2 1 3 2
| Gggggggg | Rrrrrrrr | Gggggggg | Rrrrrrrr | rrgggggg ggggrrrr rrrrrrgg | ...
| Bbbbbbbb | Gggggggg | Bbbbbbbb | Gggggggg | ggbbbbbb bbbbgggg ggggggbb | ...

◆ VIDEO_PIX_FMT_SGRBG16

#define VIDEO_PIX_FMT_SGRBG16   VIDEO_FOURCC('G', 'R', '1', '6')

#include <zephyr/drivers/video.h>

| gggggggg Gggggggg | rrrrrrrr Rrrrrrrr | gggggggg Gggggggg | rrrrrrrr Rrrrrrrr | ...
| bbbbbbbb Bbbbbbbb | gggggggg Gggggggg | bbbbbbbb Bbbbbbbb | gggggggg Gggggggg | ...

◆ VIDEO_PIX_FMT_SGRBG8

#define VIDEO_PIX_FMT_SGRBG8   VIDEO_FOURCC('G', 'R', 'B', 'G')

#include <zephyr/drivers/video.h>

0 1 2 3
| Gggggggg | Rrrrrrrr | Gggggggg | Rrrrrrrr | ...
| Bbbbbbbb | Gggggggg | Bbbbbbbb | Gggggggg | ...

◆ VIDEO_PIX_FMT_SGRBG8P16

#define VIDEO_PIX_FMT_SGRBG8P16   VIDEO_FOURCC('p', 'g', '8', '2')

#include <zephyr/drivers/video.h>

8-bit bayer format, split in two 4-bit blocks each zero-padded, little endian.

0 1 2 3
| 0000gggg 0000Gggg | 0000rrrr 0000Rrrr | 0000bbbb 0000Bbbb | 0000gggg 0000Gggg | ...

◆ VIDEO_PIX_FMT_SRGGB10

#define VIDEO_PIX_FMT_SRGGB10   VIDEO_FOURCC('R', 'G', '1', '0')

#include <zephyr/drivers/video.h>

| rrrrrrrr 000000Rr | gggggggg 000000Gg | rrrrrrrr 000000Rr | gggggggg 000000Gg | ...
| gggggggg 000000Gg | bbbbbbbb 000000Bb | gggggggg 000000Gg | bbbbbbbb 000000Bb | ...

◆ VIDEO_PIX_FMT_SRGGB10P

#define VIDEO_PIX_FMT_SRGGB10P   VIDEO_FOURCC('p', 'R', 'A', 'A')

#include <zephyr/drivers/video.h>

0 1 2 3 3 2 1 0
| Rrrrrrrr | Gggggggg | Rrrrrrrr | Gggggggg | ggrrggrr | ...
| Gggggggg | Bbbbbbbb | Gggggggg | Bbbbbbbb | bbggbbgg | ...

◆ VIDEO_PIX_FMT_SRGGB12

#define VIDEO_PIX_FMT_SRGGB12   VIDEO_FOURCC('R', 'G', '1', '2')

#include <zephyr/drivers/video.h>

| rrrrrrrr 0000Rrrr | gggggggg 0000Gggg | rrrrrrrr 0000Rrrr | gggggggg 0000Gggg | ...
| gggggggg 0000Gggg | bbbbbbbb 0000Bbbb | gggggggg 0000Gggg | bbbbbbbb 0000Bbbb | ...

◆ VIDEO_PIX_FMT_SRGGB12P

#define VIDEO_PIX_FMT_SRGGB12P   VIDEO_FOURCC('p', 'R', 'C', 'C')

#include <zephyr/drivers/video.h>

0 1 1 0 2 3 3 2
| Rrrrrrrr | Gggggggg | ggggrrrr | Rrrrrrrr | Gggggggg | ggggrrrr | ...
| Gggggggg | Bbbbbbbb | bbbbgggg | Gggggggg | Bbbbbbbb | bbbbgggg | ...

◆ VIDEO_PIX_FMT_SRGGB14

#define VIDEO_PIX_FMT_SRGGB14   VIDEO_FOURCC('R', 'G', '1', '4')

#include <zephyr/drivers/video.h>

| rrrrrrrr 00Rrrrrr | gggggggg 00Gggggg | rrrrrrrr 00Rrrrrr | gggggggg 00Gggggg | ...
| gggggggg 00Gggggg | bbbbbbbb 00Bbbbbb | gggggggg 00Gggggg | bbbbbbbb 00Bbbbbb | ...

◆ VIDEO_PIX_FMT_SRGGB14P

#define VIDEO_PIX_FMT_SRGGB14P   VIDEO_FOURCC('p', 'R', 'E', 'E')

#include <zephyr/drivers/video.h>

0 1 2 3 1 0 2 1 3 2
| Rrrrrrrr | Gggggggg | Rrrrrrrr | Gggggggg | ggrrrrrr rrrrgggg ggggggrr | ...
| Gggggggg | Bbbbbbbb | Gggggggg | Bbbbbbbb | bbgggggg ggggbbbb bbbbbbgg | ...

◆ VIDEO_PIX_FMT_SRGGB16

#define VIDEO_PIX_FMT_SRGGB16   VIDEO_FOURCC('R', 'G', '1', '6')

#include <zephyr/drivers/video.h>

| rrrrrrrr Rrrrrrrr | gggggggg Gggggggg | rrrrrrrr Rrrrrrrr | gggggggg Gggggggg | ...
| gggggggg Gggggggg | bbbbbbbb Bbbbbbbb | gggggggg Gggggggg | bbbbbbbb Bbbbbbbb | ...

◆ VIDEO_PIX_FMT_SRGGB8

#define VIDEO_PIX_FMT_SRGGB8   VIDEO_FOURCC('R', 'G', 'G', 'B')

#include <zephyr/drivers/video.h>

0 1 2 3
| Rrrrrrrr | Gggggggg | Rrrrrrrr | Gggggggg | ...
| Gggggggg | Bbbbbbbb | Gggggggg | Bbbbbbbb | ...

◆ VIDEO_PIX_FMT_SRGGB8P16

#define VIDEO_PIX_FMT_SRGGB8P16   VIDEO_FOURCC('p', 'R', '8', '2')

#include <zephyr/drivers/video.h>

8-bit bayer format, split in two 4-bit blocks each zero-padded, little endian.

0 1 2 3
| 0000rrrr 0000Rrrr | 0000gggg 0000Gggg | 0000gggg 0000Gggg | 0000bbbb 0000Bbbb | ...

◆ VIDEO_PIX_FMT_UYVY

#define VIDEO_PIX_FMT_UYVY   VIDEO_FOURCC('U', 'Y', 'V', 'Y')

#include <zephyr/drivers/video.h>

| Uuuuuuuu Yyyyyyyy | Vvvvvvvv Yyyyyyyy | ...

◆ VIDEO_PIX_FMT_VYUY

#define VIDEO_PIX_FMT_VYUY   VIDEO_FOURCC('V', 'Y', 'U', 'Y')

#include <zephyr/drivers/video.h>

| Vvvvvvvv Yyyyyyyy | Uuuuuuuu Yyyyyyyy | ...

◆ VIDEO_PIX_FMT_XBGR32

#define VIDEO_PIX_FMT_XBGR32   VIDEO_FOURCC('R', 'X', '2', '4')

#include <zephyr/drivers/video.h>

The first byte is empty (X) for each pixel.

Warning
Linux calls this format BGRX32 due to a historical typo
| Xxxxxxxx Bbbbbbbb Gggggggg Rrrrrrrr | ...

◆ VIDEO_PIX_FMT_XRGB32

#define VIDEO_PIX_FMT_XRGB32   VIDEO_FOURCC('B', 'X', '2', '4')

#include <zephyr/drivers/video.h>

The first byte is empty (X) for each pixel.

| Xxxxxxxx Rrrrrrrr Gggggggg Bbbbbbbb | ...

◆ VIDEO_PIX_FMT_XYUV32

#define VIDEO_PIX_FMT_XYUV32   VIDEO_FOURCC('X', 'Y', 'U', 'V')

#include <zephyr/drivers/video.h>

The first byte is empty (X) for each pixel.

| Xxxxxxxx Yyyyyyyy Uuuuuuuu Vvvvvvvv | ...

◆ VIDEO_PIX_FMT_Y10

#define VIDEO_PIX_FMT_Y10   VIDEO_FOURCC('Y', '1', '0', ' ')

#include <zephyr/drivers/video.h>

Little endian, with the 6 most significant bits set to Zero.

0 1 2 3
| yyyyyyyy 000000Yy | yyyyyyyy 000000Yy | yyyyyyyy 000000Yy | yyyyyyyy 000000Yy | ...
| yyyyyyyy 000000Yy | yyyyyyyy 000000Yy | yyyyyyyy 000000Yy | yyyyyyyy 000000Yy | ...

◆ VIDEO_PIX_FMT_Y10P

#define VIDEO_PIX_FMT_Y10P   VIDEO_FOURCC('Y', '1', '0', 'P')

#include <zephyr/drivers/video.h>

0 1 2 3 3 2 1 0
| Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | yyyyyyyy | ...

◆ VIDEO_PIX_FMT_Y12

#define VIDEO_PIX_FMT_Y12   VIDEO_FOURCC('Y', '1', '2', ' ')

#include <zephyr/drivers/video.h>

Little endian, with the 4 most significant bits set to Zero.

0 1 2 3
| yyyyyyyy 0000Yyyy | yyyyyyyy 0000Yyyy | yyyyyyyy 0000Yyyy | yyyyyyyy 0000Yyyy | ...
| yyyyyyyy 0000Yyyy | yyyyyyyy 0000Yyyy | yyyyyyyy 0000Yyyy | yyyyyyyy 0000Yyyy | ...

◆ VIDEO_PIX_FMT_Y12P

#define VIDEO_PIX_FMT_Y12P   VIDEO_FOURCC('Y', '1', '2', 'P')

#include <zephyr/drivers/video.h>

0 1 1 0 2 3 3 2
| Yyyyyyyy | Yyyyyyyy | yyyyyyyy | Yyyyyyyy | Yyyyyyyy | yyyyyyyy | ...
| Yyyyyyyy | Yyyyyyyy | yyyyyyyy | Yyyyyyyy | Yyyyyyyy | yyyyyyyy | ...

◆ VIDEO_PIX_FMT_Y14

#define VIDEO_PIX_FMT_Y14   VIDEO_FOURCC('Y', '1', '4', ' ')

#include <zephyr/drivers/video.h>

Little endian, with the 2 most significant bits set to Zero.

0 1 2 3
| yyyyyyyy 00Yyyyyy | yyyyyyyy 00Yyyyyy | yyyyyyyy 00Yyyyyy | yyyyyyyy 00Yyyyyy | ...
| yyyyyyyy 00Yyyyyy | yyyyyyyy 00Yyyyyy | yyyyyyyy 00Yyyyyy | yyyyyyyy 00Yyyyyy | ...

◆ VIDEO_PIX_FMT_Y14P

#define VIDEO_PIX_FMT_Y14P   VIDEO_FOURCC('Y', '1', '4', 'P')

#include <zephyr/drivers/video.h>

0 1 2 3 1 0 2 1 3 2
| Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | yyyyyyyy yyyyyyyy yyyyyyyy | ...
| Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | yyyyyyyy yyyyyyyy yyyyyyyy | ...

◆ VIDEO_PIX_FMT_Y16

#define VIDEO_PIX_FMT_Y16   VIDEO_FOURCC('Y', '1', '6', ' ')

#include <zephyr/drivers/video.h>

Little endian.

0 1 2 3
| yyyyyyyy Yyyyyyyy | yyyyyyyy Yyyyyyyy | yyyyyyyy Yyyyyyyy | yyyyyyyy Yyyyyyyy | ...
| yyyyyyyy Yyyyyyyy | yyyyyyyy Yyyyyyyy | yyyyyyyy Yyyyyyyy | yyyyyyyy Yyyyyyyy | ...

◆ VIDEO_PIX_FMT_Y8P16

#define VIDEO_PIX_FMT_Y8P16   VIDEO_FOURCC('Y', '8', 'P', '2')

#include <zephyr/drivers/video.h>

8-bit luma-only split in two 4-bit blocks each zero-padded, little endian.

0 1 2 3
| 0000yyyy 0000Yyyy | 0000yyyy 0000Yyyy | 0000yyyy 0000Yyyy | 0000yyyy 0000Yyyy | ...

◆ VIDEO_PIX_FMT_YUV24

#define VIDEO_PIX_FMT_YUV24   VIDEO_FOURCC('Y', 'U', 'V', '3')

#include <zephyr/drivers/video.h>

24 bit YUV format with 8 bit per component

| Yyyyyyyy Uuuuuuuu Vvvvvvvv | ...

◆ VIDEO_PIX_FMT_YUV420

#define VIDEO_PIX_FMT_YUV420   VIDEO_FOURCC('Y', 'U', '1', '2')

#include <zephyr/drivers/video.h>

Chroma (U/V) are subsampled horizontaly and vertically.

| Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy |
| Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy |
| ... |
| Uuuuuuuu | Uuuuuuuu |
| ... |
| Vvvvvvvv | Vvvvvvvv |
| ... |

Below diagram show how luma and chroma relate to each others

Y0 Y1 Y2 Y3 ...
Y6 Y7 Y8 Y9 ...
...
U0/1/6/7 U2/3/8/9 ...
...
V0/1/6/7 V2/3/8/9 ...
...

◆ VIDEO_PIX_FMT_YUYV

#define VIDEO_PIX_FMT_YUYV   VIDEO_FOURCC('Y', 'U', 'Y', 'V')

#include <zephyr/drivers/video.h>

There is either a missing channel per pixel, U or V.

The value is to be averaged over 2 pixels to get the value of individual pixel.

| Yyyyyyyy Uuuuuuuu | Yyyyyyyy Vvvvvvvv | ...

◆ VIDEO_PIX_FMT_YVU420

#define VIDEO_PIX_FMT_YVU420   VIDEO_FOURCC('Y', 'V', '1', '2')

#include <zephyr/drivers/video.h>

Chroma (U/V) are subsampled horizontaly and vertically.

| Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy |
| Yyyyyyyy | Yyyyyyyy | Yyyyyyyy | Yyyyyyyy |
| ... |
| Vvvvvvvv | Vvvvvvvv |
| ... |
| Uuuuuuuu | Uuuuuuuu |
| ... |

Below diagram show how luma and chroma relate to each others

Y0 Y1 Y2 Y3 ...
Y6 Y7 Y8 Y9 ...
...
V0/1/6/7 V2/3/8/9 ...
...
U0/1/6/7 U2/3/8/9 ...
...

◆ VIDEO_PIX_FMT_YVYU

#define VIDEO_PIX_FMT_YVYU   VIDEO_FOURCC('Y', 'V', 'Y', 'U')

#include <zephyr/drivers/video.h>

| Yyyyyyyy Vvvvvvvv | Yyyyyyyy Uuuuuuuu | ...

Function Documentation

◆ video_bits_per_pixel()

unsigned int video_bits_per_pixel ( uint32_t pixfmt)
inlinestatic

#include <zephyr/drivers/video.h>

Get number of bits per pixel of a pixel format.

Parameters
pixfmtFourCC pixel format value (Video pixel formats).
Return values
0if the format is unhandled or if it is variable number of bits
>0bit size of one pixel for this format