How to build WebRTC?
Mac
Refer to WebRTC development guide here(http://www.webrtc.org/native-code/development).
Then configure PJSIP with:
./configure --with-webrtc=/Users/me/webrtc-mac
iOS (ARM)
Refer to WebRTC development guide here.
PJSIP's
auto configuration will look for the library in out_ios/Release folder,
so make sure you set the output dir properly when building !WebRTC
export GYP_GENERATOR_FLAGS="output_dir=out_ios"
ninja -C out_ios/Release
Then configure PJSIP with:
./configure --with-webrtc=/Users/me/webrtc-iphone
Android
Android
development is only supported on Linux (reference here), so if you use
other platforms, you need to set up a Linux virtual machine.
Alternatively,
you can build the stripped down version of WebRTC instead, which will
only build the required AEC module and its required dependencies. These
steps below are tested on a Mac machine:
Create a working directory, for example: webrtc-android.
Go to the work dir and unzip webrtc-android-jni.zip (provided in the ticket attachment below).
Go to jni folder and run ndk-build.
Copy the resulting .so files from ../libs/[target_architecture] into
your Android application project directory, for example:
cp ../libs/armeabi/*.so /Users/me/pjproject/pjsip-apps/src/swig/java/android/libs/armeabi
Add this in PJSIP's user.mak, located inside PJSIP's work dir:
export CFLAGS += -I"/Users/me/webrtc-android/src" -DPJMEDIA_HAS_WEBRTC_AEC=1 -DPJMEDIA_WEBRTC_AEC_USE_MOBILE=1
export LDFLAGS += -L"/Users/me/webrtc-android/libs/armeabi" -lwebrtc
Rebuild PJSIP.
For other architectures
(or custom WebRTC installation undetected by configure script)
You can customize PJSIP's user.mak file, located inside PJSIP's work dir:
export CFLAGS += -I"/Users/me/webrtc/src" -DPJMEDIA_HAS_WEBRTC_AEC=1
# Uncomment below if you want to use the lighter, mobile-optimized version
# export CFLAGS += -DPJMEDIA_WEBRTC_AEC_USE_MOBILE=1
export LDFLAGS += -L/Users/me/webrtc/[WebRTC_lib_path] -laudio_processing -lcommon_audio -lsystem_wrappers
# If you build for ARM architecture, uncomment below
# export LDFLAGS += -laudio_processing_neon -lcommon_audio_neon
# Or else, if you build for MIPS architecture, uncomment below
# export LDFLAGS += -laudio_processing_neon -lcommon_audio_neon
# Or else, if your machine supports SSE2, uncomment below
# export LDFLAGS += -laudio_processing_sse2
Then rebuild PJSIP.
Compatibility issue
There
is a known compatibility issue with recent WebRTC version, so we'd
recommend to use an older WebRTC version, e.g: about October 2015
version.
Copyright
https://trac.pjsip.org/repos/ticket/1888#Forotherarchitectures