/**************************************************************************
 *
 *  THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
 *  KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
 *  IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
 *  PURPOSE.
 *
 *  Copyright (c) 1993, 1994  Microsoft Corporation.  All Rights Reserved.
 *
 **************************************************************************/

                        Win32 SDK Multimedia Samples

    Contained in this tree is a set of multimedia samples for use with the
Win32 SDK. 'nmake -a' builds them all. Several of the samples require
additions to the registry to run and some of them can be used to run other
samples...


AVIEdi32

     A simple stream based AVI File editor. Uses the AVI file and stream
 interface to perform operations such as merging files and editing - cut &
 paste of frame(s) and streams.


AVIView

     An AVI file viewer, which also uses the AVISaveOptions API to convert a
 file's compression format from one codec to another.
     The 'File:Save With New Palette...' option can be used to test the
 PalMap sample.


CapTest

     Demonstrates the use of the AVI Cap window class.


DSeqFile

     A custom AVI File handler, which will use a sequence of numbered DIB
 files to create what looks like an AVI file with one video stream. Needs
 some registry keys adding so that AVIFile will know about it. See the
 example file dseqfile.reg, but remember to substitute new GUID's using
 GUIDGEN if you incorporate this sample code into any application in
 production use.



ICMApp

     Shows the use of DrawDib and the VfW Image compression/decompression
 APIs. ICMApp is an MDI application that demonstrates the following:
   - Loading/saving windows bitmaps (i.e. DIBs), see DIB.C and DIB.H.
   - Using DRAWDIB to draw compressed/uncompressed images.
   - Calling ICImageCompress and ICImageDecompress and ICCompressorChoose.


ICWalk

     Displays all the ICM Compressors currently installed.


LangPlay

     Uses the MCIWnd class to play back movies, allowing the user to select
 which audio stream to play.


Lowpass

     Illustrates how to use the multimedia file I/O services to read and
 write RIFF files. Lowpass runs a simple low-pass filter over an
 8-bit-per-sample mono WAVE file.  Note that this program does not copy
 unknown chunks to the output file.


MCIPlay

     Uses the MCIWnd class and the MDI API to allow playback of multiple
 movies in the same app.


MCIPuzzl

     Sample app showing the use of the MCIWnd installable draw procedure. It
 demonstrates:
   - Using the MCIWnd window class to play MCI files.
   - Using an installable draw procedure with MCIAVI.
   - Implementing a version of the classic "15" puzzle.


MIDIM32

     MIDIM32 records and displays incoming MIDI information. It uses a
 low-level callback function to get timestamped MIDI input. The callback
 function puts the incoming MIDI event information (source device, timestamp,
 and raw MIDI data) in a circular input buffer and notifies the application
 by posting  a MM_MIDIINPUT message.  When the application processes the
 MM_MIDIINPUT message, it removes the MIDI event from the input buffer and
 puts it in a display buffer.  Information in the display buffer is converted
 to text and displayed in a scrollable window.  Incoming MIDI data can be sent
 to the MIDI Mapper if the user chooses.  Filtering is provided for the
 display buffer, but not for data sent to the Mapper.


MixApp

     Uses the low level mixer services to display information from the
 currently installed mixer devices.


MovPlay

     Two versions of this app are included. Movplay1 uses mciSendCommand and
 Movplay2 uses mciSendString to open and play back AVI movies.


Mplay

     A minimal movie playback app using the MCIWnd class.


PalMap

     A Custom AVI stream handler that will re-map a video stream's palette to
 contain fewer colours. It uses a fairly unsophisticated technique, without
 attempting dithering, etc. to improve quality.
     To use this sample put palmap32.dll on the system path and use AVIView's
 'File:Save with new palette...' option. The changes will only become
 apparent after the file has been saved and reloaded.


Reverse

     Reverse uses the low-level waveform playback services. It also shows how
 to use the multimedia file I/O services to read data from a WAVE file.
 It plays a WAVE waveform audio file backwards!


TextOut

     An installable compressor for drawing text streams. Use the control
 panel drivers applet to add this to the system. Add an unlisted driver and
 point the applet at the textout directory, containing the oemsetup.inf file.


WaveFile

     A custom AVI File handler, which makes a .WAV file look like an AVI file
 with one audio stream. Needs additions to the registry so that AVIFile knows
 about it. See the file wavefile.reg, but remember to use new GUID's
 generated by GUIDGEN if you incorporate this sample code into any
 application in production use.

     Compare this C file handler with the C++ DSeqFile.


WriteAVI

     Writes a small AVI file to output.avi, using the AVI File & Stream API.
 The file includes a text stream that can be viewed in apps such as Media
 Player after you have installed the TextOut sample.

