Four-Character Codes (FOURCC), a set of codes that are four characters in length, was introduced by Microsoft to clearly identify video data stream formats. The unique FOURCC value assigned to every compression format and pixel layout allows video frames to be passed between file and codec by ensuring the FOURCC of the source frame matches a FOURCC supported by the codec. FOURCCs describe the software technology that was used to produce multimedia data. By implication, they also describe the format of the data itself.
This article describes how FOURCC is used and provides information about how to register FOURCCs with Microsoft. To register a FOURCC code, send e-mail to mmreg@microsoft.com. Please include your name, title, company name, and phone and fax numbers. For more information, see "Registering a FOURCC Code" later in this article.
| FOURCCs and DirectDraw | |
| Registered FOURCCs | |
| Registering a FOURCC Code | |
| FOURCC Data Formats |
Microsoft DirectDraw uses FOURCC codes that are stored in file headers of files containing multimedia data such as bitmap images, sound, or video. DirectDraw-based applications use FOURCCs for image color and format conversion. If an application calls the IDirectDrawSurface7::GetPixelFormat method to request the pixel format of a surface whose format is not red-green-blue (RGB), the dwFourCC member of the DDPIXELFORMAT structure identifies the FOURCC when the method returns.
In addition, the biCompression member of the BITMAPINFOHEADER structure can be set to a FOURCC to indicate the codec used to compress or decompress an image. For more information on the use of FOURCCs to this function call, see biHeight and Video Formats in DirectShow.
FOURCCs are registered with Microsoft by the vendors of the respective multimedia software technologies. The currently registered FOURCCs appear in the following list.
| Compressor Code | Description |
ANIM | Intel - RDX |
AUR2 | AuraVision - Aura 2 Codec - YUV 422 |
AURA | AuraVision - Aura 1 Codec - YUV 411 |
BT20 | Brooktree - MediaStream codec |
BTCV | Brooktree - Composite Video codec |
CC12 | Intel - YUV12 codec |
CDVC | Canopus - DV codec |
CHAM | Winnov, Inc. - MM_WINNOV_CAVIARA_CHAMPAGNE |
CPLA | Weitek - 4:2:0 YUV Planar |
CVID | Supermac - Cinepak |
CWLT | reserved |
DUCK | Duck Corp. - TrueMotion 1.0 |
DVE2 | InSoft - DVE-2 Videoconferencing codec |
DXT1 | reserved |
DXT2 | reserved |
DXT3 | reserved |
DXT4 | reserved |
DXT5 | reserved |
DXTC | DirectX Texture Compression |
FLJP | D-Vision - Field Encoded Motion JPEG With LSI Bitstream Format |
GWLT | reserved |
H260 | Intel - Conferencing codec |
H261 | Intel - Conferencing codec |
H262 | Intel - Conferencing codec |
H263 | Intel - Conferencing codec |
H264 | Intel - Conferencing codec |
H265 | Intel - Conferencing codec |
H266 | Intel - Conferencing codec |
H267 | Intel - Conferencing codec |
H268 | Intel - Conferencing codec |
H269 | Intel - Conferencing codec |
I263 | Intel - I263 |
I420 | Intel - Indeo 4 codec |
IAN | Intel - RDX |
ICLB | InSoft - CellB Videoconferencing codec |
ILVC | Intel - Layered Video |
ILVR | ITU-T - H.263+ compression standard |
IRAW | Intel - YUV uncompressed |
IV30 | Intel - Indeo Video 3 codec |
IV31 | Intel - Indeo Video 3.1 codec |
IV32 | Intel - Indeo Video 3 codec |
IV33 | Intel - Indeo Video 3 codec |
IV34 | Intel - Indeo Video 3 codec |
IV35 | Intel - Indeo Video 3 codec |
IV36 | Intel - Indeo Video 3 codec |
IV37 | Intel - Indeo Video 3 codec |
IV38 | Intel - Indeo Video 3 codec |
IV39 | Intel - Indeo Video 3 codec |
IV40 | Intel - Indeo Video 4 codec |
IV41 | Intel - Indeo Video 4 codec |
IV42 | Intel - Indeo Video 4 codec |
IV43 | Intel - Indeo Video 4 codec |
IV44 | Intel - Indeo Video 4 codec |
IV45 | Intel - Indeo Video 4 codec |
IV46 | Intel - Indeo Video 4 codec |
IV47 | Intel - Indeo Video 4 codec |
IV48 | Intel - Indeo Video 4 codec |
IV49 | Intel - Indeo Video 4 codec |
IV50 | Intel - Indeo 5.0 |
MP42 | Microsoft - MPEG-4 Video Codec V2 |
MPEG | Chromatic - MPEG 1 Video I Frame |
MRCA | FAST Multimedia - Mrcodec |
MRLE | Microsoft - Run Length Encoding |
MSVC | Microsoft - Video 1 |
NTN1 | Nogatech - Video Compression 1 |
qpeq | Q-Team - QPEG 1.1 Format video codec |
RGBT | Computer Concepts - 32 bit support |
RT21 | Intel - Indeo 2.1 codec |
RVX | Intel - RDX |
SDCC | Sun Communications - Digital Camera Codec |
SFMC | Crystal Net - SFM Codec |
SMSC | Radius - proprietary |
SMSD | Radius - proprietary |
SPLC | Splash Studios - ACM audio codec |
SQZ2 | Microsoft - VXtreme Video Codec V2 |
SV10 | Sorenson - Video R1 |
TLMS | TeraLogic - Motion Intraframe Codec |
TLST | TeraLogic - Motion Intraframe Codec |
TM20 | Duck Corp. - TrueMotion 2.0 |
TMIC | TeraLogic - Motion Intraframe Codec |
TMOT | Horizons Technology - TrueMotion Video Compression Algorithm |
TR20 | Duck Corp. - TrueMotion RT 2.0 |
V422 | Vitec Multimedia - 24 bit YUV 4:2:2 format (CCIR 601). For this format, 2 consecutive pixels are represented by a 32 bit (4 byte) Y1UY2V color value. |
V655 | Vitec Multimedia - 16 bit YUV 4:2:2 format. |
VCR1 | ATI - VCR 1.0 |
VIVO | Vivo - H.263 Video Codec |
VIXL | Miro Computer Products AG - for use with the Miro line of capture cards. |
VLV1 | Videologic - VLCAP.DRV |
WBVC | Winbond Electronics - W9960 |
XLV0 | NetXL, Inc. - XL Video Decoder |
YC12 | Intel - YUV12 codec |
YUV8 | Winnov, Inc. - MM_WINNOV_CAVIAR_YUV8 |
YUV9 | Intel - YUV9 |
YUYV | Canopus - YUYV compressor |
ZPEG | Metheus - Video Zipper |
The following list shows the FOURCC values for DIB compression.
| Compressor Code | Description |
CYUV | Creative Labs, Inc - Creative Labs YUV |
FVF1 | Iterated Systems, Inc. - Fractal Video Frame |
IF09 | Intel - Intel Intermediate YUV9 |
JPEG | Microsoft - Still Image JPEG DIB |
MJPG | Microsoft - Motion JPEG DIB Format |
PHMO | IBM - Photomotion |
ULTI | IBM - Ultimotion |
VDCT | Vitec Multimedia - Video Maker Pro DIB |
VIDS | Vitec Multimedia - YUV 4:2:2 CCIR 601 for V422 |
YU92 | Intel - YUV |
Registering codes with Microsoft prevents needless duplication of work and helps development of standards. To register a FOURCC code, send e-mail to mmreg@microsoft.com. Please include your name, title, company name, and phone and fax numbers.
Use this e-mail address to register the following:
| • | Manufacturer IDs. Manufacturer IDs are unique IDs used on device drivers to identify the vendor for the driver. The driver vendor is usually also the hardware vendor.
|
| • | Product IDs. Product IDs are used to identify which specific device from a manufacturer is being used. For example, Microsoft has written drivers for the MIDI mapper and the WAVE mapper. Each of these has the (same) Microsoft Manufacturer ID and a unique Product ID. Product IDs and Product Names are assigned by the manufacturer. |
| • | Installable Compressor ID. The Installable Compressor interface requires the driver to uniquely identify itself with a FOURCC. In the AVI file, this is stored in the stream header chunk element fccHandler. Please consult the Microsoft DirectShow SDK, available through MSDN Professional subscription, for more information. The FOURCC should be used to identify state data belonging to the driver. All codecs should use the following convention for defining their state information structure: typedef struct _stateinfo {
FOURCC fcc;
....
} STATEINFO;Then, when the state info in a SET_STATE_INFO message is received, you should check the FOURCC to verify that it has state information for the driver. |
Data formats for FOURCC include: RBG, YUV, and compressed formats. RGB describes the colors produced by emitting light, such as on a video monitor. YUV formats can be either packed or planar. In packed YUV formats, Y, U, and V samples are packed together in macropixels and stored in a single array. Planar formats store each component in a separate array and then fuse the three separate planes to create the final image.
Tables of formats are available at the following sites:
YUV formats - http://www.webartz.com/fourcc/indexyuv.htm ![]()
RGB formats - http://www.webartz.com/fourcc/indexrgb.htm ![]()
Compressed formats - http://www.webartz.com/fourcc/indexcod.htm ![]()