YUV pixel formats
YUV formats fall into two distinct groups, the packed formats where Y, U (Cb) and V (Cr) samples are packed together into macropixels which are stored in a single array, and the planar formats where each component is stored as a separate array, the final image being a fusing of the three separate planes.
In the diagrams below, the numerical suffix attached to each Y, U or V sample indicates the sampling position across the image line, so, for example, V0 indicates the leftmost V sample and Yn indicates the Y sample at the (n+1)th pixel from the left.
Subsampling intervals in the horizontal and vertical directions may merit some explanation. The horizontal subsampling interval describes how frequently across a line a sample of that component is taken while the vertical interval describes on which lines samples are taken. For example, UYVY format has a horizontal subsampling period of 2 for both the U and V components indicating that U and V samples are taken for every second pixel across a line. Their vertical subsampling period is 1 indicating that U and V samples are taken on each line of the image.
For YVU9, though, the vertical subsampling interval is 4. This indicates that U and V samples are only taken on every fourth line of the original image. Since the horizontal sampling period is also 4, a single U and a single V sample are taken for each square block of 16 image pixels.
Also, if you are interested in YCrCb to RGB conversion, you may find this page helpful.
Packed YUV Formats
Label | FOURCC in Hex | Bits per pixel | Description |
AYUV | 0x56555941 | 32 | Combined YUV and alpha |
CLJR | 0x524A4C43 | 8 | Cirrus Logic format with 4 pixels packed into a u_int32. A form of YUV 4:1:1 wiht less than 8 bits per Y, U and V sample. |
CYUV | 0x76757963 | 16 | Essentially a copy of UYVY except that the sense of the height is reversed – the image is upside down with respect to the UYVY version. |
GREY (Y800) |
0x59455247 | 8 | Apparently a duplicate of Y800 (and also, presumably, “Y8 “) |
HDYC (UYVY) |
0x43594448 | 16 | YUV 4:2:2 (Y sample at every pixel, U and V sampled at every second pixel horizontally on each line). A macropixel contains 2 pixels in 1 u_int32. This is a suplicate of UYVY except that the color components use the BT709 color space (as used in HD video). |
IRAW | 0x57615349 | ? | Intel uncompressed YUV. I have no information on this format – can you help? |
IUYV (UYVY) |
0x56595549 | 16 | Interlaced version of UYVY (line order 0, 2, 4,….,1, 3, 5….) registered by Silviu Brinzei of LEAD Technologies. |
IY41 | 0x31555949 | 12 | Interlaced version of Y41P (line order 0, 2, 4,….,1, 3, 5….) registered by Silviu Brinzei of LEAD Technologies. |
IYU1 | 0x31555949 | 12 | 12 bit format used in mode 2 of the IEEE 1394 Digital Camera 1.04 spec. This is equivalent to Y411 |
IYU2 | 0x32555949 | 24 | 24 bit format used in mode 0 of the IEEE 1394 Digital Camera 1.04 spec |
UYNV (UYVY) |
0x564E5955 | 16 | A direct copy of UYVY registered by NVidia to work around problems in some old codecs which did not like hardware which offered more than 2 UYVY surfaces. |
UYVP | 0x50565955 | 24? | YCbCr 4:2:2 extended precision 10-bits per component in U0Y0V0Y1 order. Registered by Rich Ehlers of Evans & Sutherland. |
UYVY | 0x59565955 | 16 | YUV 4:2:2 (Y sample at every pixel, U and V sampled at every second pixel horizontally on each line). A macropixel contains 2 pixels in 1 u_int32. |
V210 | 0x30313256 | 32 | 10-bit 4:2:2 YCrCb equivalent to the Quicktime format of the same name. |
V422 | 0x32323456 | 16 | I am told that this is an upside down version of UYVY. |
V655 | 0x35353656 | 16? | 16 bit YUV 4:2:2 format registered by Vitec Multimedia. I have no information on the component ordering or packing. |
VYUY | 0x59555956 | ? | ATI Packed YUV Data (format unknown) |
Y16 | 0x20363159 | 16 | 16-bit uncompressed greyscale image. |
Y211 | 0x31313259 | 8 | Packed YUV format with Y sampled at every second pixel across each line and U and V sampled at every fourth pixel. |
Y411 | 0x31313459 | 12 | YUV 4:1:1 with a packed, 6 byte/4 pixel macroblock structure. |
Y41P | 0x50313459 | 12 | YUV 4:1:1 (Y sample at every pixel, U and V sampled at every fourth pixel horizontally on each line). A macropixel contains 8 pixels in 3 u_int32s. |
Y41T | 0x54313459 | 12 | Format as for Y41P but the lsb of each Y component is used to signal pixel transparency . |
Y422 (UYVY) |
0x32323459 | 16 | Direct copy of UYVY as used by ADS Technologies Pyro WebCam firewire camera. |
Y42T | 0x54323459 | 16 | Format as for UYVY but the lsb of each Y component is used to signal pixel transparency . |
Y8 (Y800) |
0x20203859 | 8 | Duplicate of Y800 as far as I can see. |
Y800 | 0x30303859 | 8 | Simple, single Y plane for monochrome images. |
YUNV (YUY2) |
0x564E5559 | 16 | A direct copy of YUY2 registered by NVidia to work around problems in some old codecs which did not like hardware which offered more than 2 YUY2 surfaces. |
YUVP | 0x50565559 | 24? | YCbCr 4:2:2 extended precision 10-bits per component in Y0U0Y1V0 order. Registered by Rich Ehlers of Evans & Sutherland. |
YUY2 | 0x32595559 | 16 | YUV 4:2:2 as for UYVY but with different component ordering within the u_int32 macropixel. |
YUYV (YUY2) |
0x56595559 | 16 | Duplicate of YUY2 |
YVYU | 0x55595659 | 16 | YUV 4:2:2 as for UYVY but with different component ordering within the u_int32 macropixel. |
Planar YUV Formats
Label | FOURCC in Hex | Bits per pixel | Description |
CLPL | 0x4C504C43 | 12 | Format similar to YV12 but including a level of indirection. |
CXY1 | 0x31595843 | 12 | Planar YUV 4:1:1 format registered by Conexant. |
CXY2 | 0x32595842 | 16 | Planar YUV 4:2:2 format registered by Conexant. |
I420 | 0x30323449 | 12 | 8 bit Y plane followed by 8 bit 2×2 subsampled U and V planes. |
IF09 | 0x39304649 | 9.5 | As YVU9 but an additional 4×4 subsampled plane is appended containing delta information relative to the last frame. (Bpp is reported as 9) |
IMC1 | 0x31434D49 | 12 | As YV12 except the U and V planes each have the same stride as the Y plane |
IMC2 | 0x32434D49 | 12 | Similar to IMC1 except that the U and V lines are interleaved at half stride boundaries |
IMC3 (IMC1) |
0x33434D49 | 12 | As IMC1 except that U and V are swapped |
IMC4 (IMC2) |
0x34434D49 | 12 | As IMC2 except that U and V are swapped |
IYUV (I420) |
0x56555949 | 12 | Duplicate FOURCC, identical to I420. |
NV12 | 0x3231564E | 12 | 8-bit Y plane followed by an interleaved U/V plane with 2×2 subsampling |
NV21 | 0x3132564E | 12 | As NV12 with U and V reversed in the interleaved plane |
Y41B | 0x42313459 | 12? | Weitek format listed as “YUV 4:1:1 planar”. I have no other information on this format. |
Y42B | 0x42323459 | 16? | Weitek format listed as “YUV 4:2:2 planar”. I have no other information on this format. |
Y8 (Y800) |
0x20203859 | 8 | Duplicate of Y800 as far as I can see. |
Y800 | 0x30303859 | 8 | Simple, single Y plane for monochrome images. |
YUV9 | 0x39565559 | 9? | Registered by Intel., this is the format used internally by Indeo video code |
YV12 | 0x32315659 | 12 | 8 bit Y plane followed by 8 bit 2×2 subsampled V and U planes. |
YV16 | 0x36315659 | 16 | 8 bit Y plane followed by 8 bit 2×1 subsampled V and U planes. |
YVU9 | 0x39555659 | 9 | 8 bit Y plane followed by 8 bit 4×4 subsampled V and U planes. Registered by Intel. |