John McGowan's AVI Overview: Audio and Video Codecs



Meet the AVI Video Codecs

The video data in an AVI file can be formatted and compressed in a variety of ways. Video for Windows 1.1e comes with several compressors: Intel Indeo (version 3.2) Microsoft Video 1 Microsoft RLE (Run Length Encoding) Cinepak AVI is not restricted to these compressors. They are the compressors provided with Video for Windows. These compressors are the Old Guard, the video codecs from the early days of Video for Windows and QuickTime (Cinepak originated with the Macintosh and QuickTime). During this period the focus of video was playback from hard drives and CD-ROM's. The advent of the WorldWide Web and Internet Mania has created a New Wave of audio and video codecs, trying to apply "advanced" technologies such as sophisticated motion estimation and compensation, wavelets, fractals, and other techniques to achieve extremely low bitrates (such as 28.8 Kbits/second for phone lines) for the Internet.

The Old Guard

Full Frames (Uncompressed)

Users can store AVI files with uncompressed frames. No codec is required for this. The Four Character Code (FOURCC) for this is 'DIB ', DIB for the Microsoft Device Independent Bitmap. NOTE: Unfortunately, at least three other Four Character Codes are somtimes used for uncompressed AVI videos: 'RGB ' 'RAW ' 0x00000000 ( a FOURCC whose hexadecimal value is 0 )
Color Formats
Not all uncompressed bitmap images and AVI frames are the same! A variety of color formats for image pixels exist. Some of these color formats are essentially standard and supported on all systems. Some color formats (such as 8 bit grayscaleY8) require special drivers to display or capture. Color Formats are also known as IMAGE FORMATS or PIXEL FORMATS. Some components of Microsoft Windows identify Color Formats with a Four Character Code (FOURCC) such as 'RGB8' or 'YUY2'. Some components such as the Windows Device Independent Bitmap or DIB do not use Four Character Codes for color formats. 24 BIT RGB (DE FACTO STANDARD) 24-bit RGB is the most well-known color format. All common graphics programs support 24-bit RGB. In 24 bit RGB a pixel is represented as three bytes, one byte for the red component, one byte for the green component, and one byte for the blue component. 255 0 0 (a bright red pixel in 24 bit RGB) 0 255 0 (a bright green pixel in 24 bit RGB) 0 0 255 (a bright blue pixel in 24 bit RGB) 0 0 0 (a black pixel in 24 bit RGB) 255 255 255 (a white pixel in 24 bit RGB) 128 128 128 (a gray pixel in 24 bit RGB) ... and so forth. Other color formats include: 8 bit grayscale Y8 9 bit YUV9 12 bit BTYUV 4:1:1 12 bit YUY12 16 bit YUY2 4:2:2 8 bit RGB (uses a color palette) 15 bit RGB (16 bits with most significant bit zero, 5 bits for red, 5 bits for green, and 5 bits for blue) 16 bit RGB (16 bits with 5 bits for red, 6 bits for green, and 5 bits for blue) (24 bit RGB - described above) 32 bit RGB (most significant byte is zero, 8 bits for red, 8 bits for green, and 8 bits for blue)
Original DIB Color Formats
In the Windows 3.1 Software Development Kit, DIB's were defined to allow values of 1,4,8, and 24 bits per pixel in the biBitCount field of the BITMAPINFOHEADER. The biCompression field was allowed the values BI_RGB, BI_RLE4 (for run length encoding of 4 bit per pixel images), and BI_RLE8 (for run length encoding of 8 bit per pixel images). That was it. This original specification of the DIB provided the 8 bit RGB and 24 bit RGB color formats described above. The original DIB specification had no support for 16 bit per pixel formats, 32 bit per pixel formats, or special encodings like YUV. Not surprisingly, the original formats and specification of the DIB are the most widely supported in software.
New DIB Color Formats and More Complexity
Microsoft added support for 16 bit per pixel and 32 bit per pixel images to the DIB specification. These formats are identified by setting the biBitCount field in the BITMAPINFOHEADER of the DIB to 16 or 32. An uncompressed AVI file that stores images using the RGB 15, RGB 16, or RGB 32 color formats stores the video frames as DIB's using these "new" color formats. By default, the Microsoft 16 bit per pixel format is actually RGB 15 where one bit is unused, 5 bits for red, 5 bits for green, and 5 bits for blue. This was done because the 15-bit RGB or 5-5-5 format was used in 16-bit-per-pixel color video cards. Hardware designers found it easier to build chips using a 5-5-5 pixel format with one bit unused than the slightly higher resolution 5-6-5 color format. The Microsoft 32 bit per pixel format has the most significant byte of the pixel set to zero. Then 8 bits for red, 8 bits for green, and 8 bits for blue. This is RGB 32 bit. Why do this? The 32-bit pixels in this format are DWORD aligned on 32 bit boundaries in this format which is more efficient for operations and memory transfers under a 32 bit processor architecture than the unaligned 24-bit RGB format. Microsoft also added a new value for the biCompression field of the BITMAPINFOHEADER called BI_BITFIELDS. If biCompression is set to BI_BITFIELDS, then the color table is three DWORD (32 bit) masks giving the bits used for the red, green, and blue components of a pixel. In this way, a "custom" format such as RGB 5-6-5 (5 bits for Red, 6 bits for Green, and 5 bits for Blue) can be defined. This is 16-bit RGB. Although Four Character Codes (FOURCC's) such as 'RGB8' are used to identify different Color Formats in some parts of Microsoft Windows, the DIB data structures don't use FOURCC's, rather they use combinations of biBitCount and biCompression. In addition to 16-bit and 32-bit formats, Microsoft also defined a mechanism for custom encodings such as YUV, YUY2, and so forth. Manufacturers can register the new format with Microsoft. Microsoft also concocted a JPEG-DIB specification for wrapping the JPEG still image compression standard in a DIB. The JPEG DIB specification is virtually unused, having lost to the JFIF JPEG file format. JPEG images in general use, such as on Web pages, are JFIF's not JPEG DIB's.
YUV Color Space and Color Formats
YUV is the color space used in the European PAL broadcast television standard. PAL was originally introduced in Britain and Germany in 1967. PAL is used by most European nations and many nations around the world. The United States and Japan use the NTSC standard. France and a few other nations use the SECAM standard. Y refers to the luminance, a weighted sum of the red, green, and blue components. The human visual system is most sensitive to the luminance component of an image. Analog video systems such as NTSC, PAL, and SECAM transmit color video signals as a luminance (Y) signal and two color difference or chrominance signals (the U and V above). If, R, G, and B are the red, green, and blue values, then: Y = 0.299 R + 0.587 G + 0.114 B U = 0.493 (B - Y) V = 0.877 (R - Y) U is very similar to the difference between the blue and yellow components of a color image. V is very similar to the difference between the red and green components of a color image. There is evidence that the human visual system processes color information into something like a luminance channel, a blue - yellow channel, and a red - green channel. For example, while we perceive blue-green hues, we never percieve a hue that is simultaneously blue and yellow. This may be why the YUV color space of PAL is so useful. To exploit this, digital color formats such as YUV9 or YUY2 exist that represent pixels as levels of Y, U, and V.
Summary
Both BMP still image files and AVI files may be saved in many different color formats. While 24 bit RGB is almost universally supported, there is no guarantee that your graphics software or AVI playback drivers will support some of the less well-known color formats. You may need to get special software, drivers, or even hardware to use some of these formats. For example, all of the color formats listed above are supported by hardware and software drivers with the miro miroMEDIA PCTV TV Tuner and Video Capture card. Some of these, like 8 bit grayscale Y8, are not widely known or supported. In general, video capture drivers allow selection of the color format used when the video (AVI file) is captured. These color format options should be accessible through the video capture software application. In Microsoft's VidCap and VidCap32 video capture applications, the user may select the color format through Options | Video Format... Return to Top

Microsoft Run Length Encoding

Microsoft Run Length Encoding uses the Four Character Code MRLE [drivers32] VIDC.MRLE=MSRLE32.DLL in Windows 95 [drivers] VIDC.MRLE=MSRLE.DLL in Windows 3.x Microsoft Run Length Encoding usually appears with the name "Microsoft RLE" in lists of Video Compression options. 8 BIT ONLY Microsoft RLE only supports 8 bit color, a maximum of 256 colors using a color lookup table. It does NOT support 16 bit color, also known as "High Color" or "Thousands of Colors", or 24 bit color, also known as "True Color" or "Millions of Colors". WHERE TO GET Microsoft RLE Historically, Microsoft RLE has been one of the standard Video for Windows codecs from Microsoft. The 16 bit Microsoft Video for Windows 1.1e installs a 16 bit version of the Microsoft RLE video codec. The Microsoft Windows 95 CD-ROM installs a 32 bit Microsoft RLE video codec. The Microsoft Windows NT Workstation Operating System Version 4.0 installs a 32 bit Microsoft RLE video codec. Return to Top

Microsoft Video 1

Microsoft Video uses the Four Character Code MSVC [drivers32] VIDC.MSVC=MSVIDC32.DLL in Windows 95 [drivers] VIDC.MSVC=MSVIDC.DLL in Windows 3.x NOTE: The Four Character Code CRAM is also used for Microsoft Video 1.

8 OR 16 BIT ONLY

Microsoft Video 1 supports only 8 bit or 16 bit color. 16 bit color is
also known as "High Color" or "Thousands of Colors". Microsoft Video 1
does not support 24 bit color, also known as "True Color" or "Millions of
Colors".

WHERE TO GET Microsoft Video 1

Historically, Microsoft Video 1 has been one of the standard
Video for Windows codecs from Microsoft.

The 16 bit Microsoft Video for Windows 1.1e installs a 16 bit
version of the Microsoft Video 1 video codec.

The Microsoft Windows 95 CD-ROM installs a 32 bit version of the
Microsoft Video 1 video codec.

The Microsoft Windows NT Workstation Operating System 4.0 CD-ROM
installs a 32 bit version of the Microsoft Video 1 video codec.

Return to Top

Intel Real Time Video 2.1 (Indeo 2.1?) (RT21)

RT21 is the Microsoft Four Character Code for the Intel Real Time Video 2.1 (Indeo 2.1?) video compressor-decompressor (codec). Microsoft's 16-bit Video for Windows Version 1.1e for Windows 3.x includes a 16-bit Video for Windows codec for RT21. WHERE TO GET Intel Real Time Video 2.1 Microsoft appears to have discontinued support for RT21 in the 32-bit Video for Windows in Windows 95 and Windows NT 4.0. There are 32-bit Video for Windows codecs for Indeo 3.1/3.2, Indeo 4.x, and Indeo 5.0. For example, the Microsoft Windows NT Workstation Operating System Version 4.0 CD-ROM DOES NOT install RT21. It DOES install Intel Indeo R 3.2 See the Where to get the 16-bit Video for Windows section. Return to Top

Intel Indeo 3.1/3.2

Indeo uses the Microsoft Four Character Codes IV31 and IV32, originally for Indeo 3.1 and Indeo 3.2, but these are usually now mapped to Indeo 3.2 [drivers32] VIDC.IV31=IR32_32.DLL VIDC.IV32=IR32_32.DLL in Windows 95 [drivers] VIDC.IV31=IR32.DLL VIDC.IV32=IR32.DLL in Windows 3.x Indeo 3.x uses Vector Quantization based image compression. WHERE TO GET INDEO 3.x Indeo R3.2 is one of the default standard Video for Windows codecs. Microsoft's 16 bit Video for Windows 1.1e includes a 16 bit Indeo 3.2 codec (the IR32.DLL above). The Microsoft Windows 95 CD-ROM installs a 32 bit Indeo 3.2 video codec. Microsoft Windows NT Workstation Operating System 4.0 CD-ROM installs a 32 bit Indeo R3.2 video codec. Return to Top

Cinepak

Cinepak is the most widely used Video for Windows codec. Cinepak reportedly provides the fastest playback of video. While Indeo 3.2 provides similar or slightly superior image quality for same compression, Indeo decompression is much more CPU intensive than Cinepak. Cinepak was originally developed for the Mac and licensed to Apple by SuperMac Technology Inc. It is now free with Video for Windows. It is also free with Apple's QuickTime. There are at least three Cinepak Video for Windows codecs in existence: Cinepak by SuperMac (the original, 16 bit) Cinepak by Radius (newer, better?, 16 bit) Cinepak by Radius[32] (32 bit version of Radius Cinepak, shipped with Windows 95) Peter Plantec's Caligari TrueSpace2 Bible strongly recommends using the Radius codec for superior results when generating AVI files from TrueSpace. Cinepak uses the Microsoft Four Character Code CVID [drivers32] VIDC.CVID=ICCVID.DLL in Windows 95 [drivers] VIDC.CVID=ICCVID.DRV in Windows 3.x Apple QuickTime supports Cinepak. Mark Podlipec's XAnim Unix X11 video player supports Cinepak. Cinepak uses Vector Quantization based image compression and frame differencing. Historical Note: On or about Jan. 6, 1999, Radius Inc. renamed itself Digital Origin Inc.. SuperMac Technology, the original owner of Cinepak, was a predecessor to Radius. WHERE TO GET CINEPAK Cinepak is one of the default standard video codecs in Video for Windows. A 16-bit version of Cinepak is included in the 16 bit Video for Windows 1.1e The Microsoft Windows 95 CD-ROM installs a 32 bit Cinepak by Radius video codec. Microsoft Windows NT Workstation Operating System Version 4.0 CD-ROM installs a 32 bit Cinepak by Radius video codec. CINEPAK PRO Compression Technologies Inc. Oakland, CA E-Mail: info@cinepak.com http://www.Cinepak.com/ sells an improved Cinepak compressor that purportedly can fix some common problems with video encoded with Cinepak. They say their product, CinepakPro, generates 100 percent completely Cinepak compatible movies. These movies will play back using all existing native Cinepak decompressors. CinepakPro and Cinepak Toolkit (Macintosh OS 7.5 or newer and QuickTime 2.5 or 3) CinepakPro QTX (Windows 95/98/NT and QuickTime 3.0 for Windows) CinepakPro AVI (Windows 95/98/NT and Video for Windows/ ActiveMovie) An updated AVI Cinepak codec for Windows is available at the Compression Technologies Inc. Web site (May 12, 1999). Vector Quantization Return to Top

Motion JPEG

Most PC video capture and editing systems capture video to AVI files using Motion JPEG video compression. In Motion JPEG, each video frame is compressed separately using the JPEG still image compression standard. No frame differencing or motion estimation is used to compress the images. This makes frame accurate editing without any loss of image quality during the editing possible. The standards situation for Motion JPEG is complicated since at one time there was no industry standard for Motion JPEG. Microsoft has a Microsoft Motion JPEG Codec and a JPEG DIB Format. The OpenDML Avi File Format Extensions (another standard for extending AVI to support professional video features) includes Motion JPEG support. See the Paradigm Matrix site below for more information on these standards. Motion JPEG codecs usually use the Four Character Code 'MJPG'. Motion JPEG is used for editing and authoring, but rarely for distribution. Usually, once the video has been edited, it is compressed further using Cinepak or another codec for distribution. Because Motion JPEG does not use frame differencing or motion estimation, better compression is possible with other codecs. A software Motion JPEG codec for Windows NT and Windows 95 is available from Paradigm Matrix at: http://www.pmatrix.com/Goodies.htm The Paradigm Matrix Motion JPEG codec uses the Four Character Code MJPG. A 32-bit software Motion JPEG codec for Windows NT and Windows 95 is available from Morgan Multimedia at: http://www.morgan-multimedia.com/ A 32-bit software Motion JPEG codec for processors with MMX instructions (MainConcept Motion JPEG Codec) is available from MainConcept at: http://www.mainconcept.com/ Motion JPEG uses the Block Discrete Cosine Transform (DCT) for image compression. Return to Top

Editable MPEG

At least two companies defined schmes to wrap editable MPEG (I frames only MPEG) in AVI files. Xing Technology's editable MPEG AVI uses the Four Character Code XMPG. Sigma Designs defined an AVI format using the Four Character Code MPGI. Editable MPEG consists of only MPEG I frames. This omits the MPEG motion estimation. It is very similar to Motion JPEG. By wrapping I frames only MPEG in AVI, editable MPEG works with standard Video for Windows editing and authoring applications such as Adobe Premiere. Xing Technologies http://www.xingtech.com/ Sigma Designs MPEG Extensions to AVI File
Format (Draft 1.1 by Sigma Designs)
Return to Top

The New Wave

Recently (5/18/97), there has been a proliferation of new Video for Windows codecs. A few like H.261 have been around for a while, but most represent implementations of new or improved technologies such as wavelets. Many are targetted toward low bitrate video over the Internet. For lack of better terminology, I refer to these as the New Wave to differentiate them from the older codecs like Cinepak included with Video for Windows 1.1e (the last release prior to Windows 95). Microsoft appears to be developing or licensing some of these codecs as part of NetShow, NetMeeting, and other Microsoft initiatives.

VDOWave or VDOLive from VDONet

VDONet http://www.vdo.net/ 4009 Miranda Ave., Suite 250 Palo Alto, CA 94304 Voice: (415) 846-7730 FAX: (415) 846-7900 markets a wavelet based video codec which includes a Video for Windows (32 bit) implementation. Microsoft has licensed VDOWave as part of the NetShow product. There are two versions of the VDOWave codec. VDOWave 2.0 is a fixed rate video codec which uses the Microsoft Four Character Code VDOM. This codec adds the line [drivers32] vidc.vdom=vdowave.drv to the SYSTEM.INI file in Windows 95. VDOWave 3.0 is a "scalable" video codec. This codec uses the Microsoft Four Character Code (FOURCC) VDOW and adds the line [drivers32] VIDC.VDOW=vdowave.drv to the Windows 95 SYSTEM.INI files. In NetShow 2.0, the standalone Client Setup installs a VDOWave decode-only codec. The NetShow 2.0 Tools Setup installs a VDONet VDOWave encoder. In some of my tests, VDOWave appears significantly superior to MPEG-1 and the other block Discrete Cosine Transform based codecs at low bitrates. VDONet uses the trademark VDOWave for its wavelet based video codec. VDONet uses the trademark VDOLive for its VDOLive On-Demand Product Line. This includes the VDOLive On-Demand Server, the VDOLive tools including VDOCapture and VDOClip, and the VDOLive Player. Sometimes VDOLive and VDOWave are used interchangably by users and in some company literature. VDONet also has a VDOPhone product for real-time videoconferencing. Based on the company documentation, published reports, and viewing the technology, VDOWave appears to be a combination of wavelet based image compression and motion compensation or frame differencing. Return to Top

What is Indeo Video Interactive?

Intel has sold the Indeo (INtel viDEO) video compression technology to Ligos Technology, Inc. As of 2/17/01 the Indeo video software may be dowloaded at: http://www.ligos.com/indeo/ Indeo Video Interactive, Indeo 4.1, is a new version of Indeo from Intel based on a "hybrid wavelet algorithm" according to Intel. This is a different compression algorithm than Indeo 3.2 which is included with Video for Windows. Indeo 3.2 uses Vector Quantization. Indeo Video Interactive supports a number of features in addition to the new compression algorithm such as transparency. Indeo Video Interactive can be installed as a Video for Windows codec or in the new ActiveMovie environment from Microsoft. For further information on Indeo Video Interactive http://www.intel.com/pc-supp/multimed/indeo/index.htm How to program "sprites" in Indeo Video Interactive? Some of Intel's marketing material touts the ability to add sprites to applications using Indeo Video Interactive. Most of Intel's technical documentation on Indeo and the API's for using Indeo Video Interactive neglects to explain what Intel means by "sprite". There is a brief mention in the Overview document for Indeo Video Interactive. Indeo "sprite" means TRANSPARENCY. Indeo Video Interactive supports TRANSPARENCY. Indeo has transparent pixels to create transparent backgrounds to implement effects such as chroma-keying. The well-known example of chroma-keying is the television weather forecaster standing in front of a satellite weather picture. The forecaster stands in front of a blue screen (sometimes a green screen) and video gadgetry replaced the blue color with another video signal. Anything that is not the blue "key" color is left unchanged. In Indeo jargon a "video sprite" is a foreground object such as the mythical weather-caster on a transparent background. Your application can then provide a bitmap image or even another video as a background in the transparent areas of the image. This provides a crude mechanism for the video to change depending on interactions with a user. Look up the API's in Intel's documentation for TRANSPARENCY to implement video sprites. How to identify an AVI file that uses Indeo Video Interactive for the video compressor? Video for Windows identifies different video compressors through four character codes. For example, 'cvid' is the four character code for the widely used Cinepak compressor. The four character code is found in the video stream header 'strh' in the AVI file. Indeo Video Interactive (Indeo 4.1) uses the four character code 'iv41' If Indeo Video Interactive is not installed installed Video for Windows will report an error, indicating that it cannot find the compressor for 'iv41'. The specific message appears to be: "Video not available, cannot find 'vids:iv41' decompressor." NOTE: Indeo 4.1 claims to implement a hybrid wavelet transform.
Some of the behavior of the codec at low bitrates differs from other
wavelet based image and video compressors such as VDOWave, Infinop's
Lightning Strike, and some public domain wavelet compression software.
In particular, at low bitrates, I have seen the characteristic checkerboard
pattern of 8x8 pixel blocks seen in block based transform coding methods such
as MPEG-1. I'm not sure what Intel means by hybrid wavelet transform.

In general, at low bitrates, image and video compression schemes using the
Discrete Wavelet Transform (DWT) exhibit a blurring at the edges of objects and
also "ringing" artifacts near edges. They do not exhibit the blocking
artifacts, checkerboard pattern in extreme cases, seen in block Discrete Cosine
Transform based image and video compression.

Return to Top

Indeo Video Interactive 5.0

Intel has sold the Indeo (INtel viDEO) video compression
technology to Ligos Technology, Inc. As of 2/17/01 the Indeo
video software may be dowloaded at:

http://www.ligos.com/indeo/ Intel is now (2/22/99) distributing an Indeo Video Interactive 5.10 software on their Web site. Indeo 5.0 claims to use a new better wavelet compression algorithm for improved video quality. Indeo 5 includes features such as progressive download for the Internet, transparency, sprites, etc. As of 2/22/99, the latest version of Intel Indeo Video appears to be Indeo Video 5.10. The latest version of Intel Indeo Audio appears to be Indeo Audio 2.5 The previous version of Intel Indeo Video was Indeo 5.06 http://developer.intel.com/ial/indeo/video/ Known releases of Indeo Video 5.x Intel Indeo 5.10 (02-Feb-1999) Intel Indeo 5.06 (1998) Intel Indeo 5.0 (1997????) NOTE: All releases of Indeo 5.x appear to use the Four Character Code IV50 Apple QuickTime 4 includes support for Indeo 5, allowing playback on Apple Macintosh platforms. http://www.apple.com/quicktime/technologies/indeo/ Return to Top

ClearVideo (aka RealVideo)

ClearVideo is a video codec from Iterated Systems( http://www.iterated.com Iterated has also licensed the ClearVideo technology to RealNetworks (formerly Progressive Networks), makers of RealAudio, under the name RealVideo. You can (or could at one time) download a Video for Windows demo of ClearVideo from the Iterated Web site. This includes a demo Video for Windows codec that allows both encoding and decoding The video can only be played on the same machine with the demo encoder. This codec works with Video for Windows applications such as Media Player and VidEdit. Fractal video encoding appears to be very slow (computationally intensive). The video is similar or somewhat superior to MPEG-1 in quality. ClearVideo uses Fractal Image Compression. Iterated is the main (only?) producer of commercial fractal image and video compression technology. The Video for Windows evaluation version of ClearVideo installs [drivers32] VIDC.UCOD=CLRVIDCD.DLL in SYSTEM.INI in Windows 95. Return to Top

SFM (Surface Fitting Method)

Crystal Net Corporation (http://www.crystalnet.com/ seeks
to license a technology called SFM or Surface Fitting Method. This is
supposed to be a low bitrate video technology for ISDN and POTS (Plain
Old Telephone Service) bitrates. They have a Video for Windows demo
to download from their Web site.

SFM used the Microsoft Four Character Code (FOURCC) SFMC.

The demo installs (actually the instructions tell you to manually install):

[drivers32]
VIDC.SFMC=SFMdemo.dll

in Windows 95.

The demo does not include an encoder which presents problems in evaluating
the technology. However, SFM appears to be some sort of edge detection based
encoding technology.

White Pine's Enhanced CU-See Me desktop videoconferencing product uses
Crystal Net's SFM under the name White Pine Color Software Codec.
NEC has reportedly licensed SFM for its Network Video Audio Tool (NVAT).
(February, 1998)

Crystal Net also reportedly has relationships with Shepherd Surveillance
and Winnov. (February, 1998)

Return to Top

QPEG

Q-Team Dr. Knabe produces a Video for Windows codec known as QPEG. Currently (6/27/97), QPEG supports 8 bit color. Q-Team plans 16 and 24 bit color, MMX support, and other additional features in the future. Sample AVI/QPEG files and Video for Windows QPEG codecs for Windows 3.x and Windows 95/NT are available at the Q-Team Web site. http://www.q-team.de/ Q-Team is also working on MPEG-4 for the PC. Return to Top

H.261

H.261 is an international standard, widely used for video conferencing in the 128 Kbits/second to 384 Kbits/second range. This is a block Discrete Cosine Transform method. Actually, H.261 was the first international standard developed using the block Discrete Cosine Transform and motion compensation. MPEG-1, which is probably better known, followed the H.261 effort. Intel's ProShare videoconferencing product installs a Video for Windows H.261 codec. NOTE: I've never generated an AVI files with Intel's H.261, so it
may only be used for Intel ProShare videoconferencing and not with AVI.

Microsoft has a Microsoft H.261 Video for Windows 32 bit codec.

[drivers32]
VIDC.M261=MSH261.DRV

in Windows 95.

Return to Top

H.263

H.263 is another international standard, based on the Block Discrete Cosine Transform (DCT) and motion compensation. H.263 has a number of improvements, mostly in the area of motion compensation, over the earlier H.261 standard. It is targeted toward very low bitrate video compression. Microsoft's NetShow 2.0 installs a Microsoft H.263 video codec. Microsoft H.263 uses the Four Character Code M263. [drivers32] VIDC.M263=msh263.drv in Windows 95. The Microsoft H.263 video codec is one of several "keyed" codecs installed by NetShow. Others are Vivo H.263 and Duck's TrueMotion 2.0. These codecs will not encode video as AVI files, although they apparently will create Microsoft ASF files or provide compression for streaming video products such as Microsoft's NetMeeting videoconferencing. See the section on NetShow for more information on the NetShow video codecs. Some versions of the msh263.drv driver will crash when trying to encode an AVI file from VidEdit or similar applications. Other versions of msh263.drv don't crash but give an "Unable to begin compression" message box. Vivo Software Inc. markets streaming H.263 and G.723 audio for the Web under the brand name VivoActive. Vivo has its own file format called .VIV which can be embedded in Web pages. Vivo provides a player called VivoActive player and an authoring tool for creating .VIV files called VivoActive Producer. Microsoft NetShow installs a "keyed" codec that identifies itself as Vivo H.263 Video Codec[32] which installs [drivers32] VIDC.VIVO=IVVIDEO.DLL in Windows 95. Vivo H.263 uses the four character code 'VIVO'. The Vivo Software Web Site: http://www.vivo.com/ Intel distributes an Intel "I263" H.263 video codec at there Web site as part of the NetCard product. This installs [drivers32] VIDC.I263=C:\WINDOWS\I263_32.DLL VIDC.I420=C:\WINDOWS\I263_32.DLL in Windows 95. As of June 18, 1998, this codec could be found at: http://support.intel.com/support/createshare/camerapack/CODINSTL.HTM To get the Intel I263 video codec, download the codec installer CODINSTL.EXE from the Intel web page. CODINSTL.EXE installs I263_32.DRV, the I263 video codec, and other Intel video codecs. Note that Intel, like Microsoft, seems to rearrange their Web site constantly. Unlike the keyed Microsoft H.263 video codecs, this codec can be used to encode AVI's through Microsoft VidEdit 1.1 (and presumably other video editing products). How well this codec in fact implements the H.263 standard is not clear. Shannon Communication Systems (SCS) has an H.263+ AVI codec and analysis tool available for download at their Web site: http://www.shansys.com/ Telenor R&D of Norway distributes the source code for an H.263 encoder and decoder that will reportedly compile and run under Windows. This is a standalone application not a Video for Windows codec or ActiveMovie filter. See elsewhere in the AVI Overview for a link to the Telenor Web site. A Xirlink H.263 Video Codec from Xirlink can be used to decode H.263 generated with Xirlink PC Cameras. Xirlink technology is licensed IBM for the IBM PC Camera and by other companies for other Universal Serial Bus (USB) PC cameras. Xirlink makes H.263 encoder chips in the cameras. The Microsoft Four Character Code (FOURCC) for the Xirlink H.263 Video Codec is X263. http://www.xirlink.com/default.htm Return to Top

MPEG-4

MPEG-4 is a new international standard from the International Organization for Standardization (ISO). The MPEG-4 Video (there is more to the standard than the video part) is closely related to ISO H.263. There are (at least) three versions of MPEG-4 for Video for Windows from Microsoft and two versions from DivX. The most recent Microsoft MPEG-4, as of October 25, 1999, is Microsoft MPEG-4 Video Codec Version 3, identified by the Four Character Code MP43. MPEG-4 Version 3, MP43, Version 2, MP42, and Version 1, MPG4, are included in the Windows Media Technologies. Specifically, the Windows Media Tools contains the Microsoft MPEG-4 Video Codec Version 3 Application Extension, formerly known as a Dynamically Linked Library. http://www.microsoft.com/windows/windowsmedia The file for Windows Media Tools is called wmtools.exe The MPEG-4 Video Codec Version 3 Application Extension, which should be automatically installed by wmtools.exe, is MPG4C32.DLL. The latest version, as of October 25, 1999, appears to be Version 4.00.0.3688 Windows Media Technologies seems to be the latest name for NetShow. MICROSOFT MPEG-4 Version 1 (First Released Early 1997) Microsoft's NetShow 2.0 installs a Video for Windows codec for MPEG-4. MPEG-4 is a new international standard that has not been officially released as yet. Microsoft is deeply involved in the MPEG-4 standardization effort. Microsoft has been using its MPEG-4 for the Microsoft NBC Business Video broadcasting over the Internet. The Microsoft MPEG-4 Video for Windows Codec identifies itself as "MPEG-4 High Speed Compressor" in Control Panel | Multimedia | Devices | Video Compression Codecs. Adding to confusion in true Microsoft fashion, there are two versions of each NetShow video codec. The NetShow 2.0 Player (Client) installation program installs codecs that provide only decoding functionality. The MPEG-4 video codec installed by NetShow 2.0 Player can only play back an MPEG-4 AVI. The MPEG-4 video codec installed by the NetShow 2.0 Tools can encode AVI files with MPEG-4 video compression. If you want to author MPEG-4 compressed AVI, make sure to get and install the NetShow 2.0 Tools, not just the NetShow 2.0 Player. The Microsoft MPEG-4 High Speed Compressor Video Codec installed by the NetShow 2.0 Tools will not encode arbitrary dimension video. The video must have the dimensions 176 x 144 (QCIF). In Microsoft VidEdit, "MPEG-4 High Speed Compressor" becomes visible in the list of compression options only if the video is sized to 176x144. MPEG-4 uses the Microsoft Four Character Code (FOURCC) MPG4. [drivers32] VIDC.MPG4=msscrc32.dll
DivXNetworks, Inc.
DivXNetworks, Inc. distributes two versions of MPEG-4. These are identified by the Four Character Codes DIV3 and DIV4 As of March 30, 2002, the DivX MPEG-4 Video Codec was available at: http://www.divx.com/ The AngelPotion video codec, identified by the four character code AP41, is reported to be a clone or hack of Microsoft's MPEG-4. Return to Top

Lightning Strike (Infinop)

Infinop markets a wavelet based video codec called Lightning Strike Streaming Video. A Lightning Strike video decoder compatible with Microsoft NetShow can be dowloaded from the Infinop Web site. There are several sample Lightning Strike Video files at the Infinop site. The Lightning Strike encoder does not seem to be generally available. http://www.infinop.com/ Return to Top

Aware Motion Wavelets Video Codec

Aware Inc. markets a wavelet based video codec called Aware
Motion Wavelets Video Codec. The Four Character Code (FOURCC)
for Aware Motion Wavelets Video Codec is MWV1.

Aware Inc. Home Page:

http://www.aware.com/ Aware MotionWavelets Video Codec Page: http://www.aware.com/imaging/motionwavelets.htm

Return to Top

VxTreme

VxTreme was acquired by Microsoft in September of 1997. Microsoft has invested in numerous low bitrate audio and video companies during the second half of 1997, include VxTreme, VDONet, Progressive Networks/RealNetworks, and Lernout and Hauspie Speech Products. Although I have not seen a Video for Windows implementation of VxTreme (12/20/97), I thought that I should include this codec. Undoubtedly, it will be ported to Video for Windows and/or ActiveMovie if this has not already happened. VxTreme(http://www.vxtreme.com/ markets a video codec that is usually identified as a wavelet based codec. A VxTreme player, a Plug-In for Internet Explorer and Netscape, is available at the VxTreme Web site. VxTreme has some very impressive demos of QCIF (160x120) talking heads material on their Web sites. The subjective image quality during scenes with small changes is quite good, much superior to the block Discrete Cosine Transform based codecs and probably VDONet's VDOWave. Text such as movie titles and credits appears to encode very well. Preserving the sharp edges of text is a major problem in block Discrete Cosine Transform based encoders such as the JPEG still image compression standard and the MPEG video compression standard. In general, wavelet image compression encounters problems with sharp edges as well. VxTreme clearly uses some sort of motion compensation or frame differencing. Image quality drops dramatically during periods with rapid changes. I viewed a number of movie trailers encoded with VxTreme for 28.8 Kbits/second such as the trailer for "Goldeneye". These trailers contain many scene changes and motion. Video quality is poor, hardly superior to competitors such as H.261 or Microsoft's MPEG-4. The talking heads material at 28.8 looks almost natural. VxTreme may be a combination of the Discrete Wavelet Transform (??) and motion compensation. The preservation of sharp edges suggests something beyond the vanilla Discrete Wavelet Transforms described in the technical literature on wavelet based image and video compression. Return to Top

Sorenson Video

Sorenson Video, from Sorenson Vision, is a low bitrate video codec that appears to be available only for Apple QuickTime as of May 10, 1999. Sorenson Video was used to compress the Star Wars trailer for "Star Wars Episode I: The Phantom Menace" distributed over the Internet as a QuickTime file in the spring of 1999. No Video for Windows Sorenson Video codec appears to be available. Sorenson Video is reportedly based on some kind of vector quantization technology that can achieve very high compression. According to Mark Podlipec's XAnim site (May 10, 1999), he contacted Sorenson Vision to find out if he could license Sorenson Video for incorporation in the XAnim Unix X11 animation, audio, and video player. According to his Web site, Sorenson replied that Apple will not allow Sorenson to license Sorenson Video to others. http://www.s-vision.com/ Return to Top

How to determine which Video for Windows decompressors are installed on a PC?

In the SYSTEM.INI file, there is a section [drivers] which will contain some lines as follows: [drivers] VIDC.MSVC=msvidc.drv VIDC.YVU9=isvy.drv VIDC.IV31=indeor3.drv VIDC.RT21=indeo.drv VIDC.CVID=iccvid.drv VIDC.MRLE=msrle.drv AVI files contain a four character code (such as 'IV31' or 'CVID') in the stream header for the video stream. This four character code identifies the video compressor used for the video stream. For example, 'CVID' is the identifier for Cinepak (formerly Compact Video) compression. Video for Windows prefixes the four character code with VIDC. and uses it to look up the video decompressor driver in SYSTEM.INI iccvid.drv is the driver for Cinepak in the example above. Note: These are 16-bit drivers. Windows 95 adds a section [drivers32] for 32 bit drivers. There are 32 bit versions of the Video for Windows drivers. See below (and notice that the 32 bit drivers have different names from the 16 bit drivers). [drivers32] vidc.cvid=iccvid.dll ; Cinepak for Windows 32 vidc.iv31=ir32_32.dll vidc.iv32=ir32_32.dll vidc.msvc=msvidc32.dll vidc.mrle=msrle32.dll WINDOWS 95 In Windows 95: (1) Open the Control Panel (2) Double click on the Multimedia Icon (applet) (3) Select the "Advanced" Tab (4) Under the Multimedia Drivers icon, double click on the Video Compression Codecs icon to open it. This gives a list of installed video codecs. Return to Top

How to determine which codec was used to compress an AVI file

LOW LEVEL WAY THAT WORKS ON ANY OPERATING SYSTEM WITH A FILE EDITOR! A low level way to find out is to view the avi file with an editor, for example the standard EDIT command in DOS will work. Search for the four character code vids (usually lower case). vids indicates a VIDeo Stream. vids is immediately followed by the four character code for the compressor used for the AVI file. For example, a full frames (uncompressed) AVI will contain the string: vidsDIB An AVI compressed using Microsoft Video 1 will contain the string: vidsmsvc And so forth. See elswhere in this overview for information on the Microsoft Four Character Codes. WINDOWS 95 In Windows 95 (or Windows NT 4.0): Right click on the avi file's icon. This brings up a menu of items. Select Properties. Click on the Details tab in the Properties sheet. Look under Video Format in the Details. This will list the compression used. The compression is identified using an explanatory human-readable string such as "16 x 16, 24 Bits, 8 Frames, 60.150 Frames/Sec, 76 KB/Sec, Uncompressed". The Microsoft Four Character Code is not used. NOTE: Windows 95 needs to have the Video for Windows codec installed to correctly identify the codec used in the AVI file. If you have an AVI that Windows 95 can't play because the codec is not installed, you will have to use another method. Return to Top

Which AVI video compressor is best?

"Best" depends on what the user is trying to do. Selection of a video codec depends on several variables: time to encode the video, how widely known and available the video codec is, compression ratios that can be achieved for a target subjective quality level. The Performance of AVI Codecs section gives
detailed information on the performance, compression ratios, video
quality, etc. of AVI video codecs.

Cinepak is the most widely used AVI video codec. Cinepak reportedly
provides the fastest playback of video. While Indeo 3.2 provides
similar or slightly superior image quality for same compression, Indeo
decompression is much more CPU intensive than Cinepak. Cinepak was
originally developed for the Mac and licensed to Apple by SuperMac.
It is now free with Video for Windows. It is also free with Apple's
QuickTime.

There are at least three Cinepak codecs in existence:

Cinepak by SuperMac (the original, 16 bit)
Cinepak by Radius (newer, better?, 16 bit)
Cinepak by Radius[32] (32 bit version of Radius Cinepak, shipped with Windows 95)

Peter Plantec's Caligari TrueSpace2 Bible strongly recommends using the Radius
codec for superior results when generating AVI files from TrueSpace.

Cinepak is the best codec to use to insure ease of playback. Few people
will have problems or need to install special codecs or software
to play an AVI compressed with Cinepak.

Cinepak is based on Vector Quantization and Frame Differencing to
achieve video compression. Other technologies such as the
Block Discrete Cosine Transform and Motion Compensation can achieve
superior compression (smaller files for the same subjective visual
quality).

Codecs that beat Cinepak

H.263 (probably H.261) Block DCT/Motion Compensation
MPEG-4 Video Verification Model Block DCT/Motion Compensation
Indeo Video Interactive (Indeo 4.x) "hybrid wavelet"
VDONet's VDOWave Discrete Wavelet Transform/Motion Compensation

Iterated System's RealVideo or ClearVideo Fractal Compression

Although not integrated into AVI, the MPEG-1 digital video standard
with IPB frames outperforms Cinepak.

The block DCT/Motion Compensation based codecs seem to perform 1.5 - 2.0
times better than Cinepak. VDOWave, a wavelet based codec, seems somewhat
better than this.

Return to Top

Performance of AVI Codecs

How do the Video Codecs Perform on Typical Video?

To test the performance of the many Video for Windows codecs, I created a ten second video of myself using the U.S. Robotics Bigpicture video capture card which is based on the Brooktree Bt848 chip. I am talking, picking up a microphone, and waving my hands against an essentially static background. This sequence was captured at: 30 frames per second, 320 by 240 pixels, with 24 bit RGB color, no frames dropped during video capture. Note that 320 by 240, RGB 24, at 30 frames per second is similar to a single field of NTSC television video and to the spatial resolution and frame rates of the successful VideoCD products based on MPEG-1 digital video compression. I then compressed the video using different codecs and Microsoft's VidEdit 1.1 video editor. A table of results follows. Except where noted, the video resembles the original uncompressed video closely. In case where the video was significantly degraded, this is noted IN CAPS. The encoders for most codecs have an adjustable quality factor, frequently displayed as a value between 0 and 100. A higher quality factor means the compressed video looks better but has a higher bitrate, a lower compression ratio. There is a trade-off between quality and bitrate. In the technical literature on image and video compression this is known as the rate-distortion function R(D). In the table below, the entries give the quality factor used to encode the test video where appropriate. Results: Codec File Size Compression Ratio/ Bitrate -------------------------------------------------------------------------- Raw 24 bit RGB (Full Frames Uncompressed) 66.187 MB 1:1 / 53 Mbps 30 frames per second 320 by 240 pixels a talking head with some hand waving Radius Cinepak (32-bit) 6.92 MB 9.6:1 / 5.5 Mbps Quality Factor 100, keyframe every 15 frames Compression Technology: Vector Quantization Intel Indeo 5.1 (32-bit) 4.41 MB 15.0:1 / 3.5 Mbps Quality Factor 85, keyframe every 15 frames Compression Technology: Wavelet Intel Indeo 5.1 (32-bit) 0.98 MB 67.8:1 / 784 Kbps Quality Factor 50, keyframe every 15 frames Compression Technology: Wavelet Intel Indeo 5.1 (32-bit) 0.81 MB 81.7:1 / 648 Kbps Quality Factor 25, keyframe every 30 frames Compression Technology: Wavelet Intel Indeo 4.3 (32-bit) 2.46 MB 26.9:1 / 2 Mbps Quality Factor 85 Compression Technology: "Hybrid Wavelet" Intel Indeo R3.2 (32-bit) 3.93 MB 16.8:1 / 3.1 Mbps Quality Factor 65, keyframe every 4 frames Version 3.24.15.03 Compression Technology: Vector Quantization Microsoft Video 1 (32-bit) 3.16 MB 20.7:1 / 2.5 Mbps Microsoft Video 1 Compressor Version 1.0 LOW QUALITY - NOTICABLY GRAINY Microsoft MPEG-4 (32-bit) 0.625 MB 105.9:1 / 500 Kbps MPEG-4 Video High Speed Compressor keyframe every 3600 frames Compression Control 0 Data Rate 128 Kilobits/second LOW QUALITY - BLOCKING ARTIFACTS Compression Technology: Block Discrete Cosine Transform Motion Compensation Intel Indeo Raw R1.2 (32-bit) 24.6 MB 2.7:1 / 19.7 Mbps Version 1.20.15.01 Intel I.263 H.263 (32-bit) 0.764 MB 86.6:1 / 612 Kbps keyframe every 15 frames Quality Factor 50 % LOW QUALITY - BLOCKING ARTIFACTS Compression Technology: Block Discrete Cosine Transform Motion Compensation Intel I.263 H.263 (32-bit) 1.99 MB 33.2:1 / 1.6 Mbps keyframe every 15 frames Quality Factor 100 % Compression Technology: Block Discrete Cosine Transform Motion Compensation Brooktree YUV 411 Raw 32.6 MB 2.0:1 / 26 Mbps BtV MediaStream Verson: 2.01 With a 160 by 120, 30 frames per second, 239 frame (7.996) second, 24 bit color video "Space Shuttle" sequence, from a NASA promotional video showing the launch of the space shuttle and some crowds watching and cheering. Here I was able to calculate and report the Peak Signal to Noise Ratio (in dB, decibels), an
objective measure of image and video quality.

Codec File Size Compression Ratio/
Bitrate/PSNR ----------------------------------------------------------------------- Full Frames (Uncompressed) 13.1 MB 1 : 1 / 13.5 Mbps 24 bits, 160 x 120, 30 fps / INFINITE Cinepak Codec by Radius [32] 0.85 MB 15.9 : 1 / 848 Kbps Version 1.8.0.12 / 31.08 dB Key frame every 15 frames Quality Factor 100 (DEFAULT ENCODING PARAMETERS) Cinepak Codec by Radius[32] 0.78 MB 17.7 : 1 / 780 Kbps Version 1.8.0.12 / 30.49 dB Key Frame every 15 frames Target Data Rate 100 KBytes/sec Quality Factor 100 Cinepak Codec by Radius[32] 0.42 MB 32.93 : 1 / 420 Kbps Version 1.8.0.12 / 27.087 dB Key Frame every 15 frames Target Data Rate 50 KBytes/sec Quality Factor 100 VISIBLE BLOCKING Cinepak Codec by Radius[32] 0.23 MB 59.6 : 1 / 231 Kbps Version 1.8.0.12 / 23.762 dB Key Frame every 15 frames Target Data Rate 25 KBytes/sec Quality Factor 100 HEAVY BLOCKING/UNACCEPTABLE VIDEO Intel Indeo 5.10 0.993 MB 13.2 : 1 / 992 Kbps Key frame every 15 frames / 32.43 dB Quality Factor 85 (DEFAULT ENCODING PARAMETERS) Intel Indeo 5.10 0.22 MB 59.6 : 1 / 216 Kbps Key frame every 15 frames / 29.6 dB Quality Factor 50 RINGING ARTIFACTS JUST VISIBLE Intel Indeo 5.10 0.177 MB 74 : 1 / 176 Kbps Key frame every 15 frames / 28.4 dB Quality Factor 25 RINGING ARTIFACTS Intel Indeo 5.10 0.158 MB 82.9 : 1 / 152 Kbps Key frame every 15 frames / 27.82 dB Quality Factor 10 RINGING ARTIFACTS Intel Indeo Video Interactive[32] 1.564 MB 8.8 : 1 / 1.564 Mbps Indeo V 4.11.15.62 / 28.686 dB Key frame every 15 frames Target Data Rate 1687 KBytes/sec Quality Factor 85 (DEFAULT) Intel Indeo Video Interactive[32] 0.732 MB 18.9 : 1 / 732 Kbps Indeo V 4.11.15.62 / 28.284 dB Key frame every 15 frames Target Data Rate DISABLED Quality Factor 85 Intel Indeo Video Interactive[32] 0.297 MB 46.5 : 1 / 297 Kbps Indeo V 4.11.15.62 / 26.622 dB Key frame every 15 frames Target Data Rate DISABLED Quality Factor 50 BLOCKING AND RINGING ARTIFACTS Intel Indeo Video Interactive[32] 0.256 MB 53.9 : 1 / 256 Kbps Indeo V 4.11.15.62 / 25.389 dB Key frame every 15 frames Target Data Rate DISABLED Quality Factor 25 HEAVY BLOCKING AND RINGING ARTIFACTS/UNACCEPTABLE Microsoft Video 1 5.198 MB 2.7 : 1 / 5.198 Mbps Key frame every 15 frames / 32.209 dB Quality Factor 100 SLIGHTLY GRAINY Microsoft Video 1 0.79 MB 17.5 : 1 / 790 Kbps Key frame every 15 frames / 30.286 dB Quality Factor 75 (DEFAULT) BANDING AND BLOCKING Microsoft Video 1 0.17 MB 82.8 : 1 / 166 Kbps Key frame every 15 frames / 23.915 dB Quality Factor 50 VERY BLOCKY/UNACCEPTABLE Microsoft Video 1 0.08 MB 163.7 : 1 / 84 Kbps Key frame every 15 frames / 18. 524 dB Quality Factor 25 VERY VERY BLOCKY/UNACCEPTABLE With a 160 by 120 pixel, 15 frames per second, 24 bit color version of the "Talking Head" 10 second video sequence, created by downsampling in space and time with Microsoft VidEdit 1.1 Codec File Size Compression Ratio/ Bitrate ------------------------------------------------------------------------ Full Frames Uncompressed 8.53 MB 1:1 / 6.816 Mbps 24 bit RGB 160 x 120 pixels 15 frames per second Cinepak from Radius (32 bit) 1.20 MB 7.1:1 / 960 Kbps Version 1.10.0.6 Quality Factor 100 Keyframe every 15 frames Intel Indeo 4.5 (32 bit) 0.677 MB 12.6:1 / 541 Kbps Quality Factor 85 Keyframe every 15 frames Intel Indeo R3.2 (32 bit) 0.98 MB 8.7:1 / 784 Kbps Version 3.24.15.03 Quality Factor 65 Keyframe every 4 frames Microsoft Video 1 0.947 MB 9:1 / 758 Kbps Quality Factor 75 SOME BLOCKING ARTIFACTS Intel Indeo Raw 1.2 3.25 MB 2.6:1 / 2.6 Mbps Intel I.263 H.263 0.67 MB 12.8:1 / 535 Kbps Intel Indeo 5.10 (32 bit) 0.973 MB 8.8:1 / 778 Kbps Quality Factor 85 Keyframe every 15 frames Intel Indeo 5.10 (32 bit) 0.367 MB 23.2:1 / 294 Kbps Quality Factor 50 Keyframe every 15 frames Intel Indeo 5.10 (32 bit) 0.339 MB 25.2:1 / 271 Kbps Quality Factor 25 No fixed keyframes LOW QUALITY - BLURRY Brooktree YUV 411 Raw 4.42 MB 1.9:1 / 3.536 Mbps Return to Top

Which Video for Windows Codecs are Available for QuickTime on Apple Macintosh?

As of June 24, 1998, this is an incomplete list: Cinepak (formerly Apple Compact Video) The Video for Windows 1.1 Apple Macintosh utilities include QuickTime system extensions for: Microsoft Video 1 Microsoft Full Frames (uncompressed) Microsoft RLE (Run Length Encoding) Intel provided a QuickTime system extension for Intel Indeo 3.2. As of June 24, 1998 this was available at: http://developer.intel.com/ial/indeo/video/driver.htm As of June 24, 1998 Intel did NOT provide QuickTime versions of Indeo 4.x or 5.x for the Apple Macintosh. Intel did provide a version of Indeo 4.4 for QuickTime for Windows. Return to Top

Microsoft Four Character Codes (FOURCC)

A Four Character Code or FOURCC is a four byte code defined by Microsoft as part of Video for Windows to identify various types of video data. Microsoft defined FOURCC's to uniquely identify pixel layouts and video compressor types in Video for Windows. For example, the FOURCC 'CVID' identifies the Cinepak (formerly Compact Video) video compressor. AVI files contain the FOURCC for the video compressor in the video stream header. In addition to codecs, Four Character Codes identify the pixel layouts used in uncompressed images and video. For example, codes such as 'YUY2' identify layouts of pixels in YUV space (as opposed to RGB). These codes are used in interfacing with graphics cards. For example, the S3 ViRGE/VX chip supports the YUY2 pixel layout. YUY2 is popular because it refers to the 4:2:2 format used in CCIR-601 (D1) digital video.

Video for Windows, Display Control Interface (DCI), and Direct Draw
all use FOURCC's.

Incomplete List of Four Character Codes for Video for Windows Codecs
(This is followed by a list of Codes Registered with Microsoft)

DIB Full Frames (Uncompressed)
RGB Full Frames (Uncompressed)
RAW Full Frames (Uncompressed)
0x00000000 Full Frames (Uncompressed)

0x00000000 indicates the hexadecimal value of the Four Character
Code is zero. A Four Character Code 'AAAA' has hexadecimal value
0x41414141 where 0x41 is the ASCII code for 'A'.

Some video capture and editing products will use the non-standard
FOURCC 0x00000000 for uncompressed AVI video instead of the easier to
understand 'DIB ' or 'RGB ' or 'RAW '.

MSVC or CRAM or WHAM Microsoft Video 1
MRLE Microsoft Run Length Encoding
IV31 Indeo 3.1/3.2
IV32 Indeo 3.1/3.2
CVID Cinepak (Radius)
ULTI Ultimotion (IBM)
MJPG Motion JPEG (Microsoft, Paradigm Matrix, video capture companies)
IJPG Intergraph JPEG
CYUV Creative YUV
YVU9 Intel Indeo Raw YUV9
XMPG Editable (I frames only) MPEG (Xing)
MPGI Editable MPEG (Sigma Designs)

VIXL miro Video XL
MVI1 Motion Pixels
SPIG Radius Spigot
PGVV Radius Video Vision
TMOT Duck TrueMotion S

DMB1 Custom Format Used by Matrox Rainbow Runner. This
appears to be a type of Motion JPEG
BW10 Broadway I-Frame MPEG. Broadway is a Video Capture and
Editing System, including a video capture and MPEG compression
board for the PC.

IV41 Indeo Interactive (Indeo 4.1 from Intel)
IV50 Indeo 5.x, including 5.0, 5.06, and 5.10
UCOD ClearVideo (Iterated Systems)
VDOW VDOWave (VDONet)
SFMC Surface Fitting Method (CrystalNet)
QPEG Q-Team Dr.Knabe 's QPEG video compressor
H261 H.261
M261 Microsoft H.261
VIVO Vivo H.263
M263 Microsoft H.263
I263 Intel "I.263" H.263
X263 Xirlink H.263 Video Codec
MPG4 Microsoft MPEG-4
MP42 Microsoft MPEG-4 Version 2
MP43 Microsoft MPEG-4 Version 3
DIV3 DivX MPEG-4 Video
DIV4 DivX MPEG-4 Video
AP41 AngelPotion (alleged to be a rip-off of Microsoft MPEG-4)
MWV1 Aware Motion Wavelets Video Codec (not registered with Microsoft as of March 10, 2000)


LIST OF CODES REGISTERED WITH MICROSOFT ( July 19, 1999 )

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



Extensive information on Microsoft's Four Character Codes (FOURCC) may be
found at

Dave Wilson's The Almost Definitive FOURCC
Definition List
Microsoft maintains a web page of FOURCC's for video, both pixel layouts and compression, with the FOURCC's registered with Microsoft. http://www.microsoft.com/hwdev/devdes/fourcc.htm Microsoft has defined 128-bit (16 byte) identifiers known as Globally Unique Identifiers (GUIDs) to identify virtually everything in the Microsoft Universe. Microsoft has defined mappings from the Four Character Codes used for video and audio codecs to GUID's. GUIDs for Video for Windows Codecs Return to Top

Audio Codecs

The sound tracks in an AVI file are Microsoft Waveform Audio (WAV) files. The Waveform Audio files can be uncompressed PCM (Pulse Code Modulated) audio or compressed with many different audio codecs (compressor/decompressors). The windows multimedia system uses the terms WAVE or waveform audio to refer to audio that consists of digitally sampled sound. In contrast to notes of music as in MIDI, another type of audio incorporated in the Windows multimedia system. The WAV, WAVE, or waveform audio system (different authors use all three to refer to the Microsoft Windows audio system) predates Video for Windows. Video for Windows was wrapped around WAVE. Various compromises were made to insure backward compatibility with existing WAVE applications, drivers, and files. Keep this in mind as there are various differences between the audio system and the video system described in other sections of this overview. To play a waveform audio (WAV) file or the sound track of an AVI compressed with a codec, the codec must be installed in the Audio Compression Manager under Windows. Windows PCM files (uncompressed) are always supported. The Audio Compression Manager (ACM) is the software system in Windows that manages waveform audio codecs and filters. Different audio codecs are identified with different waveform audio tags, 32 bit numbers. Wave audio format tags are registered with Microsoft. The following list of registered wave audio formats if from the mmreg.h file in the Win32 SDK. mmreg.h is the Registered Multimedia Information Public Header File /* WAVE form wFormatTag IDs */ #define WAVE_FORMAT_UNKNOWN 0x0000 /* Microsoft Corporation */ #define WAVE_FORMAT_ADPCM 0x0002 /* Microsoft Corporation */ #define WAVE_FORMAT_IBM_CVSD 0x0005 /* IBM Corporation */ #define WAVE_FORMAT_ALAW 0x0006 /* Microsoft Corporation */ #define WAVE_FORMAT_MULAW 0x0007 /* Microsoft Corporation */ #define WAVE_FORMAT_OKI_ADPCM 0x0010 /* OKI */ #define WAVE_FORMAT_DVI_ADPCM 0x0011 /* Intel Corporation */ #define WAVE_FORMAT_IMA_ADPCM (WAVE_FORMAT_DVI_ADPCM) /* Intel Corporation */ #define WAVE_FORMAT_MEDIASPACE_ADPCM 0x0012 /* Videologic */ #define WAVE_FORMAT_SIERRA_ADPCM 0x0013 /* Sierra Semiconductor Corp */ #define WAVE_FORMAT_G723_ADPCM 0x0014 /* Antex Electronics Corporation */ #define WAVE_FORMAT_DIGISTD 0x0015 /* DSP Solutions, Inc. */ #define WAVE_FORMAT_DIGIFIX 0x0016 /* DSP Solutions, Inc. */ #define WAVE_FORMAT_DIALOGIC_OKI_ADPCM 0x0017 /* Dialogic Corporation */ #define WAVE_FORMAT_YAMAHA_ADPCM 0x0020 /* Yamaha Corporation of America */ #define WAVE_FORMAT_SONARC 0x0021 /* Speech Compression */ #define WAVE_FORMAT_DSPGROUP_TRUESPEECH 0x0022 /* DSP Group, Inc */ #define WAVE_FORMAT_ECHOSC1 0x0023 /* Echo Speech Corporation */ #define WAVE_FORMAT_AUDIOFILE_AF36 0x0024 /* */ #define WAVE_FORMAT_APTX 0x0025 /* Audio Processing Technology */ #define WAVE_FORMAT_AUDIOFILE_AF10 0x0026 /* */ #define WAVE_FORMAT_DOLBY_AC2 0x0030 /* Dolby Laboratories */ #define WAVE_FORMAT_GSM610 0x0031 /* Microsoft Corporation */ #define WAVE_FORMAT_ANTEX_ADPCME 0x0033 /* Antex Electronics Corporation */ #define WAVE_FORMAT_CONTROL_RES_VQLPC 0x0034 /* Control Resources Limited */ #define WAVE_FORMAT_DIGIREAL 0x0035 /* DSP Solutions, Inc. */ #define WAVE_FORMAT_DIGIADPCM 0x0036 /* DSP Solutions, Inc. */ #define WAVE_FORMAT_CONTROL_RES_CR10 0x0037 /* Control Resources Limited */ #define WAVE_FORMAT_NMS_VBXADPCM 0x0038 /* Natural MicroSystems */ #define WAVE_FORMAT_CS_IMAADPCM 0x0039 /* Crystal Semiconductor IMA ADPCM */ #define WAVE_FORMAT_G721_ADPCM 0x0040 /* Antex Electronics Corporation */ #define WAVE_FORMAT_MPEG 0x0050 /* Microsoft Corporation */ #define WAVE_FORMAT_CREATIVE_ADPCM 0x0200 /* Creative Labs, Inc */ #define WAVE_FORMAT_CREATIVE_FASTSPEECH8 0x0202 /* Creative Labs, Inc */ #define WAVE_FORMAT_CREATIVE_FASTSPEECH10 0x0203 /* Creative Labs, Inc */ #define WAVE_FORMAT_FM_TOWNS_SND 0x0300 /* Fujitsu Corp. */ #define WAVE_FORMAT_OLIGSM 0x1000 /* Ing C. Olivetti & C., S.p.A. */ #define WAVE_FORMAT_OLIADPCM 0x1001 /* Ing C. Olivetti & C., S.p.A. */ #define WAVE_FORMAT_OLICELP 0x1002 /* Ing C. Olivetti & C., S.p.A. */ #define WAVE_FORMAT_OLISBC 0x1003 /* Ing C. Olivetti & C., S.p.A. */ #define WAVE_FORMAT_OLIOPR 0x1004 /* Ing C. Olivetti & C., S.p.A. */ // // the WAVE_FORMAT_DEVELOPMENT format tag can be used during the // development phase of a new wave format. Before shipping, you MUST // acquire an official format tag from Microsoft. // #define WAVE_FORMAT_DEVELOPMENT (0xFFFF) Return to Top

How to determine which Audio Codecs are Installed

View the SYSTEM.INI file. In Windows 95, 32 bit Audio Codecs are listed in the [drivers32] section. [drivers32] msacm.lhacm=lhacm.acm msacm.l3codec=l3codecb.acm msacm.msg723=msg723.acm msacm.msnaudio=msnaudio.acm The string msacm stands for Microsoft Audio Compression Manager (ACM). This is the system software component that manages audio codecs (and other audio components) in 16 bit Windows and in Win32. The different codecs are identified by a string of arbitrary length such as msnaudio for Microsoft Network Audio. Note that this differs from Video for Windows where everything is a Four Character Code. The audio codecs in the example above were installed in Windows 95 by Microsoft's NetShow streaming audio/video product. The Audio Compression Manager (ACM) is in the process of being displaced by ActiveMovie. In Windows 95, (1) Open the Control Panel (2) Double Click on the Multimedia Icon (3) Select the Advanced tab (4) Under the Multimedia Drivers icon, double click on the Audio Compression Codecs icon to see a list of installed audio codecs. This information is the same as the information stored in the SYSTEM.INI file (see above). Return to Top

© 2000 by John F. McGowan, Ph.D.

Disclaimer

jmcgowan11@earthlink.net