name mode size
amci 040000
ampi 040000
etc 040000
plug-in 040000
rpm 040000
rtp 040000
scripts 040000
wav 040000
AmAdvancedAudio.cpp 100644 7.1kB
AmAdvancedAudio.h 100644 4.24kB
AmApi.cpp 100644 2.86kB
AmApi.h 100644 7.7kB
AmArg.cpp 100644 2.76kB
AmArg.h 100644 3.92kB
AmAudio.cpp 100644 17.21kB
AmAudio.h 100644 10.94kB
AmAudioMixIn.cpp 100644 3.27kB
AmAudioMixIn.h 100644 2.41kB
AmB2ABSession.cpp 100644 9.2kB
AmB2ABSession.h 100644 7.01kB
AmB2BSession.cpp 100644 8.09kB
AmB2BSession.h 100644 5.29kB
AmCachedAudioFile.cpp 100644 5.16kB
AmCachedAudioFile.h 100644 2.86kB
AmCallWatcher.cpp 100644 5.58kB
AmCallWatcher.h 100644 4.22kB
AmConferenceChannel.cpp 100644 829B
AmConferenceChannel.h 100644 2.14kB
AmConferenceStatus.cpp 100644 4.58kB
AmConferenceStatus.h 100644 2.95kB
AmConfig.cpp 100644 9.5kB
AmConfig.h 100644 5.8kB
AmConfigReader.cpp 100644 3.53kB
AmConfigReader.h 100644 1.87kB
AmCtrlInterface.cpp 100644 5.33kB
AmCtrlInterface.h 100644 3.49kB
AmDtmfDetector.cpp 100644 15.39kB
AmDtmfDetector.h 100644 8.79kB
AmEvent.cpp 100644 124B
AmEvent.h 100644 1.85kB
AmEventQueue.cpp 100644 2.39kB
AmEventQueue.h 100644 1.79kB
AmIcmpWatcher.cpp 100644 3.82kB
AmIcmpWatcher.h 100644 1.99kB
AmInterfaceHandler.cpp 100644 9.94kB
AmInterfaceHandler.h 100644 3.13kB
AmJitterBuffer.cpp 100644 6.62kB
AmJitterBuffer.h 100644 2.71kB
AmMail.cpp 100644 3.87kB
AmMail.h 100644 3.21kB
AmMediaProcessor.cpp 100644 9.07kB
AmMediaProcessor.h 100644 3.56kB
AmMultiPartyMixer.cpp 100644 4.59kB
AmMultiPartyMixer.h 100644 2.49kB
AmPlaylist.cpp 100644 3.48kB
AmPlaylist.h 100644 3.49kB
AmPlayoutBuffer.cpp 100644 12.49kB
AmPlayoutBuffer.h 100644 4.53kB
AmPlugIn.cpp 100644 14.77kB
AmPlugIn.h 100644 4.98kB
AmPromptCollection.cpp 100644 3.99kB
AmPromptCollection.h 100644 3.28kB
AmRtpAudio.cpp 100644 5.8kB
AmRtpAudio.h 100644 3.13kB
AmRtpPacket.cpp 100644 4.63kB
AmRtpPacket.h 100644 2.21kB
AmRtpReceiver.cpp 100644 3.39kB
AmRtpReceiver.h 100644 1.98kB
AmRtpStream.cpp 100644 10.18kB
AmRtpStream.h 100644 6.44kB
AmSdp.cpp 100644 18.89kB
AmSdp.h 100644 4.88kB
AmServer.cpp 100644 3.98kB
AmServer.h 100644 2.99kB
AmSession.cpp 100644 16.03kB
AmSession.h 100644 9.75kB
AmSessionContainer.cpp 100644 10.59kB
AmSessionContainer.h 100644 5.6kB
AmSipDialog.cpp 100644 20.04kB
AmSipDialog.h 100644 4.83kB
AmSipEvent.h 100644 1.68kB
AmSipReply.cpp 100644 1.1kB
AmSipReply.h 100644 1.56kB
AmSipRequest.cpp 100644 2.93kB
AmSipRequest.h 100644 2.14kB
AmSmtpClient.cpp 100644 9.24kB
AmSmtpClient.h 100644 2.82kB
AmStats.h 100644 2.71kB
AmThread.cpp 100644 7.52kB
AmThread.h 100644 4.43kB
AmUAC.cpp 100644 1.92kB
AmUAC.h 100644 1.53kB
AmUtils.cpp 100644 18.31kB
AmUtils.h 100644 8.09kB
EmailTemplate.cpp 100644 5.84kB
EmailTemplate.h 100644 1.68kB
LowcFE.cpp 100644 8.89kB
LowcFE.h 100644 3.39kB
Makefile 100644 3.93kB 100644 4.29kB
SampleArray.h 100644 2.27kB
doxygen_fulldoc 100644 8.49kB
doxygen_proj 100644 50.55kB
log.cpp 100644 2.72kB
log.h 100644 3.11kB
sems.conf.sample 100644 5.11kB
sems.cpp 100644 14.13kB
sems.h 100644 2.27kB
+------------------------------------+ | 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. 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) functionality, complex VoIP services can be realized completely in SEMS. The following applications are shipped with SEMS : * announcement: plays an announcement * voicemail: records voice messages and sends them as email * 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 * echo: test module to echo the caller's voice * mailbox: auto-attendant that saves voicemails into an IMAP server. Users can dial in to check their messages * 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) * 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 alongside 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. 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. SEMS only supports patent free codecs. That means that codecs like g729 won't be supported. On the other hand, SEMS supports all important patent free codecs out of the box (g711u, g711a, GSM06.10 and iLBC). Integrating other codecs in SEMS is very simple. 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). 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. Requirements: 1. SER version 0.9.6-sems: SIP Epress Router ( SEMS uses SER as its SIP stack. SEMS & SER communicate through unix socket, which means that a SER instance is mandatory on every host using SEMS. 2. Python version >= 2.3 for the ivr (embedded python interpreter) and py_sems, optional 3. flite speech synthesizer for TTS in the ivr, optional 4. lame >= 3.95 for mp3 file output, optional How to get started with SEMS: To try out SEMS, the easiest is to get the bundle and install it: wget tar xzvf sems-0.10.0-bundle.tar.gz ; cd sems-0.10.0-bundle make install PREFIX=~/sems-0.10.0-install SERPREFIX=~/sems-0.10.0-install This gets you the default set of applications installed in that directory, and in the end prints the commands to start it. You can also follow one of the tutorials linked from the SEMS homepage (e.g. 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/). Installation: 1. Download SEMS Download the source tarball from, or get the newest version through svn: $ svn checkout svn:// -or- $ svn checkout 2. Compile SEMS $ make all $ make install Notice: you don't need to execute 'make install' if you want to run SEMS from the source tree, but in this case some paths in the config files will need to be adapted. If you want to install to a different prefix than /usr/local, use PREFIX=/some/other/prefix For detailed instructions for some modules, have a look at doc/COMPILING as well. 3. Look at the default configuration file whether it fits your need: If you installed SEMS with 'make install', the configuration is at '/usr/local/etc/sems/sems.conf'. Else make your own using sems.conf.sample. 4. Get and start SER as SIP stack for SEMS: To install the ser-0.9.6-sems into the directory /some/dir the following commands can used: $ wget $ tar xzvf ser-0.9.6-sems_src.tar.gz $ cd ser-0.9.6-sems $ make install PREFIX=/some/dir With the install target install-ser-cfg, e.g. using $ make install-ser-cfg SERPREFIX=/some/dir you can install a general ser-sems.cfg which will work with ser-0.9.6-sems and make SER to act only as SIP stack for SEMS, i.e. direct every request to SEMS. Then $ /some/dir/sbin/ser -f /some/dir/etc/ser/ser-sems.cfg runs SER on port 5070. This way, several versions of SER can be used on the same server, e.g. a different version of SER as Registrar server. 5. Start SEMS: If you installed SEMS with 'make install', sems can be found at '/usr/local/sbin/sems'. If you need help starting 'sems', try 'sems -h'. 6. Using SEMS SEMS needs to be told from the many possible applications that are loaded which one to run. You can simply set default_application in sems.conf. Another method is to append a header P-App-Name: <app name> to the INVITE, for example P-App-Name: conference or P-App-Name: echo In a typical SER-setup where an incoming INVITE should be sent off to conference, the following lines can be executed in the proxy's (!) ser.cfg (assuming the media server runs on the same host with its SIP stack SER on port 5070): append_hf("P-App-Name: conference\r\n"); t_relay_to_udp("","5070"); break; A sample ser.cfg with which many applications can be tried is available at Alternatively, the SIP-stack-SER can be configured in ser-sems.cfg to send all calls directly to one application, in that case the line if(!t_write_unix("/tmp/sems_sock","sems/app_headers")) in ser-sems.cfg could be changed to e.g. if(!t_write_unix("/tmp/sems_sock","conference")) A sample ser.cfg file in this style can be found at For more information please refer to doc/Configure-SEMS-Ser-HOWTO and the SER User's guide. 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. 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. Special thanks goes to: * Juha Heinanen for numerous bug reports, improvements and contributions * Ulrich Abend ( for his great debuging work and ISDN gateway which unfortunately did not make it into this version yet. * Jiri Kuthan ( for the debuging work and help to implement the first communicating part between Ser & SEMS ('vm' module). * iptego GmbH and iptelorg for sponsoring development and improvement of SEMS. * All the others who helped during test session and reported bugs :-) SEMS - the media-S in the SLAMP.