Share via


Configuration Scenarios for the RTC SIP Stack (Windows Embedded CE 6.0)

1/5/2010

The SIP stack in the RTC Client API Catalog item is built to provide functionality such as presence and instant messaging (IM) when used with Microsoft Live Communication Server (LCS). However, there are other kinds of functionality, like video sessions, that the RTC Client API SIP stack doesn't currently provide.

One way to gain additional functionality without losing that provided by the RTC Client API SIP stack is to use more than one SIP stack at a time.

For example, what if you wanted to change the contents of the SIP datagrams that your VoIP phone sends and receives as a way to customize the VoIP implementation provided? Or you wanted to add a custom header to every outgoing SIP datagram. Or you might make a more extensive modification, like adding a new SIP verb that isn't provided or supported by the SIP stack included with the Real-time Communications (RTC) implementation. What do you do?

You would need to provide your own SIP stack implementation and not use RTC for either SIP or media. RTC only supports using its own native SIP stack implementation.

However, there are cases where you might want to continue to use RTC as well as using third party SIP and media stacks.

For example, you might choose to use a non-RTC Client API SIP stack for signaling and therefore media stack, so that you can support video conferencing or other SIP features not supported by the SIP stack provided by the RTC Client API. But you also might want to continue to use RTC for presence information. In that situation, you would have two parallel SIP stacks running along with your third party media stack. RTC's media stack would be disabled in this scenario, since it is not necessary for presence (or IM.)

Four Scenarios for SIP and Media Stacks with RTC

Ee480759.collapse(en-US,WinEmbedded.60).gifBasically, there are four scenarios for using RTC SIP and media stacks:

  1. The default RTC SIP stack and media stack implementation for sending and receiving audio calls as well as presence and IM, if desired.
  2. Using the RTC SIP stack but disabling the media stack so that you can use your own third party media stack implementation.
  3. Using the RTC SIP stack but using both the RTC media stack and an optional third party media stack. This scenario let's you decide if you want to handle the media yourself, in the case it may be say, video plus audio, or let RTC handle it as normal, meaning just audio. You do not disable the RTC media stack in this scenario.
  4. Using multiple SIP stacks but only one media stack. In this scenario, you are using RTC's SIP stack with the media stack disabled. You would likely use this if you wanted to use RTC for presence (and possibly IM as well) but were going to be using your own third party SIP and media stacks for calls, as in a videophone call.

Disabling the RTC media stack

As you can see from the list above, if you are going to use the RTC SIP stack for just presence and/or IM, you do not need the media stack. Yet, you do not have to disable the media stack if you are only using RTC for presence and/or IM. It is just good practice to do so anyway, since it will save ROM space.

The process goes like the following:

  • After you have co-created your IRTCClient, you would query for the IRTCClient2 interface.
  • You would then call the method IRTCClient2::InitializeEx with RTCIF_DISABLE_MEDIA, where RTCIF_DISABLE_MEDIA is one of the flags you pass, along with any other flags you need, during the initialization. For example, you might want to enable early media scenarios or symmetric UDP as well during this time.
  • The RTC media stack is now disabled.

To save ROM space, you just need to select RTC's signaling dynamic link library by setting the SYSGEN variable, SYSGEN_VOIP_SIGNALING, instead of the default variable, SYSGEN_VOIP. SYSGEN_VOIP selects both the signaling and the media dynamic link libraries of RTC.

For more information on RTCIF_DISABLE_MEDIA, please see RTCIF_.

More information

Regarding the other two scenarios, where you want to use a different media stack (not just disable the media stack and use RTC for presence) or where you want to use multiple media stacks, more information can be found in the related article, Using a Third Party Media Stack with RTC.

When using RTC just for presence, while you create a client and initialize it just like you would for an audio call, you do not create any sessions. You would only be using presence related APIs.

For more information about presence and RTC, please see Enable Presence Functionality as well as RTC Client API Objects and Interfaces including RTC Presence Device Object and RTC Buddy Object.

For additional information about customization, please see also Customizing Non-UI IP Phone Functionality.

See Also

Tasks

How to Develop a VoIP Phone

Other Resources

Common VoIP Phone Customization Tasks
Real-time Communications (RTC) Client API