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.
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. |
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 2x2 subsampled U and V planes. |
IF09 | 0x39304649 | 9.5 | As YVU9 but an additional 4x4 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 2x2 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 2x2 subsampled V and U planes. |
YV16 | 0x36315659 | 16 | 8 bit Y plane followed by 8 bit 2x1 subsampled V and U planes. |
YVU9 | 0x39555659 | 9 | 8 bit Y plane followed by 8 bit 4x4 subsampled V and U planes. Registered by Intel. |