HOW TO ACTIVATE LIBSAMPLERATE (a.k.a SRC/Secret Rabbit Code) AS PJMEDIA'S SAMPLE RATE CONVERSION BACKEND by Benny Prijono PJSIP Background ---------- Secret Rabbit Code (aka libsamplerate) is a sample rate conversion library, available from http://www.mega-nerd.com/SRC/index.html. It is licensed under dual license, GPL and proprietary. Supported Platforms ------------------- libsamplerate is available for Win32 with Visual Studio and the Makefile based targets (such as Linux, MacOS X, *nix, etc.). It's not supported for WinCE/Windows Mobile and Symbian since it is a floating point based implementation. Installation ------------ - Download libsamplerate from http://www.mega-nerd.com/SRC/index.html - Untar libsamplerate-0.1.2.tar.gz into third_party directory cd third_party tar xzf libsamplerate-0.1.2.tar.gz - Rename libsamplerate-0.1.2 directory name to libsamplerate On Windows: ren libsamplerate-0.1.2 libsamplerate On Linux/Unix/MacOS X: mv libsamplerate-0.1.2 libsamplerate Visual Studio Build ------------------- For Visual Studio projects, only static linkage is supported by PJMEDIA build system. If dynamic linking is desired, edit pjmedia/src/pjmedia/resample_libresample.c to prevent it from linking with the static library, and configure your project to link with libsamplerate DLL library. To build libresample static library with Visual Studio: - Open third_party/build/samplerate/libsamplerate_static.dsp - Build the project for both Debug and Release build libresample dynamic library can be produced by following the instructions in libresample source directory. Makefile build -------------- - Build and install libsamplerate (configure && make && make install). Please follow the instructions in libsamplerate documentation. - Re-run PJSIP's "configure" script with this option: ./configure --enable-libsamplerate this will detect the presence of libsamplerate library and add it to the input library list. Enabling libsamplerate for PJMEDIA's resample --------------------------------------------- For both Visual Studio and Makefile based build system, add this in config_site.h: #define PJMEDIA_RESAMPLE_IMP PJMEDIA_RESAMPLE_LIBSAMPLERATE Limitations ----------- Sample rate 22050 Hz is only supported with 20ms ptime, and sample rate 11025 Hz is only supported with 40ms ptime. This is the limitation of PJMEDIA rather than libsamplerate.