Using VoIP Audio Services (VAS) in PJSIP
Build for Desktop
Build for Mobile
- iOS: Apple iPhone, iPad, and iPod Touch
- BlackBerry 10 (BB10)
- Windows Mobile
- Windows Phone 8.x and UWP
- Build for Other
Next: Using the libraries
Table of Contents
- Building Steps
- Developing Application with VAS Support
- Common Problems
VoIP Audio Services API is a secure single utility interface to audio services on the S60 platform, which allows control of audio by 3rd party VoIP client applications. It provides high level access to audio device making possible to play and record audio, play DTMF and ring tones, configure supported codecs, adjust microphone gain, volume level, and switch audio routing between private and public output device. It removes the need for use of Audio Proxy Server (APS) on S60 3rd Edition, Feature Pack 1 and Feature Pack 2 and largely extends its feature set. (quoted from Nokia wiki page on VAS).
VAS shares the same benefits as APS, i.e: low latency, audio-routing, and built-in echo canceller. VAS is available for almost all S60 3rd ed (except plain/MR) and S60 5th ed devices, while APS is available only for all S60 3rd ed (plain/MR, FP1, FP2) devices, also it is marked as obsolete or no longer maintained.
To build PJSIP with VAS support, we need:
- Successfully build non-APS/VAS PJSIP as described Getting Started for Symbian, note that VAS is only available starting from PJSIP version 1.4.
- SDK API Plug-in corresponding to each main SDK.
- You need a Symbian Developer Certificate of type Open Signed Offline and with valid Publisher ID to install the application that uses VAS on the device. VAS requires MultimediaDD capability and this capability is among the restricted capabilities so the application needs to be signed with a valid developer certificate to use the capability. The signing options for applications that need these restricted capabilities are Open Signed Offline or Certified Signed. Please see Symbian Signed website for more detail.
Here are a few steps to build PJSIP with VAS support:
- Specify that sound device implementation is using VAS, and turn off MDA and APS i.e in config_site.h:
#if defined(PJ_SYMBIAN) || PJ_SYMBIAN==1 # define PJMEDIA_AUDIO_DEV_HAS_SYMB_VAS 1 # define PJMEDIA_AUDIO_DEV_HAS_SYMB_APS 0 # define PJMEDIA_AUDIO_DEV_HAS_SYMB_MDA 0 #endif
- Specify the VAS version in config_site.h, e.g:
/** * This setting controls Symbian VAS version to be used. Currently, valid * values are only 1 (for VAS 1.0) and 2 (for VAS 2.0). * * Default: 1 (VAS version 1.0) */ # define PJMEDIA_AUDIO_DEV_SYMB_VAS_VERSION 1S60 5th edition uses VAS 2.0 while the previous platforms (S60 3rd edition FP1 & FP2) use VAS 1.0. Please see this to use VAS 2.0 on S60 3rd edition FP1 and FP2 (haven't tested this ourselves though).
- Activating VAS in each MMP
Edit symbian_ua.mmp (and symbian_ua_gui.mmp if you are using it):#define SND_HAS_VAS 1 #define SND_HAS_APS 0 #define SND_HAS_MDA 0
- Clean and rebuild the whole project. Please note that WINSCW target doesn't seem to support VAS.
- Make the installer (.sis file) for the application.
- Install VAS Server VoIPAudioSrvc_xxxx.sisx to device, the installer comes with the VAS SDK package i.e in folder InstallToDevice, you will need to do this only once for each device. This step is not required for S60 5th edition devices since VAS is already bundled in the firmware.
- Sign the application installer with VAS support with Developer Certificate using Open Signed Offline/with Publisher ID.
- Install the application to the device.
Developing Application with VAS Support
- Link the application to VAS library, i.e:
- Add MultimediaDD capability to your application, i.e. in application MMP:
CAPABILITY MultimediaDD ...
There are some notes for developing application with VAS support:
- There seems binary compatibility issue among Symbian OS versions, you will have to use appropriate SDK API Plug-in and VoIPAudioSrvc_xxxx.sisx for each OS version.
- Currently, this VAS wrapper can only work in S60 3rd edition device that supports G.711, which perhaps means all S60 3rd & 5th edition devices.
- VAS features of DTMF and ringtone are not implemented.
- G729 codec is missing, while other built-in VAS codecs (G711, AMR-NB, ILBC) seem to be detected fine, e.g: listed in the generated SDP offer. This can be caused by inconsistent VAS versions used in the build and the service installation (on device). Also do not forget to set PJMEDIA_AUDIO_DEV_SYMB_VAS_VERSION macro setting appropriately.