In an effort to verify webRTC driven new service operations, Doubango webrtc2sip codes are compiled and installed from source. Following the procedures provided by the Doubango guide here, the following procedures are verified with additional minor corrections during the build and installation process on Ubuntu 12.10.
- Download the webrtc2sip source codes
- Download Doubango IMS Framework v2.0:
svn checkout http://doubango.googlecode.com/svn/ doubango-source - Install all necessary packages such as “make, libtool, autoconf, subversion, git, cvs, wget, libogg-dev” etc.
- get and install “libsrtp”:
git clone https://github.com/cisco/libsrtp/
cd libsrtp
CFLAGS=”-fPIC” ./configure –enable-pic && make && make install - check OpenSSL version and make sure version 1.0c is installed: openssl version
- install libspeex-dev and libspeexdsp-dev
- build and install YASM (for VP8 video codec)
wget http://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gz
tar -xvzf yasm-1.2.0.tar.gz
cd yasm-1.2.0
./configure && make && make install - install libvpx and libvpx-dev (for VP8 video codec support)
- build and install libyuv
mkdir libyuv && cd libyuv
svn co http://src.chromium.org/svn/trunk/tools/depot_tools .
./gclient config http://libyuv.googlecode.com/svn/trunk
./gclient sync && cd trunk/source
make -j6 V=1 -r libyuv.a BUILDTYPE=Release (makefile is missing in the original source, created one to do the job)
cp libyuv.a /usr/local/lib
mkdir –parents /usr/local/include/libyuv/libyuv
cp -rf ../include/libyuv.h /usr/local/include/libyuv
cp -rf ../include/libyuv/*.h /usr/local/include/libyuv/libyuv - build and install libjpeg_turbo
Makefile was not found in the downloaded webrtc2sip package, installed the libjpeg_turbo package by using other linux installation tool. It seems working fine so far. - build and install opencore-amr
git clone git://opencore-amr.git.sourceforge.net/gitroot/opencore-amr/opencore-amr
cd opencore-amr && autoreconf –install && ./configure && make && make install - build and install opus
wget http://downloads.xiph.org/releases/opus/opus-1.0.2.tar.gz
tar -xvzf opus-1.0.2.tar.gz
cd opus-1.0.2
./configure –with-pic –enable-float-approx && make && make install - build and install libgsm
wget http://www.quut.com/gsm/gsm-1.0.13.tar.gz
tar -xvzf gsm-1.0.13.tar.gz
cd gsm-1.0-pl13 && make && make install (need to specify the installation path in Makefile before install — e.g. INSTALL_ROOT = /usr/local) - build and install g729
svn co http://g729.googlecode.com/svn/trunk/ g729b
cd g729b
./autogen.sh && ./configure –enable-static –disable-shared && make && make install - build and install iLBC
svn co http://doubango.googlecode.com/svn/branches/2.0/doubango/thirdparties/scripts/ilbc
cd ilbc
wget http://www.ietf.org/rfc/rfc3951.txt
awk -f extract.awk rfc3951.txt
./autogen.sh && ./configure
make && make install - Build and install x264
wget ftp://ftp.videolan.org/pub/x264/snapshots/last_x264.tar.bz2
tar -xvjf last_x264.tar.bz2
# the output directory may be difference depending on the version and date
cd x264-snapshot-20121201-2245
./configure –enable-static –enable-pic && make && make install (default install path is /usr/local/lib, set prefix=/usr in config.mak after “configure” if you want to install in /usr/lib instead — this might be required in building and installing ffmpeg) - Build and install FFmpeg
git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg
cd ffmpeg
git checkout n1.2
./configure –extra-cflags=”-fPIC” –extra-ldflags=”-lpthread” –enable-pic –enable-memalign-hack –enable-shared –disable-static –disable-network –disable-protocols –disable-pthreads –disable-devices –disable-filters –disable-bsfs –disable-muxers –disable-demuxers –disable-parsers –disable-hwaccels –disable-ffmpeg –disable-ffplay –disable-ffserver –disable-encoders –disable-decoders –disable-zlib –enable-gpl –disable-debug –enable-encoder=h263 –enable-encoder=h263p –enable-decoder=h263 –enable-encoder=mpeg4 –enable-decoder=mpeg4 –enable-libx264 –enable-encoder=libx264 –enable-decoder=h264 (may need to install libx264_dev)
make && make install - Build and install Doubango
- Minimum
cd doubango-source/branches/2.0/doubango && ./autogen.sh && ./configure –with-ssl –with-srtp
make && make install - Recommended
cd doubango-source/branches/2.0/doubango && ./autogen.sh && ./configure –with-ssl –with-srtp –with-speexdsp –enable-speexjb –with-ffmpeg –with-h264
make && make install - Full
cd doubango-source/branches/2.0/doubango && ./autogen.sh && ./configure –with-ssl –with-srtp –with-vpx –with-yuv
–with-amr –with-speex –with-speexdsp –enable-speexresampler –enable-speexjb –enable-speexdenoiser –with-gsm –with-ilbc –with-g729 –with-ffmpeg –with-h264
make && make install - Build errors and handlings
- /usr/local/include/libyuv/libyuv/compare.h:14:32: fatal error: libyuv/basic_types.h: No such file or directory
- make symbol links for all header files from “/usr/local/include/libyuv/libyun” to “/usr/local/include/libyuv”
- src/codecs/h263/tdav_codec_h263.c:186:93: error: parameter 3 (‘encoder’) has incomplete type
- make sure your ffmpeg is from branch n1.2
- /usr/local/include/libyuv/libyuv/compare.h:14:32: fatal error: libyuv/basic_types.h: No such file or directory
- Minimum
- Build and install webrtc2sip
export PREFIX=/opt/webrtc2sip
# use –with-doubango=PATH to set path to the doubango installation (‘lib’ and ‘include’ folders).
cd webrtc2sip && ./autogen.sh && ./configure –prefix=$PREFIX –with-doubango=/usr/local
make clean && make && make install
cp -f ./config.xml $PREFIX/sbin/config.xml
export PATH=$PATH:/opt/webrtc2sip/sbin(to export the executable “webrtc2sip” path)
Run webrtc2sip
- issue “webrtc2sip” command
- webrtc2sip –config=/opt/webrtc2sip/config.xml
- “export PREFIX=/opt/webrtc2sip” if command not found
- “export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib” if complains libraries not found, such as “webrtc2sip: error while loading shared libraries: libtinySAK.so.0: cannot open shared object file: No such file or directory”
Attachment
- libyuv Makefile
Source : Geeksforum
CC = gcc
CPP = g++
AR = ar
RM = rm -fCFLAGS = -O3 -Wall -pedantic -I../include -I../include/libyuv
OBJ = compare.o \
compare_common.o \
compare_neon.o \
compare_posix.o \
compare_win.o \
convert.o \
convert_argb.o \
convert_from.o \
convert_from_argb.o \
convert_jpeg.o \
convert_to_argb.o \
convert_to_i420.o \
cpu_id.o \
format_conversion.o \
mjpeg_decoder.o \
mjpeg_validate.o \
planar_functions.o \
rotate.o \
rotate_argb.o \
rotate_mips.o \
rotate_neon.o \
row_any.o \
row_common.o \
row_mips.o \
row_neon.o \
row_posix.o \
row_win.o \
scale.o \
scale_argb.o \
scale_argb_neon.o \
scale_mips.o \
scale_neon.o \
video_common.oASMOBJ = memcpy_mips.o \
row_x86.o \
x86inc.o
BIN = libyuv.a%.o: %.cc
$(CPP) -c -o $@ $< $(CFLAGS)$(BIN): $(OBJ)
ar r $(BIN) $(OBJ)
ranlib $(BIN)clean:
$(RM) *.o *.a
0 comments: