Share via


VoIP Three-Way Conferencing

Other versions of this page are also available for the following:

Windows Mobile Not SupportedWindows Embedded CE Supported

8/28/2008

Voice over IP (VoIP) three-way conferencing is a feature in Windows Embedded CE 6.0 R2. Previously, the Real-Time Client (RTC) relied on media servers to perform audio mixing to achieve three-way conferencing.  When global media mixing is enabled in RTC, it mixes audio locally and thus achieves three-way or n-way conferencing without assistance from the media server.

Design

To enable the three-way conferencing scenario by using RTC, a RTC client must be initialized with the flag RTCIF_ENABLE_GLOBAL_MEDIA_MIXING.

Media Mixing Logical Setup

Consider two audio connections between a caller (Endpoint 1) and two other callers (Endpoint 2 and 3). Without n-way conference, 2 and 3 can talk to 1, but not to each other on the existing calls. When local audio mixing is enabled on endpoint 1, endpoint 1 mixes the audio stream as described below, which will enable 3-way conferencing, and all three can talk to each other.

  • Endpoint 1 mixes its own audio (1) with the audio that it receives from endpoint 3 (3) and sends it to endpoint 2.
    - And -
  • Endpoint 1 mixes its own audio (1) with the audio that it receives from endpoint 2 (2) and sends it to endpoint 3.

This way, endpoint 2 can listen to endpoint 3, and endpoint 3 can also listen to endpoint 2.

Application Setup and SIP Flow

Consider the following way in which an RTC application can achieve a three-way or n-way conference call:

  1. Initialize the RTC client by using  RTCIF_ENABLE_GLOBAL_MEDIA_MIXING
  2. Make an outgoing call. The call gets connected, and media flows on both ends.
  3. Put the call on hold.
  4. Make a second outgoing call. The call gets connected, and media flows on both ends.
  5. Unhold the first call.
  6. Three-way conference call is achieved.

N-way conferencing can also be achieved. RTC does not impose any internal restrictions on the number of clients during local mixing.

Mixing is performed for all active calls at endpoint 1. If more than two clients are present, and all are active (not on hold), mixing is performed for all the calls. To talk to just one person, the application simply puts all other calls on hold. For example, if 1 needs to talk to 2 only, the application puts 3 on Hold.

Note that in this scenario, either call can be both incoming or outgoing and made in any order. For example, consider the following sequence:

  1. Initialize the RTC client using  RTCIF_ENABLE_GLOBAL_MEDIA_MIXING
  2. Receive an incoming call. The call gets connected, and media flows on both ends.
  3. Put the call on hold.
  4. Make a second outgoing call. The call gets connected, and media flows on both ends.
  5. Unhold the first call.
  6. Three-way conference call is achieved.

DTMF Event Handling with Global Media Mixing

Outgoing out-of-band (OOB) and in-band DTMF events are not mixed. For example, if Client 1 sends OOB or in-band DTMF to Client 2, the events are not sent to Client 3.

Incoming OOB DTMF are also not mixed. For example, if Client 2 sends OOB DTMF to Client 1, the events are not sent to Client 3. However, if OOB DTMF playback is enabled, which it is by default, OOB DTMF playback is mixed and forwarded to the remote party.

Incoming in-band DTMF is mixed. For example, if Client 2 sends in-band DTMF to Client 1, Client 2 also sends in-band DTMF to Client 3.

RTC API Behaviors with Global Media Mixing Enabled

All RTC APIs behave per session as they did previously. However, because of the conference nature of the calls, it may be confusing to see how the behavior of specific functions affects the conference call. The following information might help clarify the behavior of some APIs:

  • IRTCSessionCallControl::Hold and IRTCSessionCallControl::UnHold – These functions will behave as they did before, by Holding or Unholding each call. However, when global media mixing is enabled, all active call media is mixed and sent to other call parties.
  • IRTCParticipant3::SendDTMF – This function continues to work on a per-participant or per-call basis. If DTMF must be sent to all calls in the conference call, call this function for every call. Incoming DTMF handling is explained in the previous paragraph, DTMF Event Handling with Global Media Mixing.
  • IRTCSessionCallControl::Refer – This function only transfers the session on which it is called, and not all the calls of the conference .
  • IRTCSession::Terminate - This function only terminates the session on which it is called, and not all the calls of the conference .

Video Call Considerations

Enabling global media mixing does not enable mixing for video streams. For Windows Embedded CE 6.0 R2, global media mixing is supported only for audio streams. Therefore, if multiple A/V calls are active, only audio from those calls will be mixed and sent to other calls. Video will not be mixed.

See Also

Other Resources

Using the RTC Client API