Milestone release-1.0-rc1

Completed 16 years ago (Aug 28, 2008 9:42:31 PM)


Total number of tickets: 57 - closed: 57 - active: 0


5 / 5


2 / 2


10 / 10


1 / 1


16 / 16


3 / 3


12 / 12


8 / 8

Version 1.0-rc1

Release Focus

This release pushes all enhancements to the trunk before it is frozen into a stable release. From now on and until version 1.0 is released, there will be no enhancements to be made to the trunk, and the development will focus on stabilizing the libraries.

Selected Features

New Python Wrapper

A new and better Python abstraction for PJSUA-LIB has been implemented. Please see the new Python SIP tutorial on how to use Python with PJSIP.

Memory Usage Verification

We have verified the memory usage and fixed many bugs related to memory leaks and handle leaks. Please see the ticket list below for the details.

New Codecs

This release provides integration/codec wrappers for Intel® Integrated Performance Primitive (IPP) speech codecs, and support for the following codecs will be added:

  • G.729
  • G.723.1
  • G.726 (16, 24, 32, and 40 Kbps)
  • G.728 (16 Kbps)
  • G.722.1 (16, 24, and 32 Kbps)
  • AMR (narrowband, 12.2Kbps) (experimental)

Please see Using Intel® Integrated Performance Primitive (IPP) with PJMEDIA on how to use this feature.

Improvements in Echo Cancellation

There have been major reworks in the echo canceller (AEC) framework, and it has been tested quite extensively for this release. The echo suppressor has been completely rewritten and it should work much much better than the older version, and the processing requirements have been verified to be suitable for mobile devices (PDA's and smart phones). The echo cancellation framework now supports multichannels.

Support for Nokia's Audio Proxy Server (APS)

This release adds support for APS, for better audio latency. Please see Using Audio Proxy Server (APS) in PJSIP on how to use this feature.

Other Improvements in Audio Quality

This release also provides improvements to the audio quality, with the implementation of a new silence detector (ticket #490), multichannel resampling (ticket #596), and other works to generally improve the audio quality.

Presence Authorization

A callback to authorize incoming presence subscription/SUBSCRIBE requests has been added. This and other enhancements to presence management has been implemented in ticket #192.

STUN and TURN Update

The STUN and TURN implementation in PJNATH have been updated to the latest draft (ticket #598)

API Changes

Possible API compatibility problems:


  • Updated STUN and TURN to the latest specs, some attributes were removed (e.g. BANDWIDTH) or renamed (e.g. RELAY-ADDRESS --> RELAYED-ADDRESS) or syntactically changed (e.g. REQUESTED-PROPS).
  • Added parsed_len argument to pj_turn_session_on_rx_pkt()


  • Added account ID to on_pager2() callback
  • Added account ID to on_pager_status2() callback

List of Enhancements


No results


Coloring for logs in Linux/UNIX, two more spaces in logs and runtime log colors configuration (thanks Ondrej Sterbak for the patch)


Optimize the memory usage of DNS resolver


Update to draft-ietf-behave-rfc3489bis-18 and draft-ietf-behave-turn-09


New voice activity detection (VAD)
Implement sound device wrapper using APS (Audio Proxy Server) for S60
Support for Intel Integrated Performace Primitives (IPP) codecs
Improvements to echo cancellation framework
Improve the echo suppressor
Codec framework enhancement: Interaction with SDP
Modify the stream to maintain RTP sequence number and timestamp from the last transmission when it's restarted.


Generic URI scheme handler (thanks Juri Glaß)
Added TLS server name extension to support connecting to multi-hosted SIP TLS server (thanks Klaus Darilion for the suggestion)
Automatically detect the realm for authenticating against IMS servers, so that application/user doesn't have to fill in the realm value beforehand, to simplify provisioning (thanks Philippe Leuba for the suggestion)


Add callback to notify application about incoming SUBSCRIBE request, and add subscription state and termination reason in buddy info
Small but otherwise incompatible changes to PJSUA instant messaging callbacks
New object oriented Python abstraction for pjsua API
Added user data in pjsua account and buddy


Reduce the memory usage for default pjsip settings
Improvements in PocketPJ Windows Mobile application

List of Bugs


Fixed build dependencies in the makefiles


Memory leak on Symbian and possibly handle leaks on all platforms when application exits while transactions have not been terminated
Call WSACleanup() when pj_shutdown() is called on Windows
Unregistering from Windows IOCompletionPort (IOCP) ioqueue does not close the socket handle (thanks Gang Liu for the report)
Broken semaphore implementation on MacOS X (thanks Viktor Krikun for the report)
Bug with TCP server socket in IOCP ioqueue and active socket causes the ioqueue to stop accepting incoming TCP connections or 100% CPU usage
Crash in ICE with IoCompletionPort ioqueue with the test framework
Error opening file in append mode in Win32 (thanks Gang Liu for the report)


No results


Rare race condition causing crash in ICE stream transport when STUN Binding resolution callback is called before initialization completes
Assertion failure in ICE session (thanks Pedro Gonçalves for the report)


Memory leak in Speex echo canceller
Memory leak in SRTP
Non-uniform locking order between SRTP & its member transport (e.g:ICE) may cause deadlock
Out of array/buffer boundary access in WSOLA
Bug in encoding ICE candidate type in SDP (thanks Ondrej Sterbak for the report)
RTP timestamp incremented incorrectly for multichannel audio.
Multi-channel capability for the resampling algorithm (thanks Bill Gardner for the patch)
Reinvite/update call when SRTP enabled may cause one way media.


Closed TCP connection should be removed from the hash table immediately
PUBLISH callback is not called when authentication fails (thanks Ruud Klaver for the report)
Handle receiving short version of Event header ("o")
Data loss with TCP sockets (thanks Helmut Wolf for the report)
Incoming target refresh request does not update the Contact header (thanks Joel Dodson for the report)
Handle non-SIP URI in Contact header of incoming INVITE and SUBSCRIBE requests
URI comparison may crash the application (thanks Pedro Gonçalves for the report)


Growing memory usage in PJSUA-LIB
Bug with SDP in offer/answer related to call hold scenario
TURN session in PJSUA-LIB is not properly destroyed causing possible memory and handle leaks
Presence extended status is not sent in initial NOTIFY request (thanks Joseph Maiquez for the report)


The hash table ignores the last row of the table in hash table iteration, causing some memory leaks during shutdown routine because some objects are not destroyed

Minor Changes

Minor Enhancements

Configuration option to have external sound device implementation
New PJSIP pjsip_msg_find_hdr_by_names() API to find SIP header by either header name or the short header name
Add new API to know why the outgoing subscription request is terminated
Added ICE negotiation tests to test the scenario when two agents have different number of components

Minor Bug Fixes

Update the pool alternative API (pool_alt.h) with the latest pool API
select() ioqueue default concurrency setting is not initialized with the default value
In TURN client sample application, when STUN server is specified, contact the STUN server on default STUN port rather than the TURN port

Note: See TracRoadmap for help on using the roadmap.