Milestone release-1.0-rc1
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:
PJNATH:
- 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()
PJSUA-LIB:
- Added account ID to on_pager2() callback
- Added account ID to on_pager_status2() callback
List of Enhancements
common
No results
pjlib
- #571
- Coloring for logs in Linux/UNIX, two more spaces in logs and runtime log colors configuration (thanks Ondrej Sterbak for the patch)
pjlib-util
- #560
- Optimize the memory usage of DNS resolver
pjnath
- #598
- Update to draft-ietf-behave-rfc3489bis-18 and draft-ietf-behave-turn-09
pjmedia
- #490
- New voice activity detection (VAD)
- #577
- Implement sound device wrapper using APS (Audio Proxy Server) for S60
- #583
- Support for Intel Integrated Performace Primitives (IPP) codecs
- #588
- Improvements to echo cancellation framework
- #590
- Improve the echo suppressor
- #599
- Codec framework enhancement: Interaction with SDP
- #602
- Modify the stream to maintain RTP sequence number and timestamp from the last transmission when it's restarted.
pjsip
- #551
- Generic URI scheme handler (thanks Juri Glaß)
- #552
- Added TLS server name extension to support connecting to multi-hosted SIP TLS server (thanks Klaus Darilion for the suggestion)
- #554
- 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)
pjsua-lib
- #192
- Add callback to notify application about incoming SUBSCRIBE request, and add subscription state and termination reason in buddy info
- #555
- Small but otherwise incompatible changes to PJSUA instant messaging callbacks
- #556
- New object oriented Python abstraction for pjsua API
- #576
- Added user data in pjsua account and buddy
applications
List of Bugs
common
- #581
- Fixed build dependencies in the makefiles
pjlib
- #529
- Memory leak on Symbian and possibly handle leaks on all platforms when application exits while transactions have not been terminated
- #565
- Call WSACleanup() when pj_shutdown() is called on Windows
- #575
- Unregistering from Windows IOCompletionPort (IOCP) ioqueue does not close the socket handle (thanks Gang Liu for the report)
- #595
- Broken semaphore implementation on MacOS X (thanks Viktor Krikun for the report)
- #601
- Bug with TCP server socket in IOCP ioqueue and active socket causes the ioqueue to stop accepting incoming TCP connections or 100% CPU usage
- #603
- Crash in ICE with IoCompletionPort ioqueue with the test framework
- #604
- Error opening file in append mode in Win32 (thanks Gang Liu for the report)
pjlib-util
No results
pjnath
pjmedia
- #557
- Memory leak in Speex echo canceller
- #558
- Memory leak in SRTP
- #569
- Non-uniform locking order between SRTP & its member transport (e.g:ICE) may cause deadlock
- #570
- Out of array/buffer boundary access in WSOLA
- #578
- Bug in encoding ICE candidate type in SDP (thanks Ondrej Sterbak for the report)
- #593
- RTP timestamp incremented incorrectly for multichannel audio.
- #596
- Multi-channel capability for the resampling algorithm (thanks Bill Gardner for the patch)
- #600
- Reinvite/update call when SRTP enabled may cause one way media.
pjsip
- #538
- Closed TCP connection should be removed from the hash table immediately
- #553
- PUBLISH callback is not called when authentication fails (thanks Ruud Klaver for the report)
- #573
- Handle receiving short version of Event header ("o")
- #579
- Data loss with TCP sockets (thanks Helmut Wolf for the report)
- #580
- Incoming target refresh request does not update the Contact header (thanks Joel Dodson for the report)
- #585
- Handle non-SIP URI in Contact header of incoming INVITE and SUBSCRIBE requests
- #592
- URI comparison may crash the application (thanks Pedro Gonçalves for the report)
pjsua-lib
- #518
- Growing memory usage in PJSUA-LIB
- #563
- Bug with SDP in offer/answer related to call hold scenario
- #566
- TURN session in PJSUA-LIB is not properly destroyed causing possible memory and handle leaks
- #582
- Presence extended status is not sent in initial NOTIFY request (thanks Joseph Maiquez for the report)
applications
- #568
- 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
- #463
- Configuration option to have external sound device implementation
- #572
- New PJSIP pjsip_msg_find_hdr_by_names() API to find SIP header by either header name or the short header name
- #574
- Add new API to know why the outgoing subscription request is terminated
- #586
- Added ICE negotiation tests to test the scenario when two agents have different number of components
Minor Bug Fixes
- #559
- Update the pool alternative API (pool_alt.h) with the latest pool API
- #561
- select() ioqueue default concurrency setting is not initialized with the default value
- #562
- In TURN client sample application, when STUN server is specified, contact the STUN server on default STUN port rather than the TURN port