1. Use more aggressive resyncronization algorithm.
2. Respect the marker bit in RTP packets and do immediate resync on such
packets without increasing the jitter delay. This makes the jitter buffer
work well with UAs that use silence suppression. Tested with Cisco and X-Lite.
3. The AmPlayoutBuffer has been modified to allow the audio data be put
directly in the audio buffer by real timestamp from RTP. This change can
possibly break the adaptive playout buffer so it has been put in
"#ifdef USE_ADAPTIVE_JB" blocks.
The last change is required due to the fact that internal audio packet size
(in timestamp units) can differ from RTP packet size and so the internal
audio packet can be overlapped by several RTP packets or vice versa. While
the original playout buffer is generally ok but the problem is in the loss
concealments that can break the buffer as the concealment algorithm can refuse
to return any data and so breaking the timestamp monotony and thus causing the
voice corruption.
Sponsored by: Digifonica Canada Limited
Work done by: Sippy Software, Inc.
git-svn-id: http://svn.berlios.de/svnroot/repos/sems/trunk@234 8eb893ce-cfd4-0310-b710-fb5ebe64c474
The version included is 4.1.1. If you generate some files using a new version
of sip4, update or remove sip.h in the apps/py_sems/sip directory.
git-svn-id: http://svn.berlios.de/svnroot/repos/sems/trunk@231 8eb893ce-cfd4-0310-b710-fb5ebe64c474
this is for application examples which are meant to demonstrate
certain functionality but will probably not be used as real applications
in the implemented way
* moved announce_auth to examples
git-svn-id: http://svn.berlios.de/svnroot/repos/sems/trunk@226 8eb893ce-cfd4-0310-b710-fb5ebe64c474
Adaptive jitter buffer can be compiled in instead by making with
WITH_ADAPTIVE_JITTERBUFFER=yes
(e.g. WITH_ADAPTIVE_JITTERBUFFER=yes make all)
Echo application switches with the star key the adaptive playout on and off.
git-svn-id: http://svn.berlios.de/svnroot/repos/sems/trunk@225 8eb893ce-cfd4-0310-b710-fb5ebe64c474
- ... is too big.
- ... has a wrong header length.
Thanks to Andrei for that year-old-yet-not-applied patch!
git-svn-id: http://svn.berlios.de/svnroot/repos/sems/trunk@221 8eb893ce-cfd4-0310-b710-fb5ebe64c474
- py_sems is aimed at integrating as much functionnalities
from the core as possible into python driven applications
(not necessarily IVRs), in a more easy way. The classes can
then just be used as in C++.
- this plug-in uses the sip4 package included in debian.
Please refer to http://www.riverbankcomputing.co.uk/sip/
for more informations on the binding generator.
Please note that you do not need it, if you just want to compile
SEMS. You will need it first if you want to generate more classes.
git-svn-id: http://svn.berlios.de/svnroot/repos/sems/trunk@220 8eb893ce-cfd4-0310-b710-fb5ebe64c474
- on RTP timeout, AmSession::onRtpTimeout is called
- session can be removed from media processor (detached)
by AmMediaProcessor::removeSession
- removing session from MediaProcessor and clearing audio
is AmMediaProcessor::clearSession (default action on
RTP error)
- added detach from media processor to conf_auth and ann_b2b
git-svn-id: http://svn.berlios.de/svnroot/repos/sems/trunk@209 8eb893ce-cfd4-0310-b710-fb5ebe64c474
* new methods onSipRequest/onSipReply, the whole AmSipReply/AmSipRequest structure is passed to python
SipDialog
* state is changed only on reply to INVITE, not other requests
* made pin_collect work
git-svn-id: http://svn.berlios.de/svnroot/repos/sems/trunk@189 8eb893ce-cfd4-0310-b710-fb5ebe64c474
Changes
-------
1. Make the AmJitterBuffer work with variable size RTP packets. Packet size
can be changed even during session (ex. Cisco in fax passthrough mode). Also
several improvements and fixes have been made to resyncronization logic.
2. Fix made to the AmPlayoutBuffer class to avoid reading chunks of size
larger than requested. This is required in cases when RTP packets contain
more or less data than internal frame size.
3. Small fix to AmRtpPacket class - replace the pointer to internal buffer
with offset in the buffer. This eliminates the nesessity to reparse the
packet each time the packet has been copied.
4. Replace the sample size field in amci_codec_t structure with two
functions - sampes2bytes and bytes2samples as that field did not allow to
specify sample size for LBR codecs (iLBC, gsm). This also brings ability
for codecs to determine the sample size at runtime (ex. iLBC).
5. Remove the sample size from amci_file_desc_t structure as it was used as
internal attribute of WAV files only and doesn't make much sense for other
file formats. Use the codec's ability to calculate sample size instead.
6. Parameter list for amci_inoutfmt_t.on_close() has been changed to give
ability to determine sample size in this file handler (WAV write_header
procedure requires this).
7. Fix gsm, ilbc, wav plugins and AmPlugin.c to reflect changes to amci.
Add corresponding samples2bytes and bytes2samples functions.
Caveats
--------
1. AmAdaptivePlayout class needs additional checking with RTP streams with
packets containing number of samples different from internal frame size
(for example 240 samples per packet in G711). Adaptive playout class
potentially may produce big packets of audio and therefore make the Conference
application work badly. The adaptive playout is used in Conference application
only and the application is working fine now with jitter buffer and without
adaptive playout. So I turned the adaptive playout off in the Conference app
as a workaround.
Developed by: Sippy Software, Inc.
Sponsored by: Digifonica Canada Limited
git-svn-id: http://svn.berlios.de/svnroot/repos/sems/trunk@185 8eb893ce-cfd4-0310-b710-fb5ebe64c474