Version 1 (modified by nanang, 16 years ago) (diff) |
---|
Enable Audio Proxy Server (APS) in PJSIP
Introduction
You can read about APS here. The benefits of enabling APS in PJSIP are:
- Low latency. As mentioned somewhere that PCM frame size in some audio layer is about 4KB (4KB/2/8000Hz * 1000ms = 250ms), this seems to be the source of high latency audio in Symbian, while using APS it is possible to record/play encoded audio frames with latency only about 30ms!
- Ability to switch audio-routing (to earpiece or loudspeaker). Using standard API (CMdaAudioOutputStream) the audio is routed to loudspeaker which may not be prefered in a private conversation. While routing audio to earpiece can also avoid echo.
Requirements
To build PJSIP with APS support, you will need:
- APS release 2.4.3 that is packaged in SDK API Plug-in, e.g:
- You may also need Extensions plug-in for S60 3rd Edition SDK for Symbian OS, for C++, MR to get sounddevice.h.
Building Steps
Here are a few steps to build PJSIP with APS support:
- Edit bld.inf and application .mmp files (e.g: symbian_ua.mmp, symbian_ua_gui.mmp, symsndtest.mmp), please make sure SND_USE_APS is set:
#define SND_USE_NULL 0 #define SND_USE_APS 1
- If you are using Carbide, please refresh the project first (right click bld.inf from the Symbian Project Navigator pane, and select Refresh). symbian_audio_aps.mmp should be there after the refresh done.
- Clean and rebuild the whole project, please note that WINSCW target doesn't seem to support APS.
- Make the installer (.sis file) for the application.
Installation
- Install APS Server apsserver2.sisx to device, the installer comes with the APS SDK package i.e in folder InstallToDevice/AudioProxyServer243. You will need to do this only once for each device.
- Sign the application installer with APS support with Developer Certificate using Open Signed Offline/with Publisher ID. (APS requires MultimediaDD capability and this capability is among the restricted capabilities). Please see Symbian Signed for more detail.
- Install the application to the device.
Developing Application with APS Support
There are some notes for developing application with APS support:
- Currently, frame time/PTIME supported by sound device with APS is only 20ms. For example if your application is using pjsua, you will need to specify something like this in pjsua config:
med_cfg.audio_frame_ptime = 20;
- Specify application UID in a global variable named APP_UID whose base type TPtrC, e.g:
TPtrC APP_UID = _L("2000521C");
Limitation
- As mentioned before, sound device will only support 20ms frame time.
- Currently, this APS wrapper can only work in S60 3rd edition device that supports G.711, which perhaps (almost) all S60 3rd edition devices.