## List of Multimedia Streaming Interfaces

Multimedia streaming comprises a number of interfaces; this article provides a brief description of each interface. For additional information about multimedia streaming, see About the Multimedia Streaming Architecture.

Contents of this article:

- Base Multimedia Streaming Interfaces
- DirectDraw Streaming Interfaces
- Audio Streaming Interfaces
- DirectShow Multimedia Streaming Interfaces

Base Multimedia Streaming Interfaces

The DirectX Media SDK includes reference documentation for the multimedia streaming interfaces; the interfaces and their methods provide a programatic way of access multimedia streams. However using a base interface to access a specific type of data can limit the amount of control you have over the data, so media developers should create derived versions of these interfaces that provide more powerful control over the unique capabilities of their media type.

IMultiMediaStream
  This interface defines how to access the highest-level multimedia stream object; this object contains and provides access to other stream objects. IMultiMediaStream has methods that enumerate or retrieve specific streams, as well as checking the stream's total time duration and seeking within the stream.
IMediaStream
  This interface defines a generic stream object. Use its methods to retrieve a pointer to the stream, get information about the stream, and create samples from the stream data. You can also create shared stream samples, which multiple streams can access without duplicating the sample's data.
IStreamSample
  This interface controls the behavior of a specific stream sample. You can retrieve the stream that created the sample, check the sample's start and end times and completion status, and perform a user-defined function on the sample itself (through the Update method). Typically, the Update method processes the sample data in an appropriate manner, such as rendering video data or playing back audio data.

DirectDraw Streaming Interfaces

If you use Microsoft® DirectDraw-supported video formats in your streams, the following interfaces give you more powerful control over the data than the more generic base interfaces.

IDirectDrawMediaStream
  This interface derives from IMediaStream; it sets and retrieves the stream format and the DirectDraw® object associated with the media stream. You can also use this interface to create video samples.
IDirectDrawStreamSample
  This interface derives from the IStreamSample interface and enables you to attach video samples to DirectDraw surfaces. Each attached surface includes a clipping rectangle to make rendering easier.

Audio Streaming Interfaces

IAudioMediaStream
  The IAudioMediaStream interface controls audio media streams. This interface inherits from the IMediaStream interface and is used to create one or more IAudioStreamSample objects. It is also used to set and retrieve the current format of the stream data.
IAudioStreamSample
  The IAudioStreamSample interface retrieves information from the underlying IAudioData data objects.
IMemoryData
  The IMemoryData interface contains methods which set and retrieve memory data on audio data objects. Audio data objects provide the underlying data which stream samples access. This interface provides a way to initialize memory buffers and to set actual amounts of audio data in the objects. Additionally, the IMemoryData::GetInfo method can be used to retrieve audio memory data.
IAudioData
  The IAudioData interface provides methods which allow applications to set and get the underlying audio data that audio streams will reference. The audio data format is set in the WAVEFORMATEX structure.

DirectShow Multimedia Streaming Interfaces

The following interfaces expose Microsoft DirectShow™ functionality to multimedia stream developers. Application developers should implement only the IAMMultiMediaStream interface in their applications; DirectShow uses the other two interfaces internally.

IAMMultiMediaStream
  This interface controls connections between streams and DirectShow filter graphs. It provides methods that instantiate filter graphs, open DirectShow-supported media files, and generate an appropriate filter graph for playback. The CLSID_ActiveMovieMMStream class identifier supports this interface.
IAMMediaStream
  This interface is a DirectShow-specific derivation of the IMediaStream interface. It handles the internal negotiation of connections between multimedia streams and DirectShow filter graphs. Application developers should not use or implement this interface.

© 1997 Microsoft Corporation. All rights reserved. Terms of Use.