Compression Driver Architecture

Compression drivers are DLLs that compress or decompress video or other types of data in response to requests from the system or applications. Applications never access the compression driver directly. Instead, an application calls a corresponding Win32 compression function that directs the system to send the request to the driver in the form of a message.

The typical compression driver combines both compression and decompression functions. When a compression driver receives a request, it usually receives video or other data that needs to be compressed or decompressed. The video data can be either still bitmaps or motion-video frames. The driver typically receives compressed data from an application that has opened an AVI file; the driver is expected to return the uncompressed data to the application. The driver typically receives uncompressed data from a video source, such as a disk file or a video device.

Some compression drivers also write directly to the display or display driver. Such drivers, called rendering drivers, can replace the display driver or take over some of the responsibilities of the driver. These drivers handle a set of messages, the ICM_DRAW messages, in addition to the decompression messages defined for the services that return the decompressed video to the client application. Rendering drivers can reside in the same DLLs as compressors and decompressors, or they can reside in a separate DLL.