The media mode is the form in which data is transmitted on a line. The four
main types of media mode are voice, speech, fax, and data. With TAPI, calls can
be established independently of the call's media mode.
The media stream is the actual stream of information that travels on the line.
Phone devices and calls on line devices are capable of carrying media streams.
The Telephony-API line and phone device classes provide a wide range of
control operations for these devices, but access to the media stream itself is not
provided by TAPI. Instead, the application must use other APIs for the Win32
environments to access or manage these media streams. These APIs include the
Waveform API, the Comm API, and the MCI (Media Control Interface). The Waveform API
is used for multimedia programming, the MCI provides a high-level generalized
interface for controlling media devices, and the Comm API is the set of
communications functions provided by the Win32 SDK.
For example, for line devices, an application can use TAPI to establish a
connection to another station. Once the connection is established, the application
can then use the Waveform API (or the MCI Waveaudio API) on the associated
device to play back (send) and record (receive) audio data over the connection.
Similarly, if the connection's media stream is from a modem, an application would
use the modem configuration extensions of the Comm API to control the media
To provide TAPI and media-stream access to either a phone or a call on a line
device, the service provider must implement both the Telephony SPI and the
appropriate media stream SPI or DDI (device-driver interface). The service provider
can support lines and phones simultaneously.
Because these device classes and media stream interfaces function
independently of one another, coordination of their usage must occur at the application
level. Multiple applications that share calls and media streams in nontrivial ways
will likely need to coordinate their activities at the application level to
prevent conflicting usage of TAPI and the media stream API in use. For more
information on preventing conflicts, see Multiple-Application Programming
TAPI reports changes in the type of media stream (voice, fax, data modem, and
so on) to participating applications. This process is sometimes referred to as
call classification. The mechanism used to determine the type of media stream
is specific to the service provider. For example, a service provider may filter
the media stream for energy or tones that characterize the media type, or it
may use distinctive ringing, information exchanged in messages over the network,
or knowledge about the caller or called ID to make this determination.
TAPI also provides limited support for control of the media stream on a call,
particularly in server-based networks. The actual data does not pass through
TAPI, but TAPI can be used to a limited extent to control functions that control
the media stream. This control is provided to avoid latency (delay) problems
that could arise in client/server configurations for which the application is
forced to use the stream's media API. An application can request actions on a
call's media stream if these actions are to be triggered by events normally
reported by TAPI, such as the detection of a tone or DTMF digit, or the transition of
a call to a specified call state.
For example, an application can request that a call's media stream be
suspended (with lineSetMediaControl
) when a # DTMF digit is detected on the call, and that the media stream be
resumed when a * DTMF digit is detected. Note that some implementations or
configurations will be unable to provide any media-control functions or media access
to the phone or line. Providing media control is optional to the service
provider; it should provide performance benefits primarily for client/server
implementations. Because it is optional and because only limited control is provided,
its usage is generally discouraged. If possible, applications should use the
media stream's control functions instead.
- Software for developers
Software for Android Developers
- More information resources
Unix Manual Pages