    			     AVI Overview
    		      by John F. McGowan, Ph.D.
                          (c) 1996-1999, John F. McGowan
    		      http://www.rahul.net/jfm/

    ----------------------------------------------------------------------------

##

##

##

##

##

##

##

##

###

###

###

###

##

##

###

####

#####

######

######

######

######

####

####

####

####

####

####

####

###

####

####

####

####

####

####

####

####

####

####

####

##

##

###

###

##

###

##

##

##

###

###

####

###

###

###

###

###

###

###

##

##

##

##

##

##

##

##

##

##

##

##

##

##

##

##

##

##

##

##

##

##

##

##

##

##

##

##

###

###

###

##

##

###

###

####

####

###

###

###

###

###

##

##

##

####

##

##

###

###

###

###

##

##

##

###

###

###

###

###

###

###

##

###

###

##

###

###

##

##

##

###

###

###

##

###

###

##

###

###

###

###

###

##

##

###

###

###

##

###

###

###

###

###

##

###

####

####

####

####

####

####

###

###

###

###

##

##

##

##

##

##

##

##

###

###

####

####

####

###

###

###

###

###

###

###

###

###

##

###

###

###

###

###

###

##

##

###

###

###

###

##

##

##

##

###

###

###

###

###

###

##

###

###

###

##

##

###

###

###

##

###

##

##

##

###

###

###

###

###

##

##

##

##

###

###

###

##

##

##

##

##

##

##

###

###

##

##

###

###

##

  ##

  ##

  ##

    What is in this Overview?

           - Overview of Video for Windows, DirectShow (ActiveMovie), and AVI

           What is AVI?

           Disclaimer

           How to Get the AVI Overview

           WHAT'S NEW

           Brief Table of Contents

              Most Common AVI Question: What does "could not find vids:xxxx ..." error mean?
              UTILITIES, SYSTEM ADMINISTRATION, AUTHORING, ETC.
              Installation, Configuration, and Other Issues
              AVI and the WORLDWIDE WEB
              Audio and Video Codecs
              Business and Economics of AVI

              PROGRAMMING/TECHNICAL TOPICS

              Microsoft Windows Video Programming
              Multimedia Technical Information
              Microsoft Windows Device Drivers

              Glossary
              Chronology

           Detailed Table of Contents

              Most Common AVI Question: What does "could not find vids:xxxx ..." error mean?

           UTILITIES, SYSTEM ADMINISTRATION, AUTHORING, ETC.
           - How to play an AVI file?
                        - DOS
                        - Windows
                        - Macintosh
                        - Unix
                        - VAX/VMS
                        - Amiga
                        - OS/2

           - How to convert AVI to various audio/video formats.
                        - MPEG (.MPG Files)
                        - QuickTime (.MOV or .MooV)
                        - Animated GIFs (GIF89a)
                        - Microsoft ASF (Active Streaming Format)
                        - Sequence of Still Images in Separate Files
                        - Smacker (.SMK Files)
                        - Progressive Networks RealMedia Streaming Format (.RM Files)

           - How to convert other audio/video formats to AVI
                        - QuickTime (.MOV or .MooV)
                        - Sequence of Still Images in Separate Files
                        - Autodesk Animation (FLI or FLC)
                        - MPEG (.MPG)
                        - Animated GIF (.GIF)

           - How to Convert a Sequence of Still Images in One Format to a Sequence in Another Format

           - Authoring AVI Files

                    CREATING AVI FILES

                        - How to capture screen to AVI files
                        - Multimedia Authoring Tools to Create AVI Files
                        - How to import AVI files into Lightwave
                        - How to create AVI files from analog video (Video Capture Cards)
                                 - From VHS tapes and video cameras
                                 - From Hi8 tapes and video cameras
                                 - Video Capture under Video for Windows
                                 - Video Capture Cards
                                 - Video Capture through PC Parallel Port
                                 - What to do about horizontal tearing in the video?
                                 - Hard Drive Video Capture Issues
                                 - Video Capture Cards with Windows NT Drivers
                        - How to create AVI files from Television
                        - How to Create Morph Effects for AVI Files
                        - How to compress the audio sound track in AVI files

    		MODIFYING AND EDITING AVI FILES

                        - How to change frame rate of AVI files
                        - How to crop an AVI file
                        - How to edit AVI files
                                 - VidEdit
                                 - Personal AVI Editor
                                 - MGI VideoWave
                                 - Corel Lumiere Suite for 32-bit Windows
                                 - Ulead Media Studio Pro
                                 - Adobe Premiere
                                 - in:sync SpeedRazor
                                 - Asymetrix Digital Video Producer (DVP)
                                 - Fast Movie Processor
                                 - Peck's Power Join
                        - How to compress the audio sound track in AVI files
                        - How to create NTSC (or PAL) Safe AVI
                        - The Phantom Final Frame when Viewing an AVI
                        - Binary File Editors for Viewing and Editing AVI
                        - RIFF and AVI Parser/Viewers
                                 - John McGowan's VidTrace
                                 - Microsoft RIFFWALK
                                 - Bill Luken's RIFFSCAN
                        - Editing and converting WAV files
                        - Editing and converting Sound Files on Macintosh

                    MISCELLANEOUS AUTHORING QUESTIONS

                        - How to output AVI files to videotape
                        - Size limits on AVI files
                        - How to Fix Problem with AVI files from CorelMove 4.0

           Installation, Configuration, and Other Issues

                        INSTALLATION AND CONFIGURATION

                           - Where to get the 16-bit Video for Windows for Windows 3.x
                           - Reinstalling Microsoft's Video-for-Windows in Windows 95
                           - How to get ActiveMovie 1.0
                           - Installing and configuring AVI Codecs in Windows NT 4.0
                           - How to give AVI files a different extension in Windows 3.1
                           - How AVI Files are Handled in Windows 95

                        INFORMATION SOURCES
                           - Bibliography of sources of information on Video for Windows and AVI
                           - Internet Newsgroups with Information on AVI and Video
                           - Where to find information
    on digital audio and video standards other than AVI.

                        MISCELLANEOUS QUESTIONS

                           - PC Video Card and Video Chips
                                             - Video Cards with Windows NT Drivers
                           - How to embed an AVI file in a Microsoft Word Document
                           - Microsoft's Changing Names
                           - Answers to miscellaneous other frequently asked questions about AVI

                           -  AVI and Your Health (Eye Strain)

            AVI and the WORLDWIDE WEB
                   - Effective use of video on a Web page
                   - How to embed an AVI file in a Web page
                   - Configuring Netscape Navigator 3.0x to Display AVI Files
    	       - Netscape Navigator Plug-ins to play AVI
                   - Configuring Internet Explorer 3.0x to Display AVI Files
                   - Sending AVI by E-Mail or Network News Postings
                   - How to encrypt AVI Files

                   - MIME types of AVI
                   - Configuring Web Servers to Handle AVI Files
                             - Apache
                             - CERN (or W3C)
                             - NCSA HTTPd
                             - Microsoft Internet Information Server 3.0
                             - Netscape Enterprise Server 3.0

                   - AVI and Java
                   - AVI and VRML
                   - AVI and NetShow
                   - Converting AVI to Microsoft Active Streaming Format (ASF) Files
                   - Sources of AVI Video Clips on the Web
                   - Low Bit Rate AVI for the Web

            REAL-TIME OR STREAMING VIDEO OVER IP NETWORKS
                   - Limitations of AVI and Video for Windows over Networks
                   - NetShow
                   - Microsoft's Changing Names
                   - Internet Video Standards and Pseudo-Standards

            AUDIO and VIDEO CODECS
                   - Video for Windows compressors and decompressors
                         WHAT THEY ARE, WHERE TO GET THEM, WHICH WORK BEST!
                             - The Old Guard
                                   - Full Frames (Uncompressed)
                                          - Color Formats
                                   - Intel Real Time Video 2.1 (Indeo 2.1?) (RT21)
                                   - Indeo 3.2/3.1
                                   - Microsoft Run Length Encoding
                                   - Microsoft Video 1
                                   - Cinepak
                                   - Motion JPEG
                                   - Editable MPEG
                              - The New Wave
                                   - VDOWave (VDOLive)
                                   - Indeo Video Interactive (Indeo 4.1)
                                   - Indeo Video Interactive (Indeo 5.x)
                                   - ClearVideo (aka RealVideo)
                                   - SFM (Surface Fitting Method)
                                   - QPEG
                                   - H.261
                                   - H.263
                                            - Microsoft H.263
                                            - Vivo Software H.263
                                            - Intel I263 H.263
                                            - Shannon Communication Systems (SCS) H.263+
                                            - Telenor R&D H.263
                                   - MPEG-4
                                   - Lightning Strike (Infinop)
                                   - VxTreme
                              Video Codecs NOT Available for AVI
                                   - Sorenson Video

                   - Which AVI video codec is best?
                   - Performance of the AVI Codecs
                              A table with typical compression ratios of
                              Video for Windows codecs.

                   - Which Video for Windows codecs are
    supported by QuickTime on the Apple Macintosh?
                   - How to determine which codecs are installed
                   - How to determine which codec was used to compress an AVI file
                   - Microsoft Four Character Codes (FOURCC)
                   - Microsoft GUIDs for Video for Windows Codecs
                   - Color Formats
                   - Video Compression Technologies
                            Run Length Encoding
    			Vector Quantization
                            Discrete Cosine Transform
                            Discrete Wavelet Transform
                            Contour-Based Image Coding
                            Frame Differencing
                            Motion Compensation

                   - Audio Codecs
                   - How to determine which Audio Codecs are Installed

            GLOSSARY

            CHRONOLOGY

            PROGRAMMING/TECHNICAL TOPICS

                   MICROSOFT WINDOWS PROGRAMMING

                       THE OLD REGIME

                           - Windows Multimedia System
                           - Video for Windows
                           - Wave (Waveform Audio)
                           - AVI file format
                                    - RIFF Files
                                    - Original AVI File Format
                                    - OpenDML AVI File Format Extensions
                                    - Where to get the exact specification of AVI?
                                    - AVI and Windows Bitmaps (DDB, DIB, ...)
                        THE NEW WAVE

                           - ActiveMovie
                           - GUID's and AVI
                           - DirectShow (ActiveMovie 2.0)
                           - DirectDraw
                           - MMX
                           - ActiveX
                           - Microsoft's Changing Names

                        HOW TO PROGRAM IN WINDOWS
                           - Playing an AVI file within a Windows Application
                           - Reading and Writing an AVI file within a Windows Application

                        USEFUL INFORMATION FOR AVI AND VIDEO PROGRAMMING (NOT WINDOWS)

                          SOURCE CODE
                           - Where to get C source code for an AVI Player Including Many Codecs
                           - Where to get C source code for a JPEG Encoder or Decoder
                           - Where to get C source code for an H.263 Video Encoder or Decoder
                           - Where to get C source code for an MPEG Video Encoder or Decoder
                           - Where to get C/C++ Source Code for Wavelet Image Compression

                          TECHNICAL INFORMATION
                           - Where to get an explanation of Color, Color Spaces, Gamma and All That
                           - Where to get Detailed Information on Graphics File Formats?
                           - Where to get Detailed Information on Audio File Formats?

                        USEFUL INFORMATION FOR NETWORKED VIDEO PROGRAMMING
                           - Internet Video Standards
                                  - MIME
                                  - RTP (Real Time Protocol)
                                  - RSVP (Resource Reservation Protocol)
                                  - IP Multicast
                                  - UDP (User Datagram Protocol)

                    WINDOWS DEVICE DRIVERS AND VIDEO
                           - What is a driver?
                           - GDI Device Drivers
                           - DirectDraw Hardware Abstraction Layer
                           - Virtual Device Drivers
                           - Windows NT Driver Model
                           - Win32 Driver Model (WDM)
                           - Setup Information Files

                   Awards

                   Credits

                   ABOUT THE AUTHOR

                   - John McGowan is a software engineer with experience
    in digital audio and video on PC/Windows, Unix/X Windows, and
    PowerMacintosh platforms.  He has developed commercial MPEG-1 and
    MPEG-2 player software.  His experience includes development,
    optimization, and implementation of audio, video, and still image
    compression and decompression algorithms in C/C++ on Intel, MIPS,
    SPARC, and PowerPC based platforms.  He has also developed Microsoft
    Windows user interface software.  He has a Ph.D. in physics from the
    University of Illinois at Urbana-Champaign and a B.S. in physics from
    the California Institute of Technology.

                   - John McGowan's Home Page

    Disclaimer

    In no event shall John McGowan or other contributors be liable for
    direct, indirect, special, incidental or consequential damages
    arising out of the use or inability to use information, softwares,
    bitstreams and other data found on or referenced by the AVI Graphics
    Overview.

    Permission to copy and distribute this document is granted so long as
    the title, author's name, URL, and this disclaimer are retained.  Any
    additions or modifications made to the original should be clearly
    marked as such.  The author welcomes and encourages suggested changes
    and additions to the overview.  Contributors will be credited.

    Return to Top

    How to Get the AVI Overview

    The AVI Overview is available at:

    http://www.rahul.net/jfm/avi.html

    If you are in a Web Browser such as Internet Explorer or Netscape
    Navigator, you can save a copy of the page you are viewing to your
    local hard disk as an HTML File.

    In Internet Explorer, Select File | Save As...

    In Netscape Navigator, Select File | Save As...

    Using FTP (File Transfer Protocol):

    ftp://ftp.rahul.net/pub/jfm/avi/avi.html

    Return to Top

    What's New

    (May 11, 1999)

    Aachen, Germany

    MainConcept releases Linux verson of Main Actor Video Editor.
    Linux is a free imlementation of the Unix operating system
    for the IBM PC-compatible and other platforms.

    (April 15, 1999)

    Aachen, Germany

    MainConcept releases Main Actove Video Editor 3.0 for
    Microsoft Windows 95/98 and Microsoft Windows NT 4.0.

    (March 21, 1999)

    XAnim 2.80.1 released on March 21, 1999.  XAnim is a video and animation
    player for the X Windows System and Unix.  It includes support for
    AVI files.

    XAnim 2.80.1 contains some minor changes to XAnim 2.80.0 which was
    released on March 14, 1999.

    (March 14, 1999)

    XAnim 2.80.0 released on March 14, 1999.  XAnim is a video and animation
    player for the X Windows System and Unix.  It includes support for
    AVI files.

    According to the XAnim web site:

    XAnim 2.80.0 is now ready for consumption. In addition to several new
    video codecs, the new revision also supports dynamically loadable
    video decompression libraries. This means you no longer need to
    recompile xanim each time a new video codec is released or
    upgraded. There are currently dll's for: Creative CYUV, Radius
    Cinepak, Intel Indeo 3.2, Intel Indeo 4.1, Intel Indeo 5.0, CCITT
    H.261 and CCITT H.263.

    (Feb. 2, 1999)

    Intel Indeo 5.10 video codec released, supersedes 5.06.

    (November 5, 1998) Guillaume de Bailliencourt writes:

    John,

    I'm an anonymous reader of your FAQ for years.

    First, congratulation for your work in this FAQ !

    I've just released a software MJPEG codec and main features are :

    Decompress hardware M-JPEG AVI files (Rainbow Runner, DC30, ...) without the
    capture hardware.

    Win9x, WinNT, Video for Windows, ActiveMovie & DirectShow compliant.

    MMX and 3DNow! optimized.

    DirectDraw YUV accelarated output supported (YUY2 & UYVY).

    Most of the M-JPEG formats supported (4:2:2, 4:1:1, mjpg, dmb1, jpeg).

    You can download it at www.morgan-multimedia.com

    For me it is better than the Paradigm Matrix codec. I'll send you benchmark
    ...

    For the moment it has been tested on :

    Play back (decompression) :

    Paradigm Matrix software codec compressed AVI Files in every resolutions &
    compressions.

    Matrox Rainbow Runner AVI files in every resolutions & compressions.

    Miro/Pinnacle DC30 AVI files in 384 x 288 & 720x540

    Fast Screen Machine II + MJPEG card AVI file in 368 x 276

    AVI files created with MainActor "Software & Harware MJPEG output"

    AVI file converted from a 'jpeg' QuickTime file with SmartVid

    Compressed with my codec & played back with :

    Paradigm Matrix software codec

    Matrox Rainbow Runner

    Best regards,

    Guillaume de Bailliencourt

    (January 6, 1999)

    Radius Incorporated, the Cinepak company, renames itself
    Digital Origin Incorporated.

    (August 24, 1998) jim@shansys.com writes:

    Hi there,
    We have an H263+ avi codec and analysis tool at www.shansys.com

    (August 3, 1998) David Gartner of Equilibrium writes:

    Equilibrium adds AVI with sound support to DeBabelizer Pro 4.5

    ...

    **AVI Video with Sound**
    DeBabelizer Pro 4.5's new full AVI support enables users to batch process
    legacy Video for Windows files for use on most any Macintosh and Windows
    systems for the Web, CD-ROM or kiosk.  Video for Windows (AVI) was built
    into Windows 95 and NT and runs only on Windows machines.  Now, with a few
    keystrokes, DeBabelizer Pro 4.5 users can automatically optimize, convert,
    and compress tens, hundreds or thousands of videos to QuickTime 3.0,
    animated GIFs or a variety of other cross-platform video and animation
    formats.

    ...

    (June 6, 1998)  Wolfgang Hesseler writes:

    Hello,
    Hello, I just wanted to let you know that I've released the new
    QuickView 2.30. It now supports a bunch of new video codecs like
    Motion JPEG, several audio codecs and QuickTime video codecs.
    Please update your FAQ. Thanks.

    (May 4, 1998) Microsoft plans to release first public test version
    of NetShow 3.0

    (March 23, 1998) The AVI Overview selected as an
    'Outstanding Page' by the PC Webopaedia

    (November 12, 1997) Microsoft has a new NetShow distribution NetShow
    2.1 NetShow 2.1 adds support for RealNetworks (formerly Progressive
    Networks) RealVideo and RealAudio, NetShow clients for Windows 3.1,
    MacOS, and the Linux, Solaris, SunOS, and HP-UX versions of Unix, and
    TheaterServer for streaming broadcast-quality video over highbandwidth
    networks such as ATM and fast Ethernet.  Microsoft has invested in
    RealNetworks within the last few months.

    (October 30, 1997) Wolfgang Hesseler writes about his AVI viewer
    for DOS:

    Hello, I just wanted to let you know that I've released the new
    QuickView 2.20. Besides supporting more hardware and MOV files it
    supports the QPEG codec. Please update your FAQ. Thanks.

    (September 8, 1997) Microsoft distributes Advanced Streaming
    Format (ASF) Specification for a "Public Design Review".
    Microsoft ASF Page

    (September, 1997) Lernout and Hauspie Speech Products forms
    a strategic partnership with and receives investment capital
    from Microsoft.  $45 million in some reports.  BT Alex Brown
    acted as financial advisor.  Lernout and Hauspie audio codecs are
    used in Microsoft's NetShow product.

    (September, 1997) avi2mpg1 released.  A Windows 95/NT console
    application to convert AVI to MPEG-1.

    (August 5, 1997) Microsoft acquires VxTreme (wavelet based
    streaming video) for its NetShow product line.

    VxTreme Inc.

    Intel's Indeo Video Interactive 5.0 software is
    now available on Intel web site.

    Wolfgang Hesseler announces version 2.13 of QuickView, an AVI
    player for DOS (July 28, 1997)

    MainConcept announces version 1.1 of MainActor shareware.
    MainActor can convert between AVI and many video, animation,
    and image formats.  (July 9, 1997)

    Marcus Moenig of MainConcept writes:

    John,

    well here comes the press release of v1.1 We now support full MPEG-I and
    MPEG-II without audio. So you can now convert MPEG into AVI and vice versa.

    I dont want to get on your nerves on what MainActor can and cannot do but
    we also support full Motion JPEG for AVIs. Even interlaced JPEG from Miro
    and FAST hardware can now be read and written by MainActor.

    ---End---

    RAD Game Tools announces a new version of their Smacker
    utilities, including the ability to read and write AVI
    files with optimized 8 bit color palettes. (June 27, 1997)

    Return to Top

    What is AVI?

    	AVI stands for Audio Video Interleave.  It is a special case
    of the RIFF (Resource Interchange File Format).  AVI is defined by
    Microsoft.  AVI is the most common format for audio/video data on the
    PC.  AVI is an example of a de facto (by fact) standard.

    Return to Top

    Windows Multimedia System

    In Win16 and Win32, Microsoft created a partially unified system
    for handling multimedia.  This system consists of the high level
    Media Control Interface or MCI Application Programming Interface (API)
    and associated MCI drivers.  Playback of AVI files can be controlled
    through the high level MCI API and the MCIAVI.DRV MCI driver.

    The Windows Multimedia System also provides a number of low level
    API's such as the WAVE API for waveform audio and associated
    device drivers such as the WAVE device drivers for sound cards.

    Under Windows NT 4.0, the MCI and low level API's are stored in
    the file WINMM.DLL

    The API's are:

    MCI   (high level API - useful for AVI playback)
    joy   (joystick devices)
    midi  (MIDI devices)
    mixer (MIXER devices)
    wave  (waveform audio input and output devices)
    mmio  (low level functions to parse RIFF files)
    time  (timers etc.)
    aux   (auxiliary sound device)

    When a program loads the MCIAVI driver, the Multimedia
    System has the intelligence to locate and invoke the
    appropriate MCI driver (MCIAVI.DRV in 16-bit
    Windows or MCIAVI32.DLL in 32 bit windows) and pass the MCI
    commands such as MCI_PLAY to the MCI driver.

    The MCIAVI driver then calls Video for Windows to decompress
    the video, GDI (or another graphics API) to display the
    decoded frames, and WAVE to output the decoded audio samples.

    A dump of the functions exported by winmm.dll under NT 4.0
    generated with the Microsoft DUMPBIN.EXE utility follows:

    Microsoft (R) COFF Binary File Dumper Version 5.00.7022
    Copyright (C) Microsoft Corp 1992-1997. All rights reserved.

    Dump of file winmm.dll

    File Type: DLL

             Section contains the following Exports for WINMM.dll

                       0 characteristics
                31EC70B4 time date stamp Tue Jul 16 21:48:52 1996
                    0.00 version
                       2 ordinal base
                     197 number of functions
                     197 number of names

                ordinal hint   name

                      3    0   CloseDriver  (000026CE)
                      4    1   DefDriverProc  (00005AF4)
                      5    2   DriverCallback  (0000254E)
                      6    3   DrvGetModuleHandle  (00001D37)
                      7    4   GetDriverModuleHandle  (00001D37)
                      8    5   MigrateAllDrivers  (00013E79)
                      9    6   MigrateMidiUser  (00013E60)
                     10    7   MigrateSoundEvents  (00011A3C)
                     11    8   NotifyCallbackData  (0000B2C2)
                     12    9   OpenDriver  (00002036)
                     13    A   PlaySound  (00008ACB)
                      2    B   PlaySoundA  (00008ACB)
                     14    C   PlaySoundW  (00009AE1)
                     15    D   SendDriverMessage  (00001000)
                     16    E   WOW32DriverCallback  (0000C448)
                     17    F   WOW32ResolveMultiMediaHandle  (0000CC3C)
                     18   10   WOWAppExit  (00009D3F)
                     19   11   aux32Message  (0000C507)
                     20   12   auxGetDevCapsA  (0000A3FD)
                     21   13   auxGetDevCapsW  (00008C77)
                     22   14   auxGetNumDevs  (00006AE4)
                     23   15   auxGetVolume  (0000A4A1)
                     24   16   auxOutMessage  (00008BFF)
                     25   17   auxSetVolume  (0000A4C9)
                     26   18   joy32Message  (0000C768)
                     27   19   joyConfigChanged  (0000AE40)
                     28   1A   joyGetDevCapsA  (0000A99A)
                     29   1B   joyGetDevCapsW  (0000AB40)
                     30   1C   joyGetNumDevs  (0000AB96)
                     31   1D   joyGetPos  (0000ABAA)
                     32   1E   joyGetPosEx  (0000ABFD)
                     33   1F   joyGetThreshold  (0000AC5C)
                     34   20   joyReleaseCapture  (0000ACA8)
                     35   21   joySetCapture  (0000ACFC)
                     36   22   joySetThreshold  (0000AE06)
                     37   23   mci32Message  (00007566)
                     38   24   mciDriverNotify  (00007006)
                     39   25   mciDriverYield  (00008727)
                     40   26   mciExecute  (0000D92C)
                     41   27   mciFreeCommandResource  (000035CE)
                     42   28   mciGetCreatorTask  (0000DCD5)
                     43   29   mciGetDeviceIDA  (0000DCA3)
                     44   2A   mciGetDeviceIDFromElementIDA  (0000DBC6)
                     45   2B   mciGetDeviceIDFromElementIDW  (0000DBF5)
                     46   2C   mciGetDeviceIDW  (00005372)
                     47   2D   mciGetDriverData  (0000158B)
                     48   2E   mciGetErrorStringA  (0000DA46)
                     49   2F   mciGetErrorStringW  (0000352F)
                     50   30   mciGetYieldProc  (0000E1F3)
                     51   31   mciLoadCommandResource  (00002A75)
                     52   32   mciSendCommandA  (000015D4)
                     53   33   mciSendCommandW  (000014A1)
                     54   34   mciSendStringA  (00004927)
                     55   35   mciSendStringW  (00004A24)
                     56   36   mciSetDriverData  (000058BD)
                     57   37   mciSetYieldProc  (000034C9)
                     58   38   mid32Message  (0000BDFD)
                     59   39   midiConnect  (0001019E)
                     60   3A   midiDisconnect  (0001018C)
                     61   3B   midiInAddBuffer  (0001004A)
                     62   3C   midiInClose  (0000FF42)
                     63   3D   midiInGetDevCapsA  (0000FCCC)
                     64   3E   midiInGetDevCapsW  (0000FC71)
                     65   3F   midiInGetErrorTextA  (0000FDEB)
                     66   40   midiInGetErrorTextW  (0000FDB2)
                 SetInfo  (0000EBF4)
                    140   8A   mmioStringToFOURCCA  (0000ED9A)
       (00008BC5)

    Under Windows 3.x and Windows 95, the DLL MMSYSTEM.DLL (short for
    MultiMedia System) contains the multimedia API's.

    Return to Top

    Video for Windows

    Video for Windows is an entire system for handling video
    in Microsoft Windows.  It was part of MS Windows 3.1  The
    original Video for Windows is a collection of 16 bit
    windows utilities, dynamic link libraries, and other
    components.

    The AVI file and file format is a central part of Video
    for Windows.

    Microsoft Visual C++ 5.0 has a Video for Windows
    include file Vfw.h which contains the various API's that
    make up Video for Windows:

     *          COMPMAN         - Installable Compression Manager.
     *          DRAWDIB         - Routines for drawing to the display.
     *          VIDEO           - Video Capture Driver Interface
     *
     *          AVIFMT          - AVI File Format structure definitions.
     *          MMREG           - FOURCC and other things
     *
     *          AVIFile         - Interface for reading AVI Files and AVI Streams
     *          MCIWND          - MCI/AVI window class
     *          AVICAP          - AVI Capture Window class
     *
     *          MSACM           - Audio compression manager.

    Microsoft released a Video for Windows 1.0 for
    Windows 3.1 in November 1992, followed by Video for Windows 1.1.  There
    have been several versions of Video for Windows 1.1
    identified by a trailing alphabetical character such as
    1.1e   The last and most recent version of Video for
    Windows 1.1 for Windows 3.x is Video for Windows 1.1e
    This is available by ftp from Microsoft.

    Microsoft has provided a 32-bit version of Video for Windows
    for Windows 95, while threatening to replace Video for Windows with
    ActiveMovie.  This version has 32 bit versions of the Video
    for Windows codecs such as Cinepak.  Other DLL's in the
    Video for Windows 95 are also 32-bit  How much of the Video for
    Windows in Windows 95 is 32 bit code is not clear; many of the
    codecs are clearly 32 bit codecs.  Nor is it clear how much has been
    changed or modified besides the convesion to 32-bit code.

    Windows NT 3.5, 3.51 and Windows NT 4.0 include a Video for Windows for
    NT.  Presumably this is strictly 32-bit.  It is not clear how
    much code is shared between the NT Video for Windows and the
    Windows 95 Video for Windows.  Note that hardware device
    drivers are different between Windows 95 and NT 3.5/3.51/4.0.

    ActiveMovie 1.0 and DirectShow (formerly ActiveMovie 2.0) are
    32-bit successors to Video for Windows for both Windows 95
    and Windows NT.  These support AVI files.  ActiveMovie started
    out life under the code name Quartz; early Beta releases of
    ActiveMovie were known as Quartz.

    ActiveMovie 1.0 is bundled with Windows 95b (OEM Service Release 2.x)
    and Internet Explorer 3.x/4.x for Windows 95.  It can also be downloaded
    and installed in Windows 95 separately.  Note that ActiveMovie 1.0
    does NOT completely replace Video for Windows.  For example, ActiveMovie
    1.0 does not provide a video capture mechanism.  Video capture still
    uses Video for Windows capture drivers.

    ActiveMovie 1.0 is a 32 bit software component that can run in NT's
    user mode.  It runs under Windows NT 4.0 as well as Windows 95.

    DirectShow (ActiveMovie 2.0) will supposedly add a number of new
    features including video capture support, kernel mode streaming, and
    miscellaneous other features.

    VIDEO FOR WINDOWS under WINDOWS NT 4.0

    Under NT 4.0, Video for Windows is implemented as a collection of
    32-bit DLL's in the Microsoft 32-bit Common Object File Format or COFF
    format.  These are usually located in the \WINNT\SYSTEM32 directory
    where Windows NT stores most of the system DLL's, drivers, and so
    forth.

    MSVFW32.DLL        ( Microsoft Video for Windows DLL - NT 4.0 )
    AVIFIL32.DLL       ( AVIFILE API for Reading and Writing AVI Files and Streams )
    AVICAP32.DLL       ( AVI Capture Window Class )
    MCIAVI32.DLL       ( Video for Windows MCI Driver )
    MSACM32.DRV        ( Microsoft Audio Compression Manager )
    MSACM32.DLL        ( more Microsoft Audio Compression Manager )

    MSRLE32.DLL        ( Microsoft RLE Video Codec )
    IR32_32.DLL        ( Intel Indeo 3.2 Video Codec )
    MSVIDC32.DLL       ( Microsoft Video 1 Codec )
    ICCVID.DLL         ( Cinepak for Windows 32 - Radius )

    What is in MSVFW32.DLL?

    MSVFW32.DLL includes the DRAWDIB, Installable Compression
    Manager or ICM, and MCI Windows components of Video for
    Windows.  Other components are stored in other DLL's.

    This is a dump of the functions exported by MSVFW32.DLL
    Version 4.00

    Microsoft (R) COFF Binary File Dumper Version 5.00.7022
    Copyright (C) Microsoft Corp 1992-1997. All rights reserved.

    Dump of file msvfw32.dll

    File Type: DLL

             Section contains the following Exports for MSVFW32.dll

                       0 characteristics
                31EC70E9 time date stamp Tue Jul 16 21:49:45 1996
                    0.00 version
                       2 ordinal base
                      47 number of functions
                      47 number of names

                ordinal hint   name

                      3    0   DrawDibBegin  (00001E14)
                      4    1   DrawDibChangePalette  (00008C30)
                      5    2   DrawDibClose  (0000888A)
                      6    3   DrawDibDraw  (000010A6)
                      7    4   DrawDibEnd  (00008BEC)
                      8    5   DrawDibGetBuffer  (00008EFC)
                      9    6   DrawDibGetPalette  (00002F97)
                     10    7   DrawDibOpen  (00003E0A)
                     11    8   DrawDibProfileDisplay  (00003EBA)
                     12    9   DrawDibRealize  (00001D49)
                     13    A   DrawDibSetPalette  (00001C0D)
                     14    B   DrawDibStart  (00002EEB)
                     15    C   DrawDibStop  (00002F42)
                     16    D   DrawDibTime  (00008C2B)
                     17    E   GetOpenFileNamePreview  (0000C7DC)
                     18    F   GetOpenFileNamePreviewA  (0000C7DC)
                     19   10   GetOpenFileNamePreviewW  (0000C6A5)
                     20   11   GetSaveFileNamePreviewA  (0000C7EC)
                     21   12   GetSaveFileNamePreviewW  (0000C7CC)
                     22   13   ICClose  (000035E0)
                     23   14   ICCompress  (00004CE5)
                     24   15   ICCompressorChoose  (00005F61)
                     25   16   ICCompressorFree  (00005615)
                     26   17   ICDecompress  (00004D4B)
                     27   18   ICDraw  (0000106A)
                     28   19   ICDrawBegin  (00001B95)
                     29   1A   ICGetDisplayFormat  (00004D8E)
                     30   1B   ICGetInfo  (00004C60)
                     31   1C   ICImageCompress  (00005A96)
                     32   1D   ICImageDecompress  (00005D2A)
                     33   1E   ICInfo  (00002FEB)
                     34   1F   ICInstall  (00004574)
                     35   20   ICLocate  (0000372E)
                     36   21   ICMThunk32  (0000841C)
                     37   22   ICOpen  (0000337C)
                     38   23   ICOpenFunction  (00003B53)
                     39   24   ICRemove  (0000488B)
                     40   25   ICSendMessage  (00001000)
                     41   26   ICSeqCompressFrame  (000059A7)
                     42   27   ICSeqCompressFrameEnd  (00005907)
                     43   28   ICSeqCompressFrameStart  (000056E4)
                     44   29   MCIWndCreate  (0000C988)
                     45   2A   MCIWndCreateA  (0000C988)
                     46   2B   MCIWndCreateW  (0000C8CC)
                     47   2C   MCIWndRegisterClass  (0000C83F)
                     48   2D   StretchDIB  (00009D13)
                      2   2E   VideoForWindowsVersion  (000041D1)

         Summary

            8000 .data
            3000 .rdata
            2000 .reloc
            3000 .rsrc
           11000 .text

    VIDEO FOR WINDOWS FOR WINDOWS 95

    Microsoft distributed a new Video for Windows for Windows 95
    while emphasizing Quartz/ActiveMovie/DirectShow in its
    marketing.

    Video for Windows 95 Files

    MSRLE32.DLL      (32-bit Microsoft RLE Video Codec)
    IR32_32.DLL      (32-bit Indeo 3.2 Video Codec)
    ICCVID.DLL       (32-bit Radius Cinepak Video Codec)
    MSVIDC32.DLL     (32-bit Microsoft Video 1 Video Codec )
    MSVIDEO.DLL      (16-bit Video for Windows DLL)
    MCIAVI.DRV       (16-bit AVI Video MCI Driver)
    AVIFILE.DLL      (16-bit AVIFILE)
    AVICAP.DLL       (16-bit AVICAP)
    AVICAP32.DLL     (32-bit AVICAP)
    MSVFW32.DLL      (32-bit Video for Windows DLL - with VfW API)
    AVIFIL32.DLL     (32-bit AVIFILE)

    SUMMARY

    Video for Windows 1.0 (Windows 3.x)
    Video for Windows 1.1 (a-e) (Windows 3.x)
    Video for Windows (Windows 95 - has 32-bit codecs and other 32-bit DLL's)
    Video for Windows (Windows NT 3.5, 3.51, and 4.0)

    Quartz           (Betas of ActiveMovie) (Windows 95)
    ActiveMovie 1.0                         (Windows 95 and NT 4.0)
    ActiveMovie 2.0  (DirectShow)           (probably Windows 97/98/Memphis and NT 5.0)

    Return to Top

    WAVE

    The Microsoft Windows audio (sound) input/output system, commonly
    referred to as Wave or WAVE, predates Video for Windows, which is
    wrapped around WAVE in various ways.  The audio tracks in AVI files
    are simply waveform audio (or WAV) data used by the wave system.
    Video for Windows parses the AVI files, extracts the WAV data, and
    pipes the WAV data to the WAVE system.  Video for Windows handles the
    video track if present.

    Traditionally, audio input and output devices such as Sound Blaster
    Cards have a WAVE audio input/output driver to play WAV (waveform
    audio) files.

    The simplest waveform audio files consists of a header followed by
    Pulse Coded Modulation (PCM) sound data, usually uncompressed 8 or 16
    bit sound samples.  WAVE also provides a mechanism for audio codecs.
    See elsewhere in the AVI Overview for further information on audio
    codecs and audio compression.

    WAVE is present in Windows 3.1 and Windows 95.  A different WAVE
    system is present in Windows NT 3.5, 3.51, and 4.0 At least the
    hardware device drivers for sound cards must be different in NT.

    ActiveMovie appears to be replacing WAVE.

    Return to Top

    What is the AVI File Format?

       AVI Files are a special case of RIFF files.  RIFF is
    the Resource Interchange File Format.  This is a general
    purpose format for exchanging multimedia data types
    that was defined by Microsoft and IBM during their
    long forgotten alliance.

    Kevin McKinnon writes:

    In fact, RIFF is a clone of the IFF format invented by Electronic Arts in
    1984.  They invented the format for Deluxe Paint on the Amiga, and IFF
    quickly became the standard for interchange on that platform,
    maintained eventually by Commodore right up 'til it's demise.  EA also
    ported Deluxe Paint to the PC platform and brought IFF with it.

    IFF even used the 4-character headers (FourCC), though at the time it was
    simply called a LONGWORD that some clever people decided to pair into
    four charcter because they looked good in #define's. ;)

    RIFF is so close to IFF that the good IFF parser routines will (mostly)
    correctly parse RIFF files.

    ----End of Kevin----

    Further information on the IFF format is available at:

    http://www.ipahome.com/gff/textonly/summary/iff.htm

    RIFF Files

       RIFF files are built from

    	(1) RIFF Form Header

                  'RIFF' (4 byte file size) 'xxxx' (data)

                      where 'xxxx' identifies the specialization (or form)
                      of RIFF.  'AVI ' for AVI files.

                      where the data is the rest of the file.  The
                      data is comprised of chunks and lists.  Chunks
                      and lists are defined immediately below.

    	(2) A Chunk

    		(4 byte identifier) (4 byte chunk size) (data)

                    The 4 byte identifier is a human readable sequence
                    of four characters such as 'JUNK' or 'idx1'

    	(3) A List

    		'LIST' (4 byte list size) (4 byte list identifier) (data)

                            where the 4 byte identifier is a human readable
                            sequence of four characters such as 'rec ' or
                            'movi'

    			where the data is comprised of LISTS or CHUNKS.

    AVI File Format

    	AVI is a specialization or "form" of RIFF, described below:

    'RIFF' (4 byte file length) 'AVI '   // file header (a RIFF form)

    'LIST' (4 byte list length) 'hdrl'   // list of headers for AVI file

    The 'hdrl' list contains:

    'avih' (4 byte chunk size)  (data)   // the AVI header  (a chunk)

    'strl' lists of stream headers for each stream (audio, video, etc.) in
    the AVI file.  An AVI file can contain zero or one video stream and
    zero, one, or many audio streams.  For an AVI file with one video and
    one audio stream:

    'LIST' (4 byte list length) 'strl'   // video stream list (a list)

    The video 'strl' list contains:

    'strh' (4 byte chunk size)  (data)   // video stream header (a chunk)
    'strf' (4 byte chunk size)  (data)   // video stream format (a chunk)

    'LIST' (4 byte list length) 'strl'   // audio stream list (a list)

    The audio 'strl' list contains:

    'strh' (4 byte chunk size)  (data)   // audio stream header (a chunk)
    'strf' (4 byte chunk size)  (data)   // audio stream format (a chunk)

    'JUNK' (4 byte chunk size) (data - usually all zeros) // an OPTIONAL junk chunk to align on 2K byte boundary

    'LIST' (4 byte list length) 'movi'   // list of movie data (a list)

    The 'movi' list contains the actual audio and video data.

    This 'movi' list contains one or more ...
     'LIST' (4 byte list length) 'rec '  // list of movie records (a list)
     '##wb' (4 byte chunk size) (data)   // sound data (a chunk)
     '##dc' (4 byte chunk size) (data)   // video data (a chunk)
     '##db' (4 byte chunk size) (data)   // video data (a chunk)

    A 'rec ' list (a record) contains the audio and video data for a single frame.
     '##wb' (4 byte chunk size)  (data)  // sound data (a chunk)
     '##dc' (4 byte chunk size)  (data)  // video data (a chunk)
     '##db' (4 byte chunk size)  (data)  // video data (a chunk)

    The 'rec ' list may not be used for AVI files with only audio or only
    video data.  I have seen video only uncompressed AVI files that did
    not use the 'rec ' list, only '00db' chunks.  The 'rec ' list is used
    for AVI files with interleaved audio and video streams.  The 'rec '
    list may be used for AVI file with only video.

     ## in '##dc' refers to the stream number.  For example, video data chunks
    belonging to stream 0 would use the identifier '00dc'.  A chunk of
    video data contains a single video frame.

    Alexander Grigoriev writes ...

    John,

    ##dc chunk was intended to keep compressed data, whereas ##db chunk
    nad(sic) to be used for uncompressed DIBs (device independent bitmap),
    but actually they both can contain compressed data. For example,
    Microsoft VidCap (more precisely, video capture window class) writes
    MJPEG compressed data in ##db chunks, whereas Adobe Premiere writes
    frames compressed with the same MJPEG codec as ##dc chunks.

    ----End of Alexander

    The ##wb chunks contain the audio data.

    The audio and video chunks in an AVI file do not contain
    time stamps or frame counts.  The data is ordered in time sequentially as
    it appears in the AVI file.  A player application should display the
    video frames at the frame rate indicated in the headers.  The
    application should play the audio at the audio sample rate indicated
    in the headers.  Usually, the streams are all assumed to start at
    time zero since there are no explicit time stamps in the AVI file.

    The lack of time stamps is a weakness of the original AVI file
    format.  The OpenDML AVI Extensions add new chunks with time
    stamps.  Microsoft's ASF (Advanced or Active Streaming Format), which
    Microsoft claims will replace AVI, has time stamp "objects".

    In principle, a video chunk contains a single frame of video.  By
    design, the video chunk should be interleaved with an audio chunk
    containing the audio associated with that video frame.  The data
    consists of pairs of video and audio chunks.  These pairs may be
    encapsulated in a 'REC ' list.  Not all AVI files obey this simple
    scheme.  There are even AVI files with all the video followed by all
    of the audio; this is not the way an AVI file should be made.

     The 'movi' list may be followed by:

     'idx1' (4 byte chunk size) (index data) // an optional index into movie (a chunk)

      The optional index contains a table of memory offsets to each
    chunk within the 'movi' list.  The 'idx1' index supports rapid
    seeking to frames within the video file.

      The 'avih' (AVI Header) chunk contains the following information:

          Total Frames   (for example, 1500 frames in an AVI)
          Streams   (for example, 2 for audio and video together)
          InitialFrames
          MaxBytes
          BufferSize
          Microseconds Per Frame
          Frames Per Second   (for example, 15 fps)
          Size  (for example 320x240 pixels)
          Flags

      The 'strh' (Stream Header) chunk contains the following information:

          Stream Type  (for example, 'vids' for video  'auds' for audio)
          Stream Handler  (for example, 'cvid' for Cinepak)
          Samples Per Second  (for example 15 frames per second for video)
          Priority
          InitialFrames
          Start
          Length  (for example, 1500 frames for video)
          Length (sec)   (for example 100 seconds for video)
          Flags
          BufferSize
          Quality
          SampleSize

       For video, the 'strf' (Stream Format) chunk contains the following
    information:

          Size  (for example 320x240 pixels)
          Bit Depth (for example 24 bit color)
          Colors Used  (for example 236 for palettized color)
          Compression  (for example 'cvid' for Cinepak)

       For audio, the 'strf' (Stream Format) chunk contains the following
    information:

          wFormatTag           (for example, WAVE_FORMAT_PCM)
          Number of Channels   (for example 2 for stereo sound)
          Samples Per Second   (for example 11025)
          Average Bytes Per Second   (for example 11025 for 8 bit sound)
          nBlockAlign
          Bits Per Sample      (for example 8 or 16 bits)

      Each 'rec ' list contains the sound data and video data for a single
    frame in the sound data chunk and the video data chunk.

      Other chunks are allowed within the AVI file.  For example, I have
    seen info lists such as

        'LIST' (4 byte list size) 'INFO' (chunks with information on video)

      These chunks that are not part of the AVI standard are simply
    ignored by the AVI parser.  AVI can be and has been extended by adding
    lists and chunks not in the standard.  The 'INFO' list is a registered
    global form type (across all RIFF files) to store information that
    helps identify the contents of a chunk.

      The sound data is typically 8 or 16 bit PCM, stereo or mono,
    sampled at 11, 22, or 44.1 KHz.  Traditionally, the sound has
    typically been uncompressed Windows PCM.  With the advent of
    the WorldWide Web and the severe bandwidth limitations of the
    Internet, there has been increasing use of audio codecs.  The
    wFormatTag field in the audio 'strf' (Stream Format) chunk
    identifies the audio format and codec.

    OpenDML AVI File Format Extensions

      The Open Digital Media (OpenDML) Consortium has defined an OpenDML
    AVI File Format Extensions which extend AVI to support a variety of
    features required for professional video production.  These include
    support for fields (not just frames), file sizes larger than 1 GB,
    timecodes, and many other features.  Microsoft has reportedly
    incorporated OpenDML AVI support in DirectShow 5.1 (ActiveMovie 5.1).
    It is also used by various professional video applications for the PC,
    in particular Matrox's DigiSuite software.

      The Open Digital Media Consortium AVI File Format Extensions
    add new lists and chunks to the AVI file which contain extra
    data such as timecodes not incorporated in the original AVI
    standard.

      OpenDML appears to have been spearheaded by Matrox to improve AVI
    for professional video authoring and editing.  Matrox makes a variety
    of PC video products such as DigiSuite for professional and broadcast
    video authoring and editing.  The OpenDML AVI File Format Extensions
    are primarily for the Motion JPEG AVI files used for professional
    video authoring and editing.  The OpenDML effort seems to have been
    pushed to one side with the advent of ActiveMovie, NetShow, Advanced
    (formerly Active) Streaming Format (ASF) Files, and other Microsoft
    initiatives.

      On Oct. 2, 1997, the OpenDML AVI File Format Extensions Version 1.02
    specification document (dated February 28, 1996) was available at
    the Matrox Electronic Systems, Ltd. web site at:

    http://www.matrox.com/videoweb/odmlff2.htm

    The specification is in Adobe Portable Document Format (PDF).  Since
    Matrox seems to rearrange their site from time to time and one can't
    always find the specification, I've included a link to a copy of the PDF
    version of the specification on my web site.

    PDF OpenDML AVI File Format Extensions Specification Document

    Get Adobe Acrobat Reader (PDF Viewer)

    Where to get the exact AVI specification?

    Microsoft Visual C++ 5.0 has a Video for Windows include
    file Vfw.h which gives the exact AVI data structures such as
    the various headers used in AVI files.  The file also has
    comments explaining the structure of the AVI file.

    Video for Windows refers to the AVI Format by the mnemonic
    AVIFMT.  At one time, the format information was apparently
    stored in an AVIFMT.H header file.  The format
    information now appears consolidated in Vfw.h

    In addition to the Video for Windows header files, Chapter Four of the
    Video for Windows Programmer's Guide, "AVI Files", gives a detailed
    specification of the AVI file format.

    Return to Top

    AVI and Windows Bitmaps (DDB, DIB, ...)

    Microsoft Windows represents bitmapped images internally and in files
    as Device Dependent Bitmaps (DDB), Device Independent Bitmaps (DIB), and
    DIB Sections.  Uncompressed 'DIB ' AVI files represent video frames as
    DIB's.  Various multimedia API's that work with AVI use Windows
    bitmapped images.

    Prior to Windows 3.0, Windows relied on Device Dependent Bitmaps for
    bitmapped images.  A DDB is stored in a format understood by the
    device driver for a particular video card.  As the name suggests, DDB's
    are not generally portable.

    The structure of a DDB is:

    typedef struct tagBITMAP {  // bm
       LONG   bmType;       /* always zero */
       LONG   bmWidth;      /* width in pixels */
       LONG   bmHeight;     /* height in pixels */
       LONG   bmWidthBytes; /* bytes per line of data */
       WORD   bmPlanes;     /* number of color planes */
       WORD   bmBitsPixel;  /* bits per pixel */
       LPVOID bmBits;       /* pointer to the bitmap pixel data */
    } BITMAP;

    Usually the pixel data immediately follows the BITMAP header.

    (BITMAP header)(Pixel Data)

    The HBITMAP handles used by GDI are handles to Device Dependent Bitmaps.
    The GDI function BitBlt and StretchBlt are actually using Device
    Dependent Bitmaps.

    With Windows 3.0, Microsoft introduced the Device Independent Bitmap or
    DIB, the reigning workhorse of bitmapped images under Windows.  The DIB
    provided a device independent way to represent bitmapped images, both
    monochrome and color.

    Windows retains DDB's despite the introduction of the DIB.  For
    example, to use a DIB, you might call:

    hBitmap = CreateDIBitmap(...)

    CreateDIBitmap creats a DDB from a DIB, returning the GDI HBITMAP
    handle of the DDB for further GDI calls.  At a low level, Windows
    and GDI are still using DDB's.

    The DIB files have a standard header that identifies the format, size,
    color palette (if applicable) of the bitmapped image.  The header
    is a BITMAPINFO structure.

    typedef struct tagBITMAPINFO {
        BITMAPINFOHEADER    bmiHeader;
        RGBQUAD             bmiColors[1];
    } BITMAPINFO;

    The BITMAPINFOHEADER is a structure of the form:

    typedef struct tagBITMAPINFOHEADER{ // bmih
       DWORD  biSize;
       LONG   biWidth;
       LONG   biHeight;
       WORD   biPlanes;
       WORD   biBitCount
       DWORD  biCompression; /* a DIB can be compressed using run length encoding */
       DWORD  biSizeImage;
       LONG   biXPelsPerMeter;
       LONG   biYPelsPerMeter;
       DWORD  biClrUsed;
       DWORD  biClrImportant;
    } BITMAPINFOHEADER;

    bmiColors[1] is the first entry in an optional color palette or color
    table of RGBQUAD data structures.  True color (24 bit RGB) images
    do not need a color table.  4 and 8 bit color images use a color table.

    typedef struct tagRGBQUAD { // rgbq
        BYTE    rgbBlue;
        BYTE    rgbGreen;
        BYTE    rgbRed;
        BYTE    rgbReserved; /* always zero */
    } RGBQUAD;

    A DIB consists of

    	(BITMAPINFOHEADER)(optional color table of RGBQUAD's)(data for the
    bitmapped image)

    A Windows .BMP file is a DIB stored in a disk file.  .BMP files prepend
    a BITMAPFILEHEADER to the DIB data structure.

    typedef struct tagBITMAPFILEHEADER { // bmfh
            WORD    bfType;  /* always 'BM' */
            DWORD   bfSize;  /* size of bitmap file in bytes */
            WORD    bfReserved1; /* always 0 */
            WORD    bfReserved2; /* always 0 */
            DWORD   bfOffBits;   /* offset to data for bitmap */
    } BITMAPFILEHEADER;

    Structure of Data in a .BMP File

    (BITMAPFILEHEADER)(BITMAPINFOHEADER)(RGBQUAD color table)(Pixel Data)

    The Win32 API documentation from Microsoft provides extensive
    information on the data structures in a DIB.

    In Windows 95 and Windows NT, Microsoft added the DIBSection to
    provide a more efficient way to use DIB's in programs.  The DIBSection
    was originally introduced in Windows NT to reduce the number of
    memory copies during blitting (display) of a DIB.

    Return to Top

    Meet the 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

    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.

    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.

    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.

    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.

    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.

    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?

    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 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

    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 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

    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.

    Return to Top

    MPEG-4

    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

    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

    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

    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

    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
    MPG4                   Microsoft MPEG-4

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

    Dave Wilson's The Almost Definitive FOURCC
    Definition List

    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

    Video Compression Technologies

    There are several underlying technologies used by different Video for
    Windows Codecs.  For example, Indeo 3.2 and Cinepak both use Vector
    Quantization.  The international standards MPEG-1, MPEG-2, MPEG-4,
    H.261, and H.263 all use a combination of the block Discrete Cosine
    Transform (DCT) and motion estimation/compensation.  Several of the
    New Wave codecs use wavelet transform based image compression (the
    Discrete Wavelet Transform or DWT).  Other technologies include
    Fractal Image Compression, represented by Iterated Systems.

    Some general comments on image and video compression:

    (1) Image compression may be lossless where no information is
    lost during the compression process.  The image produced by
    the decompression (also known as decoding) process is identical
    bit by bit with the original image.  The widely used GIF format
    is a lossless image and video (GIF89a or animated GIF) compression
    format.

    LOSSLESS COMPRESSION

    (2) Image compression may be lossy where information is lost during
    the compression process.  These schemes exploit limitations of the
    human visual system.  Some errors are undetectable by the human
    eye.  Even though two images are different at the bit by bit level, the
    human viewer cannot distinguish them.  Some errors are detectable by
    the human eye but acceptable.  Some errors are detectable and very
    annoying.  The widely used JPEG image compression standard is a lossy
    compression scheme.

    LOSSY COMPRESSION

    (3) Within lossy image and video compression, a compression scheme may
    be perceptually lossless, in which case the human viewer cannot
    distinguish between the original image or video and the decompressed
    compressed image or video which has errors introduced by the lossy
    compression.  Most lossy image and video compression have some sort of
    quality factor or factors.  If the quality is good enough, then the image will
    be perceptually lossless.

    PERCEPTUALLY LOSSLESS COMPRESSION

    (3) JPEG's and MPEG's and other lossy compression of images and video
    are often compressed beyond the point of perceptual losslessness, but
    the compressed images and video are still acceptable to the human viewer.
    If the compression and decompression degrades the image in a way that
    is very similar or identical to the natural degradation of images that might
    occur in the world then the human visual system will not object greatly.

    Loss of fine detail in an image is often acceptable because humans
    perceive objects in the natural world with widely varying levels of
    detail depending on how close the human viewer is to the object and
    whether the human viewer is looking directly at the object or not.
    The human viewer sees less detail if an object is further away.
    When a human viewer looks directly at an object, the viewer uses a
    small very high resolution part of the retina.  If an object is to one
    side of the direction of view, the viewer is using lower resolution
    parts of the retina.  Human beings are also used to certain natural
    forms of degradation such as rain, snow, and fog.

    Note that in all these natural viewing situation, the human viewer
    will still perceive sharp edges and lines in an image regardless of
    the level of detail.  The human viewer will usually perceive the
    objects as the same object despite the variations in level of detail.
    A horse is a horse is a horse.

    NATURALLY LOSSY COMPRESSION

    (4) Sufficiently low quality lossy compression will introduce visual
    artifacts that are highly annoying to the human viewer.  An example
    is the blocking artifacts visible in highly compressed MPEG video and
    other block Discrete Cosine Transform based image compression codecs.
    At some point the lossy compression will introduce artifacts that are
    very unnatural and are perceived as new objects in the scene or spurious
    lines within the image.

    The human visual system is very sensitive to lines or edges.  One of its
    main functions appears to be to detect and characterize physical
    objects such as other people, potential threats such as predators, food
    plants, and other things.  Objects in the visual system are dilineated by
    edges.  Anything such as a codec algorithm that destroys or creates an
    edge in an image is noticed, particularly if the edge is interpreted as
    the border of an object by the human visual and cognitive system.

    UNNATURAL LOSSY COMPRESSION

    All of the widely used video codecs are lossy compression algorithms.
    At sufficiently high compression most of them will have problems with the
    edges in the image.  Vector quantization, block Discrete Cosine Transform,
    and wavelet based image and video compression inherently do not
    mathematically represent the intuitive notion of an edge or line.

    THE POINT:  In using and selecting video codecs, the author of an
    AVI file (or a compressed digital video in general) needs to achieve
    NATURALLY LOSSY COMPRESSION or better.  Once the compression
    introduces noticable AND unnatural artifacts, the video is of very
    limited use even in cases where some features and objects are
    recognizable.

    A basic description of video compression technologies follows.  I have
    tried to avoid the dense mathematics found in most of the technical
    video and image compression literature.

    Return to Top

    Run Length Encoding

    VIDEO CODECS THAT USE RUN LENGTH ENCODING

    Microsoft RLE (MRLE)

    Run length encoding is also used to encode the DCT coefficients in
    the block Discrete Cosine Transform (DCT) based international
    standards MPEG, H.261, H.263, and JPEG.

    STRENGTHS AND WEAKNESSES

    1.  Works for bilevel or 8 bit graphic images such as cel animation.

    2.  Not good for high resolution natural images.

    OVERVIEW

    Run length encoding encodes a sequence or run of consecutive
    pixels of the same color (such as black or white) as a single
    codeword.

    For example, the sequence of pixels

    77 77 77 77 77 77 77

    could be coded as

    7 77  (for seven 77's)

    Run length encoding can work well for bi-level images (e.g.
    black and white text or graphics) and for 8 bit images, particularly
    images such as cel animations which contain many runs of the same
    color.

    Run length encoding does not work well for 24 bit natural images
    in general.  Runs of the same color are not that common.

    Return to Top

    Vector Quantization

    VIDEO CODECS THAT USE VECTOR QUANTIZATION

    Indeo 3.2
    Cinepak

    Indeo 3.2 and Cinepak both use vector quantization.  As with most
    digital video, Indeo and Cinepak work in the YUV color space (not RGB
    for example).

    STRENGTHS AND WEAKNESSES

    1.  The encoding process is computationally intensive.  Still cannot
    be done in real time without dedicated hardware.

    2.  The decoding process is very fast.

    3.  Blocking artifacts at high compression.

    4.  Generally, block Discrete Cosine Transform and Discrete Wavelet
    Transform based image compression methods can achieve higher compression.

    OVERVIEW

    The basic idea of Vector Quantization based image compression is to
    divide the image up into blocks (4x4 pixels in YUV space for Indeo and
    Cinepak).  Typically, some blocks (hopefully many) are similar to
    other blocks although usually not identical.  The encoder identifies a
    class of similar blocks and replaced these with a "generic" block
    representative of the class of similar blocks.  The encoder encodes a
    lookup table that maps short binary codes to the "generic" blocks.
    Typically, the shortest binary codes represent the most common classes
    of blocks in the image.

    The Vector Quantization (VQ) decoder uses the lookup table to assemble
    an approximate image comprised of the "generic" blocks in the lookup
    table.

    Note that this is inherently a lossy compression process because the
    actual blocks are replaced with a generic block that is a "good
    enough" approximation to the original block.

    The encoding process is slow and computationally intensive because the
    encoder must accumulate statistics on the frequency of blocks and
    calculate the similarity of blocks in order to build the lookup table.

    The decoding process is very quick because it is lookup table based.
    In Vector Quantization, the lookup table may be called a codebook.
    The binary codes that index into the table may be called codewords.

    Higher compression is achieved by making the lookup table smaller,
    fewer classes of similar blocks in the image.  The quality of the
    reproduced approximate image degrades as the lookup table becomes
    smaller.

    Vector Quantization is prone to blocking artifacts as compression is increased.

    Vector Quantization is an entire sub-field in signal and image
    processing.  It goes well beyond the brief description above and
    is applied to other uses than video compression.

    The standard reference book on Vector Quantization is:

    Vector Quantization and Signal Compression
    A. Gersho and R. Gray
    Boston, MA : Kluwer, 1992

    Like many image and signal processing books, this is heavy on
    abstract math.

    A Simple Example

    Consider the following 4 by 4 blocks of pixels.  Each pixel has a value
    in the range of 0-255.  This is a grayscale image for simplicity.

    (Block 1)
    128 128 128 128

    128 128 128 128

    128 128 128 128

    128 128 128 128

    (Block 2)
    128 127 128 128

    128 128 128 128

    128 128 127 128

    128 128 128 128

    (Block 3)
    128 127 126 128

    128 128 128 128

    127 128 128 128

    128 128 128 128

    In practice, the blocks will look the same to a human viewer.
    The second and third blocks could be safely replaced by the first
    block.  By itself, this does not compress the image.  However, the
    replacement block (Block 1) could be represented by a short index into
    a lookup table of 4x4 blocks.  For example, the index, in this case,
    could be 1.

    Lookup Table[1] = 128 128 128 128
                      128 128 128 128
                      128 128 128 128
                      128 128 128 128

    The original image could be converted into a lookup table and a series
    of indexes into the lookup table, achieving substantial compression.
    In video, the same lookup table could be used for many frames, not just
    a single frame.

    Return to Top

    Discrete Cosine Transform

    VIDEO CODECS THAT USE DCT

    Motion JPEG
    Editable MPEG
    MPEG-1
    MPEG-2
    MPEG-4
    H.261
    H.263
    H.263+

    STRENGTHS AND WEAKNESSES

    1.  Blocking artifacts at high compression.

    2.  Ringing at sharp edges.  Occasional blurring at sharp edges.

    3.  Computationally intensive.  Only recently has it been possible
    to implement in real time on general purpose CPU's as opposed to
    specialized chips.

    OVERVIEW

       The Discrete Cosine Transform (DCT) is a widely used transform in
    image compression.  The JPEG still image compression standard, the
    H.261 (p*64) video-conferencing standard, the H.263 video-conferencing
    standard and the MPEG (MPEG-1, MPEG-2, and MPEG-4) digital video
    standards use the DCT.  In these standards, a two-dimensional (2D) DCT
    is applied to 8 by 8 blocks of pixels in the image that is compressed.
    The 64 (8x8 = 64) coefficients produced by the DCT are then quantized
    to provide the actual compression.  In typical images, most DCT
    coefficients from a DCT on an 8 by 8 block of pixels are small and
    become zero after quantization.  This property of the DCT on real world
    images is critical to the compression schemes.

       In addition, the human eyes are less sensitive to the high frequency
    components of the image represented by the higher DCT coefficients.
    A large quantization factor can and usually is applied to these
    higher frequency components.  The de facto standard quantization
    matrix (a matrix of 64 quantization factors, one for each of the 64
    DCT coefficients) in the JPEG standard has higher quantization factors
    for higher frequency DCT coefficients.

       The quantized DCT coefficients are then run-length encoded as variable
    length codes that indicate some number of zero coefficients followed by
    a non-zero coefficient.  For example, a run-length code might indicate
    4 zero coefficients followed by a non-zero coefficient of level 2.  Short
    variable length codes (e.g. 0110) are used for common combinations of
    runs of zero and levels of the non-zero coefficient.  Longer variable
    length codes (e.g. 0000001101) are used for less common combinations of
    runs of zero and levels of the non-zero coefficient.  In this way,
    substantial compression of the image is possible.

       The Discrete Cosine Transform itself is best explained as a 1 dimensional
    (1D) DCT first.  The 2D DCT is equivalent to performing a 1D DCT on each
    row of a block of pixels followed by a 1D DCT on each column of the block of
    pixels produced by the 1D DCT's on the rows.

       The one dimensional Discrete Cosine Transform is applied to a block of
    N samples (pixels in an image or sound pressure samples in an audio file).
    The Discrete Cosine Transform is an NxN matrix whose rows are sampled
    cosine functions:

                DCT(m,n) = sqrt( (1 - delta(m,1) ) / N )

                                * cos( (pi/N) * (n - 1/2) *  (m-1) )

                  where

                              DCT(m,n) is the 1D DCT Matrix
                              m,n = 1,...,N
                              pi = 3.14159267...
                              N = number of samples in block
                              delta(m,1) = 1 if m is 1
                                           0 otherwise
                              cos(x) = cosine of x (radians)
                              *      = multiply

       Naively, performing a DCT on a block of N samples would require
    N*N multiplies and adds.  However, the DCT matrix has
    a recursive structure that allows implementation with order
    N log(N) multiplies and adds (many fewer).  This makes the DCT practical
    for implementation on current CPUs and DSPs.

    Return to Top

    Discrete Wavelet Transform

    Video Codecs Using the Discrete Wavelet Transform:

    VDONet's VDOWave
    VxTreme
    Intel Indeo 5.x
    (possibly) Intel Indeo 4.x

    Return to Top

    Contour-Based Image Coding

    Video Codecs Using Contour-Based Image Coding:

    Crystal Net's Surface Fitting Method (SFM) may be an example of
    Contour-Based Image Coding.

    The emerging ISO standard MPEG-4 incorporates some ideas associated
    with Contour-Based Image Coding.

    A contour is a line representing the outline of a figure, body, or
    mass.  A texture is a representation of the structure of a surface.
    Contour-based image coding represents images as contours bounding
    textured regions.  Since contours frequently correspond to the boundaries
    of objects in an image there is a close relationship between
    contour-based image coding and object-based image coding.  Object-based
    image coding represents an image as a collection of objects.

    Frame Differencing

    VIDEO CODECS THAT USE FRAME DIFFERENCING

    Cinepak

    STRENGTHS AND WEAKNESSES

    1. Generally can achieve better compression than independent encoding
    of individual frames.

    2. Errors accumulate in successsive frames after a key frame, eventually
    requiring another key frame.  (see below)

    OVERVIEW

    Frame Differencing exploits the fact that little changes from frame to
    frame in many video or animation sequences.  For example, a video
    might show a ball flying through the air in front of a static
    background.  Most of the image, the background, does not change from
    frame to subsequent frame in the scene.

    In frame differencing, the still image compression method such as
    vector quantization is applied to the difference between the frame and
    the decoded previous frame.  Often, most of the difference is zero or
    small values which can be heavily compressed.

    Most often, frame differencing uses "key frames" which are frames
    compressed without reference to a previous frame.  This limits accumulated
    errors and enables seeking within the video stream.

    In the widely used Cinepak, a key frame is often set every 15 frames.
    Cinepak movies usually use frame differencing combined with vector
    quantization.

    If the compression scheme is lossy (vector quantization is lossy), errors
    will accumulate from frame to frame.  Eventually these errors will become
    visible.  This necessitates key frames!

    Return to Top

    Motion Compensation

    VIDEO CODECS THAT USE MOTION COMPENSATION

    ClearVideo (RealVideo) Fractal Video Codec from Iterated Systems
    VDOWave from VDONet
    VxTreme
    MPEG-1,2, and 4
    H.261
    H.263
    H.263+

    STRENGTHS AND WEAKNESSES

    1. Motion compensation achieves high video compression in video
    generally superior to frame differencing.

    2. The encoding phase of motion compensation (known as motion
    estimation) is computationally intensive.  MPEG-1 with IP and
    B frames cannot be encoded in real time without dedicated
    hardware, a silicon implementation of motion estimation.

    3. The motion compensation scheme used in the international
    standards MPEG, H.261, and H.263 works best for scenes with
    limited motion such as talking heads.  In general, video with
    heavy motion such as sports video is hard to compress with
    motion compensation.

    OVERVIEW

    Motion Compensation codes for motion within a scene such as a ball
    moving across a background.  The block Discrete Cosine Transform (DCT)
    based international video standards MPEG-1, MPEG-2, MPEG-4, H.261, and
    H.263 use motion compensation.  Iterated Systems ClearVideo (Real
    Video) fractal Video Codec, VDOWave from VDONet, and VxTreme's video
    codec use forms of motion compensation.

    Motion Compensation refers to a number of ideas and algorithms.  The
    motion compensation method used in MPEG and related international
    standards (H.261 and H.263) is described below.  This motion
    compensation works for translational motion only.  This is suited for
    objects moving across a background or panning of the camera.  It does
    not work well for spinning objects, resizing objects, or camera zooms.
    Alternative forms of motion compensation exist which handle
    rotational, scaling, skewing, and other kinds of motion in a scene.

    Recognizing objects such as a flying ball in a scene is an unsolved
    problem in image processing and understanding.  A way to exploit
    the motion of the ball to achieve image compression is to partition the
    image into blocks (16x16 pixels in MPEG-1).  Code a "motion vector" for
    each block which points to the 16x16 pixel block in a previous (or
    future) frame that most closely approximates the block being coded.
    In many cases this reference block will be the same block (no motion).
    In some cases this reference block will be a different block (motion).
    The encoder need not recognize the presence of a ball or other object, only
    compare blocks of pixels in the decoded and reference frames.

    COMPRESSION IS ACHIEVED BY SENDING OR STORING ONLY THE MOTION VECTOR
    (AND A POSSIBLE SMALL ERROR) INSTEAD OF THE PIXEL VALUES FOR THE
    ENTIRE BLOCK.

    Note that the reference block can be anywhere in the image.  The coded
    or "predicted" blocks must form a partition or tiling of the image (frame)
    being decoded.  A reference block can be any 16x16 pixel block in
    the reference frame (image) that most closely approximates the coded
    or "predicted" block.  The reference frame must be decoded prior to
    the current frame being decoded.

    However, the reference frame need not be PRESENTED before the current
    frame being decoded.  In fact, the reference frame could be a future
    frame!!  MPEG allows for this through so-called B (bi-directionally
    predicted) frames.

    In the example of the ball in front of a static background, no motion
    occurs in most of the blocks.  For these cases, the motion vectors
    are zero.  Motion compensation for these blocks is then equivalent
    to frame differencing, where the difference between the block and the
    same block in a previous (or future) frame is coded.

    For the block or blocks containing the moving ball, the motion vectors
    will be non-zero, pointing to a block in a previous (or future) frame
    that contains the ball.  The displaced block is subtracted from
    the current block.  In general, there will be some left over non-zero
    values, which are then coded using the still image compression scheme
    such as Vector Quantization, the Block Discrete Cosine Transform, or
    the Discrete Wavelet Transform.

    MPEG style motion compensation does not require recognition of the
    ball.  An encoder simply compares the block being coded with displaced
    blocks in the reference frame (a previous or future frame).  The
    comparison can use mean squared error or some other metric of
    differences between images.  The encoder selects the displaced block
    with the smallest mean squared error difference!  At no point has the
    encoder recognized an object in the image.

    In MPEG, the motion vectors are encoded as variable length codes for
    greater compression.

    The encoding process is called Motion Estimation.  This finds the
    motion vector (or vectors) for each block.

    The decoding process is called Motion Compensation.

    Motion Compensation achieves greater compression than simple Frame
    Differencing.

    ILLUSTRATIVE EXAMPLE:

      Predicted Region                        Reference Region
    (the current frame being decoded)       (a previously decoded frame)
      _________                              _________
     |    |    |                            |    |    |
     | *  |    |                            |    | *  |  (moving ball)
     | 4  | -4 |                            |    |    |
     |    |    |                            |    |    |
      _________                              _________
     |    |    |                            |    |    |
     | 0  | 0  |                            |    |    |  (no change)
     |    |    |                            |    |    |
     |    |    |                            |    |    |
      _________                              _________

    The asterisk (*) represents a ball flying across the scene from right
    to left.

    Four blocks with associated motion vectors (4, -4, 0, and 0).  The
    upper left block looks like the upper right block in the reference
    region (where the ball was).  The upper right block looks like the
    upper left region in the reference region.  The lower left and
    lower right blocks were unchanged.  In this simple example, the
    vertical displacement is zero and is ignored.

    In this simple example, the region can be decoded using the
    motion vectors alone.  In more general cases, there is an
    error between the frame predicted using motion vectors alone
    and the actual frame.  This error is coded using a still image
    compression scheme such as the block Discrete Cosine Transform (DCT).

    In this simple example, the previously decoded frame is also
    previous in the presentation order.  The previously decoded or
    reference frame precedes the current frame in time.  In general, keep
    in mind the distinction between decode order and presentation order.
    The reference frame could be a future frame.

    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

    ActiveMovie

    Active Movie is a new multimedia architecture for Windows 95 and
    Windows NT (4.0 and after).  ActiveMovie includes support for
    playing AVI, QuickTime (.MOV), and MPEG files.  ActiveMovie is
    apparently intended to supersede Video for Windows.

    ActiveMovie 1.0 ships with the OEM Service Release 2 (OSR2) of Windows 95.
    It did not ship with prior releases of Windows 95 but was available
    separately through the ActiveMovie SDK.

    ActiveMovie 1.0 is also bundled with Microsoft's Internet Explorer for
    Windows 95 and NT 4.0  Internet Explorer can be downloaded from the
    Microsoft web site at:

    http://www.microsoft.com/ie/

    Active Movie 1.0 can be downloaded by itself from the Microsoft Internet
    Explorer site.  (6/6/97)

    ActiveMovie 1.0 appears to be a 32 bit software component that runs
    under both Windows 95 and Windows NT 4.0 user mode.

    ActiveMovie provides at least three different programming
    interfaces:

                   - The ActiveMovie ActiveX Control
                   - ActiveMovie Component Object Model (COM) interfaces
                   - The OM-1 MPEG MCI (Media Control Interface) command set

    Amongst other things, the ActiveMovie ActiveX Control can be embedded
    in HTML Web pages and programmed via VBScript or JavaScript.  It can also
    be programmed using Visual C++ or Visual Basic as part of applications.

    The ActiveMovie COM interaces can be accessed through Visual C++ or
    Visual Basic.

    ActiveMovie supports a subset of the Media Control Interface (MCI)
    commands familiar to Video for Windows programmers.  These commands can
    be accessed through the mciSendCommand(...) and mciSendString(...)
    functions in C/C++.

    ActiveMovie 1.0 does NOT provide video capture.  Windows 95 with
    ActiveMovie 1.0 continues to use the Video for Windows video capture system
    and drivers.

    ActiveMovie 2.0 (renamed DirectShow in 1997) will provide a new,
    alternative mechanism for video capture.  According to information
    distributed by Microsoft at the WDM Device Driver Conference in April,
    1997, ActiveMovie 2.0 will use the WDM Stream Class under Memphis
    (formerly Windows 97) and Windows NT 5.0 to implement video capture.
    This is subject to possible change since neither Memphis nor NT 5.0
    has been released (7/27/97).

    Extensive information on ActiveX and ActiveMovie is available at the
    Microsoft Web site.

    ActiveMovie 1.0 SDK Documentation at (6/28/97):

    http://www.microsoft.com/devonly/tech/amo
    v1doc/

    Return to Top

    GUID's and AVI

    GUID stands for Global Unique IDentifier.

    In Microsoft's Component Object Model (COM) morass, an object oriented
    programming model that incorporates MFC (Microsoft Foundation
    Classes), OLE (Object Linking Embedding), ActiveX, ActiveMovie and
    everything else Microsoft is hawking lately, a GUID is a 16 byte or
    128 bit number used to uniquely identify objects, data formats,
    everything.

    Within ActiveMovie, there are GUID's for video formats, corresponding
    to the FOURCC's or Four Character Codes used in Video for Windows.
    These are specified in the file uuids.h in the Active Movie Software
    Developer Kit (SDK).  ActiveMovie needs to pass around GUID's that
    correspond to the FOURCC for the video in an AVI file.

    With proper programming, this should be hidden from end users but
    ActiveMovie programmers need to know about GUID's.

    Return to Top

    What are the GUIDs for the Video for Windows Codecs?

    Video for Windows codecs are identified by a thirty-two bit Four
    Character Code (FOURCC).  A Four Character Code is a thirty-two bit
    value formed from the ASCII codes for four characters.  Typically, the
    four characters are a memnonic for the item identified. For example,
    the popular Cinepak video codec is 'CVID'.

    Microsoft has introduced 128-bit (16 byte) Globally Unique
    Identifiers (GUIDs) for identifying everything in the
    Microsoft Universe.  Microsoft has established a mapping
    procedure from the human readable Four Character Codes to
    GUIDs for video codecs.  Replace the "x"'s in the GUID
    below with the 32-bit value built from the Four Character
    Code. The Four Character Code is in 7-bit ASCII.

    xxxxxxxx-0000-0010-8000-00AA00389B71

    For example, the GUID for Radius Cinepak is:

    44495643-0000-0010-8000-00AA00389B71

    44 is the hexadecimal (base 16) ASCII code for 'D'
    49 is the hexadecimal (base 16) ASCII code for 'I'
    56 is the hexadecimal (base 16) ASCII code for 'V'
    43 is the hexadecimal (base 16) ASCII code for 'C'

    Note that the order of the characters is reversed from
    naive expectation.

    Return to Top

    DirectShow

    DirectShow is Microsoft's new name for ActiveMovie 2.0  Microsoft
    has shifted to marketing ActiveMovie as an integral part of
    DirectX.

    Apparently DirectShow (ActiveMovie 2.0) will be released to the general
    public as part of Direct X 5.0.

    Return to Top

    DirectDraw

    DirectDraw, one of the components of DirectX, is a new Applications
    Programming Interface (API) that is part of Windows 95 and Windows NT
    4.0.  DirectDraw allows programs to directly access video memory and
    other hardware features in video display cards.  Direct Draw also
    defines new device drivers for graphic/video display adapters to
    supersede the GDI display drivers.  DirectDraw needs the new
    device drivers.

    DirectDraw consists of a new API and new hardware drivers known as
    the Direct Draw Hardware Abstraction Layer (HAL).

    In the Windows 3.1 Graphic Device Interface (GDI), an application
    program never writes directly to the memory in a display card.  It
    writes to a buffer in main memory within Windows.  GDI invokes a GDI
    video device driver and copies the image from main memory to the video
    memory of the video card.  This multiple copying of the image
    inevitably slows down the display.

    The DirectDraw API provides a mechanism allowing appliation programs
    to write directly into the video card's memory.  It also provides a
    mechanism to access various special features in video cards such as
    color space conversion, hardware scaling, z-buffering, alpha blending,
    and so forth.

    Video card manufacturers must provide a DirectDraw driver for DirectDraw
    to work with their card.

    Microsoft's ActiveMovie uses DirectDraw to achieve faster playback of
    AVI, QuickTime, and MPEG files.

    There is extensive information on the DirectDraw and DirectX API's at the
    Microsoft Web site.

    The DirectX 3 SDK can be downloaded from the Microsoft Developer
    Online Web site (6/28/97):

    http://www.microsoft.com/msdn/

    Select Microsoft SDKs from the Technical Information section, or point
    your browser at:

    http://www.microsoft.com/msdn/sdk/

    Versions of DirectX

       - DirectX 1
       - DirectX 2
       - DirectX 3
       - DirectX 3A (latest as of 2/18/97)
       - DirectX 5.0 (in development?)
       - DirectX 6.0 (mentioned occasionally by Microsoft)

    Return to Top

    What is a driver?

    Most often, driver refers to a software component that handles
    control and communication with hardware in a computer.  Most
    but not all hardware device drivers run in a privileged mode
    such as the Ring Zero mode of the Intel 80x86 processors.

    Microsoft Windows uses the term driver to refer to several different
    software components.

                    - Hardware Device Drivers
                    - Windows 3.x or 95 Virtual Device Drivers (VxD's)
                             - not all VxD's access hardware
                    - Microsoft Windows Installable Drivers

                         such as

                          - Media Control Interface or MCI Drivers
                          - Video for Windows Codecs (Compressor/Decompressors)
                          - Audio Codecs (Compressor/Decompressors)

    Hardware Device Drivers include MS-DOS device drivers, DOS Terminate
    and Stay Resident Programs that access hardware, Windows 3.x and 95
    VxD's (Virtual Device Drivers) that access hardware, Windows DLL's
    that access hardware but do not run in Ring Zero, Windows NT
    kernel-mode device drivers, and the new Win32 Driver Model (WDM) drivers
    for Memphis/Windows 98 and NT 5.0

    Microsoft Windows Installable Drivers are Ring Three (Windows 95) or
    user-mode (Windows NT) Dynamic Link Libraries (DLL's) with a single
    entry point DriverProc().  MCI drivers, Video for Windows Codecs,
    Microsoft Audio Compression Manager Codecs, and a variety of other
    software components are Installable Drivers.  Some installable
    drivers are hardware drivers.

    Return to Top

    GDI Device Drivers

    In Windows 3.1, and to a lesser extent Windows 95, the Graphic Device
    Interface or GDI is the system that handles graphic display, including
    putting bitmaps on the display monitor.  Amongst other things, GDI
    defines a set of GDI functions that application programs call such as
    BitBlt(...) to display graphics on the screen.  GDI also controls
    printers and other graphic output devices.

    Windows NT also provides a GDI system, but the underlying hardware
    device drivers are different.  Windows 3.1 GDI drivers won't work
    under NT.  Application programs written using the GDI API will usually
    work under NT.

    GDI is device independent.  To achieve this, GDI uses GDI device
    drivers loaded dynamically as needed.

    The most commonly used GDI device driver is the DISPLAY device (for
    display monitors).  In Windows 3.1, this is specified by lines such
    as:

    display.drv=SUPERVGA.DRV

    in the SYSTEM.INI file.  SUPERVGA.DRV is a generic super vga graphic
    display adapter driver shipped with Windows 3.1 SUPERVGA.DRV is a GDI
    Device Driver

    The printer driver is another common GDI device driver.

    In Windows 3.1 or Windows 95 without DirectDraw, GDI handles display
    of video frames on the display monitor.

    GDI defines a set of standard functions exported by GDI Device
    Drivers.  A GDI Device Driver can also report that it does not support
    a particular function.

    Standard Functions for GDI Device Driver

    Entry                Name                 Description

    01                     BitBlt                Transfer bits from src (source) to dest (destination) rect (rectangle)
    02                     ColorInfo          Converts between logical and physical colors.
    .
    .
    .
    30                     BitmapBits        Sets, retrieves, copies bitmap data.

    Video card manufacturers write and provide GDI Device Drivers for video cards.

    When Video for Windows plays an AVI file, Video for Windows usually
    uses the Media Control Interface (MCI) driver for AVI files
    (MCIAVI.DRV).  The MCI driver will call GDI to display each decoded
    frame of video and WAVE to output the decoded audio to the sound card.

    In Windows 95 or NT 4.0, ActiveMovie 1.0 has "renderers" which can
    invoke GDI or DirectDraw depending on the situation to display the
    decoded video frames.  There are also audio renderers to output the
    decoded audio from an AVI, QuickTime, or MPEG file.

    Return to Top

    Direct Draw Hardware Abstraction Layer

    DirectDraw is a replacement for GDI for Windows 95 and
    Windows NT 4.0.   See elsewhere in this overview for sections on
    GDI and DirectDraw.

    The Direct Draw Hardware Abstraction Layer (HAL) defines
    Direct Draw device drivers for graphics/video display
    adapters.   Graphics and video card manufacturers
    provide DirectDraw device drivers.  For Direct Draw
    to work it must have these device drivers.

    DirectDraw also defines a DirectDraw Applications Programming
    Interface (API), a standard set of function calls invoked by
    applications.  The DirectDraw API in turn calls the Direct
    Draw HAL to access the graphics/video display adapter.

    ActiveMovie can invoke DirectDraw for video output under
    Windows 95 and Windows NT 4.0.

    Return to Top

    Virtual Device Drivers

    In Windows 3.x and Windows 95, Virtual Device Drivers or VXD's are
    usually the hardware device drivers.  They run in a privileged mode of
    the Intel 80x86 processor known as Ring Zero.  Video display adapters
    and video capture cards usually have an associated VXD written by the
    card or chip manufacturer.

    Note that some Windows device drivers are implemented as Dynamic Link
    Libraries (DLL's) that do not run in the privileged, Ring Zero, mode
    of the 80x86 processor or as MS-DOS programs that access hardware.
    These device drivers are not VXD's.  There are some things that only
    VXD's can do.  Most PC hardware, especially with high bandwidth
    requirements, use VXD's.

    Device drivers for video display adapters are rarely a single VXD.
    Often the Device Driver Interface (DDI) is implemented as a Dynamic
    Link Library which does not run at Ring Zero.  Only parts of the
    device driver that need to run at Ring Zero are in the VXD.
    A full video display device driver is often built of several
    files,  frequently including one or more VXDs.

    VXD's are usually found in the \WINDOWS\SYSTEM directory.

    VXD's will not work for hardware under Windows NT 3.51 or NT 4.0
    Windows NT has its own Windows NT Driver Model for device drivers.

    In "Memphis", formerly Windows 97, and NT 5.0, Microsoft is attempting
    to provide a common driver model known as WDM or Win32 Driver Model so
    that the same drivers can be used in both Memphis and NT.

    Return to Top

    Windows NT Driver Model

    Windows NT (3.51, 4.0) has its own system of hardware device
    drivers.  While NT can often run Windows 3.x and Windows 95
    applications, NT cannot use Windows 3.x or Windows 95
    device drivers (the Virtual Device Drivers or VxD's).

    For most people working with AVI, or video in general, the main
    point to remember is that different drivers are needed for
    NT than Windows 95 (or Windows 3.x).  Most hardware manufacturers
    provide both Windows 3.x, 95, and NT drivers.

    TOOLS

    Programmers will need the Windows NT DDK (Device Driver Kit)
    to develop Windows NT drivers.  This is available in a
    subscription to Microsoft Developer Network (Professional).

    http://www.microsoft.com/msdn/

    Return to Top

    Win32 Driver Model (WDM)

    The Win32 Driver Model (WDM) is a new device driver system for
    Memphis (formerly Windows 97) and Windows NT 5.0  The notion is that
    the same device drivers will work under both Memphis and NT 5.0

    WDM is largely the Windows NT Driver Model used in NT 3.51 and 4.0
    It is still under development.  Video display card and video capture
    card companies will presumably be providing WDM drivers for
    Memphis and NT 5.0 in the future.

    Memphis is supposed to be backward compatible so that
    Windows 95 Device Drivers will still work under Memphis.
    Similarly, NT 4.0 Device Drivers will still work under
    NT 5.0   A WDM Device Driver will work under both Memphis and
    NT 5.0.

    Return to Top

    Setup Information or INF Files

    When a video codec or hardware device driver is installed under
    Windows 3.x, Windows 95, or Windows NT, Windows uses a special
    file known as a Setup Information file.  This is also known as
    a Device Information file in the case of device drivers.  These
    files have the extension .INF and are also known as INF files.

    When a user installs a codec or device driver through the Control
    Panel, the user points the Windows system to a directory containing
    an INF file and the various files, such as VxD's or DLLs, to be
    installed.

    A Setup Information, Device Information, or INF file contains
    directives that tell Windows how to install the new software or
    hardware.  These include changes to the Windows Registry, names and
    locations of files to install, and other things.

    If you are providing a hardware or software product, you may need to
    create an INF file to install your product, driver, etc.

    End users are often unaware of the INF file.  Indeed, its purpose is to
    hide the complexity of installing hardware or software.  But it is
    good to be aware that these files exist and Windows needs them to
    properly install many drivers, codecs, and so forth.

    Where AVI is concerned, there are frequently INF files for video
    codecs, video display adapters, and video capture cards.

    Return to Top

    MMX

    MMX or Multimedia Extensions to the Pentium instruction set are
    57 new instructions that accelerate some graphics, imaging, and
    multimedia operations.  Multimedia often involves small data types
    such as 8 bit or 16 bit pixels that can be processed in parallel.
    For example, in principle, a 32 bit instruction could operate of
    four 8 bit pixels in parallel.

    A simple example would be adding four 8 bit pixels in parallel.
    The MMX instructions add clipping for underflow and overflow
    situations.

      255 0 0 255       Normal addition of four 8 bit pixels backed in 32 bits
    +   0 0 0 255
    -------------
     255  0 1   0

      255 0 0 255      MMX style clipping of overflow
    +   0 0 0 255
    --------------
      255 0 0 255

    Intel developed the MMX instructions and added them to recent
    versions of the Pentium chip known as the P55C or Pentium with MMX.
    The MMX instructions were also added to the Pentium Pro.  The Pentium
    Pro with MMX was code named Klamath, but called the Pentium II when
    actually shipped in 1997.

    MMX can accelerate various graphics and multimedia operations.  It can
    accelerate video codecs.  In particular, the block Discrete Cosine
    Transform used in JPEG, Motion JPEG, H.261, H.263, H.263+, MPEG-4,
    MPEG-1, and MPEG-2 can be accelerated using MMX instructions.

    Initially compilers have not supported generation of MMX instructions, so
    critical portions of the multimedia algorithms must be hand-coded in
    Pentium assembler using the MMX instructions.

    An MMX version of a codec may be able to encode and decode an AVI
    file (for example) faster on a PC with MMX.

    DOCUMENTATION ON MMX

    Further information on MMX is available at the Intel Web site for
    developers:

    http://developer.intel.com/sites/developer

    Click on the Literature Center link, then select "Pentium Processor
    with MMX" from the pull down list of products.

    This information is dated August 1, 1997.  The Intel Web site changes
    from time to time.

    In addition to various on-line documentation at the Web site, Intel
    has some manuals on MMX:

    Intel Architecture MMX Technology Developers Manual (Order No. 243013)

    Intel Architecture MMX Technology Programmer's Reference Manual
    (Order No. 243007)

    TOOLS FOR WORKING WITH MMX

    Intel provides an MMX Technology Macro Package for use with
    the Microsoft Macro Assembler (MASM).  This can be downloaded from:

    http://developer.intel.com/design/perftool/mmx1mac/

    Intel markets an Intel C/C++ compiler plug-in for Microsoft
    Visual C/C++ 4.x/5.0.  This plug-in includes "special
    compiler intrinsics" to support MMX.  These allow a programmer
    to use the call syntax of C functions instead of manually
    coding in assembly language.

    Example of an "intrinsic"

    __m64 _m_pmaddwd(__m64 m1, __m64 m2)

    http://developer.intel.com/design/perftool/icl24/

    The Intel C/C++ compiler plug-in is available on the VTune
    CD-ROM.  VTune is discussed below.

    Intel markets a product called the VTune (TM) Performance Analyzer for
    profiling programs on the Intel architecture at the machine
    instruction level.  VTune includes support for the MMX instructions
    and has been used to profile and optimize MMX code.  The VTune CD-ROM
    includes a number of other Intel freebies and products such as the
    Intel C/C++ compiler plug-in that may be useful developing MMX
    software.

    http://developer.intel.com/design/perftool/vtune/

    Return to Top

    ActiveX

    NOTE: ActiveX is NOT ActiveMovie.  There is an ActiveMovie ActiveX
    control, but ActiveX is far more than this.

    ActiveX is a stripped down version of OLE (Object Linking and
    Embedding) targetted for the World Wide Web.  An ActiveX component or
    control is a software component written in Visual Basic, Visual C++, or
    Java that conforms to the ActiveX API.  This API is a variant of
    OLE, designed to create small objects that can be dowloaded over the
    Internet.

    An ActiveX object or control may reside on a Web page to be downloaded
    and run when Microsoft's Internet Explorer views the page.  An ActiveX
    control can be the ActiveMovie ActiveX control which plays AVI and other
    video formats supported by ActiveMovie.  An ActiveX control can be an
    entertaining animation, a game like tic tac toe, anything.  In this
    sense, ActiveX objects are similar to Java applets.

    Unlike Java applets, once an ActiveX control has been downloaded once
    it remains on the downloading machine and can be used again without
    being dowloaded again.

    Also unlike Java, ActiveX controls are tied to a particular
    architecture, Windows 95 or Windows NT.  It is not clear how much
    support Microsoft will give for ActiveX on non-Windows platforms.
    Java applets are compiled to a Java bytecode that will run on any
    platform with a Java virtual machine implemented.  Java applets will
    run on Windows 3.1, Windows 95, Windows NT, PowerMacintosh, Linux,
    Sun, and various other Unix platforms.

    There is extensive information on ActiveX at the Microsoft Web site.
    The ActiveX SDKs can be downloaded from the Microsoft Developer Online
    Web Site (6/28/97):

    http://www.microsoft.com/msdn/

    Select Microsoft SDKs from the Technical Information section or point your
    browser at:

    http://www.microsoft.com/msdn/sdk/

    Netscape Fans:

    ScriptActive is a Netscape Plug-In that adds support for ActiveX to
    Netscape.

    ScriptActive Web Site

    Return to Top

    Playing an AVI File within a Windows Application

    Programmers can play an AVI File within a Windows application by
    several means.  The simplest traditional way is to use the
    Media Control Interface (MCI).  Video for Windows includes an
    MCI driver mciavi.drv for AVI files.

    Within the Windows API, programmers can use two C language API
    functions, mciSendString(...) and mciSendCommand(...), to communicate with
    the MCI driver.  mciSendString(...) sends MCI command strings such as
    "play from 0 to 100" to the MCI driver.  mciSendCommand(...) sends MCI
    command messages, a straight C type interface, to the MCI driver.

    The syntax for mciSendString is:

    MCIERROR mciSendString(LPCTSTR lpszCommand, LPTSTR lpszReturnString,
        UINT cchReturn, HANDLE hwndCallback);

    The pointer lpszCommand points to the MCI command string such as
    "play from 0 to 100".  Consult the Microsoft SDK documentation for
    more details.

    The syntax for mciSendCommand is:

    MCIERROR mciSendCommand(MCIDEVICEID IDDevice, UINT uMsg,
        DWORD fdwCommand, DWORD dwParam);

    where uMsg is an MCI command message such as MCI_PLAY defined in an
    include file.  Consult the Microsoft SDK documentation for more
    details on MCI command messages.

    mciSendString(...) and mciSendCommand(...) are essentially equivalent.
    The MCI driver should convert the MCI command string to an MCI command
    message internally.  The MCI command strings provide a more English like
    interface to MCI.

    For C++ programmers, Microsoft provides a window class MCIWnd to wrap
    the MCI operations.  Quoting the Microsoft SDK documentation:

    Microsoft sayeth....

    MCIWnd is a window class for controlling multimedia devices. A library
    of functions, messages, and macros associated with MCIWnd provides a
    simple method to add multimedia playback or recording capabilities to
    your applications.

    Using a single function, your application can create a control that
    plays devices such as video, CD audio, waveform audio, MIDI (Musical
    Instrument Digital Interface), or any device that uses the Media
    Control Interface (MCI). Automating playback is also quick and
    easy. Using a function and two macros, an application can create an
    MCIWnd window with the appropriate media device, play the device, and
    close both the device and the window when the content has finished
    playing.

    ... end Microsoft sayeth.

    Consult the Microsoft documentation for more details on MCIWnd.

    ActiveMovie appears intended to supersede MCI.  ActiveMovie includes
    a restricted subset of MCI for (partial) backward compatibility.
    However, Microsoft appears to want developers to switch over to
    new API's such as ActiveX and ActiveMovie, built on top of Microsoft's
    Component Object Model (COM) object oriented framework.

    Return to Top

    Reading and Writing an AVI file within a Windows Application

    The Microsoft Windows Win32 SDK (Windows NT and Windows 95) includes a
    set of functions and macros known as AVIFile for reading, writing, and
    manipulating RIFF files including AVI files within a Windows program.
    These functions are contained within a Dynamic Link Library
    avifile.dll.

    The AVIFile functions include:

    AVIFileInit(...)
    AVIFileOpen(...)
    AVIFileReadData(...)
    AVIFileWriteData(...)
    AVIFileExit(...)

    and many many others.  Consult Microsoft documentation for details.

    Return to Top

    Where to get C Source Code for AVI Player Including Many Codecs

    Marc Podlipec's Xanim is a free AVI Player for X Windows and Unix.
    Most of Xanim is available in source code format.  The Xanim home
    page is:

    http://xanim.va.pubnix.com/

    Unfortunately, Xanim's Cinepak and Indeo support is only available in
    object module (binary format).

    Return to Top

    Where to get Detailed Information on Graphics File Formats

    Programmers often need to know the details of the many
    graphics file formats, both still image and moving.

    There are a number of Web sites,  books, and other resources
    that provide detailed information on the many still image and
    video/animation graphics file formats.

    Wotsit's File Format Collection

    http://wotsit.simsware.com/

    and

    http://www.ipahome.com/gff/textonly/summary/

    Return to Top

    Where to get Detailed Information on Audio File Formats

    On the Internet, Guido Van Rossum distributes an Audio Formats FAQ (in
    two parts) to the alt.binaries.sounds.misc,
    alt.binaries.sounds.d, and comp.dsp USENET newsgroups.

    On the Web:

    http://www.cs.ruu.nl/wais/html/na-dir/audio-fmts/.html

    Return to Top

    Where to get C Source Code for a JPEG Encoder or Decoder?

    Maybe you want to write your own Motion JPEG codec for AVI.  It
    happens.

    The Independent JPEG Group, also known as IJG, distributes the source
    code for a JPEG encoder and decoder.  The IJG code is incorporated in
    many JPEG viewers, is optimized, is free.  This is available by
    anonymous ftp from the UUNET FTP archive.

    ftp://ftp.uu.net/graphics/jpeg/

    Return to Top

    Where to get C Source Code for an H.263 Video Encoder or Decoder?

    Telenor Research distributes a free H.263 video encoder and decoder.
    The code is not optimized.  Note that H.263 is subject to a variety
    of patents and Telenor includes a disclaimer with the code.

    http://www.fou.telenor.no/brukere/DVC/h263_software/

    Return to Top

    Where to get C Source Code for an MPEG Video Encoder or Decoder?

    The MPEG Software Simulation Group or MSSG distributes the C source code
    for MPEG-1 and MPEG-2 video encoders and decoders.  This code is not
    optimized.  Go to the MPEG site below and look for MSSG.

    http://www.mpeg.org/

    Return to Top

    Where to get C/C++ Source Code for Wavelet Image Compression?

    Geoff Davis distributes a C/C++ source code for wavelet still image
    compression of grayscale images, the Wavelet Image Construction Kit.
    This code is made available for research purposes.

    http://www.cs.dartmouth.edu/~gdavis/

    Also see the SPIHT demonstration programs,

    http://ipl.rpi.edu/SPIHT/

    Return to Top

    Where to get an Explanation of Color, Color Spaces, Gamma, and All That

    Charles Poynton maintains an FAQ on Color and an FAQ on Gamma.  This is
    posted in USENET newsgroups regularly and is available on the Web.

    http://www.inforamp.net/~poynton/notes/colour_and_gamma/ColorFAQ.html

    Return to Top

    Internet Video Standards and Pseudo-Standards

    There are a number of Internet standards and proposed standards
    for sending video and multimedia over IP based networks.  These
    are mostly described in Internet Engineering Task Force (IETF)
    Requests For Comments (RFC's).

    Programmers and others needing the details of the standards and
    proposed standards can find the RFC's at a variety of on-line
    RFC repositories such as the Information Sciences Institute:

    http://www.isi.edu/rfc-editor/

    What should you look for?

    There are thousands of RFC's, most of which do not relate directly
    to video.  Below are some families of protocols used with video
    and representative RFC's for these families.  I have tried to include
    the most important RFC's.

    MIME (Multipurpose Internet Mail Extensions)

    MIME is a protocol for attaching multimedia data such as images, sound,
    and video to Internet mail.

    RFC 1521  MIME (Multipurpose Internet Mail Extensions)  Part One:
    Mechanisms for Specifying and Describing the Format of Internet Message
    Bodies.

    RFC 1522  MIME (Multipurpose Internet Mail Extensions) Part Two:
    Message Header Extensions for Non-ASCII Text

    (why do it only once?)

    RFC 2045  MIME Part One

    RFC 2046  MIME Part Two

    RFC 2047  MIME Part Three

    RFC 2049  MIME Part Five

    RTP  (Real Time Protocol)

    RTP is a protocol for insuring timely delivery of "real-time" data
    such as video.  Video frames must be delivered in a timely manner
    in order to be displayed evenly and periodically.  The TCP
    protocol does not provide this functionality.  See the discussion of
    UDP (User Datagram Protocol) below for more on the limitations of
    TCP.

    RFC 1889   RTP: A Transport Protocol for Real-Time Applications

    RFC 1890   RTP: Profile for Audio and Video Converences with Minimal Control

    RFC 2029   RTP Payload Format of Sun's CellB Video Encoding

    RFC 2032   RTP Payload Format for H.261 Video Streams

    RFC 2035   RTP Payload Format for JPEG-Compressed Video

    RFC 2038   RTP Payload Format for MPEG1/MPEG2 Video

    RFC 2190   RTP Payload Format for H.263 Video Streams

    RFC 2198   RTP Payload for Redundant Audio Data

    RSVP (Resource Reservation Protocol)

    The Resource Reservation Protocol guarantees a
    certain bandwidth to a particular data stream.  Video and other
    "real-time" data typically require a minimum bandwidth consistently
    for acceptable quality and performance.  If the bandwidth
    is not available, the video skips frames or worse.

    The original TCP/IP Internet was designed primarily for non
    "real-time" data, often text such as e-mail messages.  With e-mail, if a
    network becomes congested and it takes a long time to transmit
    a message, there is little problem.  The user's e-mail arrives a little
    late.   In many cases, the user never notices.  Real-time video does not
    have this luxury.

    RSVP is one possible mechanism to add "Quality of Service" (QoS) to the
    Internet.

    RFC 2205  Resource ReSerVation Protocol (RSVP) - Version 1 Functional Spec

    RFC 2206  RSVP Management Information Base using SMIv2

    RFC 2207  RSVP Extensions for IPSEC Data Flows

    RFC 2210  The Use of RSVP with IETF Integrated Services

    IETF is reportedly working on a standard for mapping RSVP to
    Asynchronous Transfer Mode (ATM) Quality of Service (QoS)

    A number of products supposedly support RSVP.  RSVP is not widely used
    (Nov. 25, 1997) hence some caution is prudent with claims of RSVP
    support.

    Products

    Cisco's Internetwork Operating System (IOS) for Cisco Routers

    Ascend's GRF Routers

    Version 12.0 of Bay Networks BayRS Router

    Microsoft NetMeeting videoconferencing software

    Intel ProShare videoconferencing software

    First Beta Version of Microsoft's Windows NT 5.0 Operating System

    Internet Service Providers (ISP's)

    GTE Corporation's Internetworking Division (formerly BBN Corporation), a
    major Internet Service Provider, has a service trial of RSVP.
    (Nov. 25, 1997)

    MCI Telecommunications reportedly will enable RSVP on its
    very-high-bandwidth Backbone Network Service (vBNS) next year (1998).

    IP Multicast

    IP packets support so-called "multicast addresses".  A multicast
    address is an an address that represents a group of machines.
    Machines may dynamically join and leave the multicast group.
    Multicasting allows simultaneous transmission of a packet to
    all machines in the group without duplication of the packet.  For video
    data, this allows the equivalent of broadcast channels over a network.
    For example, a live speech could be sent to one multicast address
    while a different video program was sent to a different multicast
    address.  A machine joins the appropriate multicast group to
    receive the "broadcast channel".

    In principle, multicasting reduces the load that video places
    on a network since only one packet is sent to multiple
    viewers.  Without multicasting, a separate duplicated packet is
    sent to each viewer.

    Ethernet and some other network technologies support multicast
    in hardware.  Ethernet "frames" have multicast Ethernet
    addresses.  Implementing IP multicast on a single Ethernet, a single
    IP "subnet", is a straightforward mapping from the multicast IP
    addresses to the Ethernet multicast addresses.

    IP Multicast becomes quite complex when the machines in the multicast group
    are located on separate subnets and the IP multicast packets are routed
    by networks routers.  The routers need to know whether a particular
    subnet contains machines belonging to a particular multicast group.
    Since machines join and leave the multicast groups over time, the routers
    must detect these changes to properly route multicast IP packets.
    Much of the difficulty in IP multicast involves development and
    implementation of routing protocols for multicast IP packets.

    Multicast has been implemented on the Internet throught the
    Multicast Backbone (MBONE) which uses the mrouted daemon to
    implement the Distance Vector Multicast Routing Protocol (DVMRP).
    Various video programs such as NASA Space Shuttle mission video,
    IETF meetings, and other technical conferences are frequently
    "multicast" over the MBONE.

    RFC 1112   Host extensions for IP multicasting

    RFC 1054   Host extensions for IP multicasting

    Note: RFC's 1112 and 1054 describe the Internet Group Management Protocol
    (IGMP) for management of multicast groups.

    RFC 1075   Distance Vector Multicast Routing Protocol

    RFC 1584   Multicast Extensions to OSPF

    RFC 2117   Protocol Independent Multicast-Sparse Mode (PIM-SM): Protocol
                                 Specification

    UDP  (User Datagram Protocol)

    UDP is a very simple protocol layered on top of IP.  An IP packet
    contains the IP addresses of the sending and receiving machines on the
    network.  The IP packet has no mechanism to identify separate sending and
    receiving processes on the machines.  UDP adds "ports" which
    effectively identify sending and receiving processes.  An IP
    address can have many ports.  The pair
    of sending and receiving ports is called a "connection" in the
    language of TCP/IP.  Proprietary and experimental streaming video
    protocols are usually layered on top of the UDP protocol rather
    than the TCP (Transmission Control Protocol) protocol.

    Why UDP instead of TCP?

    While TCP guarantees delivery of a stream of data, something that IP
    alone does not, TCP does not guarantee timely delivery of the data.
    To insure delivery of data, TCP resends a packet if the TCP protocol
    software does not receive an acknowledgement from the receiver
    before the TCP retransmission timeout expires.
    TCP uses an "adaptive retransmission algorithm" that may choose a
    long timeout when the network is slow.
    As a result TCP may wait a long time before retransmitting the packet.
    With video, packets of video data must be delivered quickly to
    prevent an underflow in the buffer of the receiving video player
    resulting dropped frames.  The video player runs out of video data to
    display.

    Video networking protocols implemented with UDP often add a fixed timeout
    to retransmit packets before the buffer of the receiving video
    process, the video player, underflows.  Such a protocol may also adjust
    the buffer size to compensate for delays and congestion in the network.

    RFC 768  User Datagram Protocol

    Return to Top

    AVI and Your Health (Eye Strain)

    Note: This is not intended as medical advice.  If you are
    experience visual problems, see a qualified professional.

    Sustained use of computers probably causes a variety of
    visual problems.  The most common problems appear to be "burning
    eyes" and focusing problems.

    Currently, computer monitors are usually placed around two
    feet from the user's eyes.  This is much closer than the
    natural resting focus distance of the eyes, which is somewhere
    between ten feet and infinity.  Also computer monitors are
    much dimmer and lower contrast than natural objects which forces
    the eyes to work harder to focus effectively on the monitor.
    This is one of the reasons paper remains a more comfortable
    medium for reading than computer monitors.  Prolonged focusing
    at short distances probably causes a variety of visual problems.

    Computer users should look away from their monitor and rest their
    eyes, focusing at a distance, every few minutes.  Many users do
    this without even realizing that they are doing it.

    Desktop video such as AVI probably presents greater risks than
    traditional computer uses such as reading.  With static
    media such as text documents or still images, when the user looks
    away from the monitor and looks back, nothing changes, no information
    is missed.  There is no penalty to looking away from the monitor
    to rest your eyes, focus at a distance, and so forth.  With video, the
    video will change while the user is looking away.  The user misses
    something, perhaps a critical event.  Thus, users tend not to look away
    from desktop video, keeping their eyes focused on the screen
    for long periods of time.

    Computer animators who work with computer video, often for
    long periods, have reported these problems for years.

    Thus, people are very unlikely to watch two hour movies on computer
    monitors two feet from their eyes.  Digital video will likely
    migrate to the same location as the television, at least ten feet
    away.

    Some Resources on Computers and Your Eyes

    "Reducing eyestrain from video and computer monitors "
    by Charles Poynton

    http://www.inforamp.net/~poynton/notes/reducing_eyestrain/index.html

    IBM's Healthy Computing - Vision Page
    Note: Keep in mind that IBM sells computers.

    http://www.pc.ibm.com/us/healthycomputing/ergoviso.html

    Return to Top

    Miscellaneous Questions about AVI and Video for Windows

    What is most recent version of Video for Windows?

    Most recent version of Video for Windows for Windows 3.1 appears to
    be Video for Windows 1.1e.  (10/2/96)

    Where can I get the 16-bit Video for Windows 1.1e runtime?

    This is the Video for Windows for Windows 3.x  In a pinch, it will
    also work under Windows 95.  Windows 95 includes a version of
    Video for Windows that has 32 bit video codecs and possibly other
    changes specific to Windows 95.  See elsewhere in this Overview
    for information on re-installing Video for Windows for
    Windows 95.

    From Microsoft,

    ftp://ftp.microsoft.com/softlib/mslfiles/WV1160.EXE

    (Note the file name is all upper case)

    Return to Top

    How to import AVI files into Lightwave

    Lightwave is a powerful 3D animation program from NewTek.  Originally
    developed for the Amiga, Lightwave has been ported to Windows 95 and
    Windows NT.

    BurntPixels produces a plug-in for Lightwave 5.0 called AVILoad 2.1
    that enables direct importing of AVI files into Lightwave animations.
    AVILoad 2.1 is available for Lightwave 5.0 for Windows 95 and NT.

    See the AVILoad Web site for further details.

    http://www.en.com/users/bforce/

    For further information on NewTek and Lightwave, see the LightWave
    Web site:

    http://www.newtek.com/

    Return to Top

    How to give AVI files a different extension in Windows 3.x

    It is possible to give an AVI file a different file extension, for
    example VID.  Microsoft Windows can be configured so that Windows
    treats this file the same as a file with the AVI extension.  For
    example, double clicking on a .VID file in File Manager will play the
    .VID file just the same as a .AVI file.

    In Windows 3.x, edit the WIN.INI file, usually in the \WINDOWS
    directory.  There is a section [Extensions] which associates
    file extensions with applications.  For example, this section
    will typically include a line such as:

    [Extensions]
    AVI=mplayer.exe /play /close ^AVI

    which causes Media Player (mplayer.exe) to be invoked when the user double
    clicks on a file with extension AVI.  For VID, add a line

    VID=mplayer.exe /play /close ^VID

    Media Player is an MCI (Media Control Interface) application.  It will
    attempt to play the .VID file through MCI.  At this point however, MCI
    would not recognize VID although Media Player would be invoked.

    There is also a section [mci extensions] which contains lines such as:

    [mci extensions]
    AVI=AVIVideo  ( tells MCI to use the MCI driver refered to as AVIVideo for files with the extension AVI)

    For the VID example, add

    VID=AVIVideo

    to the [mci extensions] section in WIN.INI

    The WIN.INI file is used mainly for configuring the higher levels
    of Windows: the graphical user interface and the desktop.  Many applications
    install their configuration or installation information in sections within
    WIN.INI

    Names such as AVIVideo are defined in the [mci] section in the SYSTEM.INI
    file, also usually in the \WINDOWS directory.  SYSTEM.INI is used
    mainly for configuring the lower levels of Windows: the device
    drivers, VxD's, and so forth.

    [mci]
    AVIVideo=mciavi.drv ( where mciavi.drv is the AVI MCI Driver )

    Thus, many file extensions can refer to AVIVideo which in turn refers to
    the MCI Driver for AVI files.  The MCI Driver processes MCI commands and
    may in turn invoke other drivers or DLL's such as the Video for Windows
    decompressors.

    Return to Top

    How AVI Files are Handled in Windows 95

    If a user double-clicks on an AVI file icon in Windows 95, Windows 95
    will invoke an AVI player.  In Windows 95 OEM Service Release 2, Windows
    95 will invoke the ActiveMovie Control to play the AVI file. ActiveMovie
    1.0 ships with OEM Service Release 2 which is configured to use
    ActiveMovie for AVI, QuickTime, and MPEG files.

    Windows 95 has file extensions and file types.  .AVI is a file
    extension.  File extensions are mapped to file types.  AVIFile is
    a file type.  The information on file extensions and file types
    is stored in the Windows 95 System Registry.  More than one file
    extension can be mapped to the same file type.  For example, the .AIF
    and .AIFF file extensions are both mapped to AIFFFile, the file
    type for the Apple AIFF audio file format.

    The file type contains information on how to play the file (which
    application to use) and other information.  This information is
    all stored in the Windows 95 Registry.

    A user can view and also edit the information on file types
    through the Windows Explorer applet.  Select the Options...
    item from the View Menu of Windows Explorer.  Select the File Types
    tab from the Options property sheet.  This gives a list box of
    registered file types.  There are buttons to add, remove, or edit
    a File Type.  The AVIFile File Type is identified as
    "Movie Clip(AVI)" in this list box of registered file types in
    Windows 95 OEM Service Release 2.

    In the Windows 95 Registry, "Movie Clip(AVI)" is a string in the
    "AVIFile" file type "key".  Windows Explorer displays the string "Movie
    Clip(AVI)", not AVIFile, the name of the "key".

    A user can change how Windows 95 handles an AVI file by editing
    the "Movie Clip(AVI)" File Type in the File Types through Windows
    Explorer.  For example, a user can select an alternative AVI file
    player.

    In Windows 95 OEM Service Release 2, the File Type includes a
    Content type (Multipurpose Internet Mail Extension or MIME type).
    The Content type (MIME type) tells Microsoft Internet Explorer how
    to handle a file from a Web site.

    The original Windows 95 retail version did not include the Content
    (MIME) type.  This extra feature could be added by installing the
    MS Plus! add-on to Windows 95.  Some OEM versions of Windows 95 prior
    to OEM Service Release 2 supported the Content (MIME) type.

    The Windows 95 Registry can be viewed using REGEDIT, the Windows 95
    Registry editor.  The registry "keys" for file extensions and file types
    are stored in the HKEY_CLASSES_ROOT "key".  Although REGEDIT can also
    edit the registry, the registry is rather complex and this drastic
    action should be avoided.  Use the Windows Explorer applet.  This applet
    knows how to modify the keys in the Windows 95 Registry.

    The Windows 95 Registry is a binary database stored in two files:
    SYSTEM.DAT and USER.DAT.  Internally, the database is structured very
    similarly to a hierarchical file system such as the DOS/WINDOWS file
    system.  A Windows 95 Registry "key" is essentially a folder that
    contains other "keys" or "values".  The "values" have a name and
    associated data.  The data are text strings such as "Movie Clip(AVI)"
    or binary numbers.  The Registry Editor represents keys with a folder
    icon and values with different icons.  The Registry Editor closely
    resembles the Windows Explorer.

    The registry contains a key in the top level HKEY_CLASSES_ROOT key
    called .avi, for the .avi file extension.  All keys contain a default
    "value" with the name (Default).  In the .avi key, the (Default) value
    has the associated ASCII text string data "AVIFile".  In Windows 95
    OEM Service Release 2, there is an additional value named "Content
    Type" with the associated ASCII text string data "video/avi", the MIME
    type for AVI files.  This additional information is used by the
    Internet Explorer.

    The (Default) value in the .avi key references the AVIFile key, also
    in HKEY_CLASSES_ROOT.  This key contains a number of other keys and
    values.  The (Default) value for the AVIFile key has the data
    "Movie Clip(AVI)" which the Windows interface uses to identify the files
    to users.  The AVIFile key is an example of a file type key.

    The "shell" key in the AVIFile key specifies what happens when a user
    double-clicks on an AVI file.  In Windows 95 OSR2, the (Default) value
    for the shell key is "play".  The shell key contains two subkeys:open
    and play.  These keys specify possible actions to perform.  The
    (Default) value indicates that the "play" action will be used.

    The open and play keys each contain a key called command.  The
    (Default) value for the command subkey of play is "rundll32 amovie.ocx
    RunDLL /play /close %1".  rundll32 is a program that runs a 32 bit
    Windows Dynamic Link Library or DLL as an Application.  The command
    executes amovie.ocx, the ActiveMovie Control, as an
    application. Controls such as amovie.ocx are actually DLLs.  /play
    tells the control to play the file and /close tells the control to
    close after finishing playing the file.

    In versions of Windows 95 without ActiveMovie, the command keys are
    configured to invoke Media Player, mplayer.exe.

    Return to Top

    Most Common AVI Question: What does "could not find vids:xxxx ..." error mean?

    This is the most common question that I get about AVI files (12/18/98).

    When Video for Windows cannot find the video compressor decompressor
    or codec used to encode an AVI file, Video for Windows pops up a
    message box with this error message.  ".. could not find vids:xxxx ..."

    where "xxxx" is an inscrutable sequence of four letters and digits
    such as "i263" or "iv50".

    vids is the four character code for the video stream in an AVI file.
    xxxx is the unique four character code used to identify the video
         codec used to compress the video stream in the AVI file.

    In particular, I receive many questions about two video codecs from
    Intel:

    "... could not find vids:i263 ..."

    I263 is the four character code for Intel's implementation of the H.263
         video standard.  The Video for Windows drivers for this codec can
         be downloaded from the Intel web site.

    "... could not find vids:iv50 ..."

    IV50 is the four character code for Intel Indeo Video 5.x, also available
         from the Intel web site.  IV50 is used by Indeo 5.0, 5.06, and 5.10.

    The AVI Overview contains extensive information on four character
    codes. Link to Section on Four Character Codes

    Return to Top

    How can I play an AVI file?

    MS DOS

    On DOS, the shareware program QuickView by Wolfgang Hesseler can
    play AVI files (including sound).  QuickView 1.03 is available
    through the simtel sites such as

    ftp://info.nic.surfnet.nl/mirror-archive/software/simtel-msdos/graphics/qv103.zip

    You can get the latest version of QuickView (2.30 on 6/6/98) from

    Wolfgang Hesseler's Home Page

    Microsoft Windows

    Windows Media Player

    Windows 3.x, Windows 95, and Windows NT are usually configured so
    that double clicking on the icon for an AVI file will invoke an AVI player
    application.  Video for Windows includes an application known as Media
    Player that can play AVI files as well as other multimedia data types.
    ActiveMovie 1.0 inclues an ActiveMovie ActiveX control that can play
    AVI, QuickTime, and MPEG video as well as other multimedia data types.

    On Windows 3.x, Media Player is MPLAYER.EXE.  This is a 16 bit
    Windows 3.x application.  Windows 95 can run both the 16 bit Media Player
    and a 32 bit Media Player.  There is also a Media Player on Windows NT 4.0
    This is MPLAY32.EXE

    MediaPlayer can be invoked by typing mplayer.exe at the DOS command
    prompt or through the Run... item in the Windows 3.x Program Manager or
    the start menu for Windows 95 or Windows NT 4.0

    The ActiveMovie ActiveX control on Windows 95 is amovie.ocx.  This can
    be executed as a standalone application using the
    commands Rundll32 amovie.ocx.

    ActiveMovie is only available for Windows 95.  It will not work on
    Windows 3.x Windows NT 5.0 should add an ActiveMovie implementation.
    ActiveMovie 1.0 is shipped with the Windows 95 OEM Service Release 2.
    ActiveMovie has been renamed DirectShow.

    Woldo's MCI Video Player for Windows 95/98/NT

    Wolfgang Doehler distributes a free alternative to Windows Media Player
    for 32 bit Windows platforms:

    http://pweb.de.uu.net/wolfgang.doehler

    Power Macintosh

    On the Apple Macintosh, Apple's QuickTime 3 Pro includes a QuickTime
    Internet Plug-In that can play AVI video.  The QuickTime Internet
    Plug-In is available for:

       o Microsoft Internet Explorer 3.0 and 4.0 for Macintosh
       o Netscape Communicator 4.0 for Macintosh
       o Netscape Navigator 3.0 for Macintosh

    http://quicktime.apple.com/

    On the Macintosh, Microsoft's Internet Explorer (Web Browser) can play
    AVI files directly.  There is also an application AVI->QuickTime that
    can convert AVI files to QuickTime .MooV files on the Macintosh.

    Microsoft's Internet Explorer 3.01 (on 6/4/97) for the Macintosh may
    be downloaded from the Microsoft web site at:

    http://www.microsoft.com/ie/

    MacZilla is an inexpensive shareware Netscape Navigator Plug-In for
    the Macintosh that plays QuickTime .MOV, Video for Windows AVI, and
    MPEG-1 files.  MacZilla can also play Sun Audio .AU, Microsoft
    .WAV, and MPEG Layer 2 Audio .MP2 files.  If you pay the
    fee, MacZilla will send you a STANDALONE player (not a Netscape
    Plug-In) for the Macintosh.  The MacZilla URL is:

    http://maczilla.com

    NOTE: I personally experienced a lot of crashes with MacZilla on
    my Macintosh. (6/4/97)

    Unix

    Xanim by Marc Podlipec is a free X Windows based AVI Player for Unix.
    Much of Xanim is available as source code!!  The Xanim home page is:

    http://xanim.va.pubnix.com/

    XAnime 2.80.1 was released on March 21, 1999.  This is a minor
    release with some changes to XAnim 2.80.0, described below.

    XAnim 2.80.0 was released on March 14, 1999.  According to the
    XAnim web site:

    XAnim 2.80.0 is now ready for consumption. In addition to several new
    video codecs, the new revision also supports dynamically loadable
    video decompression libraries. This means you no longer need to
    recompile xanim each time a new video codec is released or
    upgraded. There are currently dll's for: Creative CYUV, Radius
    Cinepak, Intel Indeo 3.2, Intel Indeo 4.1, Intel Indeo 5.0, CCITT
    H.261 and CCITT H.263.

    Mark Podlipec writes (PREVIOUSLY):

    Below is some up-to-date information about XAnim, the unix X11 AVI player.

    Thanks,

    Mark

    ----

    Latest revision:  XAnim 2.70.6.4

    Official Web sites:

    	http://xanim.va.pubnix.com/home.html
    	http://smurfland.cit.buffalo.edu/xanim/home.html
    	http://www.tm.informatik.uni-frankfurt.de/xanim/

    AVI Video and Audio Codecs Supported:

            + AVI Video Codecs supported:
                + IBM Ultimotion     (ULTI)
                + JPEG               (JPEG)
                + Motion JPEG        (MJPG)
                + Intergraph JPEG    (IJPG)
                + Microsoft Video 1  (CRAM/WHAM/MSVC)
                + Radius Cinepak     (CVID)
                + Intel Indeo R3.1   (IV31)
                + Intel Indeo R3.2   (IV32)
                + Intel RAW YUV9     (YUV9)
                + Creative CYUV      (CYUV)
                + Uncompressed       (RGB )
                + Run length encoded (RLE8)
                + Editable MPEG      (XMPG)

            + AVI Audio Codecs supported:
                + PCM                (0x0001)
                + MS ADPCM           (0x0002)
                + ULAW               (0x0007)
                + DVI/IMA ADPCM      (0x0011)

     Digital Equipment Corporation's VAX/VMS

    On VAX/VMS, Xanim (see above) has been ported and works on VMS.

    Amiga

    MooVId (and) PIV-MooVId AVI/MOV Player for the Amiga
    http://www.dfmk.hu/~torokl/

    *** MooVId (shareware) ***

    MooVId AVI/MOV player with GUI and INDEO support for Amiga computers
    Last version: 0.50b (13.09.1998)

    Required hardware:
    Kickstart 3.0 (3.1 Recommended)
    MC68020 or better (68040 recommended for bigger AVI/MOVs)
    ECS or AGA chipset (on ECS the playback is only 16 grayscale)
    1 MB of free memory

    Required software:
    Reqtools.library
    CyberGraphX or Picasso96 for GFX-Board playback

    Recommended hardware:
    MC68040/060 and ZorroIII graphicsboard (for bigger animations), but MooVId can play 240x180 truecolor AVI/MOV at 15FPS (without skipping) in perfect (!) colors on 030/50 AGA.

    MooVId features:
    AVI (Video for windows) and MOV (Quicktime) player in one file

    Support INTEL Indeo 3.1 & 3.2 (IV31 & IV32)

    100% assembly coded (fast & short)

    Buffered I/O handling (direct playback from CD-ROM or HDD)

    Timer Based frame skipping method

    FULL AGA support (256 color/gray or ham8)

    Bugfree "18bit" gfx on AGA Amigas

    Special (fast & very good ham8) STORM dither on AGA Amigas

    ECS Support (16 grayscale)

    16 grayscale Window playback

    Full support of the CD32 akiko chip

    Synchronized audio playing

    On-fly selectable frame rate

    Fully system friendly

    Direct p96 support (no CGFX "emulation")

    Direct CGFX support

    Accelerated decoders for ZorroII gfxboards

    Full GUI (check the screenshoot)

    Supported codecs:

    Video for Windows (.avi)

    Supported video encoders:

    Codec Name FourCC code Depth
    Intel Indeo IV31/IV32 24 bit
    Microsoft RGB RGB 8/16 bit
    Microsoft Video 1 CRAM/MSVC 8/16 bit
    Radius Cinepak CVID 24/32 bit
    Run Length Encoded  RLE 8 bit

    Supported audio codecs:
    Audio format Channels Bits
    PCM MONO/STEREO 8/16 bit
    MS-ADPCM MONO/STEREO 4 bit (16bit)

    Quicktime (.mov, .qt)

    Supported video encoders:

    Codec Name FourCC code Depth
    Apple Video RPZA 16 bit
    Intel Indeo IV31/IV32 24 bit
    Radius Cinepak CVID 24/32 bit

    Supported audio encoders:
    Audio format Channels Bits
    RAW MONO 8/16 bit
    TWOS MONO 8/16 bit

    Other codecs (like JPEG and IMA audio) is in progress

    *** END of MooVId ***

    PIV-MooVId AVI/MOV player with GUI and INDEO support for PicassoIV
    graphics board

    Last version: 0.991b (27.11.1998)

    Required hardware:
    Kickstart 3.0 or better
    MC68020 or better (68040/060 recommended)
    PicsassoIV graphics board (other graphicsboard NOT supported!)
    1 MB of free memory

    Required software:
    Reqtools.library
    Picasso96 1.38 or better (latest version recommended)

    Recommended hardware:
    MC68040/060 and PicassoIV in ZorroIII mode

    PIV-MooVId features:
    The FASTEST AVI/MOV player for Amiga

    Support the video layer of the PicassoIV

    All decoders (espec. Cinepak and Indeo) are video layer accelerated

    AVI/MOV playback in a resizable window (up to fullscreen), without slowdown!

    AVI (Video for windows) and MOV (Quicktime) player in one file

    Support INTEL Indeo 3.1 & 3.2 (IV31 & IV32)

    100% assembly coded (fast & short)

    Buffered I/O handling (direct playback from CD-ROM or HDD)

    Timer Based frame skipping method

    Synchronized audio playing

    On-fly selectable frame rate

    Fully system friendly

    Full GUI

    Supported codecs:

    This part is same as at MooVId!
    Plus:
    Codec Name FourCC code Depth
    Cirrus Accupak/PalomAVI videocapture format CLJR 24 bit

    *** END OF PIV-MooVId ***

    TapAVI 1.5
    Picasso AVI Animation Player
    AVI Player for 020+ KS2.0 Picasso-II  (variety of Amiga)

    http://www.ziplink.net/~wingell/ibrowse/tapavi.html

    There appears to be an Amiga version of the XAnim AVI Player.  The TapAVI
    documentation in fact says that in general XAnim is better but TapAVI is
    better for certain uses.

    xanim for the Amiga is available in a file xanim6.lha and other files from
    Aminet.  Aminet is an
    archive of Amiga public domain, freeware, and shareware software.
    The primary Aminet site is at Washington University in St. Louis:

    http://wuarchive.wustl.edu/~aminet/

    Many mirror Aminet sites exist.

    OS/2

    OS/2 has built-in support for AVI files ... up to a point.  OS/2
    has had built-in AVI support since OS/2 2.0 in 1992.  However, it
    cannot play all Windows style AVI files.

    Practice Corporation markets an extension for OS/2 called AnPoCODEC
    which adds support for playback of Windows-style AVI files, including
    AVI's compressed with RLE (Microsoft RLE), CVID (Cinepak), and MSVC
    (Microsoft Video 1).  Practice also markets QUickMotion which adds
    support for playing QuickTime video files.

    http://www.quickmotion.com/

    At least two other programs exist that are claimed to be OS/2 AVI Players.

    Calliope

    DMP 1.41

    Return to Top

    AVI and NetShow

    NetShow is a relatively new product from Microsoft for distributing
    streaming video over the Internet.  NetShow includes a NetShow server
    for Windows NT and NetShow players (both NT and Windows 95).

    NetShow uses the Active Streaming Format (ASF) for video streams
    over the Internet.  ASF adds time stamps for synchronization, error
    correction codes, and other features that AVI lacks.  The NetShow
    family of products includes utilities to convert AVI files to ASF
    files.

    Microsoft has licensed a number of low bitrate video technologies for
    NetShow including Vivo's H.263, Iterated Systems/Progressive
    Networks/RealNetworks RealVideo/ClearVideo fractal codec, and VDONet's
    VDOWave.  Microsoft has purchased VxTreme, possibly the best wavelet
    based video codec.  Microsoft has used their implementation of the
    uncompleted international standard MPEG-4 for NetShow.

    NetShow, including the server, is available at the Microsoft web
    site.  NetShow has a number of components: the NetShow Player, the
    NetShow Tools, and the NetShow Server.  The NetShow Player is
    a simple client for audio and video playback over networks.  The
    NetShow Tools are a collection of tools and software components
    for creation of content, especially the ASF files.  The NetShow
    Server is a server that runs under Windows NT for broadcasting audio
    and video streams over networks.

    The NetShow 2.0 Player Installation and the NetShow 2.0 Tools Installation
    both install Video for Windows codecs, the NetShow codecs.  Only
    the NetShow 2.0 Tools codecs appear to support encoding.

    You must install the NetShow Tools to create AVI or ASF files
    compressed with the new "low bitrate" NetShow codecs!

    The NetShow 2.0 Player (Client) Setup installs:

    Codec Name                       ( line in SYSTEM.INI )

    (Video Codecs)

    Vivo H.263 decoder/keyed encoder      ( vidc.vivo=ivvideo.dll )
    VDONet VDOWave decoder                ( vidc.vdom=vdowave.drv )
    Microsoft MPEG-4 decoder              ( vidc.mpg4=msscmc32.dll )
    ClearVideo decoder                    ( vidc.ucod=clrviddd.dll )
    Duck TrueMotion decoder/keyed encoder (vidc.tr20=tr2032.dll )

    (Audio Codecs)

    Vivo G.723.1 / Siren decoder     ( msacm.vivog723=vivog723.acm )
    Frauenhofer MPEG Layer III Audio Codec       ( msacm.l3acm = l3codeca.acm )
    Lernout and Hauspie Audio Codecs ( msacm.lhacm = lhacm.acm )
    Voxware MetaSound/MetaVoice decode/keyed encode (msacm.voxacm119=vdk32119.acm)

    The NetShow 2.0 Tools Setup also installs:

    (NetShow 2.0 Player Codecs with Encoder)
    Microsoft H.263 keyed encoder ( vidc.m263=msh263.drv )

    The NetShow 2.0 Player Codecs appear to lack the functionality
    to compress video.  While they can be invoked from within some
    video editing programs such as Asymetrix Digital Video Producer 4.0, they
    produce uncompressed AVI's.  These AVI's list the four character
    codes for the NetShow codec (such as VDOM for VDOWave) in the
    AVI Header but not in the video stream header within the AVI file.
    The video stream header uses the value 0 for the video compression
    indicating no compression.

    The NetShow 2.0 Player Codecs are invisible from Microsoft VidEdit
    1.1 (Video | Compression Options ... menu selection).  I believe this
    is because VidEdit queries the codecs to determine if they support
    compression and only lists the codecs that can actually compress
    video.  In contrast, some applications such as Asymetrix Digital
    Video Producer 4.0 will list all codecs, both those that can compress
    and those that only decompress.

    The NetShow 2.0 Tools Codecs can compress video.  You can create
    compressed AVI files with the VDOWave and MPEG-4 codecs from NetShow
    2.0 Tools.  These are actually compressed and use the VDO four character
    code or MPEG-4 four character code both in the AVI header and in the
    video stream header.  However, the so-called "keyed encoders" which are
    Microsoft H.263, Vivo H.263, and Duck TrueMotion, cannot create
    compressed AVI files if invoked from a Video for Windows video editing
    application such as Asymetrix Digital Video Producer.

    The "keyed encoders" appear to be used only for creating Microsoft
    ASF files compressed with Vivo H.263, Microsoft H.263, or
    Duck TrueMotion.

    Microsoft VidEdit 1.1 will list all NetShow 2.0 Tools Codecs under the
    Video | Compression Options ...  menu selection if no AVI file is loaded.
    Once an AVI file is loaded, some of the NetShow 2.0 Tools Codecs
    disappear from the list.  Other video editors such as Asymetrix
    Digital Video Producer list all NetShow 2.0 Tools Codecs at all
    times.

    NetShow tries to use a real-time Internet Protocol called MMS
    to transfer video over the Internet.  If it cannot use MMS, it will
    use TCP (Transmission Control Protocol) or HTTP (HyperText Transport
    Protocol).  MMS appears to be a Microsoft proprietary real time
    protocol and a competitor to RTP (Real Time Protocol) or RTCP (Real
    Time Control Protocol).

    The Microsoft NBC Business News channel distributes video over
    the Internet using these technologies.

    NetShow also claims to support multicast IP over Networks.  I've
    not personally seen this work.  The NetShow 2.0 server administrative
    user interfaces contain panels for configuring multicast channels.

    http://www.microsoft.com/netshow/

    Return to Top

    How to convert an AVI file to a Microsoft ASF File?

    Microsoft has defined yet another audio/video/multimedia format
    to support streaming audio and video over the Internet.  This is ASF
    (formerly Active Stream Format and now Advanced Streaming Format).
    ASF is used for streaming audio/video/multimedia and for stored files.
    These files have the extension .asf  They are used as part of
    Microsoft's NetShow video server and client over the Internet.

    The NetShow authoring tools include a DOS command line utilitity:

        VidToAsf

    which converts AVI files to ASF files, preserving whatever compression
    was used.  VidToAsf can also convert .mov (QuickTime) files to
    ASF files.  Like AVI, ASF files support many audio and
    video compression schemes.

    The NetShow Tools include a Microsoft Windows graphical application
    called the ASF Real Time Encoder which can also convert AVI and WAV
    files to ASF files.  The ASF Real Time Encoder is installed under Microsoft
    NetShow in the Start | Programs menu under Windows 95 and Windows NT 4.0

        ASF Real Time Encoder

    For more information including software:

    http://www.microsoft.com/asf/

    http://www.microsoft.com/netshow/

    Return to Top

    Sources of AVI Video Clips on the Web

    What good is all this technology without something to watch?
    Accordingly, some sites with AVI content.

    The Official Babylon 5 Web Site has a large number of AVI files
    from the popular science fiction television show.

    http://www.babylon5.com

    Paul Bauer's Multimedia City contains a large list of sites with
    video clips.

    http://www.geocities.com/Broadway/2876/index.html

    Return to Top

    Low Bit Rate AVI for the Web

    A major limitation of video on the Web in general and AVI in
    particular is the limited bandwidth available.  Currently most users
    with Plain Old Telephone Service (POTS) have 28.8 Kbits/second or 33.6
    Kbits/second connections to their Internet Service Provider.  The new
    generation of K56Flex and X2 modems from U.S. Robotics and Rockwell
    may eventually provide 50-60 Kbits/second over tradiational analog
    telephone lines.  A Basic Rate Interface (BRI) ISDN connection
    provides 128 Kbits/second.

    Although very high speeds are possible within the LAN's and WAN's of
    major corporations and other well-endowed organizations, the so-called
    Intranet, the actual rates achieved over the world wide Internet are
    generally much less.  Not necessarilly better than the rates for POTS
    or ISDN.

    For example, currently (7/20/97) a Web browser at NASA Ames Research
    Center in Mountain View, California can attach to my web site at an
    Internet Service Provider in nearby San Jose at a sustained data
    transfer rate of 15 KBytes/second or 120 Kbits/second.  NASA Ames
    is home to the Federal Internet Exchange (FIX), the
    government's main switching center for the Internet, for the West Coast
    of the United States.  This is the heart of the Silicon Valley.  This
    is probably much better performance than more outlying parts of the
    Internet.  This gives a sense of the current limitations of the
    broader Internet.

    These Internet rates are very low bitrates for video.  The prevailing
    block Discrete Cosine Transform (DCT) based video codecs such as MPEG-1,
    H.261, and H.263 perform acceptably at 384 Kbits/second but frequently
    exhibit unnatural artifacts at 128 Kbits/second for 30 frame per
    second 320x240 pixel video.  These block DCT based codecs match or
    exceed the performance of Cinepak, the reigning king of AVI codecs.

    Ultimately, faster Internet connections and better codecs will combine
    to resolve this problem and allow convincing, realistic video over
    the Internet.

    In the meantime, Web authors planning to use video must provide highly
    compressed video at low bitrates.  To do this, options are:

                        - Use smaller frame sizes (e.g. 160x120 pixels)
                        - Use lower frame rates (10 - 15 frames per second)
                        - Push the standard codecs such as Cinepak as far as possbile.
                        - Use one of the newer codecs such as:

                               VDOWave
                               Indeo 4.1
                               H.263

    This overview contains a detailed section on the many codecs available
    for AVI files:

                       Video for Windows Codec Section

    This overview also has a section on effective video for the Web.  Note
    that there are practical limits on how low resolution, frame rates, and
    video quality can be pushed before the video becomes ineffective.

                      Effective Video for the Web

    Return to Top

    Limitations of AVI and Video for Windows over Networks

    AVI and Video for Windows were developed for playback of audio and
    video from hard disks and CD-ROMs on personal computers.  They are
    also adequate for downloading a video file from a remote site on the
    Internet for subsequent playback from the computer's hard drive.  They
    are not well suited for real-time or streaming video playback over
    networks.  This means videoconferencing or broadcast video over
    networks.

    The AVI file format lacks time stamps embedded in the  audio and
    video streams.  There is no mechanism to resynchronize the audio and
    video streams if data is lost.  In a network, sometimes packets are
    lost in which case the audio and video playback will lose track of the
    time.  With time stamps, the application can resynchronize the audio
    and video playback.

    Microsoft has a new generation of products in the form of the Active/Advanced
    Streaming Format (ASF), NetShow, NetMeeting (videoconferencing), and
    ActiveMovie (DirectShow) with improved support for video over
    networks.  Microsoft provides utilities for converting AVI to
    the new ASF format.

    Return to Top

    How can I convert an AVI file to a sequence of bitmap images?

    VidEdit

    Microsoft's VidEdit video editor can convert AVI files to a sequence
    of Microsoft DIB files, such as test.avi --> test00.dib, test01,dib, etc.
    Further information on VidEdit is available in the section of the
    AVI Overview on editing AVI.

    AVIRIP

    There is a freeware DOS program called AVIRIP that can convert
    non-compressed AVI files to a sequence of TGA (Targa), RAW, or
    DIB files.  AVIRIP is available with the convmpg3 freeware toolkit
    for converting AVI to MPEG and MPEG to AVI.  Further information
    on convmpg3 is available in the section of the AVI Overview
    on converting AVI to MPEG.

    Phade Software's MPEG Site has CONVMPG3

    http://www.mpeg1.de/msdos.html

    Jih-Shin Ho's Display

    Display by Jih-Shin Ho
    Available at

    ftp://info.nic.surfnet.nl/mirror-archive/software/simtel-msdos/graphics/disp189a.zip

    or other Simtel mirror sites.

    This is a 32-bit MS-DOS program that can read and write many image
    and movie file formats.

    DeBabelizer Pro

    Equilibrium's DeBabelizer Pro for Windows 95 and NT 4.0 reads and
    writes about 90 common and not-so-common image formats.  DeBabelizer Pro
    also reads and writes AVI files.  DeBabelizer Pro can read an AVI
    file and export it as a sequence of still images in the many image formats
    that it supports.

    On August 3, 1998, David Gartner of Equilibrium wrote:

    Equilibrium adds AVI with sound support to DeBabelizer Pro 4.5

    **AVI Video with Sound**
    DeBabelizer Pro 4.5's new full AVI support enables users to batch process
    legacy Video for Windows files for use on most any Macintosh and Windows
    systems for the Web, CD-ROM or kiosk.  Video for Windows (AVI) was built
    into Windows 95 and NT and runs only on Windows machines.  Now, with a few
    keystrokes, DeBabelizer Pro 4.5 users can automatically optimize, convert,
    and compress tens, hundreds or thousands of videos to QuickTime 3.0,
    animated GIFs or a variety of other cross-platform video and animation
    formats.

    DeBabelizer Pro has many other features beside file format conversions.

    Equilibrium has a demonstration version of DeBabelizer Pro on its Web site.
    This is definitely demonstration version.  The demo version plasters the
    word Equilibrium all over any images that it processes.

    DeBabelizer Pro ($595 Suggested Retail Price)
    Equilibrium
    475 Gate Five Road, Suite 225
    Sausalito, CA  94965
    1-800-524-8651 or (415) 332-4343

    http://www.equilibrium.com/

    Return to Top

    Smacker (.SMK Files)

    Smacker is a special 8-bit color video format from
    RAD Game Tools used for video and computer games.
    Smacker files usually use the file extension .SMK
    RAD Game Tools provides free Smacker Utilities at
    their Web site:

    http://www.radgametools.com/

    The utilities can convert an AVI file to a Smacker video file (.SMK file).
    The Smacker utilities calculate a good 8 bit palette
    for the input video.

    Return to Top

    Progressive Networks RealMedia Streaming Format (.RM Files)

    Progressive Networks has a streaming media format known as RealMedia
    with the file extension .rm using RealAudio audio compression and
    RealVideo video compression (RealVideo, also known as ClearVideo, is
    Iterated Systems fractal video compression).  Progressive
    provides a product known as RealEncoder to author RealMedia
    files.  RealEncoder can import AVI files!

    http://www.real.com/

    Return to Top

    How to convert a sequence of bitmap images to an AVI?

    Note: A number of Windows applications can convert a sequence of still
    images in one still image file format, such as TIFF, to a sequence of
    still images in another format, such as Windows 3.x BMP.  These are
    discussed in the How to Convert a Sequence of Still
    Images in One Format to a Sequence in Another Format section of
    the AVI Overview.

    Use these still image conversion programs to convert a sequence of
    bitmap images into a format supported by the various programs below
    such as VidEdit which can convert sequences of still images in
    a particular format to an AVI file.

    VidEdit

    Microsoft's VidEdit software (16 bit Windows) can read in
    sequences of Microsoft .DIB files and convert them to an
    AVI file.  More information on VidEdit is available in the
    section of the AVI Overview on editing AVI files.

    Video for DOS

    A shareware program called Video for DOS (VFD) can convert sequences
    of Targa files (.TGA) into AVI.  (11/8/96)  Video for DOS can be
    downloaded from

    http://www.dc.ee/Files/Graf

    Thanks to John Avis for information on Video for DOS.

    AVI Constructor

    Michael Caracena's AVI Constructor is a shareware program that

    Michael Caracena (Oct. 3, 1997) writes...

    The newest version of AVI Constructor can:

    	- Make AVI files from bitmap (*.BMP), JPEG (*.JPG),
    	  and TARGA (*.TGA) files.
    	- Insert audio from a .wav file into the AVI.
    	- Extract images from any AVI.
    	etc.

    AVI Constructor can be ordered and a demonstration version downloaded
    from:

    http://www.henge.com/~caracena

    MainConcept's MainActor

    MainConcept's MainActor can import sequences of BMP images and export
    them as an AVI video file.  MainActor can import and export many other
    video and still image formats as well.

    http://www.mainconcept.de/

    DeBabelizer Pro for Windows 95 and NT 4.0

    Equilibrium's DeBabelizer Pro can read and write about 90 common
    and not so common image file formats.  DeBabelizer Pro can also
    read and write AVI files.  DeBabelizer Pro can read in sequences of
    image files in many formats and convert to an AVI file.

    Equilibrium has a demonstration version of DeBabelizer Pro on their
    web site.  This is a demonstration version.  It adds the words Equilibrium
    to any images or movies that it processes.

    DeBabelizer Pro ($595 Suggested Retail Price)
    Equilibrium
    475 Gate Five Road, Suite 225
    Sausalito, CA  94965
    1(800) 525-8651 or (415) 332-4343
    http://www.equilibrium.com/

    Smacker Utilities

    RAD Game Tools distributes free Smacker utilities
    at their Web site:

    http://www.radgametools.com/

    The Graphics Processor can convert a sequence of bitmap images
    in several common bitmap image formats into an AVI file.
    NOTE: this AVI file uses an 8 bit color palette selected by
    the Smacker utilities for best picture quality.

    RAD Game Tools licenses a proprietary 8 bit video format
    called Smacker for use in video games.  Their focus is on
    compression achieved through proper selection of an 8 bit
    color palette, rather than 24 bit color.  Smacker is popular
    in the gaming industry.

    RAD Game Tools
    850 South Main Street
    Salt Lake City, UT 84101
    Voice: (801) 322-4300
    FAX: (801) 359-6169

    mkavi (PPM to AVI)

    mkavi is a Unix utility with source code to convert sequences of
    Unix PPM (Portable Pixmap) files into AVI.  As of 11/7/97, the
    documentation describes mkavi as alpha code.

    ftp://www.va.pubnix.com/staff/stripes/code/

    Return to Top

    How to convert QuickTime MOV files to AVI?

    Power Macintosh:

    The Video for Windows 1.1 Apple Macintosh Utilities from Microsoft is a
    collection of utilities and system extensions for the Macintosh that add
    support for Video for Windows file formats.  One of the utilities is VfW
    Converter which converts QuickTime MooV files to AVI files playable
    on the PC.

    The Video for Windows 1.1 Apple Macintosh Utilities are available at:

    ftp://ftp.microsoft.com/developr/drg/Multimedia/Jumpstart/VfW11-Mac/

    VfW Converter is more powerful than Intel's smartvid PC application.
    It can convert video formats.  For example, VfW Converter can
    convert a raw uncompressed 24 bit QuickTime Movie to a raw
    uncompressed 24 bit AVI Movie (or do various compressions).
    Uncompressed QuickTime and uncompressed AVI files use different
    video formats.  VfW Converter also converts audio from QuickTime
    audio to AVI audio.

    The Video for Windows 1.1 Apple Macintosh Utlities file is
    variously named:

    vfw11.sit

    video-for-windows-11p.hqx

    Apple's QuickTime Web site contains links to sources for
    Video for Windows (Macintosh) as well as other useful
    video utilities.

    Apple's QuickTime Web Site

    Video for Windows (Macintosh) has the virtue of being free, unlike:

    Adobe Premiere (Macintosh)
    ---reportedly can save QuickTime movies as AVI files.

    On PC/Microsoft Windows:

    TRMOOV.EXE (see below)
    can translate MOV to AVI, but I found problems playing back
    the AVI files on my 486 PC.  It does not change the
    interleaving of the audio and video streams in the conversion from
    .MOV to .AVI.  TRMOOV preserves the half-second
    interleave of QuickTime movies which is not appropriate for AVI.  AVI
    wants each video frame interleaved with the audio for that frame.

    With the half-second interleave of QuickTime the audio will playback for
    a half-second while the video is frozen, followed by a half-second of
    video with no audio, repeated for the duration of the AVI playback.

    The interleave can be fixed using VidEdit.  VidEdit contains algorithms
    to properly interleave the audio and video.  Load the offending AVI
    file into VidEdit, Select File | Save As ... and give the file a new
    name.  This triggers the interleave algorithm.  VidEdit will reorganize
    the audio and video to interleave frames instead of half-seconds.

    Intel's SmartVid (see below) can convert .MOV to .AVI  It appears to
    convert the audio video interleave from one format to another, something
    TRMOOV seems to have problems with.

    Adobe's Adobe Premiere 5.0 for Windows 95/NT can import and export
    Windows AVI and Apple QuickTime video files.

    Adobe

    Return to Top

    Converting Autodesk Animation Files (FLI or FLC) to AVI

    VidEdit:

    Use Microsoft's VidEdit editor.  This editor can read FLI or FLC files.
    Then save the files as AVI files.

    Launch VidEdit.  Select File | Open ...

    This brings up the Open Video File dialog box.  Under List Files of Type,
    select Autodesk Animation from the pulldown list.

    Then, choose File | Save As ...

    VidEdit will save the file as an AVI file.

    Further information on VidEdit is available in the section on editing
    AVI files, including where to get VidEdit.

    MainActor

    MainConcept's MainActor for Windows 95 and OS/2 Version 1.00
    can load Autodesk Animator FLI and FLC files and save in AVI
    format.  For further information on MainActor, a shareware
    program that converts many video and animation formats, see:

    http://www.mainconcept.de/

    or e-mail

    info@mainconcept.de

    Return to Top

    Converting MPEG to AVI

    CONVMPG3/VIDEDIT (FREE)

    Use the CONVMPG3.ZIP package of MPEG and AVI utilities.  CONVMPG3
    is available for download at the Phade Software MPEG site:

    http://www.mpeg1.de/msdos.html

    (1) Run DMPEG to convert MPEG-1 to a sequence of RAW still images.

    (2) Use RAWRIP to convert the sequence of RAW still images to a
        sequence of DIB's.

    (3) Use VidEdit to convert the sequence of DIB's to an AVI file.
        (or another video editor).  VidEdit is not bundled with
        CONVMPG3, but is available elsewhere.

    Go to VidEdit Section  The VidEdit section
    of the AVI Overview includes links to sites to download
    VidEdit.

    Ulead's MPEG Converter can convert MPEG-1 to AVI.

    Ulead is:

    Ulead
    970 West 190th Street, Suite 20
    Torrance, CA  90502
    Voice: (800) 858-5323
    FAX:   (310) 523-9399
    http://www.ulead.com/

    Return to Top

    Converting Animated GIF (GIF89a) to AVI

    MainConcept's MainActor for Windows can load animated GIF
    files (GIF89a) and then save these files as AVI files.
    MainActor is available in a shareware version or as a fully
    functional paid-for version.

    On the Web:

    http://www.mainconcept.de/

    By E-Mail:

    info@mainconcept.de

    Return to Top

    How to Convert a Sequence of Still Images in One Format to a Sequence in Another Format

    At this time, there are hundreds of different graphic file formats
    for still images, such as Windows BMP, Windows DIB, Targa, GIF, JPEG,
    Unix Portable Pixmap (PPM), and many others.  In creating an AVI (or
    MPEG or MOV for that matter), some authoring programs may create a
    video as a sequence of still images in some graphic file format
    which is not supported by the graphic file sequence to AVI
    conversion utilities listed elsewhere in this Overview.

    Fortunately, there are freeware, shareware, and commercial programs
    which provide batch conversion of sequences of still images from one
    file format to sequences in another file format.  For example, you
    might generate a sequence of Unix PPM format files with one
    utilitity and need to convert to a sequence of Windows BMP files.

    PC/Windows

    PixWizard is a shareware Windows 95 and Windows NT 4.0 image viewer
    with image processing and conversion capabilities from PixVision
    (formerly Pixel Vision) Software.  PixWizard reads and writes the
    following still image file formats:

    o BMP (Windows 3.x, OS/2 1.1, and OS/2 2.0)
    o Graphics Interchange Format (GIF)
    o Interchange Format File (IFF)
         - including HAM and SHAM modes
    o JPEG File Interchange Format (JFIF)
    o Kodak Photo CD (PCD)
    o Macintosh PICT (including PICT/JPEG)
    o MacPaint
    o PCX
    o Portable Pixmap (PPM/PGM/PBM)
    o Targa
    o Tagged Image File Format (TIFF)

    PixWizard has a batch conversion of a list of files to a specified
    format feature.  Select Batch Conversion... from the File menu in
    PixWizard 1.07.  A 30-day trial version of PixWizard is available at
    the PixVision web site.

    WinJPEG is a shareware Windows 3.x utility from PixVision (formerly
    Pixel Vision).  WinJPEG reads and writes most of the same file formats
    as PixWizard.  It has a batch conversion feature.

    PixVision Software Home Page (PixWizard and WinJPEG):

    http://www.pixvision.com/

    Paint Shop Pro is a shareware and commercial Windows utility from
    Jasc Software.  Paint Shop Pro reads and writes most graphic file
    formats.  It has a batch conversion feature.

    The shareware version of Paint Shop Pro has a thirty (30) day
    evaluation period.

    Jasc Software Paint Shop Pro Page:

    http://www.jasc.com/psp.html

    Power Macintosh

    GraphicConverter is a shareware Power Macintosh utility with
    very extensive support for graphic file formats and some video
    formats.  It can read and write roughly a hundred different
    file formats including some pretty obscure formats.  It has a
    batch conversion feature.

    GraphicConverter Web Site:

    http://www.lemkesoft.de/

    Unix

    I've not identified a Unix utility with explicit batch conversion
    features.  However, there are some utilities for bitmap conversion.
    The Portable Bitmap Utilities can easily be used for batch conversion
    through a script.

    PBMPLUS: Extended Portable Bitmap Toolkit
    by Jef Poskanzer

    A collection of utilities for converting to and from Jef Poskanzer's
    Portable Bitmap (PBM), Portable Greymap (PGM), and Portable Pixmap (PPM)
    file format.  FREE and widely available on Unix systems.

    For example, to convert a GIF file to a TIFF file.

    1. giftoppm  myfile.gif
    2. pnmtotiff myfile.ppm

    giftoppm is a utility program to convert GIF to PPM

    pnmtotiff is a utility program to convert PBM/PGM/PPM to TIFF

    The PBM utilities can be invoked from Unix scripts
    (Bourne Shell, Korn Shell, C Shell, Perl, etc.) for batch
    conversion of a sequence of bitmap images.

    PBMPLUS is available at a number of ftp sites such as:

    ftp://ftp.x.org/R5contrib/

    There are many files in this directory.  PBMPLUS is:

    pbmplus10dec91.tar
    pbmplus10dec91.tar.Z

    John Bradley's xv (shareware)

    xv is a Unix X-Windows shareware utility for
    viewing, manipulating, and converting bitmap images
    on Unix X-Windows systems.  xv supports many common
    bitmap image file formats.

    The xv Version 3.10a Manual states:

    "Since xv has absolutely no command-line or batch
    conversion abilities..."

    xv is available from a number of sites such as:

    ftp://ftp.cis.upenn.edu/pub/xv

    Return to Top

    How to convert AVI to QuickTime files?

    Microsoft Windows

    Intel's SmartVID, a DOS and Windows application, can convert
    .AVI to .MOV files.  SmartVID is codec independent.  This means
    that SmartVid preserves the video compression scheme from the
    source .AVI file.

    http://www.intel.com/pc-supp/multimed/indeo/smartvid.htm

    TRMOOV.EXE

    Windows 3.1 Program
    Converts AVI to QuickTime for Windows movie.
    The QTW movie will play on a Macintosh with QuickTime 1.5 or later.

    Note: My experiments converting some .MOV files to .AVI seem to
    playback ok, unlike the .AVI to .MOV conversion.

    Source: Found on CD-ROM with the "How to Digitize Video" book
    (see below).

    On Net: ftp://ftp.rahul.net/pub/jfm/avi/trmoov.exe

    Please Note: TRMOOV and SmartVid preserve the compressor used in the
    source file.  For example, if the AVI file was compressed with
    Cinepak, the MOV file will be compressed with Cinepak.  Since Cinepak
    is supported by both Video for Windows and QuickTime this is not
    a problem.  However, if the compressor exists only in Video for Windows
    or only QuickTime, then there will be a problem.

    Mainconcept's Main Actor can load many video and animation formats.
    It can also save many video and animation formats.  The Windows version
    of Main Actor can load AVI and save the file as QuickTime.

    http://www.mainconcept.de

    Adobe Premiere 5.0 for Windows 95/NT can import and export both
    AVI and QuickTime.

    Adobe

    PowerMacintosh

    On the PowerMacintosh, Microsoft distributes the Video for
    Windows 1.1 Apple Macintosh Utilities.  These include an
    AVI to QuickTime conversion utility.

    The Video for Windows 1.1 Apple Macintosh Utilities include:

    * Read Me file.
    * QuickTime-to-AVI conversion program.
          - this utility is called "VfW Converter"

    * Utility for moving AVI files to the Macintosh.
          - this utility is called "AVI to QT Utility"

    * Windows Compressors system extension, which contains
      compressor/decompressors (CODECs) for Microsoft RLE,
      Microsoft Video 1, and Microsoft Full Frame formats.
          - this component is called "Windows Compressors"

    To retrieve the Video for Windows 1.1 Apple Macintosh Utilities:

    ftp://ftp.microsoft.com/developr/drg/Multimedia/Jumpstart/VfW11-Mac/

    On the PowerMacintosh, the program AVI->QuickTime can convert AVI to
    QuickTime.  At least, it can convert the video successfully for
    subsequent playback with Apple's MoviePlayer.  I have seen problems
    with the audio.  This application is available at various Web and ftp
    sites in the file avi-to-qt-converter.hqx  This may be the same
    AVI to QuickTime converter included with the Video for Windows 1.1
    Apple Macintosh Utilities; I have not confirmed this.

    One site with AVI->QuickTime is:

    ftp://mirrors.aol.com/pub/info-mac/gst/mov/avi-to-qt-converter.hqx

    Return to Top

    How to convert AVI to animated GIF?

    GIF Construction Set

    Gif Construction Set from Alchemy Mindworks reportedly can convert
    an AVI file to an animated GIF file.

    Alchemy Mindworks, Inc.

    Web http://www.mindworks.com/alchemy/alchemy.html

    E-Mail: alchemy@mail.north.net

    FTP: ftp://ftp.mindworkshop.com/pub/alchemy

    Microsoft GIF Animator

    Microsoft's GIF Animator for Windows 95
    product can reportedly convert AVI to animated
    GIFs (GIF89a format).  Information on GIF Animator
    including a dowloadable version is available at
    the Microsoft Web site (11/7/96) on the Microsoft
    Image Composer page.

    Web http://www.microsoft.com/imagecomposer

    MainActor

    MainActor, a shareware software product for Windows 95, Windows NT, and
    OS/2 reportedly can convert AVI to animated GIF.

    http://www.mainconcept.de/

    Ulead

    Ulead reports that is has added AVI to GIF to

    Ulead's PhotoImpact GIF Animator 1.2 Beta (11/16/96)

    http://www.ulead.com/products/framens.htm

    Ulead Toll Free Number: 1-800-858-5323

    Adobe Premiere

    There is (Feb. 1998) a free plug-in for Adobe Premiere 4.x
    to convert AVI to Animated GIF.  See the Adobe web site
    to download this and many other plug-ins for Adobe products:

    http://www.adobe.com/

    Return to Top

    How to convert AVI to MPEG?

    AVI to MPEG Conversion at a Glance

    Company/Author(s)  Product           Price             URL
    ---------------------------------------------------------------------

    Corel              PhotoPaint        $500?    http://www.corel.com/

    Ulead              MPEG Converter    $249     http://www.ulead.com/

    Xing Technologies  XingMPEG Encoder  $89      http://www.xingtech.com/
                       XingMPEG Encoder 2 (May 6, 1997 release)

    CeQuadrat          PixelShrink       $199     http://www.cequadrat.com/

    Vitec              MPEG Maker        $125     http://vitechts.com/

    MainConcept        MainActor         shareware http://www.mainconcept.de/

    avi2mpg1           Unknown           freeware   http://www.mnsi.net/~jschlic1/

    Stefan Eckhart and others  CONVMPG3  freeware kit  http://www.powerweb.de/mpeg/msdos.html

    Ligos Technology   LSX-MPEG Encoder  $179.95    http://www.ligos.com/

    -------------------

    Further information, reviews, and live links follow:

    The following posting from the comp.graphics.animation USENET
    newsgroup provides a good answer to this question.  I have retained
    the header to insure proper credit to the author.

    Note: LW refers to the Lightwave 3D animation software package.

    From comp.graphics.animation Wed Oct 30 18:16:34 1996
    Path:
    samba.rahul.net!rahul.net!a2i!news.PBI.net!news.mathworks.com!howland.erols.net!surfnet.nl!tudelft.nl!ne
    ws
    From: Valery
    Newsgroups: comp.graphics.animation
    Subject: Re: AVI to Mpeg converter
    Date: Mon, 28 Oct 1996 15:15:14 +0100
    Organization: Technical University, Delft
    Lines: 58
    Message-ID: <3274BFF2.2EDD@twi.tudelft.nl>
    References: <01bbc33f$05021880$d73d93cf@cube176a>
    Reply-To: V.V.Kritchallo@twi.tudelft.nl
    NNTP-Posting-Host: duti504b.twi.tudelft.nl
    Mime-Version: 1.0
    Content-Type: text/plain; charset=us-ascii
    Content-Transfer-Encoding: 7bit
    X-Mailer: Mozilla 3.0 (Win95; I)

    Mariusz Jesmanowicz wrote:
    >
    > Hi, I use LW to do animation, and basically I am not happy with any of the
    > compression engines aviable for avi. Those codes suck. So what I want to do
    > is make an UNCOMPRESSED AVI and then translate it to MPEG. anyone know of
    > any good converters to MPEG or hoe about plug-in for LW to be able to do
    > MPEG files from the start.
    >
    > Thank You

    Hi,

    you're right, every single AVI compression codec is lame.
    5 years of the AVI format existance and zero progress so far.

    If you're talking about freeware or budget-priced MPEG codecs,
    it's a tough task, to find the damn thing. I'm busy in this area
    quite for a while already, and here are my findings:

    1. XING's MPEG encoder is a classical name on the scene. Had
    compatibility problems before, not anymore, I believe. Can cost
    you $150 or more, not sure. Scan for 'XING' on the Net, you'll
    definitely find some tracks (www.xing.com doesn't show up).

    2. Stefan Eckart's CMPEG (DOS) encoder is FREE and GOOD, and stays
    so for a couple of years already. Can have troubles converting
    some particular streams, but generally not worse than many
    commercial programs. (You need to make a TGA sequence first out
    of your AVI, though). Again, scan for CMPEG, or use my bookmarks
    found on the site Im introducing below.

    3. To my surprise, Corel Photopaint 6 has got very decent built-in
    MPEG compression option. Open an AVI, Save As an MPEG, and see what
    happens (get some coffie, as it'll take a while ;)  I checked it out
    on a stream where CMPEG gave up and the Corel's conversion did make
    a wonder. (If you like to see the result, download my 'Liquid Beatles'
    morph clip, 1 Mb: http://www.proteon.nl/synth_art/movies/cross.mpg).

    4. Ulead's MPEG converter (www.ulead.com) seems to be the major
    player (priced below $250) on the Windows arena. I've heard good
    references about their MPEG's quality, but I feel that their
    biggest advantage is good integration with Windows and AVI format.
    If I'm not mistaken, a very slow codec.

    5. Don't mess with DARIM Vision's codec (Korea). I've tried their
    demo, it produces low-quality crap. Though fast and cheap (you bet :-).

    See my MPEG clips, fractals, morphs, and in general lots of
    advanced graphics at
    http://www.proteon.nl/synth_art/

    Hope this helps,

    Valery
    http://www.proteon.nl/synth_art/movies.html
    ---------------------------------------------------------------

    In addition to the above, there is MPEG Maker from
    VITEC-HTS (formerly Vitec Multimedia).  Vitec is:

    Vitec
    4366 Independence Court, Suite C
    Sarasota, FL 34234
    Voice: (941) 351-9344
    FAX: (941) 351-9423
    http://vitechts.com

    CeQuadrat makes a software-only AVI to MPEG converter called
    PixelShrink.  CeQuadrat is:

    CeQuadrat
    1804 Embarcadero Road, Suite 101
    Palo Alto, CA  94303
    Voice: (415) 843-3780
    FAX: (415) 843-3799
    http://www.cequadrat.com/

    And the freeware kit CONVMPG3, a collection of MS-DOS
    utilities that can be used to convert AVI to MPEG-1 or
    MPEG-1 to AVI.  CONVMPG3 includes Stefan
    Eckhardt's CMPEG MPEG-1 encoder mentioned above
    but also includes utilities to generate the sequence
    of Targa files required by CMPEG.  The URL for CONVMPG3 is:

    http://www.powerweb.de/mpeg/msdos.html

    avi2mpg1 is a freeware command line application for Windows 95/NT
    that can convert AVI to MPEG-1, supports audio, video, and
    interleaved audio/video.

    http://www.mnsi.net/~jschlic1/

    MainConcept's MainActor product now (March 1997) includes
    add-on modules to output MPEG-1 and MPEG-2.  With these add-on
    modules, MainActor can convert AVI to MPEG-1 or MPEG-2.

    Marcus Moenig at MainConcept provided an evaluation copy of the
    MPEG-1/2 modules.   In tests, these modules could convert AVI files
    to MPEG-1 that could be played using the ActiveMovie software
    MPEG player shipping with Microsoft's Windows 95 OSR2.

    MainConcept is:

    MainConcept
    http://www.mainconcept.de

    The URL for Ulead is:

    Ulead MPEG Converter
    http://www.ulead.com/

    On May 6, 1997, Xing announce a new product, the Xing MPEG Encoder 2
    which accelerates MPEG encoding using Intel MMX instructions on PC's.
    The original Xing MPEG Encoder did not use MMX instructions.
    The Xing MPEG Encoder 2 can convert AVI and WAV files to MPEG-1.

    The URL for Xing is:
    Xing Technology Corporation
    http://www.xingtech.com/

    Ligos Technology markets an LSX-MPEG Encoder to convert
    AVI to MPEG-1 and MPEG-2

    Ligos Technology
    1475 Folsom St. Suite 200
    San Francisco, CA 94103
    +1-415-437-6137
    +1-415-437-6139 FAX
    info@ligos.com

    http://www.ligos.com/

    For further information on the MPEG digital audio and video
    format see Tristan Savatier's comprehensive MPEG site:

    http://www.mpeg.org/

    and The MPEG Home Page:

    http://drogo.cselt.it/mpeg/

    Return to Top

    How to capture screen to AVI Files

    Microsoft Camcorder

    Microsoft distributes a free screen capture utility called
    Microsoft Camcorder (sometimes abbreviated MSCamcorder).  Camcorder
    can save screen captures as AVI files or a .EXE file.

    http://www.microsoft.com/msoffice/office97/camcorder/default.htm

    HyperCam

    See the following posting from Greg Kochaniak dated 5/10/97 from the
    comp.archives.ms-windows.announce newsgroup.

    I have uploaded to Simtel.Net:

    http://www.simtel.net/pub/simtelnet/win95/mmedia/hycam119.zip
    ftp://ftp.simtel.net/pub/simtelnet/win95/mmedia/hycam119.zip   251872 bytes

    hycam119.zip    HyperCam v1.19 AVI screen capture for Win95,NT

    HyperCam v1.19 captures the action from Windown 95 or NT screen in any
    graphics mode, including cursor movements and sound, and saves it to
    standard AVI movie files.  Perfect for demonstrations, presentations
    and tutorials.

    Special requirements: Windows 95 or Windows NT.

    Changes: Fixed two problems: starting recording in 256 color mode would
    produce sometimes invalid AVI files (when, upon minimizing HyperCam
    window for recording, another window with a different palette would come
    to front and realize its palette). The other problem: selecting AVI file
    name with Browse button would not always work correctly.

    hycam119.zip has replaced hycam118.zip.

    Shareware.  Uploaded by the author.

    Greg Kochaniak, Hyperionics
    gregko@hyperionics.com
    http://www.hyperionics.com/

    SnagIt

    TechSmith Corporation markets a Microsoft Windows product called
    SnagIt which can capture the screen to AVI files.  SnagIt also can
    capture the screen to still image formats such as BMP.

    http://www.techsmith.com/

    Return to Top

    Authoring Tools to Create AVI Files

    A wide variety of 2D and 3D animation applications as well as other
    multimedia authoring tools generate AVI files directly.  This is
    especially true for Windows versions of applications, since Microsoft
    provides an API for creating AVI files.  A list of applications
    that can create AVI files follows.

    LightWave 3D 5.5 for Windows 95 and Windows NT

    LightWave is a popular 3D modeling and animation program
    widely used in broadcast television.  LightWave can do almost
    anything and supports third party plug-ins to add features that
    it lacks.

    NewTek
    Note: According to product literature on the NewTek Web site.

    http://www.newtek.com/

    Caligari Truespace 1,2, and 3 for Windows

    Caligari TrueSpace is a popular low-end 3D modeling and animation
    program.  Traditionally, TrueSpace has been polygon based limiting
    its usefulness for modeling organic forms.  TrueSpace 3.0 adds
    some organic features.

    Caligari Corporation
    Note: Confirmed from personal use of Caligari TrueSpace.

    http://www.caligari.com/

    Fractal Design Ray Dream Studio for Windows

    Ray Dream Studio is a suite of 3D modeling, animation, and rendering
    tools.

    Fractal Design
    Note: According to product literature on web site.

    http://www.fractal.com/

    Macromedia Director 6.0 for Windows

    Macromedia Director is a widely used authoring tool for creating
    interactive 2D animations such as presentations, multimedia for
    kiosks, prototypes of user interfaces, and similar uses.  Director
    can also produce straight 2D animations appropriate for AVI files.

    Macromedia
    Note: According to product literature on the Macromedia Web site.

    http://www.macromedia.com/

    CorelMOVE

    Corel's CorelMOVE animation software can export AVI files.

    Return to Top

    How to create AVI files from analog video:

    Video Capture Cards

    On Intel based PC's, use a video capture card to convert analog video
    from video tapes or video cameras to AVI files.  A PC video capture card
    is typically either a 16 bit ISA bus card or a 32-bit PCI bus card that
    plugs into the 16 bit ISA or 32-bit PCI slots in your PC motherboard.
    32-bit PCI bus cards are steadily replacing 16-bit ISA bus cards.
    Most video capture cards have either a composite video connector or
    both a composite video and an S-Video connector.  Most video capture
    cards perform compression of the video in hardware or firmware on the
    video capture card before tranferring the compressed video over the ISA
    or PCI bus to the PC hard drive.

    Most video capture cards only capture video.  They do not contain audio
    capture.  Audio capture is done through the audio or sound card of the
    computer.  It is increasinly common to have the audio input and output
    hardware built into the motherboard.  The computer may not have
    a physically distinct sound card.

    Sound cards usually have a Microphone input jack, a Speaker or
    Headphone output jack, a Line input jack, and a Line output jack.
    Line input and the microphone input are not interchangable.  The
    jacks use different electrical signals.  Most users will use
    the microphone for input and speakers or headphone for output.

    Video Capture in Video for Windows

    Under Microsoft Windows, video capture cards come with a Video for
    Windows capture driver (CAPTURE DRIVER).  The capture driver exports
    standard functions (including some dialog boxes for user interaction)
    that any Video for Windows software application can call.
    Any Video for Windows video capture application, including video
    editing applications that support video capture, can and must use this
    Video for Windows capture driver to capture video.

    Windows 3.x, Windows 95, Windows NT 3.51, and Windows NT 4.0 all use
    Video for Windows capture drivers.  ActiveMovie 1.0 for Windows 95 and
    Windows NT 4.0 does not provide a mechanism for video capture, only
    video playback.  Video for Windows continues to be the software
    component for video capture.

    The capture driver may consist of a single file or multiple
    files.  The capture driver is identified by the name MSVIDEO (in
    the SYSTEM.INI file in Windows 3.x and Windows 95 for example).
    In Windows 3.x and Windows 95, the SYSTEM.INI file will contain
    a line such as

    MSVIDEO = C:\PROSHARE\ISVRPRO.DRV

    ISVRPRO.DRV is the name of the video capture driver used by
    Intel's Smart Video Recorder Pro in the Intel ProShare
    video-conferencing system.

    where MSVIDEO points to the top-level file that exports the
    standard Video for Windows functions for the capture driver.
    This file may in turn invoke other separate files that form
    the rest of the video capture driver.  For example, the
    installation program for the miroMEDIA PCTV TV Tuner and
    Video Capture Card installs eleven (11) different files
    to support the Brooktree Bt848 video capture chip on the
    card.  This card consists of some connectors, a few resistors
    and capacitors, and the Bt848 chip.

    In Windows 95, users can view and configure the video capture driver
    by selecting System in the Windows 95 Control Panel.  Then select the
    Device Manager tab.  System | Device Manager is actually a user friendly
    interface to the Windows 95 Registry which contains all of the
    information about a device such as names and locations of driver
    files, hardware resources used, and other data in a complex database.
    The Device Manager contains icons representing all the devices
    installed on the computer.  The video capture card and associated
    driver will appear either in the "Sound, video and game controllers"
    category or "Other Devices".

    Each device has "Properties".  Users can view and change the properties
    either by:

    (1) Click once on the device icon in System | Device Manager to select
    the device.
    (2) Click once on the Properties Button in System | Device Manager.

    OR

    (1) Double-click on the device icon in Device Manager.

    The Device Properties usually have a General, a Driver, and a
    Resources tab.  The Driver and Resources Tabs may be absent in some
    cases.

    Users can usually determine the version of the device driver
    from the Driver tab of the Device Properties in System | Device
    Manager.  The Driver tab usually lists all of the files
    installed on the system that make up the device driver.

    Use the Driver tab to install or update the video capture driver.  The
    Driver tab contains a Change Driver... button.  Clicking on the Change
    Driver... button will bring up a list box with the devices and drivers
    known to Windows 95.  The relevant video capture card and driver may
    be in this list.  The user may need to provide a disk or CD-ROM with
    the drivers and a Device Information (INF) file.  If the driver is not
    on the list of available drivers, the user must click on the Have
    disk... button to load the drivers from the disk or CD-ROM using an
    INF file.  The INF file contains the information telling Windows 95
    how to install the capture driver, including which files to install
    where on the hard disk and what changes to make to the Windows 95
    Registry and the INI files.

    Use the Resources tab to view and change the hardware resource
    settings: the IRQ levels used, the DMA channels used, and the I/O
    addresses used by the video capture card.  It is not uncommon for a
    newly installed video capture card to have an IRQ conflict with other
    devices on the system.  Often Windows 95 will detect the conflict but
    fail to resolve it.

    Windows 95 automatically assigns resources such as IRQ levels to
    devices such as video cards.  Windows 95 is supposed to select
    IRQ levels that do not conflict.  This does not always work.  To fix, try
    deleting the device from the Device Manager and restarting Windows 95.

    TO DELETE A DEVICE FROM DEVICE MANAGER

    (0) Make sure that you have the installation CD-ROM or disks with the
    device driver software for the device BEFORE you delete it!!!

    (1) Click on the device icon in Device Manager.
    (2) Presss the delete button on your keyboard or click the Remove
    button on System | Device Manager.

    When Windows 95 restarts, it will again automatically detect the
    hardware, install the necessary drivers, and configure the hardware.
    If Windows 95 does not have the necessary drivers it will prompt the
    user for a disk or CD-ROM with the needed drivers.  As above, the disk
    or CD-ROM will need a Device Information or INF file to tell Windows
    95 how to install the needed drivers.  On a second or third try,
    Windows 95 may get it right.  Users must delete the device before
    restarting Windows 95 to force Windows 95 to auto-detect, otherwise
    it will simply use the information currently displayed in Device
    Manager.

    If deleting the device from Device Manager and restarting Windows 95
    fails to fix the problem, the user can manually set the IRQ level and
    other resources through the Resources tab in the Device Properties in
    System | Device Manager.  Uncheck the "Use automatic settings" check
    box.  Then, the user can manually change the IRQ, DMA, and I/O
    settings.  Note that this disables the automatic configuration of the
    device and can cause other problems.  In some cases however there is
    no choice but to manually set the resources.

    In Windows 95, users may also view and configure some video capture device
    information by selecting the Multimedia icon (applet) in the Windows
    95 Control Panel.  Then select the Advanced Tab.  Then select the
    Video Capture Devices icon from the icons in the Advanced Tab.  This
    will show the installed Video for Windows capture drivers.  The
    IRQ, DMA, and I/O resources usually cannot be set through the Multimedia
    icon; users must use System | Device Manager in the Control Panel.

    Typically, when a user installs the software for a video capture card,
    the installation will install the Video for Windows capture driver for
    the video card, Video for Windows if needed, non-standard Video for
    Windows compression drivers, and some video capture and editing
    applications.

    Microsoft shipped a simple Video Capture application called
    VidCap, a 16-bit application, with the original 16-bit Video for
    Windows (full, not run-time).  There is also now a VidCap32, a 32-bit
    video capture application.  Many other applications such as Adobe
    Premiere support video capture.

    The video capture drivers provide a Video Source dialog box for
    selecting the analog video input format, connectors, and other
    options.  The Video Source dialog box varies from video card to
    video card.  It can include options to adjust the brightness or
    color of the video image.

    The capture drivers also provide a Video Format dialog box for selecting
    the color format (image format or pixel format) of the image, the image
    size to capture (such as 320x240 or 160x120), whether to utilize hardware
    compression built into the video capture card, and miscellaneous
    other features.

    Users can access the Video Source and Video Format dialog boxes through
    their video capture software application.  In VidCap, select the
    Options menu.  Then Video Format... to get the Video Format dialog
    box.  Video Source... to get the Video Source dialog box.

    See below for further discussion.

    Analog Video Formats

    Composite video signals are analog signals that combine luminance and
    chrominance (color) information in a single analog signal that can be
    transmitted over a single wire or stored in a single track on an
    analog magnetic tape.  The NTSC video signals used by commercial
    television sets in the United States and Japan are an example of
    composite signals.  Composite video is particularly prone to errors in
    reproducing exact colors due to the overlap of the color and luminance
    signals.  Video professionals jokingly refer to NTSC as Never The Same
    Color.

    S-Video video signals separate the luminance and chrominance
    information into two separate analog signals that can be transmitted
    over two separate wires or stored in two separate tracks on an analog
    tape.  S-Video is generally superior to composite video in reproducing
    colors correctly.  The S-VHS and Hi8 video tape standards use S-Video.
    Ordinary VHS video tape uses composite NTSC signals.  Thus, in
    general, using an S-VHS or Hi8 video camera with S-Video output to
    provide the analog video signal to the S-Video input of a PC video
    capture card will provide better video quality.

    A third type of video signal is component video.  In component video, the
    luminance (Y) and two color difference signals (U and V or I and Q) are
    separated into three separate analog signals that can be transmitted
    over three separate wires or stored in three separate tracks on an
    analog tape, or digitized separately.  Component video is used in
    professional video production and provides the best quality and the
    most accurate reproduction of colors.  The professional Betacam SP video
    cameras use component video.  The current generation of widely used
    PC video capture cards do not provide component video inputs.

    Capture with Motion JPEG Compressed Video

    Typical PC video capture cards store the digitized compressed video as
    an AVI file using Motion JPEG compression.  Motion JPEG is used
    instead of other compression schemes because each frame is compressed
    separately.  This allows frame accurate editing of the AVI file after
    capture.  If a compression scheme that uses frame differencing - where
    a frame is stored as the differences between the frame and a previous
    frame (such as MPEG) - is used, it is difficult to edit the video.

    Typical PC video capture cards are bundled with non-linear video editing
    software such as Adobe Premiere which can be used to edit the Motion JPEG
    compressed AVI file and ultimately compress the edited AVI file using
    compression such as Cinepak using frame differencing for maximum
    compression.

    PC video capture cards usually compress the video using a lossy
    compression scheme such as Motion JPEG or MPEG because uncompressed
    video places very high demands on the bandwidth of the ISA or PCI bus
    and on the bandwidth to the hard drive.  In addition, uncompressed
    video can fill even very large hard drives very quickly.

    Capture with Uncompressed Video (Color Formats)

    A number of video capture cards such as those based on the Brooktree
    Bt848 and Bt848a video capture system chip save uncompressed video
    in alternative color formats to the common 24 bit RGB color format.
    Such as the 15 bit RGB color format or YUV9 color format.  These
    formats represent a pixel with less than 24 bits, reducing bandwidth
    and storage requirements.  Color formats may also be known as
    IMAGE FORMATS or PIXEL FORMATS.

    24 bit RGB is almost universally supported.  Other color formats may
    not be supported by graphics software, video editors, or playback
    drivers.  Beware problems such as inability to play an AVI file or
    view a BMP may occur with AVI files or BMP still images created with
    some color formats.

    Color Formats Section

    PC video capture cards are usually bundled with application software
    and drivers to perform video capture such as Microsoft's VIDCAP.EXE
    (16 bit) or VIDCAP32.EXE (32 bit) or Intel's SMARTCAP.EXE or other similar
    software.

    Video capture drivers may provide the ability to select different
    color formats for uncompressed AVI video, such as RGB15 or YUV9.  With
    Vidcap and Vidcap32, select Options | Video Format ... to set the
    color format for a video capture session and file.  Video Format ...
    invokes a Video Format dialog box provided by the video capture
    driver; this dialog box differs from capture card to capture card.

    Users can usually use the Video Format dialog box to select the
    size (resolution) of the captured video (such as 320x240 or
    160x120 pixels).  Users usually can select the color format which
    may be identified as IMAGE FORMAT or PIXEL FORMAT.

    NOTE: Windows 95 and Windows NT require different device drivers.
    Most video capture cards have drivers for Windows 95.  Only some
    have Windows NT drivers.  Video capture cards that have Windows NT
    device drivers and therefore can be used under Windows NT are listed
    at the end of this section.

    Recent Video Capture Cards (PCI)

    Some current (1/11/97) popular PC video capture cards that generate
    AVI files are:

    Digital Processing Systems (DPS) makes high end video capture cards
    for the broadcast and studio markets.  Some of these cards can
    capture video on the PC.  Some of these cards are designed for
    Windows NT and include Windows NT device drivers.

    http://www.dps.com/

    FAST AV Master PCI 60 field/60fps with Motion JPEG, Includes Ulead's
    Media Studio Pro digital video editing application.

    FAST Web Page

    Truevision Bravado 1000 50/60fps 32-bit PCI video capture board with Motion JPEG, Includes Adobe
    Premiere 4.2 Full Version

    Truevision Web Page

    MiroVideo DC30 PCI, complete non-linear video and audio editing for
    Windows 95, Includes Adobe Premiere 4.2 Full Version

    miro Web Page

    Azeena Vision 500 640x480 30 fps Motion JPEG PCI Capture Card
    Up to 3:1 compression.

    Azeena Web Page

    Hauppauge WinTV PCI TV-tuner and Video Capture Cards.
    This is a family of TV-Tuner and Video Capture cards.
    Built around the Brooktree Bt848 video capture chip.

    Hauppauge Web Page

    Winnov Videum AV, Half size ISA card, composite and S-Video
    input, claims to capture 352x240, 24 bit, AVI videos at 30
    frames per second (must be compressed to fit across ISA bus - JFM)

    Winnov Web Page

    Intel Smart Video Recorder III, a 32-bit PCI card that uses Indeo
    video compression.  Includes a composite (NTSC) video input and an
    S-Video input, RCA and S-Video cables, Asymetrix Digital Video
    Producer and Asymetrix WebPublisher.

    Intel Page

    U.S. Robotics markets the Bigpicture Video capture card and NTSC
    camera for about $249.99 (7/22/97).  The video capture card is a PCI
    half card with a single RCA jack for the NTSC composite video in and a
    +5 Volt, 1 Amp power output jack for the NTSC camera.  The video
    capture card uses the single Brooktree Bt848 chip, a complete video
    capture system on a single chip.

    Personally, I was impressed that they could get the entire video
    capture system on a single chip.  More information on the Bt848
    can be found at:

    Brooktree Bt848 Press Release

    Bigpicture can capture NTSC composite video at 30 frames per second at
    320x240 or 160x120 resolution.

    Bigpicture also comes in versions with U.S. Robotics modems.  The idea
    is that this can be a PC video phone.

    Bundled software includes Kai's Power GOO Special Edition, Asymetrix
    Digital Video Producer to capture and edit video, VDONet's VDOPhone (trial
    edition), and VDONet's VDOLive player.

    MINI-REVIEW

    I intalled the Bigpicture video capture system under Windows 95b (OEM
    Service Release 2) on a 200 MHz Pentium with MMX, 32 MB RAM, two
    Western Digital IDE hard drives (2GB and 5 GB), and a 12x CD-ROM.

    The installation was difficult due to resource conflicts.  At first
    the video capture card appeared to conflict with the SupraExpress 336i
    PnP modem in my PC.  After reinstalling a few times, the video
    capture card started to work, but the modem stopped working.  A conflict
    between the modem (an ISA card modem) and the COM1 serial port was
    reported in the Windows 95 Device Manager (Control Panel | System |
    Device Manager tab).  I fixed this by disabling the automatic
    settings on the modem and changing the IO address.  I left the COM1
    port (which I don't use) and the modem using the same IRQ (Interrupt
    Request) level.

    While the documentation provides some pointers on these conflicts, I found
    the problem frustrating and difficult to fix although I am moderately
    familiar with PC installation and configuration.

    Once fixed, the camera and video capture card worked fine.  My modem
    seems to work fine.  I can capture video and use the modem at the same
    time.

    U.S. Robotics
    7770 North Frontage Road
    Skokie, IL  60077-2690

    http://www.usr.com/

    Old Video Capture Cards (ISA)

    Some widely used older, 16-bit ISA cards, are:

    Video Spigot from Creative Labs
           - 16-bit ISA Card
           - RCA Jack for Composite (NTSC/PAL/SECAM) Video Input
           - S-Video Connector
           - Windows 3.x Drivers (16 bit)

    Media Vision Pro Movie Studio
           - 16-bit ISA Card
           - RCA Jack for Composite (NTSC/PAL/SECAM) Video Input
           - S-Video Connector
           - Windows 3.x Drivers (16 bit)

    Intel Smart Video Recorder Pro
           - 16-bit ISA Card
           - RCA Jack for Composite (NTSC/PAL/SECAM) Video Input
           - S-Video Connector
           - Windows 3.x Drivers (16 bit)
                    - Version 2.20.061 (known to run under Windows 95)

           The Smart Video Recorder contains chips to accelerate
    and implement Intel's Indeo 3.x and YVU9 proprietary formats.
    These allowed it to capture video with Indeo compression on 486
    machines even though Indeo encoding is very compute intensive.
    The special chips on the board encoded the video instead of the
    PC's CPU.

           Intel is no longer supporting the Intel Smart Video Recorder
    (Oct. 1997).  Drivers and other support information are still available
    at the Intel web site.

           I've successfully installed and used the Intel Smart Video
    Recorder Pro on two different machines under Windows 95 with
    Driver Version 2.20.061 of the drivers for this card.

    Video Capture through PC Parallel Port

    A few products enable video capture through the parallel port of
    your PC.  In principle, this eliminates the difficulties of opening
    your PC case and installing a video capture card.  A parallel port
    capture system consists of a camera and/or adapter that plugs into
    the parallel port of your PC and some associated software - usually
    Microsoft Windows drivers and applications.

    Alaris QuickVideo Transport

    Alaris QuickVideo Transport is an adapter that plugs into a PC-compatible
    Parallel Port with 25-pin connector.  QuickVideo Transport accepts analog
    video in NTSC, PAL, and SECAM from RCA plug/composite and S-Video sources.
    It can be used with Camcorders, Digital Cameras, and VCR's.

    Alaris Corporation
    47338 Fremont Boulevard
    Fremont, CA  94538
    (800) 317-2348 (Voice)
    (510) 770-5700 (Voice)
    (510) 770-5769 (FAX)

    sales@alaris.com

    http://www.alaris.com/

    http://www.dartek.com/products/qvtransport.htm

    Connectix QuickCam

    Color QuickCam is a small solid-state camera that plugs into the
    PC parallel port.

    http://www.connectix.com/

    What to do about horizontal tearing in the video?

    In horizontal tearing, part of the video is displaced horizontally
    from where it should be.  For example, a flag pole might be displaced
    to the right creating a zig-zag or even a break in the pole.

    In the diagram below, think of each line as a video scan line:

    ------------------------------
              | |
              | |
              | |
              | |
               | | (tearing begins here)
               | |
               | |
               | |
                | | (more here)
    ------------------------------

    Tearing is a common problem when capturing video from the output of an
    analog video tape such as a VCR.  It can happen in other contexts as
    well.

    Analog video such as NTSC, PAL, and SECAM composite video has a
    sychronization signal at the end of each horizontal scan line and a
    vertical synchronization signal at the end of each frame.

    The motors and mechanical parts in the transport mechanism of a
    video tape player can slip slightly, causing the analog signals and
    horizontal synchronization signals to arrive at slightly incorrect
    times.  Video monitors, capture cards, and other video equipment
    have a tolerance for jitter in the timing of the synchronization
    signals.  Tearing occurs if this tolerance is exceeded.

    Digital video capture cards can be very sensitive to the timing jitter
    in the output of video tape players.  Tearing will occur because the
    synchronization is off.  Capture cards are frequently more sensitive
    than analog video monitors and other analog video equipment which are
    better designed to handle timing jitter in the analog signals.

    Devices called Time Base Correctors (TBC) can adjust for jitter in
    the timing of the analog video synchronization signals and other
    distortions of the analog signals.  TBC's are available as plug-in
    cards for PC's and as black boxes inserted between the video
    source and the video capture card.

    Time Base Correctors are available from:

    Prime Image Inc.
    http://www.primeimageinc.com/

    Return to Top

    Hard Drive Video Capture Issues

    Digital video capture requires writing data to the PC hard disk
    at sustained very high data rates.  The higher the resolution and
    quality of the digital video, the higher the data rate the hard disk
    must handle.

    1. Defragment the hard disk.  This allows the PC to write the
    digital video (the AVI file) to contiguous disk sectors without
    stopping to skip the drive head over used regions.

    2. Scan the disk and fix any bad sectors if possible.

    3. Conventional hard drives pause the drive heads for thermal
    recalibration which slows their ability to write data to the
    hard disk.  Special AV (Audio/Video) hard drives (which cost
    more) disable the thermal recalibration during data writing.

    This supposedly allows an AV hard drive to capture higher video
    data rates.  Note that you can capture video onto conventional
    hard drives.  People do this all the time.  But for very high
    end video capture, you may need a special AV drive.

    Video Capture Cards with Windows NT Drivers

    The DPS (Digital Processing Systems) Perception ISA video capture card.

    The DPS PVR-2500 Perception Video Recorder (PCI-bus)
    for Intel and DEC Alpha Windows NT workstations.  An optional
    AD-2500 real time video capture daughter card adds component,
    S-Video, and composite video inputs to this high-end product.
    The AD-2500 is the actual capture card in this product which is
    a "digital video disk recorder system".

    The DPS HVR-2800 Hollywood Video Recorder (PCI and ISA).  The PCI
    version is available for both Intel and DEC Alpha Windows NT
    workstations.  The Hollywood is also a "digital video disk
    recorder system", more than a simple video capture card.

    DPS makes PC video products aimed at the studio and broadcast
    production markets.

    http://www.dps.com/

    The Truevision Targa 2000 video capture card.

    http://www.truevision.com/

    The Osprey 100 PCI Video Capture Card works under Windows NT as well
    as Windows 95.  The Osprey Systems Division of Multimedia Access
    Corporation makes a line of video capture cards, all or some with
    drivers for Windows NT 3.51 and NT 4.0

    The Osprey 100 is a PCI board based on the BrookTree Bt848 single-chip
    video capture device.  The version of the Osprey 100 that I have seen
    has one S-Video input and two composite (NTSC or PAL) video inputs.
    The Osprey 100 has software and drivers for both Windows NT 3.51 and
    Windows NT 4.0

    The NT software for the Osprey 100 (10/8/97) consists of the VidCap32
    video capture application, a Video for Windows Capture Driver, and
    a Windows NT Device Driver for the Osprey.  There are at least
    two versions of the software: 0.93(beta) and 0.95(beta).  On
    10/7/97, the 0.95(beta) was available by anonymous ftp from
    Osprey.

    The anonymous ftp site also contained directories for a 1.00 version
    of the software that could not be downloaded (10/7/97).

    The 0.95(beta) software from Osprey is a single Windows executable
    that easily installs VidCap32 and the drivers, also updating the
    NT taskbar, registry, and so forth.

    The Osprey 100 with the 0.95(beta) drivers captures video under NT 4.0
    with both VidCap32 and the Progressive Networks RealEncoder software.
    At least in some of my experiments, VidCap32 exhibited some problems
    although it was possible to repeatedly capture AVI clips.  Problems
    included flawed updating of the VidCap32 window and sluggish
    performance of the NT system until rebooted.  The problems appeared
    intermittent.

    System Tested:

    (Micron Millenium PC) Intel Pentium 132 MHz with 48 MB RAM
    Phoenix BIOS Version 4.04 M-M
    Windows NT 4.0 (Build: 1381  Service Pack 2)
    Osprey 100 PCI Video Capture Card with 0.95(beta) drivers for Windows NT
    Diamond Multimedia Stealth64 Video 2001 PCI (2MB RAM)
    Creative Labs Vibra 16 ISA sound card with NT 4.0 Drivers
    Intel 82557 based 10/100 Ethernet PCI Network Interface Card (NIC)
    IDE CD-ROM (ATAPI 1.2) Dual Channel PCI IDE Controller
    Inexpensive NTSC video camera (bundled with LiveLan videconferencing product)

    http://www.osprey.mmac.com/

    Return to Top

    How to Create AVI Files from Television

    To create an AVI file from your favorite television program, there
    are two approaches.

    Television is transmitted over radio frequency (RF) waves.
    The NTSC, PAL, or SECAM composite analog television signals
    are modulated onto high frequency radio waves to create the
    familiar television channels.  In the United States, television
    channels 2 through 69 cover the range from 54 MHz to
    806 MHz.  An NTSC channel uses about 4 MHz of frequency
    range.

    Traditional analog Cable Television (CATV) works much the
    same except that the RF is sent over coaxial cables instead of
    the open air.

    A device usually referred to as a tuner can demodulate the
    television radio frequency signal and extract the NTSC, PAL, or
    SECAM composite analog signal.   Television sets, Video
    Casette Recorders (VCR) and cable television set top boxes contain a tuner.

    The easy way to turn your favorite television show into an
    AVI is to record the show to a videotape using a VCR.  The VCR
    can output the composite analog video signal to a video
    capture card in your PC (see the section on creating AVI from
    composite analog video).

    A number of companies market TV tuner cards for PC's.  In this
    case you can feed the television radio frequency (RF) signal
    into the TV tuner card which will demodulate the NTSC, PAL, or
    SECAM signal.  Use an associated video capture card to convert
    the demodulated composite analog video to an AVI files.

    ATI Technologies, for example, markets a PC TV Tuner.

    It is probably simpler to use a VCR than a PC TV Tuner card.
    A VCR circumvents the often painful installation problems
    with PC hardware.

    Return to Top

    How to Create Morph Effects for AVI

    Morphing is a technique for progressively transforming one image
    into another image, or one video sequence into another.
    For example, a video producer might morph one face into another.

    STOIK Software markets a tool called

    Morph Man for Windows 95

    http://www.stoik.com/

    Morph Man can create AVI files with a still image morphing into
    another still image, or one video sequence morphing into another.

    STOIK provides a demonstration version of Morph Man for
    evaluation purposes.

    Return to Top

    Reinstalling Microsoft's Video for Windows in Windows 95

    This requires the Windows 95 CD-ROM.  One can either reinstall
    Windows 95 (probably not what you want to do) or manually remove
    Video for Windows and manually reinstall the files that make up
    Video for Windows under Windows 95.

    Truevision's Technical Support has a good note on how to do this.
    Although it does not appear to be copyrighted, I felt uncomfortable
    cutting and pasting it into the AVI Overview.  The URL is

    http://www.truevision.com/Support/vfwwin95.html

    Return to Top

    How to get Microsoft ActiveMovie 1.0

    ActiveMovie is Microsoft's successor to Video for Windows.
    ActiveMovie 1.0 is shipped with OEM Service Release 2 of Windows 95.
    ActiveMovie 1.0 is also bundled with Microsoft Internet Explorer for
    Windows 95 and Windows NT 4.0.  ActiveMovie 1.0 is available for Windows
    95 and Windows NT.

    ActiveMovie 1.0 plays AVI, QuickTime, and MPEG files.

    IF YOU DON'T HAVE OEM SERVICE RELEASE 2 of 95!

    ActiveMovie 1.0 is incorporated in Internet Explorer.  A full
    install of Internet Explorer can be downloaded from Microsoft's
    web site.  Microsoft also provides a free download of just
    ActiveMovie 1.0.  Both can be downloaded from the Microsoft
    Internet Explorer web site as described below:

    http://www.microsoft.com/ie/

    Click on Internet Explorer for 95 and NT 4.0 link to get to the
    download area.  There is a pulldown list of products. (6/6/97).
    Select "Active Movie 1.0 for Windows 95 and NT 4.0" to get just
    ActiveMovie 1.0

    Click the "Next" button.

    This brings up a page to select the language from another pulldown
    list.  Pick your language (e.g. U.S. English).

    Click the "Next" button.

    This brings up a list of links to download sites for amov4ie.exe

    Dowload this executable and run.  It installs Active Movie 1.0

    Return to Top

    Installing and Configuring AVI Codecs in NT 4.0

    The Microsoft Windows NT 4.0 applications and operating systems
    are configured through the NT Registry, which is similar to the
    Windows 95 Registry.  Although Windows NT 4.0 and Windows 95 share
    a desktop user interface, there are some significant differences
    between the NT 4.0 Registry and the Windows 95 Registry.

    In NT 4.0, the 32 bit video codecs do not appear to be listed
    in a [drivers32] section in the SYTEM.INI file.  This differs from
    Windows 95.  The Video for Windows configuration information appears
    to be stored almost exclusively in the NT Registry in NT 4.0.

    The NT Registry can be viewed and modified through the Control
    Panel or through the REGEDT32 Registry Editor.  Use the Control
    Panel unless you really know what you are doing.

    You can view and change which audio and video codecs are installed
    through the Multimedia icon in the Windows NT 4.0 Control Panel (in My
    Computer).  This works much the same as the Multimedia icon in the
    Windows 95 Control Panel (in My Computer).

    Double click on the Multimedia icon to launch the Multimedia applet.
    Select the Devices tab within the Multimedia applet.  This tab gives a
    list of installed multimedia drivers including hardware device
    drivers, MCI drivers, and audio and video codecs.  It includes two
    sections:

    (cute icon)Video Compression Codecs
    (cute icon)Audio Compression Codecs

    Double-click on these to view the installed audio and video codecs.

    There are buttons to Add.. or Remove... multimedia devices
    including the audio and video codecs.

    To Add a video codec, click the Add... button.  This gives an Add
    dialog box with a List of Drivers.  You may select from a list of
    drivers that the system knows about, such as "Cinepak", or select
    "Unlisted or Updated Driver".  If you need to use "Unlisted or Updated
    Driver" you will need a directory on a floppy disk, CD-ROM, or your
    hard drive containing the needed drivers and an INF (Setup Information
    ) file.  Depending on what you are doing, the needed directory may be
    on a floppy provided with a product, on the Windows NT installation
    CD-ROM, or constructed manually by you or someone else.  The INF file
    provides directives for installing the driver including changes to the
    Registry.  Windows read the INF file and follows the directives.

    You may need a different (NT specific) INF file to install under
    Windows NT 4.0 than Windows 95.

    The 32 bit video codecs are installed in the \WINNT\SYSTEM32
    directory used for 32 bit drivers, analogous to the \WINDOWS\SYSTEM
    directory in Windows 3.x

    NOTE: Using the Remove... button to remove a codec does not
    remove the codec files from the hard drive.  Nor does the
    codec disappear from the list of codecs displayed when
    Add... is selected.  Remove... appears to simply disable
    the video codec so that it is not invoked.  Use Add... to
    enable the codec after Remove...

    The other option to install a codec is to use an installation
    program that will appropriately update the NT Registry and copy
    the needed files to the correct directories in the NT file
    system (such as \WINNT\SYSTEM32).  In many cases, you can get
    an install program from a Web site or other convenient source.
    In this case, you do not need to use the NT Control Panel.  The
    install program does all of the work.

    NT 4.0 appears to be able to use the same 32 bit video codecs as
    Windows 95, for example Cinepak for Windows 32.  Keep in mind that
    device drivers for hardware are different between Windows 95 (which
    uses VxD's) and NT 4.0.  Only some parts of Windows 95 and NT 4.0 can
    use the same code.

    Return to Top

    How to change frame rate of AVI files

    You may want to change the frame rate of an AVI.  For example, you
    may want to convert a video captured at 30 frames per second (NTSC)
    to 15 or 10 frames per second to reduce the size of the file.  This
    type of conversion throws away frames; it does not play the AVI in
    slow motion.

    Video editors usually contain this function.

    For example, the free VidEdit video editor can convert the frame rate
    of AVI files.

    Select

    Video | Convert Frame Rate ...

    in VidEdit

    For more on video editors, see Video Editors

    Return to Top

    How to crop an AVI file

    Microsoft VidEdit 1.1 can crop an AVI file, that is create
    another AVI file with a rectangular region of the original AVI
    file:

    Select

    Video | Crop ...

    in VidEdit

    Undoubtedly, many other AVI video editors can crop AVI files.
    Microsoft VidEdit 1.1 has the special virtue of being free and
    available on the Web.

    For more on video editors, see Video Editors

    Return to Top

    How to edit AVI files:

    Several applications exist to edit (cut, paste, etc.) AVI files.
    Such applications are known as video editors.  Sometimes such
    digital video editors are called non-linear editors, in contrast to
    traditional videotape or film based editing.

    Video editors range from very simple applications to very sophisticated
    applications.

    Video Editor Features

    Common video editor features include:

    	* cut, paste, and deleting video sequences
            * selecting video codec and compression settings
            * selecting audio codec and compression settings
            * converting video frame rate
            * converting audio sampling rate
            * adjusting synchronization of audio and video
            * converting color depth of video (24, 16, or 8 bit usually)
            * converting to NTSC or PAL safe colors
            * adding transitions and other special effects
            * applying image processing filters to video
            * adding text and subtitling
            * much more in high end video editors....

    VidEdit

    The full 16 bit (Windows 3.x) Video for Windows from Microsoft (not
    the "Run Time") shipped with a simple video editing program VidEdit.
    VidEdit can cut, paste, concatenate, add sound, and do many other
    things to AVI files.  VidEdit can be downloaded from a number of
    sites on the Internet.

    WARNING: Microsoft's NetShow audio/video/multimedia streaming
    product includes a number of new video codecs such as Microsoft MPEG-4 and
    VDONet's VDOWave.  The NetShow Player installation installs decode
    only versions of these codecs, none of which will display in the list
    of codecs in VidEdit, sensibly enough.  The NetShow Tools install
    codecs with encoder capabilities.  These will show in the VidEdit
    list of codecs.  See the section on NetShow for further information.

    Some video editors such as Asymmetrix Digital Video Producer (DVP)
    4.0 will show the NetShow decode-only video codecs in the list of
    codecs for compression, even though these codecs do not compress
    video.  In fact, if these decode-only codecs are selected to
    compress a video clip, the AVI file is not compressed although an AVI
    file is generated.

    I was quite confused by this behavior until I understood the
    distinction between the NetShow codecs with encode enabled and the
    decode-only video codecs.

    VidEdit does recognize the following 32 bit Video for Windows codecs:

         Intel Indeo (R) Video Interactive [32]
         Intel Indeo (R) Video R3.2 [32]
         Intel Indeo Raw R1.2 [32]
         Microsoft Video 1 [32]
         Cinepak Codec by Radius [32]
         Indeo video 5.0 [32]

         VDONet VDOWave [32]
         MPEG-4 High Speed Compressor [32]

    As far as I can tell Microsoft is not currently distributing VidEdit.
    However, a file winvid.zip is bouncing around the Net.  This file
    includes the Video for Windows run time along with a number of Video Tools
    including VidEdit and VidCap (Microsoft's video capture tool).

    Disclaimer: I am not certain what the legal restrictions on
    VidEdit or winvid.zip are.

    EarthStation 1 Archive of Windows Freeware and Shareware

    Microsoft's VidEdit Video Editor is also available at:

    EarthStation1: Recommended Shareware and Freeware Page

    http://www.attention.net/wandarer/software.html

    The preceding link now contains links to mirror sites for the EarthStation 1
    archive.

    The LaJolla Earthstation 1 mirror site is:

    http://earthstation1.simplenet.com/software.html

    Once you have reached the EarthStation 1 page, click on the Graphics
    link to jump to the Graphics Editors section.  VidEdit is in this
    section.  Scroll down a few pages to find VidEdit or use the find string
    on this page feature of your Web browser.

    Click to download VidEdit.

    There is also a mirror site at:

    http://mirrors.org.sg/earthstation/software.html

    Alchemedia Inc. Shareware Page

    The Alchemedia Inc. shareware page contains a file videdit.zip with
    VidEdit.

    http://www.alchemediainc.com/sharewar.html

    Greg Hughes Home Page

    winvid.zip is available from Greg Hughes home page:

    http://www.public.iastate.edu/~gregngng/

    Note that I found this site hard to connect to although I was eventually able
    to download winvid.zip

    Personal AVI Editor

    FlickerFree markets an inexpensive/shareware avi editor for
    Windows called Personal AVI Editor.

    Personal AVI Editor ($49.95 + Shipping and Handling)
    http://www.flickerfree.com/index.html

    MGI VideoWave

    MGI Software Corporation (Toronto, Canada) markets a PC video
    capture and editing program called VideoWave.  VideoWave supports
    AVI, QuickTime, and MPEG.  Suggested price: $99

    http://www.mgisoft.com/

    Corel Lumiere Suite for 32-bit Windows

    Lumiere is a new contestant in the PC video editing game. (May, 1997)

    Corel Lumiere Suite for 32-bit Windows
    List Price on Corel Web Site: $89 (US)

    Corel Corp.
    Ottawa, Ontario, Canada
    (800) 772-6735
    (613) 723-3733
    FAX: (613) 728-9790
    http://www.corel.com/

    Corel's Lumiere Web Page

    Ulead Media Studio Pro

    Ulead's Media Studio Pro ( around $300 )
    http://www.ulead.com/

    Asymetrix Digital Video Producer

    Asymetrix's Digital Video Producer (DVP)

    Typical Retail Price: $69.95 (Sept. 1997)

    A simple digital video capture and editing program for Windows 95 and
    Windows NT.  DVP is bundled with many video capture cards and is
    also available retail.  More information is available at the Asymetrix
    Web site.

    http://www.asymetrix.com/

    Adobe Premiere

    Adobe Premiere is the reigning king of desktop video editing
    programs.  Versions exist for both the PC/Windows and the
    Macintosh.

    Adobe Systems Premiere ( around $500 )
    http://www.adobe.com/

    SpeedRazor

    in:sync produces SpeedRazor Mach 3.51 (5/16/97), a professional
    non-linear editing (NLE) video editor for Windows NT for the
    Broadcast industry.  This can handle AVI as well as other formats.

    Speed Razor (not cheap)
    http://www.in-sync.com/

    Return to Top

    Fast Movie Processor

    October, 1998.
    Fast Movie Processor, version 1.41
    Copyright 1997,1998 Robert Tibljas and Zeljko Nikolic

    ABOUT FAST MOVIE PROCESSOR (FMP)

    The program's purpose is to convert and process image sequences and
    movies. While converting it can apply many image filters and
    functions like emboss, brightness, contrast, gamma correction, blur,
    sharpen, mirror and others. Invaluable if you need to construct an
    AVI movie, change resolution of images or perform quick changes and
    adjustments. Program is easy to use and highly optimized for speed.
    Disk usage is reduced to the minimum.

    DISTRIBUTION

    This program uses shareware distribution concept. If you intend to
    use Fast Movie Processor only for non-commercial purposes you are
    not obligated to register. However, if you are using it for
    commercial purpose you must register it before.

    E-mail:     rapidi@planetall.com

    Home page:  http://www.bigfoot.com/~rapidi
                http://members.xoom.com/rapidi

    Return to Top

    Peck's Power Join

    A program to join AVI files end to end.

    http://members.tripod.com/~grok/video.htm

    Return to Top

    Editing and Converting WAV files

    AVI and WAV files are closely related.  WAV files are the sound file
    format, and frequently provide the source for the sound tracks in an
    AVI file.

    CoolEdit (PC)

    A good shareware sound editor and sound file format converter is
    Syntrillium Software's CoolEdit (Cool96) for Windows 3.1 and Windows
    95.  This supports many common sound file formats such as Apple's
    .aiff and Next/Sun .au files.

    http://www.syntrillium.com/10/index.htm

    GoldWave (Windows 3.1/95/NT)

    Another shareware sound editor and sound file format converter is
    GoldWave.

    http://www.goldwave.com/

    Macromedia's SoundEdit16 (Macintosh)

    Macromedia markets a sound editor for the Macintosh called
    SoundEdit16 + Deck II.  SoundEdit can open and save in WAV
    format.  For further information on SoundEdit, see the
    Macromedia Web site:

    http://www.macromedia.com/

    Sound Forge

    Sonic Foundry markets a digital sound editor for Windows called
    Sound Forge 4.0 (5/16/97)  Sound Forge includes support for importing
    AVI video and editing the sound to synchronize with specific frames in
    the AVI file.

    http://www.dg.co.il/Forge/forge.htm

    SpeedRazor (Windows NT 3.51 and 4.0)

    in:sync produces SpeedRazor Mach 3.51 (5/16/97), a professional
    non-linear editing (NLE) video editor for Windows NT for the
    Broadcast industry.  SpeedRazor can read and write WAV audio files.
    It has sophisticated multi-track stereo audio editing and mixing
    features.

    Speed Razor (not cheap)
    http://www.in-sync.com/

    Editing and Converting Sound Files on the Macintosh

    A Macintosh shareware utility SoundHack can read, write, and
    modify sound files on the Macintosh including Microsoft WAV
    format and AIFF.  Macintosh users can use SoundHack to convert
    AIFF and other Macintosh sound files to the WAV format for
    integration in AVI.

    http://www.imuse.com/Soundhack.html

    Return to Top

    How to output an AVI file to videotape:

    AVI files generated with a video editor such as Premiere or a 3D
    Animation program such as Caligari TrueSpace can be output to
    videotape (e.g. a VHS tape) using a hardware device known as a scan
    converter.  A scan converter converts the VGA signal intended for
    the computer monitor into an video signal, typically NTSC or S-Video.
    The video signal can then be input into a videotape recorder such as a
    VHS VCR.

    A scan converter may be a small box which resides between the computer
    and the monitor.  It may be integrated into a video card.  For example, ATI's
    new 3D XPRESSION+PC2TV video card includes NTSC and S-Video output as well
    as output to a conventional computer monitor.

    Configure the PC graphics in one of the modes supported by the scan conversion
    hardware and play the AVI file in full screen mode.

    Some manufacturers of scan converter (or similar) hardware:

    ATI Web Page

    VideoLogic Web Page

    PC Video Conversion claims to make a high quality scan converter
    called HyperConverter that converts from SuperVGA to broadcast quality
    NTSC/PAL video.  Less than $5000.

    PC Video Conversion

    Return to Top

    PC Video Chips and Cards

    The current (6/21/97) generation of graphics controllers for PC's
    incorporate a number of hardware features to improve playback of
    video, including AVI.  Video acceleration features have become
    standard in most chips.  As a consequence video chip and card
    marketing has increasingly emphasized 3D graphics acceleration
    features in an effort to differentiate chips and cards from different
    manufacturers.  These video acceleration features include hardware
    color space conversion and hardware scaling of video.

    Color Space Conversion

    Many video standards such as Indeo, Cinepak, and MPEG operate in
    a luminance - chrominance color space such as YUV, YCbCr, etc.  Computer
    monitors use RGB (Red/Green/Blue).  The decoded video signals must
    be converted from YUV to RGB for display.  Most video chips now provide
    dedicated hardware for this color space conversion.

    Hardware Scaling

    Displaying a video in a windows larger (or smaller) than the encoded
    aspect ratio involves duplication of pixels.  Complex filtering
    operations can reduce or remove blocking artifacts when a video is
    scaled up in size.  If scaling is performed in software using the
    PC's CPU, the scaling will absorb many CPU cycles, possibly resulting
    in degraded video playback depending on the speed of the CPU.  Most
    video chips now provide dedicated hardware for scaling video.

    Video Cards

    PC video cards are printed circuit boards.  Today (6/23/97), virtually
    all video cards are PCI cards, with a PCI bus connector along one side
    of the circuit board.  The video card will have at least a DB-15
    connector for the VGA cable to the computer monitor.  Video cards have
    a chip variously known as a graphics controller, graphics accelerator,
    video chip, video controller, or something similar.  The graphic
    controller is the heart and the brain of the video card.

    The card has one or more memory chips forming the video memory where
    the images are stored.  The video memory is known as a framebuffer.
    Video cards have a RAMDAC (Random Access Memory Digital to Analog
    Converter) which convertes the digital image stored in the framebuffer
    into an analog signal for the RGB monitor.  PC video cards have a ROM
    (Read Only Memory) with the VGA BIOS used during the PC boot process.
    There is also a clock that provides the timing signals for the entire
    board.

    Many video cards have a feature connector allowing an
    auxiliary card to be added to the main video card.  The auxiliary
    card adds additional features such as hardware MPEG decoding.

    Although AVI should be independent of the video chips and cards used in
    a PC, there can sometimes be problems or technical issues specific
    to a particular chip.  By far the most common PROBLEM is a subtle
    bug in a video chip driver or a subtle conflict between a video
    chip driver and another driver or piece of software on the PC.  Downloading
    and installing the latest video driver from the chip or card maker's
    Web site is a frequently successful fix for these problems.

    ALSO, Windows 3.x and Windows 95 use different Device Drivers than
    Windows NT 3.51 or Windows NT 4.0  Windows 3.x and 95 use Device
    Drivers known as VxD's for low-level hardware access.  NT uses its
    own device drivers.  If you use a video card or other hardware
    on an NT machine, you need to be sure to use the NT drivers!

    A number of video card companies such as Diamond Multimedia and
    STB that buy or license the controller chips from other companies such
    as S3 frequently write video card/chip device drivers with additional
    features or better quality than the device drivers provided by the
    chip company.

    Links to video chip and video card makers follow:

    ATI Technologies

    Diamond Multimedia

    STB Systems Inc.

    S3 Incorporated

    Tseng Laboratories

    Trident Microsystems

    Matrox

    Number Nine

    Cirrus Logic

    Rendition

    nVidia

    3dFX

    3dLabs

    A fairly comprehensive list of video chipsets, video cards, and
    miscellaneous other information may be found at:

    http://www.heartlab.rri.uwo.ca/vidfaq/chipset.tx
    t

    Video (Display) Cards with Windows NT Drivers

    Unfortunately, Windows 95 and Windows NT use different
    device drivers for the same hardware.  While Windows 95
    drivers are available for the vast majority of PC hardware, Windows
    NT drivers are harder to come by.  Video cards with
    NT drivers are listed below:

    Number Nine Revolution 3D  (Windows NT 4.0 Drivers)
    http://www.nine.com/

    Return to Top

    How to compress the audio sound track in AVI Files

    AVI files include support for compressed audio although they are
    frequently generated with uncompressed PCM audio.  The Windows
    Multimedia system includes a component called the Audio Compression
    Manager (ACM), an audio counterpart to the Video Compression Manager (VCM).
    The ACM enables installable audio codecs.

    Unfortunately not all authoring applications access the full ACM.  For
    example, the free VidEdit application from Microsoft, a simple video
    editor, only permits selection of various PCM audio encoding.  There
    is no way to compress the audio in an AVI file through VidEdit,
    although the Windows operating system, through the ACM, and the AVI
    file format do support audio compression.

    Historically, AVI files were frequently authored with video compression,
    usually Cinepak, and uncompressed PCM audio.  The size of the audio track
    could be reduced by using 8 bit mono (one channel) PCM audio at a
    11 KHz sample rate as the "audio format".  Microsoft VidEdit, for
    example, allows this.  AVI was used for compressing video on hard disks
    and CD-ROM's.  Hard disks and CD-ROM's have plenty of room for uncompressed
    audio but an uncompressed video quickly exceeds their capacity.
    Thus audio compression was not as critical as video compression.

    With the advent of the Internet, with typical bandwidth of a few
    Kbits/second, audio compression has become more important.

    AUTHORING TOOLS SUPPORTING AUDIO COMPRESSION (INCOMPLETE)

    Adobe Premiere 5.0 for Windows

    AUTHORING TOOLS *NOT* SUPPORTING AUDIO COMPRESSION (INCOMPLETE)

    Microsoft VidEdit 1.1

    Return to Top

    How to make AVI NTSC (or PAL) Safe

    AVI files can represent colors that are not supported by the NTSC or
    PAL analog video standards.  These colors correspond to
    synchronization and control signals in the NTSC or PAL video.  Such
    AVI files cause problems if translated to NTSC or PAL video.

    Equilibrium's DeBabelizer Pro for Windows 95 and NT 4.0 reads and
    writes about 90 common and not so common image file formats as well
    as AVI files.  In addition to translating between all of these formats,
    DeBabelizer Pro has a number of image processing functions.

    DeBabelizer Pro can remove colors from AVI files that are excluded by
    NTSC or PAL to create an NTSC or PAL safe AVI file.

    Equilibrium has a demonstration version of DeBabelizer Pro on its
    Web site.  This is a demonstration version.  The demonstration version
    adds the words Equilibrium (very large words) to all images and video that
    it processes.

    DeBabelizer Pro ($595 Suggested Retail Price)
    Equilibrium
    475 Gate Five Road, Suite 225
    Sausalito, CA  94965
    1(800)524-8651 or (415) 332-4343

    http://www.equilibrium.com/

    Return to Top

    The Phantom Final Frame when Viewing an AVI

    When playing or viewing an AVI with a number of Microsoft Windows
    applications, you will see a "phantom" final frame.  The "phantom" frame
    may appear as a blank frame or a duplicate of the last frame depending
    on the Windows application.

    For example, if you have a one second AVI file with 30 frames and
    you view this AVI file with Microsoft VidEdit 1.1, VidEdit will
    display positions that it numbers 0-30.  The 30 position will appear as
    a blank frame.  Note that 0-30 means 31 total positions; there is a
    "phantom" final frame.

    If you view the 30 frame AVI file with Microsoft Media Player, there
    will also be positions 0-30.  In this case, position 30 is a duplicate
    of frame 29.

    What is this?

    The MCIAVI driver has a concept of the "end" or "position after the last
    frame in an AVI".  In the 30 frame AVI example above, positions 0 through
    29 are the actual frames in the AVI file.  0 is the first frame, 1 is the
    second frame, and 29 is the last (30'th) frame.  Position 30 is the "end"
    or "position after the last frame in an AVI".

    The Microsoft Windows application, such as VidEdit 1.1 or Media Player,
    decides what to display for this "end" position.

    You can see this feature of the MCIAVI driver through the Media Player.
    Open an AVI file through Media Player.  Then, type Ctrl-F5 to invoke
    a dialog box for entering MCI (Media Control Interface) string commands.

    set time format frames
    status length               (would return 30 for the example above)
    seek to start
    status position             (returns 0)
    seek to end
    status position             (returns 30 - this is the "phantom" frame)
    seek to 29                  (this is the true last frame in the AVI file)
    seek to 0
    play
    status position             (returns 30)

    In conclusion, the "phantom" final frame represents the position after
    the last frame in the AVI file.  It is NOT a frame in the AVI file.

    Return to Top

    Binary File Editors for Viewing and Editing AVI Files

    Occasionally, you may need to view or edit an AVI file at the
    down and dirty byte level.  Use a binary file editor for this.

    Many binary file editors, including quite a number of free
    ones, exist.

    HexEdit

    Harmony Systems offers HexEdit, a free binary editor for Windows NT
    and 95, that can be downloaded from their web site:

    http://www.hsys.com/hex.htm

    SimTel Archives

    The SimTel collection of ms-dos software includes a section with
    many binary file editors.  There are many mirrors of the SimTel
    site.  One is:

    http://oak.oakland.edu/simtel.net/msdos/binaryed.html

    HEdit 2.1

    Trial versions of HEdit, a binary file editor, both for Windows 95/NT and
    Windows 3.1 are available at:

    http://www.yurisw.com/hedit/

    GNU Emacs (Unix)

    The GNU Emacs editor from the Free Software Foundation has a hexadecimal
    mode.  The GNU Emacs command to invoke this mode is hexl-mode.

    In GNU Emacs, type the META Key (ESC-x)

    Type: hexl-mode at the command prompt.

    The current buffer will switch into (Hexl) mode.

    On my Unix system (Sun), I found the Hexl mode a little sluggish
    at times.  Sometimes I had to wait several seconds to get a response
    to scrolling or jumping to the start of the AVI file.  Emacs modes
    are usually implemented in interpreted LISP; this may be the reason.

    beav (Unix)

    beav, a binary file editor and viewer, is available for Unix.

    beav displays the contents of a binary file as both hexadecimal and
    ASCII in side by side views.

    beav can edit as well as view binary files such as AVI files.

    Unix Prompt% beav file.avi

    od (Unix)

    od is a common Unix command.  It is NOT an editor.  od
    stands for Octal Dump.

    od file.avi | more    (Octal Dump of AVI File)

    od -x file.avi | more   (Hexadecimal Dump of AVI File)

    od -a file.avi | more   (ASCII Dump of AVI File)

    Return to Top

    RIFF and AVI Parser/Viewers

    VidTrace

    VidTrace is a 32-bit Windows console application for Windows 95 and
    Windows NT that I wrote to parse and display RIFF and AVI files.
    VidTrace displays the RIFF Forms, LISTS, and CHUNK.  VidTrace also
    understands the AVI header format, audio stream header format, and
    video stream header format.

    Sample output of VIDTRACE some-file.avi

    RIFF (139086) AVI
     LIST (2004) hdrl
      avih (56)
       Microseconds Per Frame: 33333
        30.000300 Frames Per Second
       Maximum Bytes Per Second: 1727488
       Pad to Multiples of This Size: 6050647
       Flags DWORD (hex): 710
        FLAG: (AVIF_HASINDEX)  AVI File Has 'idx1' chunk
        FLAG: (AVIF_ISINTERLEAVED)  AVI File is Interleaved
       Total Frames: 239
       Initial Frames: 23
       Number of Streams: 2
       Suggested Buffer Size: 57582
       Width in Pixels: 160
       Height in Pixels: 112
       Scale (MAY BE UNUSED): 0
       Rate (MAY BE UNUSED): 3220642425
        Samples Per Second (MAY BE UNUSED): 3220642425
       Start of AVI File (MAY BE UNUSED): 27920
       Length of AVI File (MAY BE UNUSED): 4294967295
      LIST (116) strl
       strh (56)
        Stream Type (Four Character Code): 'vids'
         'vids' is Four Character Code for Video Stream
        Installable Compressor (Four Character Code): 'vdow'
         'VDOW' is Four Character Code for VDONet VDOWave Video Codec
        Flags (hex): 0
        Priority (MAY BE UNUSED) (hex): 0
        Language Code (MAY BE UNUSED) (hex): 0
        Initial Frames: 0
        Scale: 33333
        Rate: 1000000
        Start: 0
        Length: 239
        Suggested Buffer Size: 1340
        Quality: 0
        Sample Size: 0
        Frame (MAY BE UNUSED OR ABSENT): 0 0 0 2170023936
       strf (40)
        Windows Bitmap Header
        Number of Bytes Required by Bitmap Structure: 40
        Width of Bitmap in Pixels: 160
        Height of Bitmap in Pixels: 112
        Number of Planes: 1
        Number of Bits Per Pixel (1,4,8,16,24, or 32): 24
        Compression Mode (hex): 574f4456
         COMPRESSION: Custom Compression 'VDOW'
        Size of Image in Bytes: 53856
        Horizontal Resolution in Pixels per Meter: 0
        Vertical Resolution in Pixels per Meter: 0
        Number of Color Indices Actually Used by the Bitmap: 0
        Number of Color Indices Considered Important to Display Bitmap: 0
      LIST (92) strl
       strh (56)
        Stream Type (Four Character Code): 'auds'
         'auds' is Four Character Code for Audio Stream
        Installable Compressor (Four Character Code): ''
         '' is Four Character Code for Uncompressed Audio
        Flags (hex): 0
        Priority (MAY BE UNUSED) (hex): 0
        Language Code (MAY BE UNUSED) (hex): 0
        Initial Frames: 23
        Scale: 1
        Rate: 11025
        Start: 0
        Length: 87512
        Suggested Buffer Size: 368
        Quality: 0
        Sample Size: 1
        Frame (MAY BE UNUSED OR ABSENT): 0 0 0 2170023936
       strf (16)
        Windows Waveform Audio Header
        Waveform Audio Format Type (hex): 1
         Audio Format (WAVE_FORMAT_PCM): Microsoft Pulse Code Modulation Audio
        Number of Channels of Audio: 1
        Samples Per Second: 11025
        Required Data Transfer Rates (Bytes Per Second): 11025
        Block Alignment in Bytes: 1
        Bits Per Sample: 8
        Size of Extra Format Information Appended to End of WAVEFORMATEX Structure (Bytes): -15736
      vedt (8)
      JUNK (1688)
     LIST (104908) movi
      LIST (380) rec
       01wb (367)
      LIST (380) rec
       01wb (368)
      LIST (380) rec
       01wb (367)
    .
    .
    .
      LIST (16) rec
       00dc (4)
     idx1 (11840)
     DISP (21)
     DISP (20268)

    Download VIDTRACE

    Microsoft RIFFWALK

    Microsoft distributes a command line utility called RIFFWALK with the
    16-bit Video for Windows 1.1e Development Kit that parses the
    structure of RIFF and AVI files, displaying the file structure in RIFF
    Forms, LISTS, and CHUNKS.

    Sample output of RIFFWALK some-file.avi

    00000000    RIFF (00021F4E) 'AVI '
    0000000C        LIST (000007D4) 'hdrl'
    00000018            avih (00000038)
    00000058            LIST (00000074) 'strl'
    00000064                strh (00000038)
    000000A4                strf (00000028)
    000000D4            LIST (0000005C) 'strl'
    000000E0                strh (00000038)
    00000120                strf (00000010)
    00000138            vedt (00000008)
    000007E8        LIST (000199CC) 'movi'
    0001A1BC        idx1 (00002E40)
    0001D004        DISP (00000015)
    0001D022        DISP (00004F2C)
    00021F56

    The Video for Windows 1.1e Development Kit is included with the
    16-bit SDK's in the Microsoft Developer Network CD-ROM's.

    Bill Luken's RIFFSCAN

    RIFFSCAN is another DOS console application that prints out
    a human readable ASCII trace of RIFF and AVI files.

    http://home.att.net/~wluken/bill2sw.htm

    Return to Top

    Effective Use of Video on a Web Page

    The limited bandwidth of the Internet is the bane of effective
    use of video on a Web page.  Video clips on a web page need to
    be small.  Even then downloading a video clip can take several
    minutes, hours over a 28.8 modem to someone's home.  The longer
    the wait, the better the video should be!

    FIRST AND FOREMOST, tell a story!!!  A video clip without a
    story is usually boring.  A story can be told in 30
    seconds, the duration of many television advertisements.  Some
    stories can be told in less time.  Because of the bandwidth
    limitations of the Internet, even 30 seconds is a big file, several
    megabytes.

    Characters, human personalities, sell.  Sex sells.  Violence
    sells.  Talking heads (your company's CEO saying "Welcome to our
    great Website") tend to be boring.

    USE AUDIO!  Sound makes a world of difference.  Use base, lower
    frequencies in the soundtrack.  Human beings are more sensitive to
    low frequency sound.   A soundtrack with more base tends to sound "better" to
    most people.  Most computer speakers are very cheap and don't
    reproduce high frequencies well anyway.  You will likely cheat
    on higher frequencies to reduce bandwidth use by the audio as well.

    TECHNICAL ISSUES

    For widest distribution and ease of viewing:

    Provide video clips as AVI using the Cinepak codec.  For maximum
    distribution, also provide flattened QuickTime files again using
    the Cinepak codec; these can be played on both PC's with QuickTime
    for Windows and on Macs.  Provide MPEG-1 clips as well.

    Give the size of the video file in KBytes or MBytes in text as part of
    the link to the video file.  This way the viewer can estimate how long
    it will take to download the file if they wish to.

    If you use less standard codecs or file formats to get smaller file
    sizes, provide links to download the needed viewers or codecs.
    Provide the AVI's with less standard codecs (e.g. VDOWave from VDONet)
    in addition to Cinepak versions.  Don't omit the Cinepak versions.

    VIDEO ACCEPTABILITY

    Video encoded at less than 15 frames per second usually looks very
    jerky to human viewers, like a slide show rather than smooth motion.
    Most viewers seem to perceive some jerkiness in 15 frame per second
    video.  The transition to smooth motion occurs somewhere in the range
    15-17 frames per second.  If motion is limited, frame rates below 15
    may look acceptable, although often not.

    The early motion picture industry standardized on 16 frame per second
    film, which seemed to provide smooth motion in most cases.  This
    appears to be the origin of the folklore in video engineering that
    16 frames per second is the transition to smooth motion.
    Modern film uses 24 frames per second.

    Image resolutions should be 320x240 or larger.  In some cases, smaller
    sizes such as 160x120 may work.  In general, most viewers find sizes
    smaller than 320x240 too small.

    DO NOT COMPRESS the video so much that unnatural artifacts such as
    blocking occur.  In general loss of fine details appears natural
    to human viewers.  This corresponds to changes in natural viewing
    conditions such as viewing an object at a distance or in poor lighting.
    Unnatural artifacts such as visible 4x4 pixel blocks or 8x8 pixel
    blocks jump out at most viewers and destroy the illusion of a natural
    image.

    AUDIO DISTRIBUTION

    For AVI, sound codecs aren't very standard.  Avoid using audio compression,
    especially more exotic codecs.  ADPCM may be ok.  Again, if you use
    an audio codec, make sure to include a link on your website to
    download the codec.  If possible, provide a version of the AVI without
    special audio codecs (and Cinepak video).

    AUDIO ACCEPTABILITY

    Uncompressed audio takes space.  You ALMOST NEVER need to use the 44
    KHz sampling rate.  At most, use 22 KHz sample rate.  Many people
    cannot hear the frequencies above 11 KHz (the sample rate is twice the
    highest frequency that the sampled audio data can represent
    faithfully).  People who can hear frequencies between 11 KHz and 22
    KHz are not very sensitive to these frequencies.

    See if the soundtrack works ok at 11 KHz 8 bit Mono (not Stereo).
    Use this low quality setting if you can get away with it (often this
    won't work).

    NOTE: You can select audio and video codecs, convert the frame rate,
    convert the audio sampling rate, and resize the video using video
    editor applications such as Adobe Premiere or VidEdit.  See the
    section on video editors:

    Video Editors

    TO REPEAT:

    TELL A STORY!!!  Many video clips in current (7/20/97) use on Web
    sites are very short, a few seconds, and really don't tell a story.
    These clips are boring!  So are most talking heads (I have one on
    my Web site and it IS boring).  Movie trailers, short television
    advertisements, etc. illustrate what is needed.  If you don't have
    a story, think seriously about dropping the video.

    See elsewhere in this overview for information on authoring AVI files
    and converting to QuickTime and MPEG-1.

    Return to Top

    How to embed an AVI file in a Web Page:

    A Simple Hypertext Link

    The simplest approach is to use the anchor tag

    < A HREF="http://www.somplace.com/movie.avi" > A Movie </A>

    In this instance, clicking on the link will cause the AVI file
    to be downloaded.  The browser recognizes that the AVI file is
    not an HTML document.  Typically, the browser invokes a helper
    application that can play the AVI file, such as Media Player under
    Windows 3.1.  The movie will appear in a separate window.  The browser
    may have a plug-in that provides support for AVI, in which case the
    video window will appear embedded in the HTML page.

    Web browsers such as Netscape and Internet Explorer know how to handle
    a file through a Content (MIME) type reported by the Web server.  For
    example, the MIME type for AVI files is video/avi.  The browser may
    contain a built-in decoder for this MIME type.  For example, JPEG and
    GIF still image compression decoding and viewing is built into
    Internet Explorer and Netscape.  The browser can be configured to
    invoke a helper application such as Media Player.  Helper applications
    are invoked as separate applications with their own windows.

    The browser can be configured to use a "plug-in" instead of a helper
    application.  A "plug-in" is a software component that extends the
    capabilities of the browser.  The "plug-in" handles input and presents
    output embedded within the page.  For example, a video plug-in's
    decoded video appears within the page, not as a floating window.

    In the case of a simple hypertext link, a browser with an AVI
    plugin will jump to a blank page with the AVI video appearing in
    a rectangle in the upper left corner of the blank page.  The video
    is not embedded in the page with the hypertext link.  It is
    necessary to use the Netscape EMBED HTML tag (see below) to produce a video
    embedded in the page.  Using the EMBED tag is different from using
    a simple anchor A tag (hyptertext link).

    If the browser is unable to handle a MIME type (no built-in capability
    exists and no helper application or plug-in is specified), the browser
    will present a dialog box asking the user to select an application,
    save the file to disk, or cancel the operation.

    In both Internet Explorer and Netscape, the user can configure the browser
    to use helper applications or plug-ins as desired.

    Netscape now provides a Netscape plug-in known as LiveVideo to play
    AVI files.  This plug-in should be installed in the \NETSCAPE\PLUGINS
    directory.  For the Windows 3.1 (16 bit) version of Netscape this
    plug-in is named NPAVI16.DLL.

    Digigami provides a plug-in for Netscape Navigator (Windows) called
    CineWeb that adds playback of AVI, QuickTime .MOV, and MPEG files.
    The URL is:

    http://www.digigami.com/CineWebPress.html

    Microsoft Internet Explorer HTML Syntax

    Microsoft's Internet Explorer 2.0 added attributes to the IMG tag that
    allow for inline video (an AVI file actually embedded in the page
    rendered by the Web browser).  These are the DYNSRC, CONTROLS, START, and
    LOOP attributes.  For example,

    < IMG DYNSRC="movies/movie.avi" CONTROLS SRC="movies/movie.gif" >

    This will embed the movie in the page with some simple playback controls
    for the user to select.  Browsers that do not support the DYNSRC attribute
    will use the SRC attribute and display the image movie.gif instead.
    Internet Explorer will ignore the SRC attribute.

    In the Microsoft spirit of a new API every week, Microsoft has added
    some new tags in Internet Explorer 3.0 and is discouraging use of the
    IMG tag and DYNSRC attribute.

    In Internet Explorer 3.0, Microsoft has added support for the Netscape
    EMBED tag, see the section on HTML for Netscape's LiveVideo below.
    Microsoft has also added a Microsoft specific OBJECT tag which does
    essentially the same things as EMBED and is overtly linked with
    Microsoft's OLE/COM/ActiveX environment.  Naturally Microsoft
    recommends using the OBJECT tag.

    Unlike Netscape Navigator, Internet Explorer on Windows does not use
    plug-ins, either from Micrsoft or 3rd parties, to view AVI.  Rather it
    invokes either the Video for Windows media player or the ActiveMovie
    ActiveX control.  If necessary, Internet Explorer is able to effectively
    embed the applications in the Web page.

    Microsoft has a copyrighted white paper "File References on HTML
    Pages" on their Web site that provides a detailed description of
    referencing AVI files on HTML pages for viewing with Internet Explorer.

    http://www.microsoft.com/devonly/tech/amov1doc/amsdk008.htm

    Since Microsoft reportedly has $9 billion in cash for acquisitions,
    lawyers, and other fun - and I don't, I will refrain from simply
    incorporating the document here.

    Netscape LiveVideo HTML Syntax

        If you hunt around the Netscape Web site you will find the following
    detailed specification of the HTML syntax for embedding an AVI file
    in a Web page for use with the LiveVideo Plug-in.

    LIVEVIDEO SYNTAX

    DESCRIPTION
         LiveVideo plays video files in AVI format. (Currently for Windows 95 and
         NT only.)

    HTML SYNTAX

         EMBED - Use this tag to place AVI movies into your Web document.

         SRC=[URL] - The URL of the source AVI file.

         AUTOSTART=[TRUE|FALSE] - Setting the value to TRUE allows the AVI movie to begin
         playing automatically when the Web page is loaded. The default is FALSE.

         LOOP=[TRUE|FALSE] - Setting the value to TRUE allows the AVI movie to play
         continuously until the user clicks on the movie to stop it from playing or goes to
         another page. The default is FALSE.

         WIDTH=[# PIXELS] - Use this attribute to display the width of the AVI movie.

         HEIGHT=[# PIXELS] - Use this attribute to display the height of the AVI movie.
         Standard sizes for movies are 90x120, 120x160, 180x240, and 240x320 (all size
         references are HEIGHT x WIDTH). These are all standard sizes using the 4:3 aspect
         ratio.

    ALIGN=[TOP|BOTTOM|CENTER|BASELINE|LEFT|RIGHT|TEXTTOP|MIDDLE|ABSMIDDLE|ABSB
    OTTOM]
         - This attribute tells Netscape Navigator how you want to align text as it flows
         around the AVI movie. It acts similarly to the IMG tag.

    JAVA AND JAVASCRIPT FUNCTIONS
         play() - Starts playing the source file at the current location.
         stop() - Stops the currently playing video.
         rewind() - Rewinds the currently loaded video.
         seek(frame-number) - Sets the current frame of the video to the given frame
         number.

    Return to Top

    Sending AVI by E-Mail or Network News

    The original Internet e-mail system was designed for sending purely
    text messages using printable 7-bit ASCII codes (byte values from 0 to
    127 that represent printable characters).  Binary files such as AVI
    can include non-printing 7-bit ASCII control codes and values higher
    than 127.  These cause problems.

    The Network News system was built on top of the Internet mail system.
    Network News postings use the same text format as mail messages with
    some additional headers for news postings.  Network News postings use
    the same mechanisms to attach or embed binary files such as AVI to the
    message.

    There are two main ways to transfer binary files such as AVI
    by e-mail (and also the Network News system which is derived
    from e-mail).  The older method is UUENCODE.  UUENCODE is
    a utility that translates binary files into printable 7-bit
    ASCII codes that can be sent safely by e-mail.  Simply
    include the uuencoded file in the body of the e-mail
    message.

    The modern method is to use MIME, the Mulipurpose Internet Mail
    Extensions.  This is a standard for adding attachments to Internet
    e-mail, including binary files such as AVI.  MIME supports a number of
    schemes, notable base64 encoding, to represent binary files as
    printable 7-bit ASCII characters.  See the section on MIME for more information.

    More modern e-mail software include built in support for
    uuencode and MIME.

    LESS COMMON METHODS

    btoa

    btoa (binary to ascii) is another Unix utility for encoding binary
    files to printable 7-bit ASCII files.  btoa is less widely used than
    UUENCODE.

    BinHex

    Another method is to use the Macintosh program BinHex.  Like UUENCODE,
    BinHex translates a binary file into printable 7-bit ASCII codes that
    can be transferred over mail networks.  There are cases of AVI files
    being BinHex'ed and added to newsgroup postings as text MIME
    attachments.

    BinHex 4.0 files are identified by a first line:

    (This file must be converted with BinHex 4.0)

    followed by a blank line, followed by a colon, followed by the data.

    On the PC,

    (1) WinZip 6.2 (and later versions of WinZIP) can open and
    decode BinHex encoded files.  WinZip 6.2 also opens and
    decodes uuencoded, XXencoded, and MIME (base64, plain/text, and
    quoted-printable) files.

    http://www.winzip.com/

    (2) BinHex'ed files may be decoded using the PCBINHEX utility.

    For more information on BinHex, see:

    http://www.gis.at/infoalley/1095/31/what.html

    Microsoft Internet Mail

    In Microsoft's Internet Mail (included in Windows 95 OSR2 for
    example), click New Message to generate a new e-mail message.

    Select Insert | File Attachment to add an attachment, for example
    an AVI file.

    Select Format | Settings... to choose UUENCODE or MIME.  Internet
    Mail defaults to MIME.  One can also select UUENCODE.

    Internet Mail automates the binary file attachment process.

    Return to Top

    How to Encrypt AVI Files

    One option is to use the PGP (Pretty Good Privacy) program. PGP
    appears to have been developed to encrypt conventional e-mail
    messages, printable 7-bit ASCII characters which PGP's documentation
    calls "ASCII-Armored Text".  You need to encode binary files such
    as AVI using a binary to printable 7-bit ASCII encoder such as
    UUENCODE or BinHex.  Then, run PGP on the encoded text.

    In the case of E-Mail, there is a PGP-MIME standard for encrypted
    multimedia attachments to e-mail messages.

    PGP versions exist for Windows, Macintosh, and Unix.  PGP includes
    extensive documentation on its use.

    PGP at MIT for Non-Commercial Uses

    Pretty Good Privacy, Inc.

    Editorial Comment: PGP almost certainly provides excellent protection
    against most would-be non-governmental codebreakers.  PGP also
    emphasizes the threat of surveillance by the NSA, FBI, and other
    governmental agencies in its marketing literature, citing apparent
    efforts by the government to suppress public key cryptography in
    general and PGP specifically.  For example, Phil Zimmerman, the PGP
    author, was the target of a government investigation relating to PGP.

    Spy agencies, both foreign and domestic, play such a major role in
    funding research into cryptography and in most companies and
    organizations involved in communications security that it is very
    difficult to know if ANY well-known cryptography algorithms, whether
    or not obviously associated with the NSA as in DES or the Clipper
    chip, is secure against these agencies.

    These agencies might have the sense to appear opposed to the use of an
    algorithm which they in fact know how to break, to make a high
    profile but ineffective effort to suppress such an algorithm while
    quietly dealing with algorithms which they cannot break.

    Return to Top

    MIME types of AVI

    MIME stands for Multipurpose Internet Mail Extension.  This is a
    mechanism that was developed to support multimedia and other file type
    attachments to Internet e-mail.  MIME defines MIME types that identify
    the data type of the attachment.  The World Wide Web uses MIME types
    to identify the data type of files on Web sites.

    A MIME type consists of a type/subtype, for example

    image/jpeg

    for JPEG images.

    The MIME specification (IETF RFC 2046) specifies a type of video for
    video images.  The specification defines video/mpeg as the MIME type
    for MPEG video.  Beyond this, the MIME specification (IETF RFC 2048)
    specifies a mechanism for registering MIME types with the Internet
    Assigned Number Authority (IANA).  As of 5/16/97, the following
    video subtypes were registered with IANA:

    video/mpeg
    video/quicktime
    video/vnd.vivo
    video/vnd.motorola.video
    video/vnd.motorola.videop

    Thus, AVI has never been officially registered with IANA.  To view
    the complete list of registered MIME types:

    http://www.isi.edu/in-notes/iana/assignments/media-types/media-types

    More than one MIME type appears to be used in practice for AVI files.

    MIME types used for AVI:

    video/avi
    video/msvideo
    video/x-msvideo

    Note that according to the MIME specification the prefix "x-" indicates
    an unregistered, experimental MIME type.

    For extensive information on MIME, visit The MIME Information Page at:

    http://www.hunnysoft.com/mime/

    Return to Top

    Configuring Web Servers to Handle AVI Files

    Web servers are configured to send a MIME type to Web browsers to indicate
    what to do with a file on the Web site that the browser is viewing.
    For example, the MIME type image/gif indicates to a browser that it
    is viewing a GIF file.  Web servers must send the AVI MIME type(s) to
    Web browsers for files installed on the Web site.

    There are many Web servers.  Probably many are automatically configured
    to send a MIME type for AVI files (files with the extension .avi).
    The folowing explains how this configuration is done for some of the
    more popular Web servers.

    Apache httpd

    The free Apache httpd Web server is one of the most popular (perhaps the
    most popular) Web server in use (May, 1997).  This is a free implementation
    of the httpd daemon for Unix machines.  Apache is frequently run on
    Sun workstations used as Web servers.

    By default, Apache httpd looks in a configuration file httpd.conf for
    directives that configure Apache.  One of these directives is
    AddType

    AddType video/avi  .avi

    The example above would configure the Apache Web server (the httpd Unix
    daemon) to send the MIME type video/avi to a Web browser for files with
    the file extension .avi on the Web site.

    The Apache httpd daemon includes a command line option -f
    to override the default httpd.conf file name and file location.  The Web
    administrator can use this to set up an alternative configuration file.

    Apache allows users to add a file .htaccess in the root directory of
    their Web site which contains directives such as AddType.  In this way
    individual users may add or override the configuration of the Web
    server.  For example, my Web site did not send the x-world/x-vrml MIME
    type for .wrl (VRML) files.  Netscape with Live3D expected to see this
    MIME type for VRML "worlds".  I created a .htaccess file with

    addtype  x-world/x-vrml .wrl

    With this, my browser would correctly view VRML files.  The same could be
    done with AVI files.

    For further information on Apache, see the Apache Web site:

    http://www.apache.org/

    CERN (or W3C) httpd

    The CERN httpd is similar to Apache.  The CERN httpd defaults
    to looking in a configuration file /etc/httpd.conf  The configuration
    file contains configuration directives.  One of these is
    AddType

    AddType .suffix representation encoding [quality]

    For example:

    AddType .html text/html 8bit 1.0

    Extensive information on the CERN httpd web server, including a
    user manual, is available at:

    http://www.w3.org/Daemon/

    NCSA HTTPd

    The NCSA (National Center for Supercomputer Applications at my
    alma mater, the University of Illinois at Urbana-Champaign) HTTPd
    web server is similar to Apache and CERN.

    NCSA HTTPd looks in a resource configuration file

    conf/srm.conf   (srm for Server Resource Map)

    You can add AddType configuration directives to this configuration
    file to add new MIME types or override the default MIME types
    used by NCSA HTTPd.

    AddType type/subtype ext1 ext2 ... extn

    For example:

    AddType text/plain txt doc

    or

    AddType video/avi avi

    Extensive information on NCSA HTTPd is available at:

    http://hoohoo.ncsa.uiuc.edu

    Microsoft Internet Information Server

    Microsoft Internet Information Server is a server providing
    HTTP (WWW), FTP, and Gopher services for Windows NT 4.0
    Server.  IIS handles the mapping from file extensions to
    MIME types through the Windows NT System Registry.

    To view and modify the MIME map:

    1. Run the Windows NT Registry Editor  Regedt32.exe

    2. Look in the Windows NT Registry Key (Folder):

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\InetInfo\Parameters\MimeMap

    3. The MimeMap Key  contains a series of Registry Values (entries) of form:

    < mime type > , < filename extension > ,, < gopher type >

    4. On my IIS server, the sole Registry Value (entry) for avi is:

    video/x-msvideo,avi,,>:REG_SZ:

    :REG_SZ: identifies a text string in the Registry editor.

    The IIS server will send the MIME type video/x-msvideo for
    files with the extension AVI.

    IIS also uses the entries:

    video/x-ms-asf,asf,,5:REG_SZ:
    video/x-ms-asf,asx,,5:REG_SZ:

    for the Microsoft Active (or Advanced) Streaming Format files.

    5. IIS defaults to treating files as vanilla binary files if they
    are not explicitly listed in the MIME Map.

    6. To add a new MIME type, in the Registry Editor

                 - Select Add Value ... from the Edit menu.
                 - Create a Registry Value of type REG_SZ (for a string)
                 - Enter the MIME type information as above as the
                        NAME of the Registry Value.
                 - Leave the string blank.

    Netscape Enterprise Server 3.0

    Edit the mime.types file in the server's config directory.

    This will contains lines of the form:

    type=video/x-msvideo  exts=avi

    These can also be of the form:

    type=video/x-msvideo exts=avi,vid,vvv

    when multiple file extensions map to the same MIME type.

    The server reads this file to associate the MIME type video/x-msvideo
    with files with the file extension avi.

    The Netscape help site is:

    http://help.netscape.com/

    This includes many articles on the Netscape server including a
    discussion of MIME types and the mime.types file.

    Return to Top

    AVI and Java

    Plans for Java include a collection of Java Media and Communications
    API's (Application Programmer's Interfaces).  These include the Java
    Media Framework (JMF for short).  The first part of JMF is the Java
    Media Player, an API for synchronization, control, processing and
    presentation of compressed streaming and stored timed media including
    video and audio.  A public specification for the Java Media Player has
    been released.  According to this the Java Media Players will be
    designed to support many media types including AVI.  A beta release of
    the JMF software is scheduled for the second quarter of 1997 and may
    be happening as of 5/15/97 (some rumors at least although I have not
    seen the software).

    For further information on Java Media Framework, see:

    http://java.sun.com/products/java-media/jmf/index.html

    For further information on Java, see the Java site:

    http://java.sun.com/

    Return to Top

    AVI and VRML

    The Virtual Reality Modeling Language (VRML, often pronounced
    'vermal') is the file format standard for 3D multimedia and shared
    virtual worlds on the Internet.

    VRML supports a "node" known as a MovieTexture.  This allows a video (or
    movie) to be mapped onto the surface of an object.  A MovieTexture node
    is referenced by the texture field of an Appearance node.  Each object has
    an Appearance node.

    The VRML MovieTexture node includes a url field.  The url field, as the
    name suggests, is the URL (Uniform Resource Locator) of a video file
    to map onto the surface of the VRML object.  The VRML 2.0 specification
    requires that this video file must be in either MPEG-1 Systems (audio and
    video) or MPEG-1 video only format.  AVI is not directly supported.

    It is necessary to convert an AVI file to MPEG-1 format to use the AVI file
    with VRML.  This is VRML 2.0   VRML 97 may be different.

    For further information on VRML, see the VRML Consortium Web Site.

    http://www.vrml.org/

    Return to Top

    Configuring Netscape Navigator 3.01 to Display AVI Files

    The following remarks apply to Netscape Navigator 3.01 for
    Windows 3.1, Windows 95, and Windows NT 4.0.

    Netscape Navigator displays .AVI files either through a helper application
    such as the Microsoft Media Player or a Netscape Plugin that supports
    AVI playback, such as the Netscape npavi16.dll and npavi32.dll plugins.

    A helper application is a separate application, executable, that is
    invoked by the Web browser.  The helper application runs as a separate
    process with its own window or windows.  The helper application is not
    tied to the Web page.

    A Netscape plugin is a dynamic link library that extends the
    capabilities of the Netscape Navigator.  Typically the plugin will
    receive control over a region of the Web page displayed by the
    browser and display its output in that region.  The output appears to
    be embedded in the Web page.

    To view and configure helper applications, select the General Preferences
    item from the Options menu of Netscape Navigator.  Select the Helpers tab
    of the General Preferences.  Helpers lists registered File types (MIME
    types), associated actions, and file extensions.

    Options | General Preferences | Helpers

    A File Type is a MIME type such as image/gif or video/avi.  MIME
    stands for Multipurpose Internet Mail Extensions.  MIME types are
    a mechanism to identify the data type of multimedia attachments to
    Internet e-mail messages.  MIME types are also used by Web servers
    to identify to Web browsers the data type of multimedia files such as
    AVI files on Web sites.

    An action can be blank, Ask User, Browser, or a helper application such
    as Media Player (mplayer.exe).  The blank action appears to be used
    in cases where a Plugin is installed and may be used for other cases as
    well.  The Ask User action indicates to pop up a dialog asking the user
    what to do: save to disk, select an application, or cancel.  Browser
    indicates that the File Type is supported by the browser.  For example
    gif and jpeg decoding is built directly into Netscape Navigator.

    To view installed plugins, select About Plugins from the Help menu.  This
    produces a listing of installed Plugins.  The list has an
    entry for each currently installed Netscape Plugin.  For example:

    NPAVI32 Dynamic Link Library

    MIME Type
    video/msvideo       ... other information ...
    video/x-msvideo     ... other information ...

    is the information presented for Netscape's npavi32.dll plugin in
    Netscape Navigator 3.0 on Windows NT 4.0 Server (Service Pack 2).

    Netscape Plugins are dynamic link libraries stored in a plugins
    directory.  For example, \Program Files\Netscape\Navigator\Program\plugins\

    Many Netscape plugins including the Netscape AVI plugins (npavi16.dll for
    16 bit Windows and npavi32.dll for 32 bit Windows) can be dowloaded from
    the Netscape Web site.

    http://home.netscape.com/

    Return to Top

    Netscape Navigator Plug-ins to Play AVI Files

    Netscape LiveVideo

    Netscape Navigator 3.0 includes LiveVideo which supports playback of
    AVI files on Windows 3.x, Windows 95, and Windows NT platforms.  This is
    implemented through the dynamic link libraries npavi.dll, npavi16.dll, and
    npavi32.dll.

    http://home.netscape.com/

    You can download the latest Navigator 3.0 with LiveVideo from Netscape.
    Netscape also maintains pages with Netscape Plug-Ins, mostly from other
    companies.  These include CineWeb by Digigami and MacZilla by Knowledge
    Engineering which provide AVI playback.

    To get to the Audio/Video Plug-Ins page (as of May 15, 1997), go to the
    Netscape Home Page.  There is a graphical text

          "Get the latest Netscape Software".

    Underneath this text there is pulldown list of the many Netscape products.
    This initially reads "Pulldown to select products".
    Click on this to show the pulldown list (it is very long).
    Choose "Navigator Plug-Ins".

    Click on the Product Info icon under the pulldown list.

    This presents a page for Inline Plug-Ins.  Select the Audio/Video option.
    This brings up a page of audio/video plugins that add support for various
    audio and video formats.

    CineWeb by Digigami and MacZilla by Knowledge Engineering are both in
    this list.  These plug-ins are also available directly from their
    makers.

    CineWeb by DigiGami

    Digigami produces a Netscape Navigator Plug-in for Windows 95 and Windows
    NT called CineWeb that provides playback of AVI, QuickTime, and MPEG files.

    http://www.digigami.com/cineweb/

    MacZilla by Knowledge Engineering

    MacZilla is a Netscape Plug-in for the Power Macintosh that adds AVI,
    QuickTime, and MPEG playback.

    http://maczilla.com/

    Return to Top

    Configuring Internet Explorer 3.0x to Display AVI Files

    The following applies to Internet Explorer on Windows 95 and Windows
    NT 4.0.  The information may also work for Windows 3.1

    Select the Options item from the View menu of Internet Explorer.  Select
    the Programs tab.  Within the Programs sheet, click on the "File Types ..."
    button.

    View (menu) | Options (item in menu) | Programs (tab) | File Types ... (button)

    Internet Explorer 3.0x uses the Windows 95 System Registry or
    Windows NT System Registry to determine what to do with a file.  This is
    the same mechanism that the Windows 95 or NT 4.0 Desktop uses to
    determine which application to use when a user double clicks on a file
    icon.  This is achieved through a Content or MIME type "value" (name
    and data pair) in the registry.  See the section on how AVI is handled
    in Windows 95 for more details.

    The "File Types ..." brings up a list of file types and associated
    actions.  This can be used to edit and modify the actions.

    Return to Top

    How to embed an AVI file in a Microsoft Word Document?

    Media Player acts as an OLE (Object Linking and Embedding) server.  This means
    that application such as Microsoft Word that support OLE can embed
    a movie.

    With Word 6.0 (Microsoft seems to keep changing the user interface for
    Microsoft Word so I need to qualify which version of Microsoft Word),

    1. Select Insert from the menu bar.  This pulls down a long menu.

    2. Select Object... from the pulldown menu.  This pops up a dialog box.

    3. Select the Create from File tab.

    4. Select the AVI file from the file browser.

    5. Select OK

    This inserts a link to the AVI file at the current location within the
    Microsoft Word document that you are editing.  The first frame of the
    AVI file is displayed.  Double click on the first frame of the AVI
    file to start playback.

    NOTE: With Word 6.0, this sequence of Word commands embeds a graphic
    of the first frame of the AVI file along with instructions to invoke
    Media Player on an external file in the Word document.  The binary AVI
    file remains separate.  Only the file specification and a graphic
    image of the first frame are actually inserted in the Word document.
    The on-line help documentation with Word 6.0 is misleading or outright
    false on this point.

    Other Windows applications that act as OLE clients will be able to do
    similar things with AVI files.

    Return to Top

    Size limits on AVI files

    An AVI file cannot be larger than the disk partition that
    contains it.  Different filesystems have different maximum sizes
    for disk partitions.

    Under the 16 bit FAT (File Allocation Table) filesystem used by DOS,
    disk partitions are limited to a maximum size of 2GB (Gigabytes).  In
    DOS, a hard disk is divided into 512 byte sectors.  DOS Version 4
    added support for 32 bit sector numbers.  2 raised to the 32 is roughly 4
    billion, multiply this times 512 bytes in a sector to get the 2GB
    limit.  FAT16 partitions are limited to 2GB, necessarilly limiting AVI
    files to a maximum size of 2GB as well.

    DOS versions prior to DOS 4 limited disk partitions to 32MB (Megabytes).
    These earlier versions of DOS used 16 bit sector numbers in all I/O
    routines.  2 raised to the 16th power is 64K, multiply this by 512 bytes
    in a sector to get the 32MB limit.

    Partitions using other filesystems such as the Windows NT File Systems (NTFS)
    may not be subject to the 2GB limit.

    The new FAT32 filesystem available with Windows 95 permits partitions larger
    than 2GB.  Unfortunately, a 1 or 2 GB file size limit is hard wired
    into some of the code for the Microsoft Video for Windows.  In
    particular, the RIFF parser code and MCIAVI (the MCI driver for
    AVI files) contain a 1 GB or 2 GB limit hard wired into them.

    Microsoft's Active Movie, which replaces Video for Windows, contains
    fixes for the 1-2 GB size limits hard wired into Video for Windows.

    Microsoft's OEM Service Release 2 (OSR2) incorporates FAT32.  Earlier
    OEM releases and the retail version of Windows 95 (as of 2/15/97) do
    not include FAT32.  Microsoft sayeth: "Neither MS-DOS 6.x nor retail
    versions of Windows 95 will recognize a FAT32 volume".  To see if you
    have OSR2, go to the Control Panel, select the System icon, and click
    the General tab.  It will say "4.00.950b".  If there is no trailing
    letter or "4.00.950a", then you do not have OSR2.

    OEM versions of Windows 95 cannot be purchased separately as off the
    shelf software.  They are bundled on systems created by companies
    like Dell, Compaq, and so forth.  The retail version(s?) of Windows 95
    can be purchased at software stores or through software resellers.

    I believe that there was some sort of beta release of FAT32 prior to
    OSR2, either a special version of Windows 95 or a way to install FAT32
    in versions of Windows 95 that did not come with FAT32.

    OSR2 and FAT32 seem to have some problems.  Some applications
    such as Corel's Paradox 7 fail on FAT32 volumes. See:

    Bug Net Web Site

    or search the Microsoft Knowledge Base for the keyword OSR2.

    The header for an AVI file includes a 32 bit AVI file length, imposing
    a restriction of 4GB on the AVI file size.

    The Open Digital Media (OpenDML) Consortium has defined
    OpenDML AVI File Format Extensions to add support for
    professional video functionalities to AVI.  This includes
    a fix for the 4 GB limit.  Microsoft has incorporated this
    extended version of AVI into ActiveMovie 1.0 from
    Microsoft.

    Return to Top

    How to Fix Problem with CorelMove4.0 AVI Files

    CorelMove 4.0 exports AVI files that cannot be played using
    Video for Windows 1.1 or the Windows 95 Video for Windows or
    ActiveMovie 1.0.

    Corel has a fix file that can be downloaded from their software
    library. The file is called "cmvfix.exe."

    The URL is...
    http://www.corel.com/products/graphicsandpublishing/draw4/library.htm

    Description text from the web page...

    Title: CMVFIX.EXE For CorelMOVE 4.0 AVI export correction

    CMVFIX.EXE by Corel Corporation 1994 contains these
    compressed files: CMV4FIX.EXE is a compressed file that
    contains fixes for CorelMOVE 4.0's AVI file exports. These
    are new replacement .DLLs. AVI4FIX.EXE is a Windows
    application that will allow you to correct older CorelMOVE
    4.0 AVI files to work with MS-Video For Windows 1.1. If you
    create an AVI file AFTER installing the CMV4FIX update that
    accompanies this fix, then you will NOT be required to run
    this application. This will change the RLE compression in
    the CorelMOVE AVI files.

    Return to Top

    Sources of Information on AVI and Related Topics:

    TECHNICAL

    How to Digitize Video
    by Nels Johnson
    with Fred Gault and Mark Florence
    John Wiley and Sons, New York, 1994
    ISBN 0-471-01440-0

    Article
    "Digital Video File Formats"
    by Mark Florence
    Dr. Dobbs Sourcebook of Multimedia Programming, Winter 1994

    Microsoft Software Development Kits (SDK)
    and Device Driver Kits (DDK)

    Microsoft's SDK's and DDK's are included with
    various products such as Visual C/C++ and in a
    subscription to the Microsoft Developer Network.

    The Microsoft Developer Network (MSDN) is a service
    where Microsoft sends CD-ROM's with Microsoft
    Operating Systems, Software Development
    Kits, Device Driver Kits, and miscellaneous
    other Microsoft products to the developer.
    A subscription is usually for one year
    and usually includes several full releases
    of sets of CD's.  The Microsoft Developer
    Network CD's usually include Beta releases
    of various API's and new products that
    Microsoft is developing.  See the
    Microsoft Web site

    http://www.microsoft.com/

    for more information on the Microsoft
    Developer Network.

    Windows 3.1 Software Development Kit (SDK)
    Win32 Software Development Kit (SDK)
    Video for Windows Software Development Kit (SDK)

    Windows 3.1 Device Driver Kit (DDK)
    Windows NT Device Driver Kit (DDK)

    specifically,

    Windows Multimedia Programmer's Guide

          - includes overview of RIFF

    Video for Windows Software Development Kit (SDK) Programmer's Guide

          - includes overview of AVI

    RIFF Specification is available on World Wide Web at (11/7/96):

    http://www.seanet.com/HTML/Users/matts/riffmci/riffmci.htm

    DirectX Software Development Kit (SDK)
        - DirectX 3 SDK Contents
        - ActiveMovie 1.0 SDK Contents

        included with Visual C++ 5.0 Professional Edition and other
    Microsoft products.

    Practical Digital Video with Programming Examples in C
    Phillip E. Mattison
    John Wiley and Sons, Inc.
    New York, (c) 1994
    ISBN: 0-471-31016-6

    A Technical Introduction to Digital Video
    Charles A. Poynton
    John Wiley and Sons, Inc.
    New York, (c) 1996
    ISBN: 0-471-12253-X

    Multimedia Developer's Guide
    Paul Perry
    SAMS Publishing: A Division of Macmillan Computer Publishing
    Indianapolis, IN  1994
    ISBN: 0-672-30160-1
    Library of Congress Catalog Number: 93-86963

    Information on Windows Multimedia using MCI, AVI, and Video
    for Windows.  Dumps of Windows SDK references.

    Video Demystified: A Handbook for the Digital Engineer
    by Keith Jack
    HighText Publications
    Solana Beach, CA
    1ed (C) 1993 by Brooktree Corporation
    ISBN: 1-878707
    Library of Congress Catalog No.: 93-14705

    A popular highly technical book on analog and digital video
    technology.  Not much on AVI, Video for Windows, or PC Video
    but plenty of details on NTSC, PAL, SECAM, and other video
    topics.  Now in a 2nd edition with new information on
    MPEG and H.26x

    Publishing Digital Video, 2nd. Edition
    by Jan Ozer
    Academic Press, 1997
    Price: $34.95

    Covers video capture on PC/Windows, video editing, windows
    video compression, and MPEG-1 compression for digital video
    and multimedia authors.  Includes chapters on streaming audio
    and streaming video.

    The Windows NT Device Driver Book
    A Guide for Programmers
    by Art Baker (Cydonix Corporation)
    Prentice Hall, Upper Saddle River, New Jersey, 1997
    Price: $44.95

    An introduction to Windows NT Device Drivers with simple examples and
    source code.  Does not use video display adapter drivers or video
    capture drivers as examples.  Sticks with simple examples.

    Microsoft provides a number of detailed documents for the
    Microsoft NetShow product in Microsoft Word format.

    Microsoft NetShow Content Creation Authoring Guide (CCAG)

    Microsoft NetShow Tools Guide

    Microsoft NetShow System Administration Guide

    See the Microsoft NetShow Web Site:

    http://www.microsoft.com/netshow/

    BUSINESS and POP COMPUTING

    "The 800-Pound Gorilla's New Toy: Microsoft's new video software is
    coming on strong" Business Week, May 11, 1998, p. 60

        - article on NetShow 3.0

    "Set-top boxing" by Edward W. Desmond, Fortune, November 10, 1997, p. 91

         - Microsoft and WebTV (pretty thin)

    "Real Revolution" by Robert H. Reid, Wired, October, 1997, p. 122

         - All about Progressive Networks (now renamed
    RealNetworks) and its CEO Rob Glaser, the purveyors of
    RealAudio streaming audio and RealVideo streaming video.

    Return to Top

    Internet Newsgroups with Information on AVI and Video

    Internet or USENET Newsgroups are a good source of current
    information on AVI and video.  Some useful newsgroups are:

    VIDEO SPECIFIC NEWSGROUPS

    rec.video.desktop

    comp.os.ms-windows.video

    comp.sys.ibm.pc.hardware.video

    comp.dcom.videoconf  Videoconferencing

    OTHER USEFUL NEWSGROUPS

    comp.multimedia

          Broad coverage of multimedia including video.

    comp.compression

          Both technical discussions of compression algorithms and
    codecs, as well as end user issues such as utilities and
    configuration issues.

    alt.binaries.multimedia.utilities

          Utilities for handling multimedia.

    Return to Top

    Where to Find Information on Audio and Video Standards Other Than AVI

    Apple QuickTime

    Apple maintains a web site on its QuickTime multimedia file format and
    family of products.

    http://www.apple.com/quicktime/

    ISO (International Organization for Standardization) MPEG

    The International Organization for Standardization, usually called ISO,
    produces a family of digital audio, video, and multimedia standards
    known as MPEG, Motion Pictures Expert Groups.  The MPEG standards include
    MPEG-1, MPEG-2, MPEG-4, and MPEG-7.

    The official ISO MPEG web site is:

    http://drogo.cselt.it/mpeg/

    Tristan Savatier's comprehensive MPEG web site is:

    http://www.mpeg.org/

    Return to Top

    Microsoft's Changing Names

    Microsoft has an annoying tendency to rename API's, software
    components, products, and perhaps even entire companies.  One has to
    wonder if this is good marketing or a symptom of politics within the
    colossus.  This has happened to a number of video and video related
    products, most notably ActiveMovie.

    List of Changed Names
    ---------------------

    Quartz             ( original codename for ActiveMovie )
    Active Movie 1.0   ( new video software to replace Video for Windows)
    Active Movie 2.0 ===> DirectShow 2.0    ( March, 1997 )

    The change to DirectShow seems analagous to Ford renaming the Mustang
    the Putt-Putt Mobile in 1967.

    ASF  (Active Streaming Format)  (new video file format, to replace AVI?)
    ASF  (Advanced Streaming Format)   Active is dropped in Sept. 1997

    Somebody doesn't like Active????

    (Microsoft's Streaming Video Product)
    Microsoft NetShow ==> NetShow Services  (late 1998?)

    (new Operating System to replace Windows 95)
    Memphis  ==> Windows 97  ==>  Windows 98

    Progressive Networks, marketers of RealAudio audio compression
    for the Internet, was founded by Rob Glaser, a former top executive
    at Microsoft.  In late 1997, Microsoft invested in Progressive
    Networks, reportedly acquiring an option to acquire 23% of the
    company.  Progressive Networks renamed itself RealNetworks, possibly
    to improve the prospects of its Initial Public Offering (IPO).

    Progressive Networks  (that was then)
    RealNetworks          (this is now  12/20/97)

    RealNetworks has licensed and markets Iterated Systems fractal video
    codec under the name RealVideo.  Iterated used to call their video
    codec ClearVideo.

    ClearVideo            (that was then)
    RealVideo             (this is now  12/20/97)

    Return to Top

    Business and Economics of AVI

    AVI is a de facto industry standard.  Standards in general, and
    de facto standards in particular, play a big role in the business,
    economics, and even politics of information technology and
    Microsoft and Intel (WinTel) in particular.

    Business and Economics of Standards

    GTW Associates is
    a consulting firm specializing in standards and related issues.
    As of May 6, 1999 their web site contained many excellent papers
    and resources on business, political, and economic issues of
    standards.  GTW Associates clients, according to the web site, include
    Microsoft, the colossus itself.

    http://www.gtwassociates.com/"

    W. Brian Arthur is an
    economist who has written extensively on increasing returns for
    adoption, standards, and related topics.

    http://www.santafe.edu/arthur/

    Standard Based
    Monopolies and Near Monopolies: The WinTel Example
    (in the Adobe Acrobat PDF format) is my personal
    opinion about how Microsoft and Intel, and many other computer
    related businesses, function as near monopolies.

    Antitrust

    The Consumer Project on Technology
    maintains an extensive web site with extensive information on the legal,
    political, and economic issues of technology.  This includes
    a large section on Microsoft and the antitrust cases against Microsoft.
    Despite an obvious political agenda, this is a very comprehensive site.

    http://www.cptech.org/

    Return to Top

    GLOSSARY

    A quick guide to the acronyms, jargon, and techno-babble related
    to AVI, Video for Windows, ActiveMovie, DirectShow, desktop and
    networked video.

    ACM
    Audio Compression Manager.  The Windows Multimedia software
    component that manages audio codecs (compressor/decompressors).
    ACM can also be considered an API specification.  A codec must
    conform to the implicit ACM specification to work with
    Windows Multimedia.

    ActiveMovie
    Microsoft software component for handling and displaying
    digital video, including AVI, MPEG, and QuickTime, for
    Windows 95 and Windows NT 4.0.  Intended to replace
    Video for Windows.  Renamed DirectShow.

    AC-3
    Audio Compression-3.  Usually marketed as Dolby Digital.
    A digital audio compression format from Dolby Laboratories.
    Incorporates "5.1" audio channels: left, right, center, left
    surround, right surround, and a base channel for more realistic
    three-dimensional sound.
    Used in DVD, GA-HDTV, laser discs, and movie theaters.

    ADSL
    Asymmetric Digital Subscriber Line.  A technology and standard to
    enable much higher bitrates between telephone company central offices
    and homes over the already installed copper telephone lines.  One of
    a family of such technologies and standards collectively referred to
    as xDSL.  May provide sufficient bandwidth for network video to
    homes.

    algorithm
    A mathematical rule or procedure for solving a problem.

    ANSI
    American National Standards Institute.  A private not-for-profit
    membership organization that administers the private sector voluntary
    standards system in the United States.  It is the dues paying member
    and sole U.S. representative to the International Organization
    for Standardization (ISO) and the International Electrotechnical
    Commission (IEC).

    ASCII
    American Standard Code for Information Interchange.  This is the
    most widely used character set for representing Latin characters and
    certain control codes using 7 bit codes, that is 0 to 127 (decimal)
    or 0x00 to 0x7f (hexadecimal).  ASCII is an American National Standard:
    ANSI X3.4-1968 ASCII Character Set.  There is an updated
    standard: ANSI X3.110-1983 ASCII Character Set Revised.

    AVI
    Audio Video Interleave.  Microsoft format for digital audio, video,
    and other multimedia data.

    ASD
    Advanced Streaming Format (ASF) Stream Descriptor.  .asd
    files are files that specify encoding parameters for the ASF
    Real Time Encoder, one of the NetShow Tools.

    ASF
    Advanced Streaming Format (formerly Active Streaming Format).
    A Microsoft file and data stream format for multimedia data
    including audio, video, still images, and other data types.

    ASX
    Active stream redirector (.asx) file.  .asx files provide
    information that a NetShow Player needs to receive either
    unicast or multicast ASF streams.  An .asx file may be encrypted
    or not.  An unencrypted .asx file is simply a text file that
    contains the URL's for the ASF streams.  A .asx file is not a
    .asf file.

    ASIC
    Applications Specific Integrated Circuit.  A silicon chip
    customized for a specific application such as video compression.

    ATM
    Asynchronous Transfer Mode.  Networking technology and standard
    frequently used for implementing high-speed Wide Area Networks over
    fiber optic cables.

    Bitrate
    Bitrate may refer to bits per pixel for compressed images or
    bits per second (such as 128 Kilobits/second) for compressed
    video.

    BMP
    Windows Bitmap file format.  The most common type of still
    image on the PC.  There are also OS/2 BMP still image files.
    The OS/2 BMP file format is similar but not identical to the
    Microsoft Windows BMP file format.

    CBR
    Constant Bit Rate.  In video coding, the bitrate of the compressed
    video is fixed at a certain rate.  This usually results in variable
    perceived quality of the video.

    CCIR
    The International Radio Consultative Committee.  An international
    body responsible for a number of video standards, e.g. CCIR-601.
    Renamed ITU-R (International Telecommunications Union - Radio Standardization
    Sector).

    CCIR-601

    This is now "Recommendation ITU-R BT.601-5, Studio encoding
    parameters of digital television for standard 4:3 and wide screen
    16:9 aspect ratios".  This is a standard for high quality
    uncompressed digital video used in studios and video production.
    CCIR-601 digital video is frequently stored on D1 digital video
    tapes.

    CCITT
    The International Telephone and Telegraph Consultative Committee.
    An international body responsible for a number of communications
    standards, e.g. H.261.  Renamed ITU-T (International Telecommunications
    Union - Telecommunications Standardization Sector).

    CMOS
    Complimentary Metal Oxide Semiconductor.  A semiconductor
    process technology for making chips.  Most personal computer and
    consumer electronics chips are some variant of CMOS.  Other
    semicondcutor technologies include BiCMOS and GaAs (Gallium Arsenide).
    CMOS is also used to refer a permanent 64 byte piece of CMOS RAM on IBM
    Personal Computer (PC) compatible computers that contains various
    parameters used by the PC BIOS, Basic Input Output System.

    codec
    short for compressor decompressor.  Usually a software
    or hardware component that compresses and/or decompresses audio or
    video data.  A hardware codec is usually a silicon chip.

    DCT
    Discrete Cosine Transform.  Mathematical transform used in
    digital video compression.  Used in JPEG, MPEG-1, MPEG-2, H.261, H.263,
    H.263+, and DV digital video compression.

    de facto
    by fact.

    de jure
    by law.

    Device Driver
    A software component that handles direct interaction with
    a piece of hardware.

    DirectShow
    Microsoft software component for handling and displaying
    digital video, including AVI, MPEG, and QuickTime, for
    Windows 95 and Windows NT 4.0.  Intended to replace
    Video for Windows.  Originally codenamed Quartz, then released
    as ActiveMovie.  Now DirectShow.

    DLL
    Dynamic Link Library.  A type of software library in
    Microsoft Windows.

    DV
    DV is a format for storing digital audio and video
    used by by the DV-standard digital video cameras such as
    the DVCam and DVCPro cameras.

    DVD
    Digital Versatile Disc.  (Digital Video Disc at one time.)
    High density optical storage discs.
    DVD used to distribute movies using MPEG-2 digital video and either
    Dolby Digital (AC-3) or MPEG-2 (Philips MUSICAM) digital audio.

    EBU
    European Broadcasting Union.

    EIA
    Electronics Industry Association.  A trade organization responsible
    for a number of standards.  For example, EIA Standard EIA-189-A, July
    1976, Encoded Color Bar Signal

    FCC
    Federal Communications Commission.  The United States government
    agency that regulates the television industry.  Established the NTSC
    television standard and the GA-HDTV high definition television standard.

    FTC
    Federal Trade Commission.  A United States government agency
    that enforces anti-trust laws amongst other things.

    GA-HDTV
    Grand Alliance - High Definition Television.  The new United
    States standard for High Definition Television based on the
    MPEG-2 digital video compression format and the Dolby Digital (AC-3)
    audio compression format.

    H.261
    An ITU-T standard for digital video compression for videoconferencing.
    Uses the Discrete Cosine Transform (DCT).  ITU-T Recommendation H.261 (1993)
    "Video codec for audiovisual services at px64 kbit/s".

    H.263
    An ITU-T standard for digital video compression for videoconferencing.
    Uses the Discrete Cosine Transform.  ITU-T Recommendation H.263 (199x)
    "Video Coding for Low Bitrate Communication"

    H.320
    An ITU-T standard for digital videoconferencing over
    ISDN.  ITU-T Recommendation H.320 (1993) "Narrow-band ISDN visual
    telephone systems and terminal equipment".

    H.323
    An ITU-T standard for digital videoconferencing over TCP/IP networks.

    H.324
    An ITU-T standard for digital videoconferencing over telephone lines.
    ITU-T Recommendation H.324 (1995) "Terminal for low bitrate multimedia
    communication".

    HDTV
    High Definition Television.  Various schemes to increase the
    resolution of broadcast television.  The original schemes were
    analog, but HDTV now refers almost exclusively to various digital
    audio and video technologies and standards.

    IA
    Intel Architecture.  This is the instruction set architecture of the
    series of chips used in IBM PC-compatible computers.  This includes
    the 8080, 8086, 80286, 80386, 80486, Pentium (formerly 80586 or P5),
    Pentium Pro (formerly 80686 or P6), Pentium with MMX, Pentium II
    (formerly Pentium Pro with MMX), Pentium II Xeon (TM), Celeron (TM), and
    Pentium III.

    The Intel Architecture is a de facto standard.  Intel has repeatedly
    added new instructions and features to the architecture, although so
    far maintaining backward compatibility with previous versions.  New
    instructions such as the MMX instructions and the Streaming SIMD
    Extensions in the Pentium III can be used to accelerate video codecs
    such as are used in AVI files.  Advanced Micro Devices (AMD), National
    Semiconductor's Cyrix division, and Integrated Device Technology (IDT)
    manufacture processor chips compatible with the Intel Architecture.

    IEC
    International Electrotechnical Commission.  The International
    Organization for Standardization (ISO) and the IEC work closely together
    to standardize information technology through the Joint Technical
    Committee 1 (JTC1).  The MPEG digital video standards activities
    fall under the umbrella of JTC1.

    IEEE
    Institute of Electrical and Electronics Engineers.  An organization
    of engineers responsible for a number of electrical and electronics
    industry standards.  IEEE is an international professional society
    headquartered in the United States.

    IETF
    Internet Engineering Task Force.  The body responsible for managing
    and establishing protocols for the Internet.

    IPR
    Intellectual Property Rights.  This usually refers to four major
    categories of intellectural property: patents, copyrights, trademarks,
    and trade secrets.

    ISO
    International Organization for Standardization.  ISO is a
    non-governmental organization that was established in 1947.  ISO works
    closely with the International Electrotechnical Commission (IEC) and
    the International Telecommunications Union (ITU).  Note that ISO is
    not an acronym.  It is derived from the Greek isos for "equal".
    Responsible for many audio, video, and telecommunications standards.

    ITU
    International Telecommunications Union.  The ITU has been an
    agency of the United Nations since 1948.  It is older, dating back
    to 1865.  It may be the world's oldest intergovernmental agency.

    ITU-R
    ITU Radiocommunications Standardization Sector.  Formerly known as
    CCIR, the International Radio Consultative Committee.

    ITU-T
    ITU Telecommunications Standardization Sector.  ITU-T is a
    permanent organ of the International Telecommunications Union.  The
    ITU-T is responsible for studying technical, operating and tariff
    questions and issuing Recommendations on them with a view
    to standardizing telecommunications on a worldwide basis.  Formerly
    known as CCITT, the International Telephone and Telegraph Consultative
    Committee.

    JFIF
    JPEG File Interchange Format.  A standard file format for
    storing JPEG images in a binary data file.  When people refer to
    JPEG images, they are usually refering to JFIF format files.
    JFIF had some competitors in the early days of JPEG, such as the
    JPEG TIFF format which has fallen into to disuse.

    JPEG
    Joint Photographic Experts Group.  A body within the International
    Organization for Standardization (ISO) that established the JPEG still image
    compression standard.  JPEG is usually used to refer to compression
    of still images or video frames using the "baseline JPEG" compression
    algorithm using the Discrete Cosine Transform and Huffman coding.
    JPEG is the basis of the Motion JPEG used in digital video, where each
    frame in a video is encoded separately using JPEG.
    See JFIF.

    JPEG-LS
    A new standard for lossless JPEG still image encoding. The original
    JPEG standard included a lossless still image encoding mode - actually
    a completely different algorithm from the DCT based "baseline JPEG".
    JPEG-LS is a new lossless compression algorithm that achieves better
    compression ratios than the original lossless JPEG.

    JPEG-2000
    A new standard under development by the JPEG committee for
    improved lossy still image compression.  JPEG-2000 will probably
    use a different technology than the Block Discrete Cosine Transform
    used in baseline JPEG.

    MCI
    Media Control Interface.  A Microsoft standard API for
    software control of multimedia devices and components.  MCI includes
    API's for playback of AVI files and digital video devices (such as
    laser disc players).

    MIME
    Multipurpose Internet Mail Extensions.  An extension to the
    Internet mail format to allow attaching multimedia data types
    such as AVI files, word processing documents, sound files, and
    so forth to Internet electronic mail.  MIME is discussed in
    substantial detail elsewhere in the AVI Overview.

    MMS
    Microsoft Media Server.  Network protocol used by Microsoft
    NetShow Server to communicate with NetShow Players.  The actual
    multimedia data in ASF format may be delivered using HTTP, TCP, or UDP
    protocols as available.

    Motion JPEG
     A type of digital video in which the video frames are
    individually compressed using JPEG still image compression.  A standard
    exists for Motion JPEG stored in AVI files.

    MPEG
    Motion Pictures Experts Group.  A body within the International
    Organization for Standardization (ISO) that established the MPEG-1, MPEG-2,
    and MPEG-4 digital audio and video compression standards.  MPEG
    is also used to refer to video and audio clips compressed using
    the MPEG standards and the MPEG standards themselves.

    MSE
    Mean Squared Error.  A statistical measure of error, used
    to determine quality of compressed images.  Mathematically
    equivalent to Peak Signal to Noise Rate (PSNR).

    NAB
    National Association of Broadcasters.  A trade organization for the
    television broadcast industry in the United States.  NAB is involved in
    standards, lobbying the federal government, sponsors trade shows, and other
    activities.

    NetMeeting
    Microsoft videoconferencing software.

    NetShow
    Microsoft streaming audio/video/multimedia product for
    broadcasting multimedia streams over computer networks.
    Also see ASF, ASX, and MMS.

    network effect
    The value of a product or service to a buyer increases with the
    cumulative number of other buyers.  Also known as increasing
    returns to adoption.  This usually occurs when the product or
    service is part of a network of components that must work together to
    produce a useful result, hence the name network effect.  A simple
    example is a telephone service.  If a telephone service has one
    subscriber, it has no value.  The subscriber can communicate with no
    one else.  The more subscribers to the telephone service, the more
    valuable the service becomes.  The subscribers can communicate with
    more people, the other subscribers.  This is a common phenomenon with
    communication systems and communication technologies.  Microsoft's
    near-monopoly is frequently attributed to network effects.  The value
    of the AVI file format - or Apple's QuickTime file format, or the ISO
    MPEG format - depends on the number of people who can view the AVI
    files.

    NIST
    National Institute of Standards and Technology.  A part of
    the United States Department of Commerce.  NIST was formerly the
    National Bureau of Standards.

    NSA
    National Security Agency.  A United States agency within
    the U.S. Department of Defense responsible for signals
    intelligence, encryption, cryptography, and related topics.
    NSA was established by a still classified executive order.
    Thus the full scope of its powers and responsibilities
    remains secret.  NSA is involved in computer security
    policy and setting computer and communications security
    standards within the United States.  NSA has a long history
    of relationships with major telecommunications companies.

    NTSC
    National Television System Committee.  The
     color analog television standard used in the United
    States, Japan, and a number of other countries.  Adopted by
    United States in 1953.

    OMF
    Open Media Framework.  A standard for high end digital
    video from Avid.  Avid video editing products use OMF as
    do some products from other companies.

    open standard
    A standard that is easy for companies to produce and market
    products or services conforming to the standard.  Essentially
    there is a competitive market without monopoly profits in products
    or services conforming to the standard.  Some standards that are
    marketed as "open" aren't open in this sense.  Some open standards
    are the 8 1/2 " by 11 " paper size used in the United States and the
    ASCII (American Standard Code for Information Interchange) used for
    representing alphanumeric characters on computers and computer networks.
    Also see standard, de facto, de jure, and specification.

    PAL
    Phase Alternation Line.  The analog television standard used in
    Germany, England, and many other nations.

    patent
    A grant made by a government to an inventor, assuring the sole
    right to make, use, and sell the invention for a certain
    period of time.  Many audio and video technologies are covered by
    patents.  This is also true of the underlying technologies for many of the
    international standards such as MPEG.

    PICT
    Macintosh QuickDraw picture file.  The most common type of
    still image on the Macintosh.

    POTS
    Plain Old Telephone Service.  Analog copper wires between
    telephones and the phone company.

    PSNR

    Peak Signal to Noise Ratio.  A statistical measure of error, used
    to determine the quality of compressed images.  Mathematically equivalent
    to the mean squared error (MSE) and the root mean squared error (RMSE).
    This is the most commonly used metric of image quality used in the image
    and video compression literature.  The PSNR is usually quoted in
    decibels, a logarithmic scale.  The PSNR has a limited, approximate
    relationship with the perceived errors noticed by the human
    visual system.

    As a rough rule of thumb, an image with a PSNR of 25 dB (decibels) is
    usually pretty poor.  Anything below 25 dB is usually unacceptable.
    Perceived quality usually improves from 25 dB to about 30 dB.
    Above around 30 dB images look pretty good and are often indistinguishable
    from the uncompressed original image.

    The human visual system appears to have sensitivity thresholds.  This
    can be rigorously demonstrated in controlled experiments using
    sinusoidal gratings against black backgrounds.  Because of this
    thresholding, once the PSNR exceeds some value, the errors become
    undetectable to human viewers.  Hence an image with a PSNR of 35 dB
    may look the same as an image with a PSNR of 40 dB.

    Conversely, the human visual system seems to have a saturation
    effect as well.  Once the image quality falls below a certain
    level, the image simply looks bad.  An image with a PSNR of 15 dB and an
    image with a PSNR of 10 dB may look equally bad to a viewer.
    Typically by this point the image appears quite poor.

    There is a range where the perceived quality and the PSNR tend to
    scale.

     |                             ************
    Q|                        *****
    u|                    ****
    a|                 ***
    l|               **
    i|             **
    t|          ***
    y|**********
     |
     ---------------------------------------------
                  25 dB      30 db       35 dB
                             (PSNR)

         Relationship Between Perceived Quality and Image PSNR

    The Mean Squared Error is the mean of the squares of the differences
    between the values of pixels in two images.  If i and j are indices
    of an images and N is the total number of pixels:

    MSE = (1 / N) * (Sum[i][j] |P[i][j] - Q[i][j]|^2

    Where P and Q are two images.  i and j are the horizontal and vertical
    location of a pixel.  P[i][j] is the value of the pixel at location (i,j)
    in the image.  Sum[i][j] indicates a sum over i and j.

    The Root Mean Squared Error (RMSE) is:

    RMSE = Sqrt(MSE)

    The Peak Signal to Noise Ratio expressed in decibels is:

    PSNR = 20 log_10(b/RMSE)

    Where b is the peak value for a pixel, typically 255 (8 bit pixels).

    PTO (USPTO)
    Patent and Trademark Office, United States Patent and Trademark Office.
    This is the government office responsible for granting patents and
    trademarks. Currently (May 10, 1999) the Patent and Trademark Office
    is part of the United States Department of Commerce.  Many audio and
    video compression technologies are covered by patents.

    QoS
    Quality of Service.  In networking, QoS refers to various
    schemes to insure a certain quality, such as limiting or
    eliminating packet loss for video streams.

    Quartz
    Microsoft software component for handling and displaying
    digital video, including AVI, MPEG, and QuickTime, for
    Windows 95 and Windows NT 4.0.  Intended to replace
    Video for Windows.  Originally codenamed Quartz, then released as
    as ActiveMovie.  Now (May, 1998) DirectShow.

    QuickTime
    QuickTime is Apple's equivalent of Video for Windows for
    the Macintosh.  Apple also makes QuickTime for Windows.
    QuickTime is also used to refer to the QuickTime Movie file
    format, a widely used format for digital audio, video, and
    other multimedia.

    RGB
    Red Green Blue.  Color represented as red, green, and blue
    components.  Most computer monitors use RGB pixels.

    RS-170
    Original black and white television standard used in the
    United States.  NTSC was designed to be compatible with RS-170
    black and white television sets.

    SECAM
    Sequentiel Couleur Avec Memoire or Sequential Color with Memory.
    Analog television standard developed in France.  Used in France
    and some other nations.

    SMPTE
    Society of Motion Picture and Television Engineers.

    specification
    The English word specification has a few meanings, or
    word senses.  The Webster's New World Dictionary gives the
    following meaning: "2 [usually pl.] a)a
    detailed description of the parts of a whole b) a statement
    or enumeration of particulars, as to actual or required size, quality,
    performance, terms, etc. [specifications for a new building]".

    standard
    The English word standard has a large number of
    meanings, or word senses.  The Webster's New World Dictionary
    gives the following meaning: "4 the type, model, or example
    commonly or generally accepted or adhered to; criterion set for
    usages or practices [moral standards]".  This is the closest
    dictionary meaning or word sense to the usage of engineers.

    The ISO (International Organization for Standardization) gives the
    following definition: "Standards are documented agreements containing
    technical specifications or other precise criteria to be used
    consistently  as rules, guidelines, or definitions of characteristics,
    to ensure that materials, products, processes and services are fit
    for their purpose."

    Standard can have a precise legal meaning in the context of U.S. law,
    the laws of foreign nations, treaties and international organizations
    such as the United Nations.  For example, the United States Office
    of Management and Budget (OMB) Circular A-119, "Federal Participation
    in the Development and Use of Voluntary Consensus Standards and in
    Conformity Assessment Activities", Revised and Dated February 10, 1998
    provides the following definition of standards (Note: the Act
    refers to Public Law 104-113, the "National Technology Transfer and
    Advancement Act of 1995"):

    WHAT DEFINITIONS OF STANDARDS

    3. What Is A Standard?

    a. The term "standard," or "technical standard" as cited in the Act,
    includes all of the following:

    (1) Common and repeated use of rules, conditions,guidelines or
    characteristics for products or related processes and production
    methods, and related management systems practices.

    (2) The definition of terms; classification of components; delineation
    of procedures; specification of dimensions, materials, performance,
    designs, or operations; measurement of quality and quantity in
    describing materials, processes, products, systems, services, or
    practices; test methods and sampling procedures; or descriptions of
    fit and measurements of size or strength.

    b. The term "standard" does not include the following:

    (1) Professional standards of personal conduct.

    (2) Institutional codes of ethics.

    c. "Performance standard" is a standard as defined above that states
    requirements in terms of required results with criteria for verifying
    compliance but without stating the methods for achieving required
    results. A performance standard may define the functional requirements
    for the item, operational requirements, and/or interface and
    interchangeability characteristics. A performance standard may be
    viewed in juxtaposition to a prescriptive standard which may specify
    design requirements, such as materials to be used, how a requirement
    is to be achieved, or how an item is to be fabricated or constructed.

    d. "Non-government standard" is a standard as defined above that is in
    the form of a standardization document developed by a private sector
    association, organization or technical society which plans, develops,
    establishes or coordinates standards, specifications, handbooks, or
    related documents.

    4. What Are Voluntary, Consensus Standards?

    a. For purposes of this policy, "voluntary consensus standards" are
    standards developed or adopted by voluntary consensus standards
    bodies, both domestic and international. These standards include
    provisions requiring that owners of relevant intellectual property
    have agreed to make that intellectual property available on a
    non-discriminatory, royalty-free or reasonable royalty basis to all
    interested parties. For purposes of this Circular, "technical
    standards that are developed or adopted by voluntary consensus
    standard bodies" is an equivalent term.

    (1) "Voluntary consensus standards bodies" are domestic or
    international organizations which plan, develop, establish, or
    coordinate voluntary consensus standards using agreed-upon
    procedures. For purposes of this Circular, "voluntary, private sector,
    consensus standards bodies," as cited in Act, is an equivalent
    term. The Act and the Circular encourage the participation of federal
    representatives in these bodies to increase the likelihood that the
    standards they develop will meet both public and private sector
    needs. A voluntary consensus standards body is defined by the
    following attributes:

    (i) Openness.

    (ii) Balance of interest.

    (iii) Due process.

    (vi) An appeals process.

    (v) Consensus, which is defined as general agreement, but not
    necessarily unanimity, and includes a process for attempting to
    resolve objections by interested parties, as long as all comments have
    been fairly considered, each objector is advised of the disposition of
    his or her objection(s) and the reasons why, and the consensus body
    members are given an opportunity to change their votes after reviewing
    the comments.

    b. Other types of standards, which are distinct from voluntary
    consensus standards, are the following:

    (1) "Non-consensus standards," "Industry standards," "Company
    standards," or "de facto standards," which are developed in the
    private sector but not in the full consensus process.

    (2) "Government-unique standards," which are developed by the
    government for its own uses.

    (3) Standards mandated by law, such as those contained in the United
    States Pharmacopeia and the National Formulary, as referenced in 21
    U.S.C. 351.

    The AVI file format is an example of a standard.  AVI would probably be
    considered a "de facto standard" in the language of the U.S. Federal
    Government.

    Video for Windows (VfW)
    Microsoft Windows software component for handling and displaying
    video.  Windows 3.x incorporates a 16-bit Video for Windows.
    Windows 95 and Windows NT both incorporate a 32-bit Video for
    Windows.

    VBR
    Variable Bit Rate.  In video coding, the bitrate of the encoded
    video stream varies over time.  Sometimes the video is encoded with
    a fixed quantization factor resulting in varying bitrates and varying
    perceived quality.  Sometimes the video is encoded with a fixed
    perceived quality which usually results in varying bitrate.

    VCM
    Video Compression Manager.  The Microsoft Video for Windows
    component that manages video codecs (compressor/decompressors).
    VCM can also be considered a specification for an API.  A video
    codec must conform to VCM to work with Video for Windows.

    VQEG
    Video Quality Experts Group.  The ITU's Video Quality
    Experts Group ad hoc committee to establish a standard for
    objectively measuring video quality.  A group of experts from
    three groups: ITU-R Study Group 11, ITU-T Study Group 9, and
    ITU-T Study Group 12.

    VxD
    Virtual Device Driver.  A type of device driver for
    Microsoft Windows 3.x and Windows 95.

    YCbCr
    The color space used in the CCIR-601 digital video specification.

    YIQ
    The color space used in the NTSC analog television standard.

    YUV
    The color space used in the PAL analog television standard.

    Return to Top

    Chronology

    January 6, 1999    Radius Incorporated, the Cinepak company,
    renames itself Digital Origin Incorporated.

    May 4, 1998        Microsoft's first public test version
    of Microsoft NetShow 3.0 streaming video and video
    server product.

    February 26, 1998  Date of Advanced Streaming Format (ASF)
    Specification Public Specification Version 1.0 co-authored by
    Microsoft Corporation and RealNetworks, Inc.  ASF is supposed
    to replace the AVI format.

    November 12, 1997  Microsoft releases a new NetShow distribution:
    NetShow 2.1  NetShow 2.1 adds support for RealNetworks (formerly
    Progressive Networks) RealVideo and RealAudio, NetShow clients for
    Windows 3.1, MacOS, and the Linux, Solaris, SunOS, and HP-UX versions
    of Unix, and TheaterServer for streaming broadcast-quality video over
    highbandwidth networks such as ATM and fast Ethernet.

    September 10, 1997 Microsoft releases second draft of
    ASF (Advanced Streaming Format) Specification.  ASF is
    intended to replace the AVI format.

    August 14, 1997    Microsoft releases first draft of
    the ASF (Advanced Streaming Format) Specification.  ASF is
    intended to replace the AVI format.

    August 5, 1997     Microsoft pays $75 million to acquire
    VxTreme of Sunnyvale, California.  VxTreme markets
    a video codec that is probably wavelet-based.

    July 21, 1997      Microsoft invests $30 million in
    RealNetworks (formerly Progressive Networks) of
    Seattle.  Microsoft also pays an additional $30 million
    to license RealNetworks audio and video technologies.
    RealNetworks technologies are RealAudio and RealVideo.
    RealVideo is actually the fractal video compression
    technology formerly known as ClearVideo, licensed from
    Iterated Systems.

    October 6, 1996    Microsoft invests $5 million for 10% of
    VDONet of Palo Alto, CA.  VDONet markets the VDOWave
    wavelet-based video codec.

    Return to Top

    Awards

    On March 23, 1998 the AVI Overview received the PC Webopaedia
    Outstanding Page Award.

    On February 4, 1999 was selected as a HotCool SuperSite.

    Credits

    The following people have contributed ideas, suggestions,
    criticisms, and information to the AVI Overview:

    John Avis            (information on Video for DOS)
    Jens Mutschke        Q-Team Dr. Knabe GmbH
    John Whelan          Dublin City University
    Victor Rutman        Netvision
    Wolfgang Hesseler    QuickView for DOS
    Marcus Moenig        MainConcept
    Dave Wilson          Rockwell/Brooktree
    Steve P.             (no full last name, information on CorelMove 4.0)
    Dennis Strauch
    Tom Harding          Practice Corporation
    Alexander Grigoriev
    Michael Caracena     AVI Constructor
    Ashley Jacobs        Mystech Associates
    Bernd Schoenes
    WashDC@aol.com       (information on BinHex and AVI)
    Kevin McKinnon       Dowco Computer Systems   (info on IFF file format and RIFF)
    Tom Lane             (Independent JPEG Group)
    Cindy Fuhrman        Techsmith Corporation
    Timothy Barr         (information on Premiere AVI to GIF89a plug-in)
    Chris Coppess        (information on Microsoft MPEG-4 and NetShow)
    David Gartner        Public Relations Manager, Equilibrium
    jim@shansys.com      (information on Shannon Communications Systems H.263+ AVI Codec)
    Susan Stearman       Ligos Technology Inc.  (LSX-MPEG Encoder)
    Guillaume de Balliencourt  Morgan Multimedia (Software M-JPEG Decoder)
    Paula Clark          (information on Woldo's Video Player and other tools)
    Laszlo               (information on MooVId and PIV-MooVId Amiga AVI/MOV players)
    Bill Luken           (information on RIFFSCAN and QTSCAN)
    Serguei Grigoriev    (information on MainConcept Motion JPEG Codec)

    Special thanks to:

    Desktop Video Expert Center/NASA Ames Research Center
    http://zeus.arc.nasa.gov/

    Return to Top

    NOTE: Suggestions, additions, and corrections are welcome.  Please
    send to