M5T SIP Client Engine SDK
The SIP Client Engine SDK handles SIP signaling details and abstracts Media Management, SDP negotiation and XCAP handling. The SDK allows developers to focus on the user/device interface and management functionality. The media side can be implemented by customers to integrate the SCE on any type of SoC (DSPG, TI, Marvell, etc.).
What is Included
Licensing the SCE for developing an IP Phone, a Mobile Client or even a Residential Gateway will provide you with the following:
- Comprehensive API Reference documents;
- Programmers’ Guide;
- Full SCE C++ source code;
- M5T Make – make tool for Linux;
- Sample Media Engine & Media Engine integration source code;
- Demo application with either slim UI (iOS/Android) or CLI (Linux/Windows);
- RFC 3261, 3262, 3263, 3264, 3265 series; (Many additional RFCs and standards are supported. Contact Media5 for the complete list.)
- IMS 24.229 and other relevant IMS specification
- Multi-line / multi-user
- IPv4 / IPv6
- UDP / TCP / TLS
- DNS A, AAAA, SRV & NAPTR
- “sip”, “sips”, “tel”, “pres” and “im” URI schemes
- ENUM resolution of “tel” URIs
- SIP extensions for:
- Asserted Identity
- UA Capabilities
- Caller Preference
- High-Level Components:
- Per user/line configuration component
- Call / Media Session
- Generic Subscriber (any event)
- Generic Notifier (any event)
- Message Waiting Indication (specialized subscriber)
- Generic Publisher (any event)
- Unsolicited notify handler
- Out-of-dialog request sender
- Generic request sending by application
- Generic request handling by application
- Packet observer mechanism to see incoming and outgoing packets
- Ability to modify outgoing packets per call or component
- Access to low lever SIP “context” & services
The signaling components are responsible for implementing specific SIP use-cases. As an example, the registration component is responsible for everything related to a SIP registration, including managing registration refreshes, registration retries, and even subscriptions to the reg-info event for a specific registration.
The set of signaling components that comes with the SCE permits the development of all common voice and video telephony services. They include generic subscription and notification components as per RFC 3265, a generic publishing component as per RFC 3903, and registration and call components.
Moreover, a generic component is provided for sending any type of SIP request outside the scope of a dialog. Some SCE Options, like the UA-IMPP option offers additional signaling components for application use.
Although higher level APIs in other languages are provided as part of our Demo application, all interfaces to the SCE are provided as C++ interfaces, most being ‘ECOM-based’, a mechanism developped by Media5.
ECOM stands for “Embedded Component Object Model” and is much like the Microsoft COM mechanism, but targeted for lightweight C++ embedded systems.
Its principal uses are for dynamic interface query (via QueryIf()) and reference counting.For example,the ECom mechanism is used to insure that all SIP signaling components implement the ISceBasicExtensionControl that allows applications to access various extension mechanisms on a specific component.
The User Profile (also called User Configuration) is the mechanism by which the SCE allows the support for multiple different User Profiles.
The application using the SCE can create as many User Profiles as it needs and configure each one independently of the other. This allows the support of multi-line features or having a user with SIP accounts on different VoIP service providers.
It is through this profile mechanism that the application using the SCE can configure many mechanisms and interoperability parameters. Examples include enabling/disabling the GRUU mechanism, configuring if TEL URIs are resolved, configuring how hold/resume is performed, etc…
The application will associate a single User Profile to each Signaling Components it creates, allowing each individual component to know what mechanism are to be active as well as what interoperability parameters must be enabled and disabled.
To maximize portability, the SCE fully abstracts its interactions with the “Media Engine”. Here the Media Engine is the component that is responsible for interacting with the device hardware resources (camera, screen, speakers and microphone) and passing RTP packets from the network to these resources and vice versa. This includes the management of the jitter buffer, the codec implementation and other mechanisms like voice activity detection and acoustic echo cancellation.
Depending on the available and selected Media Engine, an implementation of the abstraction layer will have to be done. For most hardware-based SIP client implementations, a “Media Engine” will be available from the SoC provider (like DSPG, TI, Marvell, etc.), in which case the customer will have to implement the abstraction layer, thus allowing the SCE to interact with the selected SoC. Cutomers can also licence Media5’s own implementation for various SoC, including DSPG DVF99, Intel Puma and Marvell Armada.
For software-based SIP clients, including mobile clients, customers have the choice to build or use their own software-based Media Engine, or license the M5T WebRTC Media Engine Option, which is a pre-integrated media engine based on the media engine from the WebRTC project. The M5T WebRTC Media Engine Option is available for many mobile, desktops, and even embedded platforms
As with all software from M5T, the SCE is built on top of the M5T Framework. This framework is used to abstract the OS and network, as well as providing basic tools for threading and abstract data types.
The M5T Framework is where adaptations and modifications are done should the need arise to support a new operating system. Support is included for operating systems such as Windows, Linux, iOS and Android.
Additional options can be licensed from Media5 including but not limited to:
- FXS Call Manager Option, including support to handle analog lines within IADs and ATA.
- UA-IMPP Option, including support for Presence and IM
- WebRTC Media Engine Option, including support for Audio and Video within a pre-integrated software media engine.
- SoC Media Engine Option, including support for various SoC such as DSPG DVF99, Intel Puma and Marvell Armada
- FECC Option, including support for Far End Camera Control client/server using H.224 and H.281
- NAT traversal Option, including support for SIP Outbound, STUN and ICE
- And More…
Single Code Base
The SCE offers a single multi-platform and multi-OS code base that can be deployed for any project. It supports Windows, Linux, iPhone® / iOS, Android, and other operating systems. It also supports Intel, PPC, MIPS, and ARM -based platforms. This increases developer productivity by offering universal SIP stack implementations.
The SCE and its options offer a high level API to get you going faster but lower level, well documented APIs let you do what you need to do. Additional options can also be licensed to speed-up your development.
IETF, IMS, RCS, VolTE, PacketCable
The SCE is deployed in a wide range of networking scenarios, whether it is for custom-based, IETF-based or IMS-based telecommunications networks. The SCE offers a wide range of run-time and compile-time configuration parameters that allow your solutions to be deployed in virtually any SIP based environment.
SoC and Media Engine Options
Customers can select to license either the software-based M5T Media Engine option that includes the media engine from the WebRTC project, or other readily available SoC oriented Media Engine options for either DSPG, IntelPuma, Marvell, or others.