name mode size
amci 040000
ampi 040000
compat 040000
etc 040000
lib 040000
plug-in 040000
resample 040000
rtp 040000
sip 040000
tests 040000
wav 040000
Am100rel.cpp 100644 7.51kB
Am100rel.h 100644 1.01kB
AmAdvancedAudio.cpp 100644 9.39kB
AmAdvancedAudio.h 100644 6.15kB
AmApi.cpp 100644 4.75kB
AmApi.h 100644 9.27kB
AmAppTimer.cpp 100644 6.67kB
AmAppTimer.h 100644 3.29kB
AmArg.cpp 100644 11.92kB
AmArg.h 100644 8.83kB
AmAudio.cpp 100644 13.54kB
AmAudio.h 100644 10.72kB
AmAudioFile.cpp 100644 10.59kB
AmAudioFile.h 100644 4.77kB
AmAudioMixIn.cpp 100644 4.01kB
AmAudioMixIn.h 100644 2.88kB
AmAudioMixer.cpp 100644 3.88kB
AmAudioMixer.h 100644 3.12kB
AmB2ABSession.cpp 100644 10.84kB
AmB2ABSession.h 100644 7.41kB
AmB2BMedia.cpp 100644 38.42kB
AmB2BMedia.h 100644 18.29kB
AmB2BSession.cpp 100644 36.38kB
AmB2BSession.h 100644 12.43kB
AmBasicSipDialog.cpp 100644 18.03kB
AmBasicSipDialog.h 100644 12.93kB
AmBufferedAudio.cpp 100644 4.29kB
AmBufferedAudio.h 100644 2.03kB
AmCachedAudioFile.cpp 100644 5.1kB
AmCachedAudioFile.h 100644 2.81kB
AmCallWatcher.cpp 100644 5.72kB
AmCallWatcher.h 100644 4.29kB
AmConferenceChannel.cpp 100644 1.49kB
AmConferenceChannel.h 100644 2.34kB
AmConferenceStatus.cpp 100644 5.9kB
AmConferenceStatus.h 100644 3.25kB
AmConfig.cpp 100644 34.9kB
AmConfig.h 100644 10.09kB
AmConfigReader.cpp 100644 9.04kB
AmConfigReader.h 100644 2.44kB
AmDtmfDetector.cpp 100644 23.24kB
AmDtmfDetector.h 100644 11.87kB
AmDtmfSender.cpp 100644 3.83kB
AmDtmfSender.h 100644 2.09kB
AmEvent.cpp 100644 1.06kB
AmEvent.h 100644 2.62kB
AmEventDispatcher.cpp 100644 8kB
AmEventDispatcher.h 100644 3.36kB
AmEventProcessingThread.cpp 100644 2.42kB
AmEventProcessingThread.h 100644 1.99kB
AmEventQueue.cpp 100644 3.4kB
AmEventQueue.h 100644 2.79kB
AmEventQueueProcessor.cpp 100644 3.83kB
AmEventQueueProcessor.h 100644 2.5kB
AmJitterBuffer.cpp 100644 7.17kB
AmJitterBuffer.h 100644 2.91kB
AmMediaProcessor.cpp 100644 9.2kB
AmMediaProcessor.h 100644 8.73kB
AmMimeBody.cpp 100644 16.29kB
AmMimeBody.h 100644 4.51kB
AmMultiPartyMixer.cpp 100644 11.87kB
AmMultiPartyMixer.h 100644 3.45kB
AmOfferAnswer.cpp 100644 11.8kB
AmOfferAnswer.h 100644 2.46kB
AmPeriodicThread.cpp 100644 2.94kB
AmPeriodicThread.h 100644 2.13kB
AmPlaylist.cpp 100644 3.79kB
AmPlaylist.h 100644 3.73kB
AmPlayoutBuffer.cpp 100644 14.49kB
AmPlayoutBuffer.h 100644 4.94kB
AmPlugIn.cpp 100644 21.78kB
AmPlugIn.h 100644 7.66kB
AmPrecodedFile.cpp 100644 7.37kB
AmPrecodedFile.h 100644 3.34kB
AmPromptCollection.cpp 100644 4.35kB
AmPromptCollection.h 100644 3.31kB
AmRingTone.cpp 100644 1.2kB
AmRingTone.h 100644 507B
AmRtpAudio.cpp 100644 12.55kB
AmRtpAudio.h 100644 4.59kB
AmRtpPacket.cpp 100644 6.94kB
AmRtpPacket.h 100644 2.63kB
AmRtpReceiver.cpp 100644 4.7kB
AmRtpReceiver.h 100644 2.74kB
AmRtpStream.cpp 100644 33.14kB
AmRtpStream.h 100644 14.17kB
AmSdp.cpp 100644 36.92kB
AmSdp.h 100644 7.12kB
AmSession.cpp 100644 32.87kB
AmSession.h 100644 17.04kB
AmSessionContainer.cpp 100644 14.52kB
AmSessionContainer.h 100644 5.79kB
AmSessionEventHandler.cpp 100644 1.2kB
AmSessionEventHandler.h 100644 3.74kB
AmSessionProcessor.cpp 100644 5.54kB
AmSessionProcessor.h 100644 2.65kB
AmSipDialog.cpp 100644 19.86kB
AmSipDialog.h 100644 5.7kB
AmSipDispatcher.cpp 100644 3.95kB
AmSipDispatcher.h 100644 1.51kB
AmSipEvent.cpp 100644 510B
AmSipEvent.h 100644 2.58kB
AmSipHeaders.h 100644 111B
AmSipMsg.cpp 100644 6.57kB
AmSipMsg.h 100644 2.85kB
AmSipRegistration.cpp 100644 9.87kB
AmSipRegistration.h 100644 4.18kB
AmSipSubscription.cpp 100644 20.75kB
AmSipSubscription.h 100644 7.78kB
AmSipSubscriptionContainer.cpp 100644 6.39kB
AmSipSubscriptionContainer.h 100644 2.18kB
AmStats.h 100644 2.9kB
AmThread.cpp 100644 6.48kB
AmThread.h 100644 5.73kB
AmUAC.cpp 100644 2.06kB
AmUAC.h 100644 1.65kB
AmUACAuth.cpp 100644 1.13kB
AmUACAuth.h 100644 476B
AmUriParser.cpp 100644 13.91kB
AmUriParser.h 100644 2.46kB
AmUtils.cpp 100644 26.75kB
AmUtils.h 100644 9.13kB
AmZRTP.cpp 100644 10.99kB
AmZRTP.h 100644 3.03kB
CMakeLists.txt 100644 1.84kB
LowcFE.cpp 100644 9.28kB
LowcFE.h 100644 3.44kB
Makefile 100644 4.58kB 100644 4.51kB
SampleArray.h 100644 2.49kB
SipCtrlInterface.cpp 100644 25.54kB
SipCtrlInterface.h 100644 4.04kB
atomic_types.h 100644 3.99kB
config.h 100644 125B
hash_table.h 100644 6.22kB
jsonArg.cpp 100644 6.23kB
jsonArg.h 100644 1.76kB
jsonxx.cpp 100644 12.26kB
jsonxx.h 100644 4.75kB
log.cpp 100644 5.61kB
log.h 100644 5.31kB
md5.cpp 100644 10.27kB
md5.h 100644 1.38kB
md5global.h 100644 544B
sems.cpp 100644 16.22kB
sems.h 100644 2.6kB
sems.h.cmake 100644 2.8kB
singleton.h 100644 888B
+------------------------------------+ | SIP Express Media Server - README | +------------------------------------+ Introduction: SEMS is a free, high performance, extensible media server for SIP (RFC3261) based VoIP services. It is intended to complement proxy/registrar servers in VoIP networks for all applications where server- side processing of audio is required, for example away or pre-call announcements, voicemail, or network side conferencing. Another use case is for interconnecting SIP networks, where a back-to-back user agent (B2BUA) is required. SEMS can be used to implement simple high performance components like announcement servers as building blocks of more complex applications, or, using its powerful framework for application development including back-to-back user agent (B2BUA) and state machine scripting functionality, complex VoIP services can be realized completely in SEMS. SEMS supports all important patent free codecs out of the box (g711u, g711a, GSM06.10, speex, G.726, L16 and iLBC). There is a wrapper for the IPP G.729 codec implementation available. Integrating other codecs in SEMS is very simple (patented or not). SEMS shows very good performance on current standard PC architecture based server systems. It has sucessfully been run with 1200 G.711 conference channels on a quad-core Intel(R) Xeon at 2GHz (700 GSM, 280 iLBC channels), and up to 5000 channels on a dual quad Xeon at 2.9GHz. Its back-to-back user agent has been run with up to 19000 TPS on the latter machine. On the other hand it also runs on very small devices - for example small embedded systems like routers running OpenWRT, for which of course the achievable channel count is not that high. License: SEMS is free (speech+beer) software. It is licensed under dual license terms, the GPL (v2+) and proprietary license. This program is released under the GPL with the additional exemption that compiling, linking, and/or using OpenSSL is allowed. See doc/COPYING for details. Applications: The following applications are shipped with SEMS : Announcements (Prompts, Ringbacktones, Pre-call-prompts): * announcement plays an announcement * ann_b2b pre-call-announcement, plays announcement before connecting the callee in B2BUA mode * announce_transfer pre-call-announcement, plays announcement and then transfers the caller to the callee using REFER * early_announce (pre-call) announcement using early media (183), optionally continues the call in B2BUA mode * precoded_announce plays preencoded announcements Voicemail/Mailbox * voicebox users can dial in to the voicebox to check their messages * annrecorder users can record their personal greeting message * mailbox auto-attendant that saves voicemails into an IMAP server. Users can dial in to check their messages (simpler version) * voicemail records voice messages and sends them as email, saves them to a voicebox, or both Conferencing * conference enables many people to talk together at the same time * webconference conference application that can be controlled from an external program, e.g. a website * conf_auth collect a PIN number, verify it against an XMLRPC authentication server and connects in B2BUA mode * pin_collect collect a PIN, optionally verify it, and transfer the call into a conference Back-to-back User Agent * sbc flexible SBC application, supports - identity change - header manipulation (filter etc) - (multihomed) RTP relay - SIP authentication - Session timer, call timer, prepaid etc App development * dsm DSM state machine scripting (use this) * ivr embedded Python interpreter for simple apps * py_sems another embedded Python interpreter Misc * echo test module to echo the caller's voice * callback reject the call, call back caller later and have her enter a number to call in b2bua with media relay mode * reg_agent SIP REGISTER to register SEMS' contact to an aor Developing and customizing Applications and services: SEMS comes with a set of example applications intended to help development of custom services, including a calling card application, a traffic generator, a component to control the media server via XMLRPC, and announcements played from DB. DSM state machine scripting is a powerful yet simple method to rapidly implement custom applications. With this method, the service logic is written as an easy to understand textual definition of a state machine, which is interpreted and executed for every call. The (domain specific) language for defining state machines can be extended by implementing modules. A set of useful modules are shipped with SEMS, including MySQL database access module, Python module, conference support, Amazon AWS and more. SEMS' core implements basic call and audio processing, and loads plug-ins which extend the system. Audio plug-ins enable new codecs and file formats, application plug-ins implement the services' logic. Other modules called component modules provide functionality for other modules to use. You can easily extend SEMS by creating your own plug-ins. Applications can be written using the SEMS framework API in C++, or in Python using an embedded python interpreter of the ivr or py_sems modules, or the DSM. Requirements: All requirements are optional. o Python version >= 2.3 for the ivr (embedded python interpreter) and py_sems o flite speech synthesizer for TTS in the ivr o lame >= 3.95 for mp3 file output, mpg123 for mp3 playback o spandsp library for DTMF detection and PLC (SEMS has its own implementations for both) o libZRTP SDK ( for ZRTP o libev for jsonrpc How to get started with SEMS: To try out SEMS, the easiest is to get a release from, unpack and install it using the usual make && make install. After installation, the configuration file /usr/local/etc/sems/sems.conf needs to be adapted, especially the parameters "sip_ip", "media_ip", "load_plugins", "application". On Debian and Ubuntu, add the SEMS repository from OBS to /etc/apt/sources.list: deb ./ and install SEMS packages with: wget \ -O - |apt-key add - apt-get update && apt-get install sems If you want to build SEMS from source on debian/derivatives, see below. On Fedora/CentOS, simply do $ sudo yum install sems and sems package will be installed. You can also follow one of the tutorials linked from the SEMS homepage (e.g. The Application Modules Documentation page then gives an overview of the application modules that come with SEMS ( If you are interested in writing your own applications, the application development tutorial is a good start (, together with the design overview ( and the example applications (apps/examples/). SEMS needs to be told from the many possible applications that are loaded which one to run. You can simply set the application in sems.conf, e.g. application=conference. You can also define an application mapping, i.e. numbers (R-URIs) that will be mapped to applications, see the explanation of 'application' parameter in sems.conf. Creating packages on debian (ubuntu, ...), here for wheezy: install debian package build tools: $ sudo apt-get install debhelper devscripts install dependencies: $ sudo apt-get install g++ make libspandsp-dev flite-dev libspeex-dev \ libssl-dev python-dev python-sip-dev openssl libev-dev \ libmysql++-dev libevent-dev libxml2-dev libcurl4-openssl-dev get the source: $ wget ; tar xzvf sems-x.y.z.tar.gz or, for git master: $ git clone git:// $ cd sems-x.y.z ; ln -s pkg/deb/debian . set version in changelog if not correct $ dch -v x.y.z "SEMS x.y.z release" or: $ dch -b -v `git describe --always` "sems git master" build package: $ dpkg-buildpackage -rfakeroot -us -uc install sems and sems-python-modules packages in .. using dpkg. Installed files using 'make install': /usr/local/sbin/sems : SEMS executable /usr/local/lib/sems/plug-in/* : plug-ins /usr/local/lib/sems/audio/* : default path for audio files /usr/local/lib/sems/ivr/* : precompiled IVR scripts /usr/local/etc/sems/sems.conf : configuration file /usr/local/etc/sems/etc/* : modules configuration files /usr/local/share/doc/sems/README : this README. source_path/scripts/sems[.redhat] : example start-up scripts. source_path/sems.conf.example : example configuration file. Documentation: In the doc/ directory there is a set of files describing the applications shipped with SEMS, alongside some more documentation. Generate the doxygen documentation with 'make doc' in doc/doxygen_doc, that contains all these files as well. All this and more documentation is available online linked from the SEMS homepage: Support, mailing lists, bugs and contact: Please have a look at the documentation and other information on the SEMS homepage ( Best-effort support is given through the mailing lists for SEMS, and, which are the first address to ask for help, report bugs and improvements. You need to be subscribed to be able to post to the lists: The mailing list archives at and can be a great help as well (especially with google site search on, e.g. ). The bug tracker for SEMS is at Please submit all bugs, crashes and feature requests you encounter. Authors: Raphael Coeffic (, the father of SEMS, Stefan Sayer (, current lead developer, and all contributors: Alex Gradinar Alfred E Heggestad Andreas Granig Andrey Samusenko Andriy I Pylypenko Anton Zagorskiy B. Oldenburg Balint Kovacs Bogdan Pintea Greger Viken Teigre Grzegorz Stanislawski Helmut Kuper Jeremy A Jiri Kuthan Juha Heinanen Matthew Williams Ovidiu Sas Peter Lemenkov Peter Loeppky Richard Newman Robert Szokovacs Rui Jin Zheng Tom van der Geer Ulrich Abend (if you feel you should be on this list, please mail to Special thanks to IPTEGO GmbH, iptelorg GmbH and TelTech Systems Inc. for sponsoring development of SEMS. Contributions: All kinds of contributions and bug fixes are very welcome, for example new application or codec modules, documentation pages, howtos etc. Please email one of the lists or the authors. Please also have a look at the contributions license policy (see doc/COPYING). SEMS - the media-S in the SLAMP.