Name
Packed RGB formats — Packed RGB formats
Description
These formats are designed to match the pixel formats of
typical PC graphics frame buffers. They occupy 8, 16, 24 or 32 bits
per pixel. These are all packed-pixel formats, meaning all the data
for a pixel lie next to each other in memory.
When one of these formats is used, drivers shall report the
colorspace V4L2_COLORSPACE_SRGB
.
Table 2.4. Packed RGB Image Formats
Identifier | Code | | Byte 0 in memory | | Byte 1 | | Byte 2 | | Byte 3 |
---|
| | Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|
V4L2_PIX_FMT_RGB332 | 'RGB1' | | b1 | b0 | g2 | g1 | g0 | r2 | r1 | r0 | | | | | | | | | | | | | | | | | | | | | | | | | | |
V4L2_PIX_FMT_RGB444 | 'R444' | | g3 | g2 | g1 | g0 | b3 | b2 | b1 | b0 | | a3 | a2 | a1 | a0 | r3 | r2 | r1 | r0 | | | | | | | | | | | | | | | | | |
V4L2_PIX_FMT_RGB555 | 'RGBO' | | g2 | g1 | g0 | r4 | r3 | r2 | r1 | r0 | | a | b4 | b3 | b2 | b1 | b0 | g4 | g3 | | | | | | | | | | | | | | | | | |
V4L2_PIX_FMT_RGB565 | 'RGBP' | | g2 | g1 | g0 | r4 | r3 | r2 | r1 | r0 | | b4 | b3 | b2 | b1 | b0 | g5 | g4 | g3 | | | | | | | | | | | | | | | | | |
V4L2_PIX_FMT_RGB555X | 'RGBQ' | | a | b4 | b3 | b2 | b1 | b0 | g4 | g3 | | g2 | g1 | g0 | r4 | r3 | r2 | r1 | r0 | | | | | | | | | | | | | | | | | |
V4L2_PIX_FMT_RGB565X | 'RGBR' | | b4 | b3 | b2 | b1 | b0 | g5 | g4 | g3 | | g2 | g1 | g0 | r4 | r3 | r2 | r1 | r0 | | | | | | | | | | | | | | | | | |
V4L2_PIX_FMT_BGR666 | 'BGRH' | | b5 | b4 | b3 | b2 | b1 | b0 | g5 | g4 | | g3 | g2 | g1 | g0 | r5 | r4 | r3 | r2 | | r1 | r0 | | | | | | | | | | | | | | |
V4L2_PIX_FMT_BGR24 | 'BGR3' | | b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 | | g7 | g6 | g5 | g4 | g3 | g2 | g1 | g0 | | r7 | r6 | r5 | r4 | r3 | r2 | r1 | r0 | | | | | | | | |
V4L2_PIX_FMT_RGB24 | 'RGB3' | | r7 | r6 | r5 | r4 | r3 | r2 | r1 | r0 | | g7 | g6 | g5 | g4 | g3 | g2 | g1 | g0 | | b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 | | | | | | | | |
V4L2_PIX_FMT_BGR32 | 'BGR4' | | b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 | | g7 | g6 | g5 | g4 | g3 | g2 | g1 | g0 | | r7 | r6 | r5 | r4 | r3 | r2 | r1 | r0 | | a7 | a6 | a5 | a4 | a3 | a2 | a1 | a0 |
V4L2_PIX_FMT_RGB32 | 'RGB4' | | r7 | r6 | r5 | r4 | r3 | r2 | r1 | r0 | | g7 | g6 | g5 | g4 | g3 | g2 | g1 | g0 | | b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 | | a7 | a6 | a5 | a4 | a3 | a2 | a1 | a0 |
Bit 7 is the most significant bit. The value of a = alpha
bits is undefined when reading from the driver, ignored when writing
to the driver, except when alpha blending has been negotiated for a
Video Overlay or Video Output Overlay.
Example 2.2. V4L2_PIX_FMT_BGR24
4 × 4 pixel
image
Byte Order. Each cell is one byte.
Important
Drivers may interpret these formats differently.
Some RGB formats above are uncommon and were probably
defined in error. Drivers may interpret them as in Table 2.5, “Packed RGB Image Formats (corrected)”.
Table 2.5. Packed RGB Image Formats (corrected)
Identifier | Code | | Byte 0 in memory | | Byte 1 | | Byte 2 | | Byte 3 |
---|
| | Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
---|
V4L2_PIX_FMT_RGB332 | 'RGB1' | | r2 | r1 | r0 | g2 | g1 | g0 | b1 | b0 | | | | | | | | | | | | | | | | | | | | | | | | | | |
V4L2_PIX_FMT_RGB444 | 'R444' | | g3 | g2 | g1 | g0 | b3 | b2 | b1 | b0 | | a3 | a2 | a1 | a0 | r3 | r2 | r1 | r0 | | | | | | | | | | | | | | | | | |
V4L2_PIX_FMT_RGB555 | 'RGBO' | | g2 | g1 | g0 | b4 | b3 | b2 | b1 | b0 | | a | r4 | r3 | r2 | r1 | r0 | g4 | g3 | | | | | | | | | | | | | | | | | |
V4L2_PIX_FMT_RGB565 | 'RGBP' | | g2 | g1 | g0 | b4 | b3 | b2 | b1 | b0 | | r4 | r3 | r2 | r1 | r0 | g5 | g4 | g3 | | | | | | | | | | | | | | | | | |
V4L2_PIX_FMT_RGB555X | 'RGBQ' | | a | r4 | r3 | r2 | r1 | r0 | g4 | g3 | | g2 | g1 | g0 | b4 | b3 | b2 | b1 | b0 | | | | | | | | | | | | | | | | | |
V4L2_PIX_FMT_RGB565X | 'RGBR' | | r4 | r3 | r2 | r1 | r0 | g5 | g4 | g3 | | g2 | g1 | g0 | b4 | b3 | b2 | b1 | b0 | | | | | | | | | | | | | | | | | |
V4L2_PIX_FMT_BGR666 | 'BGRH' | | b5 | b4 | b3 | b2 | b1 | b0 | g5 | g4 | | g3 | g2 | g1 | g0 | r5 | r4 | r3 | r2 | | r1 | r0 | | | | | | | | | | | | | | |
V4L2_PIX_FMT_BGR24 | 'BGR3' | | b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 | | g7 | g6 | g5 | g4 | g3 | g2 | g1 | g0 | | r7 | r6 | r5 | r4 | r3 | r2 | r1 | r0 | | | | | | | | |
V4L2_PIX_FMT_RGB24 | 'RGB3' | | r7 | r6 | r5 | r4 | r3 | r2 | r1 | r0 | | g7 | g6 | g5 | g4 | g3 | g2 | g1 | g0 | | b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 | | | | | | | | |
V4L2_PIX_FMT_BGR32 | 'BGR4' | | b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 | | g7 | g6 | g5 | g4 | g3 | g2 | g1 | g0 | | r7 | r6 | r5 | r4 | r3 | r2 | r1 | r0 | | a7 | a6 | a5 | a4 | a3 | a2 | a1 | a0 |
V4L2_PIX_FMT_RGB32 | 'RGB4' | | a7 | a6 | a5 | a4 | a3 | a2 | a1 | a0 | | r7 | r6 | r5 | r4 | r3 | r2 | r1 | r0 | | g7 | g6 | g5 | g4 | g3 | g2 | g1 | g0 | | b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 |
A test utility to determine which RGB formats a driver
actually supports is available from the LinuxTV v4l-dvb repository.
See http://linuxtv.org/repo/ for access instructions.