The media flow for a conversation provides the media that an application consumes.

When an application establishes a call, the platform creates an appropriately-typed media flow, using a media provider of the appropriate type. For example, establishing an audio/video call triggers the platform to use an internal audio/video media provider to create an AudioVideoFlowobject for the call.

Applications can register for state changes in the media flow instance that is associated with a call (for example, an audio/video call’s AudioVideoFlowobject). The basic states of a media flow object are exposed through its Stateproperty and are Idle, Active, and Terminated. When the media flow state is Active, the application can send or receive media. For example, for an audio/video call, the application can use all of the capabilities of a Playeror Recorder. For an instant message call, the application can start sending messages.

Applications can also configure the media flow to the extent that the flow is exposed in the flow object.