Microsoft DirectX 8.1 (C++)

DirectShow Filters and Filter Graphs

When multimedia is displayed in an application by using Quartz.dll, the application is using a collection of objects called filters; this collection is sometimes called a filter graph. The following diagram depicts a filter graph that can render an Audio-Video Interleaved (AVI) file.

Filter Graph

In this diagram, the AVI source filter reads the file from disk. The AVI decompressor filter (codec) decompresses the video data as it is passed from the source filter. The codec filter then passes this data to the video renderer. The video renderer, in turn, passes the data to the device in a format that the device understands. The AVI source filter passes the audio data directly to the audio renderer, which, in turn, passes the data to the audio device.

In addition to filters, DirectShow supports an Automation object called the filter graph manager. This object knows about the available filters and understands which filter types are required to render which file formats. The filter graph manager exposes the methods, events, and properties supported by the filters in a given graph. The filter graph manager also exposes its own set of methods, events, and properties. These are exposed by using interfaces, which are simply collections of related methods, events, and properties.

The following table identifies the DirectShow interfaces available in Quartz.dll for use with Visual Basic-based applications, and describes the purpose of each interface.

Interface Description
IAMCollection Accesses pin and filter collections.
IBasicAudio Controls and retrieves current volume setting.
IBasicVideo2 Controls a generic video renderer.
IFilterInfo Retrieves information about a filter and about pin objects in the filter.
FilgraphManager Instantiates the filter graph and controls media flow (running, paused, stopped).
IMediaEvent Allows customized event handling for events such as repainting, user termination, completion, and so on.
IMediaPosition Controls and retrieves start time, stop time, rate, and current position.
IMediaTypeInfo Retrieves the media type and subtype.
IPinInfo Accesses pin information, such as pin direction and media type, and controls pin connection, disconnection, and rendering.
IRegFilterInfo Contains information about registered (transform and render) filters.
IVideoWindow Controls window aspects of a video renderer.