Releases: pjsip/pjproject
PJSIP version 1.0
Released on 2008-10-09T17:13:30Z
Version 1.0This would be a major milestone for what we have been doing for the past 3 years! With this version, we plan to fork the source tree into stable and development version, so we want this version to be the most stable PJSIP version ever.
Ticket list
common
For more details about the ticket list, please see Release Notes
PJSIP version 1.0-rc4
Released on 2008-09-28T12:03:58Z
Version 1.0-rc4This release fixes build problems on Mingw32, Visual Studio 6, and Windows Mobile platforms, as well as link errors when PJLIB is built as DLL.
-Ticket list:*
For more details about the ticket list, please see Release Notes
PJSIP version 1.0-rc3
Released on 2008-09-25T13:25:23Z
Release Focus
This release focuses on fixing bugs to make the libraries more stable for the upcoming 1.0 release. Some areas where bugs have been fixed include:
- tone generator issues (ticket #619, #642)
- SIP forking issues (ticket #620, #635)
- Unexpected SIP message flow causes assertion or crash (ticket #640, #641, #623)
Some enhancements have also been made on this release. Please see the ticket list for the complete information.
----
For more details about the ticket list, please see Release Notes
PJSIP version 1.0-rc2
Released on 2008-09-09T17:35:57Z
Release Focus
This release contains mostly bug-fixes and more tests to previous RC release.
----
For more details about the ticket list, please see Release Notes
PJSIP version 1.0-rc1
Released on 2008-08-28T22:42:31Z
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 #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 topj_turn_session_on_rx_pkt()
PJSUA-LIB:
- Added account ID to
on_pager2()
callback - Added account ID to
on_pager_status2()
callback
----
For more details about the ticket list, please see Release Notes
PJSIP version 0.9.0
Released on 2008-06-28T23:36:49Z
Release 0.9## New Features and Enhancements
Many new features have been implemented on this release.
Audio quality improvements
This release contains many improvements to stability, latency, and in general quality of audio:
- Implementation of Waveform Similarity Based Overlap-Add (WSOLA) algorithm (ticket #497) which provides the base algorithm for buffer expansion/compression and packet loss concealment.
- Ticket #438 fixed many problems related to audio impairments:
- fixed the click noise produced by splitcomb or conference bridge upon underflow/overflow situation (which normally happens when there is drift in audio device)
- much better buffering in splitcomb and conference bridge, with the ability to learn the optimal buffer length and shrinking/extending the buffer as necessary without degrading audio quality too much.
- New conference mixing algorithm which does not weaken the signal unlike to old algorithm (ticket #449)
- New packet loss concealment for G.711 and GSM codec (ticket #502)
- Boost the priority of master port/splitcomb to avoid audio disruption because of CPU usage (ticket #501)
- Optimize the delay in the jitter buffer (ticket #505)
- Much better stereo support all the way, including support for mixing ports with different channel number in the conference bridge (ticket #504)
Secure RTP (SRTP)
SRTP have been implemented and it is available for all platforms including Symbian and Windows Mobile. The implementation uses libsrtp, and SDES is used for the key exchange.
G.722 codec
The G.722 codec is now included in the standard source distribution and it is available for all platforms.
TURN Relay support
TURN has been implemented. The implementation is based on draft-ietf-behave-turn-07 draft and with the default settings should be compatible with the newly released draft-ietf-behave-turn-08 draft.
In addition to integration with ICE all the way up to PJSUA-LIB and pjsua sample application, simple command line TURN client and server implementation samples are provided.
ICE enhancements
The SDP offer/answer procedures related to ICE have been enhanced and should now comply to the latest draft-ietf-mmusic-ice-19 draft.
IPv6 Support
Support for IPv6 has been added in PJLIB, PJSIP, and PJMEDIA libraries. However some features are still missing, such as asynchronous DNS AAAA resolution and IPv6 support in pjsua sample application.
RTCP XR support
Support for subset of RTCP XR (RFC 3611) has been implemented (see ticket #513)
Improved Windows Mobile sample application
A new and more usable sample application !PocketPJ has been provided for !PocketPC/Windows Mobile based platforms.
Improved Symbian support
Carbide C++ is now supported, and a tutorial on developing PJSIP application with Carbide C++ is provided. More codecs have been ported to Symbian, including GSM and Speex.
ActiveSocket Framework
The new ActiveSocket framework in PJLIB provides higher and easier to use abstraction to create asynchronous sockets, utilizing PJLIB's ioqueue.
More Thorough Tests
Last but not least, in addition to existing tests for each library, 100+ automated test scripts have been added to test PJSUA-LIB to test functionality, conformance, and quality of various parts of the library.
API Changes and (In)Compatibility Info #changes
PJLIB
Config (config.h
): ::
- New settings:
- PJ_HAS_IPV6 (default 0)
- PJ_IOQUEUE_DEFAULT_ALLOW_CONCURRENCY
- PJ_FD_SETSIZE_SETABLE
Math and statistic functions (math.h
): ::
- New file
Socket (sock.h
): ::
- The
struct pj_in6_addr
has been changed tounion pj_in6_addr
. - Member names changes in
struct pj_sockaddr_in6
. - New functions:
- pj_sockaddr_init()
- pj_inet_pton()
- pj_inet_ntop()
- pj_inet_ntop2()
- pj_sockaddr_print()
- pj_sockaddr_cmp()
- pj_sockaddr_get_addr()
- pj_sockaddr_has_addr()
- pj_sockaddr_get_addr_len()
- pj_sockaddr_get_len()
- pj_sockaddr_copy_addr()
- pj_sockaddr_cp()
- pj_sockaddr_set_str_addr()
- and pj_sockaddr_get_port()
- New constants:
- PJ_INET_ADDRSTRLEN
- PJ_INET6_ADDRSTRLEN.
ActiveSocket (activesock.h.h
): ::
- New file
Address resolution (addr_resolv.h
): ::
pj_gethostip()
now takes additional address family parameter- New functions:
- pj_getdefaultipinterface()
- pj_getaddrinfo()
String (string.h
): ::
- New functions:
- pj_strstr()
- pj_stristr()
Thread (os.h
): ::
- New functions:
- pj_thread_get_prio()
- pj_thread_set_prio()
- pj_thread_get_prio_min()
- pj_thread_get_prio_max()
- pj_thread_get_os_handle()
IP Helper (ip_helper.h
): ::
- The
pj_enum_ip_interface()
now takes additional address family parameter
IOqueue (ioqueue.h
): ::
- New functions:
- pj_ioqueue_set_default_concurrency()
- pj_ioqueue_set_concurrency()
- pj_ioqueue_lock_key()
- pj_ioqueue_unlock_key()
PJLIB-UTIL
DNS Server (dns_server.h
): ::
- New file
PCAP File Format Support (pcap.h
): ::
- New file
DNS (dns.h
): ::
- New helper functions:
- pj_dns_init_srv_rr()
- pj_dns_init_cname_rr()
- pj_dns_init_a_rr()
PJNATH
Transport Independent TURN Session (turn_session.h
): ::
- New file
TURN Client Socket/Transport (turn_sock.h
): ::
- New file
STUN Client Socket/Transport (stun_sock.h
): ::
- New file
ICE Stream Transport (ice_strans.h
): ::
- Initialization sequence has changed. Now all required parameters (STUN and TURN settings) are wrapped in
struct pj_ice_strans_cfg
and passed topj_ice_strans_create()
. Thepj_ice_strans_set_stun_domain()
andpj_ice_strans_set_stun_srv()
functions have been removed. - The
struct pj_ice_strans
is no longer visible in the API, and various accessor functions have been added
STUN Authentication (stun_auth.h
): ::
- API change
Transport Independent STUN Session (stun_session.h
): ::
- Changes to all API's
STUN Messaging (stun_msg.h
): ::
- Addition and removal of STUN methods and attributes to support latest STUN, TURN, and ICE drafts.
- Minor changes to parameter types in
pj_stun_msg_encode()
- Minor changes to parameter types in
pj_stun_msg_check()
- Minor changes to parameter types in
pj_stun_msg_decode()
- New functions:
- pj_stun_msg_init()
- pj_stun_msg_clone()
- pj_stun_attr_clone()
- pj_stun_sockaddr_attr_init()
- pj_stun_string_attr_init()
- pj_stun_binary_attr_init()
Transport Independent ICE Session (ice_sess.h
): ::
- The addition of
transport_id
parameter in:pj_ice_sess_add_cand()
pj_ice_sess_on_rx_pkt()
on_tx_pkt()
callbackon_rx_data()
callback
Configuration (config.h
): ::
- New settings:
- PJ_STUN_SOCK_PKT_LEN
- PJ_STUN_KEEP_ALIVE_SEC
- PJ_TURN_MAX_DNS_SRV_CNT
- PJ_TURN_MAX_PKT_LEN
- PJ_TURN_PERM_TIMEOUT
- PJ_TURN_CHANNEL_TIMEOUT
- PJ_TURN_REFRESH_SEC_BEFORE
- PJ_TURN_KEEP_ALIVE_SEC
- PJ_ICE_COMP_BITS
- PJ_ICE_CAND_TYPE_PREF_BITS
- PJ_ICE_LOCAL_PREF_BITS
- New settings to control pool size:
- PJNATH_POOL_LEN_ICE_SESS
- PJNATH_POOL_INC_ICE_SESS
- PJNATH_POOL_LEN_ICE_STRANS
- PJNATH_POOL_INC_ICE_STRANS
- PJNATH_POOL_LEN_NATCK
- PJNATH_POOL_INC_NATCK
- PJNATH_POOL_LEN_STUN_SESS
- PJNATH_POOL_INC_STUN_SESS
- PJNATH_POOL_LEN_STUN_TDATA
- PJNATH_POOL_INC_STUN_TDATA
PJMEDIA
Configurations (config.h
): ::
- The value of
PJMEDIA_CODEC_MAX_SILENCE_PERIOD
has been changed from timestamps to milliseconds. - Deprecated settings:
- PJMEDIA_PASOUND_MAX_LATENCY
- PJMEDIA_HAS_STEVEU_PLC
- New settings:
- PJMEDIA_SND_DEFAULT_REC_LATENCY (100)
- PJMEDIA_SND_DEFAULT_PLAY_LATENCY (100)
- PJMEDIA_SOUND_USE_DELAYBUF (0)
...
PJSIP version 0.8.0
Released on 2007-11-11T14:59:58Z
New Features## PRACK and UPDATE #prack-update
PRACK (ticket #385) and UPDATE (ticket #5) have been implemented on this release, including all the quirks with the management of SDP offer and answer session when these SIP methods are involved.
Symbian #symbian
Symbian support is getting more matured, with the implementation of Symbian sound device abstraction (ticket #2) and support for building the libraries as Dynamic Shared Object (DSO) files, which are needed for building developing for S60 3rd Edition using Code Warrior (ticket #354).
Updated STUN, TURN, and ICE #stun
STUN, TURN, and ICE have been updated to the latest specification (ticket #374, #382). Many bugs have also been fixed.
Custom SIP Presence Status Text #rpid
While previously PJSIP only supports basic online/offline status, now PJSIP supports specifying and receiving custom presence status text by implementing subset of RPID (ticket #336)
More robust NAT handling #nat
For SIP, keep-alive mechanism has been implemented for UDP transport at PJSUA-LIB level (ticket #407), and both TCP and TLS transports at the transport level (ticket #95). Because of these the default registration interval is now extended to 5 minutes. The client registration session will also keep the transport open until it is destroyed, so that server can send SIP requests using this transport (mandatory for TLS, and could be useful for TCP) (ticket #390).
For SIP UDP transport, pjsua-lib by default (pjsua_acc_config.auto_update_nat
setting) will monitor the STUN mapped address as reported by registrar. When it detects that the mapped SIP transport address has changed, it will unregister previous Contact, create a new Contact based on the new transport address, and restart the registration. This would happen automatically without application assistance (ticket #381).
For media, ICE transport will automatically change its transport address based on the address returned in the STUN keep-alive packets (ticket #372). Also pjsua-lib will now reports to application via a callback when ICE negotiation has failed (ticket #370).
More Robust SIP authentication #sip-auth
PJSIP now supports responding to authentication challenge for any realms, by specifying wildcard ("*") as the realm in the credential (ticket #231). Although some have commented about security implications of this, a lot of people will find this feature to be very useful.
Basic support for 3GPP/IMS #akav1-md5
Ticket #396 adds support for 3GPP/IMS digest AKA authentication (AKAv1-MD5 and AKAv2-MD5). Ticket #400 adds support for Service-Route
header processing.
Much improved audio latency on Windows #latency
Audio latency on Windows (Win32) has been improved by several hundreds milliseconds. This should make the echo cancellation (AEC) works better too, so default EC tail length has been decreased from 800 ms to 200 ms.
Ticket #393 changed basic audio frame time, from 20 ms (hard coded as PTIME
macro in pjsua_media.c
) to 10 ms, and make this configurable. Default PortAudio sound driver backend was also made configurable, with the default is WMME (ticket #384). The default number of sound buffers (PJMEDIA_SOUND_BUFFER_COUNT
) has been reduced from 16 to 6 (ticket #394). WMME audio latency buffering in PortAudio is now limited by 100 ms by default (ticket #395).
For more information, please see [Audio latency question] in wiki:FAQ PJSIP FAQ.
Enhancements DetailsEnhancements that have been or will be applied on this release:
common
For more details about the ticket list, please see Release Notes
PJSIP version 0.7.0
Released on 2007-06-01T10:54:42Z
Tickets for This Release## common
For more details about the ticket list, please see Release Notes
PJSIP version 0.7.0-rc1
Released on 2007-05-15T23:52:24Z
New FeaturesThis release is a major release, and it also contains all bug fixes in the stable branch. The main features of this release are as follows.
ICE, STUN, and TURN
These are major features added on 0.7.0. There is a new PJNATH (NAT Traversal Helper) library which contains the building blocks for STUN and TURN (both client and server side), and implementation of ICE. Please see Introducing pjnath - Open Source ICE, STUN, and TURN for an introductory article, or PJNATH Reference Documentation.
The STUN, TURN, and ICE implementations comply to:
Symbian Integration
The Symbian has been integrated to the trunk, and all libraries (including PJNATH and PJSUA-LIB have been ported). Please have a look at Porting PJSIP and PJMEDIA Stack to SymbianOS article for detailed info.
Third Party Software Reorganization
Third party libraries are now kept in separate directory, to make them easier to maintain. This causes major reorganization in the project files or build system. Please see Porting Application from 0.5 to 0.7 about adapting the applications for the new arrangements.
Changes to ApplicationApplications that use PJ libraries will need some updating. Please see Porting Application from 0.5 to 0.7 about adapting the applications for the new arrangements.
Bug FixesAll bugs fixed in the stable branch have been fixed on this version too. Please click on the ticket graphs above to get the list of tickets closed on this version since version 0.5.10.
For more details about the ticket list, please see Release Notes
PJSIP version 0.5.10.4
Released on 2007-05-14T18:10:57Z
Tickes/Bugs Fixed or Pending on This Release## common
For more details about the ticket list, please see Release Notes