FOURCC for Video Compression

Updated: December 4, 2001

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.

On This Page
FOURCCs and DirectDrawFOURCCs and DirectDraw
Registered FOURCCsRegistered FOURCCs
Registering a FOURCC CodeRegistering a FOURCC Code
FOURCC Data FormatsFOURCC Data Formats
*

FOURCCs and DirectDraw

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.

Top of pageTop of page

Registered FOURCCs

FOURCCs are registered with Microsoft by the vendors of the respective multimedia software technologies. The currently registered FOURCCs appear in the following list.

Compressor CodeDescription

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 CodeDescription

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

Top of pageTop of page

Registering a FOURCC Code

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.
Example Manufacturer ID: MM_ACME

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.
The names must be unique; using your company name followed by the product name is suggested. For example, if the Acme Company wanted to register the Super Audio card, which has a synthesizer, MIDI I/O ports, and waveform I/O, appropriate names would be:

MM_ACME_SASYNTH
MM_ACME_SAMIDIIN
MM_ACME_SAMIDIOUT
MM_ACME_SAWAVEIN
MM_ACME_SAWAVEOUT

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.

Top of pageTop of page

FOURCC Data Formats

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 This link leaves the Microsoft.com site

RGB formats - http://www.webartz.com/fourcc/indexrgb.htm This link leaves the Microsoft.com site

Compressed formats - http://www.webartz.com/fourcc/indexcod.htm This link leaves the Microsoft.com site


Top of pageTop of page