| Libjingle |
| |
| 1. Introduction |
| |
| Libjingle is a set of components provided by Google to implement Jingle |
| protocols XEP-166 (http://xmpp.org/extensions/xep-0166.html) and XEP-167 |
| (http://xmpp.org/extensions/xep-0167.html). Libjingle is also backward |
| compatible with Google Talk Call Signaling |
| (http://code.google.com/apis/talk/call_signaling.html). This package will |
| create several static libraries you may link to your projects as needed. |
| |
| -talk - No source files in talk/, just these subdirectories |
| |-base - Contains basic low-level portable utility functions for |
| | things like threads and sockets |
| |-p2p - The P2P stack |
| |-base - Base p2p functionality |
| |-client - Hooks to tie it into XMPP |
| |-session - Signaling |
| |-phone - Signaling code specific to making phone calls |
| |-testdata - Samples of RTP voice and video dump |
| |-tunnel - Tunnel session and channel |
| |-third_party - Folder for third party libraries |
| |-libudev - Folder containing libudev.h |
| |-xmllite - XML parser |
| |-xmpp - XMPP engine |
| |
| In addition, this package contains two examples in talk/examples which |
| illustrate the basic concepts of how the provided classes work. |
| |
| 2. How to Build |
| |
| 2.1 Prerequisites |
| |
| Libjingle is built with swtoolkit (http://code.google.com/p/swtoolkit/), which |
| is a set of extensions to the open-source SCons build tool (www.scons.org). |
| |
| * First, install Python 2.4 or later from http://www.python.org/. |
| Please note that since swtoolkit only works with Python 2.x, you will |
| not be able to use Python 3.x. |
| |
| python --version to confirm that python is in your path, and 2.4 or greater. |
| |
| * Second, install the stand alone scons-local zip package 2.0.0 or later from |
| http://www.scons.org/download.php and set an environment variable, |
| SCONS_DIR, to point to the directory containing SCons. |
| For example, on Windows, download |
| http://sourceforge.net/projects/scons/files/scons-src/2.0.1/scons-local-2.0.1.zip |
| Unzip to C:\src\libjingle\scons-local\ |
| set SCONS_DIR=C:\src\libjingle\scons-local\scons-local-2.0.1 |
| |
| * Third, install swtoolkit from http://code.google.com/p/swtoolkit/. |
| For example, on Windows download |
| http://code.google.com/p/swtoolkit/downloads/detail?name=swtoolkit.0.9.1.zip |
| Unzip to C:\src |
| Optionally add swtoolkit to path. Otherwise call hammer.bat directly. |
| set PATH_TO_SWTOOLKIT=c:\src\swtoolkit |
| set PATH=%PATH_TO_SWTOOLKIT%;%PATH% |
| |
| * Finally, download and install the unit test framework from |
| http://code.google.com/p/googletest/downloads/list |
| To install it, just unzip the package and put the file folder under |
| /talk/third_party/ directory and rename it from "gtest-x.x.x" to "gtest", |
| so that your folder structure looks like: |
| /talk/third_party/gtest/... |
| |
| 2.2 libjingle |
| |
| Libjingle needs to be downloaded and patched |
| |
| * First, install Libjingle. Since this README lives within Libjingle, |
| this step is normally already done. |
| Libjingle home page is here http://code.google.com/p/libjingle/ |
| For example, on Windows, download |
| http://libjingle.googlecode.com/files/libjingle-0.5.2.zip |
| unzip to C:\src\ |
| |
| * Second, Libjingle depends on two open-source projects, expat and srtp. |
| Download expat from http://sourceforge.net/projects/expat/ to |
| talk/third_party/expat-2.0.1/. Download srtp at |
| http://libjingle.googlecode.com/files/srtp-cvs.zip to |
| talk/third_party/srtp. Note that srtp-1.4.4 does not work since it misses |
| the extensions used by Libjingle. |
| If you put expat or srtp in a different directory, you need to edit |
| talk/libjingle.scons correspondingly. |
| rename srtp-cvs to srtp |
| For example, on Windows, download expat |
| http://sourceforge.net/projects/expat/files/expat/2.0.1/expat-2.0.1.tar.gz |
| Unzip to C:\src\libjingle-0.5.2\talk\third_party |
| Download srtp |
| http://libjingle.googlecode.com/files/srtp-cvs.zip |
| Unzip to C:\src\libjingle-0.5.2\talk\third_party |
| rename C:\src\libjingle-0.5.2\talk\third_party\srtp-cvs srtp |
| |
| * Third, on Windows, copy config.h |
| copy talk\third_party\srtp\config.hw talk\third_party\srtp\crypto\include\config.h |
| |
| 2.2 Build Libjingle under Linux or OS X |
| * On Linux, you need to install libssl-dev, libasound2-dev and gtk+2.0. |
| * Some optional new features in OpenSSL are only available in OpenSSL v1.0 |
| and above. To build with new OpenSSL features, you need to add the |
| "HAS_OPENSSL_1_0" to the cppdefine under the |
| "talk.Library(env, name = jingle..." section in the "libjingle.scons" file. |
| Then download the OpenSSL v1.0 from the following URL: |
| http://www.openssl.org/source/openssl-1.0.0e.tar.gz |
| Unzip the downloaded package to the "third_party/openssl", such that it creates |
| the directory "third_party/openssl/include/", etc. |
| * To build Libjingle, first make sure the SCONS_DIR environment variable |
| is set correctly. |
| * Second, run talk/third_party/expat-2.0.1/configure and |
| talk/third_party/srtp/configure. |
| * Third, go to the talk/ directory and run $path_to_swtoolkit/hammer.sh. Run |
| $path_to_swtoolkit/hammer.sh --help for information on how to build for |
| different modes. |
| |
| 2.3 Build Libjingle under Windows |
| * First, make sure the SCONS_DIR environment variable is set correctly and |
| Microsoft Visual Studio is installed. |
| dir %SCONS_DIR% |
| Should show a folder containing Scons\ |
| * Second, go to the talk\ directory and run %PATH_TO_SWTOOLKIT%\hammer.bat. |
| To get help run: |
| %PATH_TO_SWTOOLKIT%\hammer.bat --help |
| different modes. You can run the last step under Visual Studio Command |
| Prompt if Visual Studio tools are not under the path environment variable. |
| Example to build call.exe |
| %PATH_TO_SWTOOLKIT%\hammer.bat |
| Example to build opt and dbg all programs |
| %PATH_TO_SWTOOLKIT%\hammer.bat --jobs=6 --verbose --mode=all all_programs |
| |
| |
| The built binaries are under talk/build/dbg/staging or talk/build/opt/staging, |
| depending on the build mode. When the build is complete, you can run the |
| examples, login or call. For the call sample, you can specify the input and |
| output RTP dump for voice and video. This package provides two samples of input |
| RTP dump: voice.rtpdump is a single channel, 16Khz voice encoded with G722, and |
| video.rtpdump is 320x240 video encoded with H264 AVC at 30 frames per second. |
| These provided samples will inter-operate with Google Talk Video. If you use |
| other input RTP dump, you may need to change the codecs in call_main.cc, lines |
| 215 - 222. |
| |
| Libjingle also builds two server tools, a relay server and a STUN server. The |
| relay server may be used to relay traffic when a direct peer-to-peer connection |
| could not be established. The STUN Server implements the STUN protocol for |
| Simple Traversal of UDP over NAT. See the Libjingle Developer Guide at |
| http://code.google.com/apis/talk/index.html for information about configuring a |
| client to use this relay server and this STUN server. |
| |
| To use LinphoneMediaEngine, you need to perform the following additional steps: |
| * Download and install the "MediaStreamer" library on your |
| machine. |
| * Add the following lines into the libjingle.scons file. |
| In the "talk.Library(env, name = "libjingle",..." section, you need to add: |
| "HAVE_LINPHONE", |
| "HAVE_SPEEX", |
| "HAVE_ILBC", |
| to the "cppdefines = [". |
| |
| In the "talk.App(env, name = "call",..." section, you need to add: |
| "mediastreamer", |
| to the "libs = [". |
| * In the libjingle.scons file, add the following line into the "srcs = [ ..." |
| section of the "libjingle" Library. |
| "session/phone/linphonemediaengine.cc", |