DirectShow Media Handling

[This is preliminary documentation and subject to change.]

One of the main goals for TAPI version 3.0 is to provide a uniform way to access the media streams or data of a call. In this context, "stream" does not refer to the traditional use as in "streaming" but simply to the data or media. TAPI 3.0 has been designed to support DirectShow™ as the primary processor for media. Additionally, there is support for accessing raw data.

TAPI 3.0 provides very high-level abstraction of media streams (see Media Type for definitions). Additional media types can be registered so that providers can expose their own data types.

A TAPI 3.0 application typically specifies a terminal to use with a media type. The combination of a terminal and a media type forms a ITMediaTerminal object. When a call is made, the application specifies an array of ITMediaTerminals used when creating and connecting the call. This allows an application to be very specific about call set-up. For example, the audio portion of the call can be rendered through the soundcard and recorded to a file.

Any DirectShow renderer can be a TAPI 3.0 terminal. If a DirectShow filter exists that can handle the input, a TAPI application can direct the media flow to it. The terminal can be a soundcard, a video display, a file, or a device yet to be invented.

An application can also specify NULL for the ppTerminal member of the ITMediaTerminal object. This is only valid for a DirectShow MEDIATYPE, and indicates that the application can handle the DirectShow filter graph after the call is set up. TAPI 3.0 then sets up the smallest possible DirectShow filtergraph for the specified MediaType. TAPI assumes the application takes responsibility after the call is connected.

On return of the call, the application may choose to access the DirectShow filter graph that may have been set up for the call. The actual instantiation of the filters is handled by the media service provider which is called implicitly by Connect. The application can modify the filter graph but the graph might not be ready to play until the call is in a connected state.

The handling of generic data streaming will be defined in an upcoming version of TAPI.

DirectShow filters developed for use with TAPI 3.0 are covered in About DirectShow Real-Time Transport Protocol. The filters include methods for specifying Quality of Service (QOS).