Skip to content

Releases: pjsip/pjproject

PJSIP version 1.0

14 Feb 04:57
Compare
Choose a tag to compare

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

14 Feb 04:57
Compare
Choose a tag to compare

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

14 Feb 04:57
Compare
Choose a tag to compare

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

14 Feb 04:57
Compare
Choose a tag to compare

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

14 Feb 04:57
Compare
Choose a tag to compare

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 to pj_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

14 Feb 04:57
Compare
Choose a tag to compare

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 to union 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 to pj_ice_strans_create(). The pj_ice_strans_set_stun_domain() and pj_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() callback
    • on_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)
      ...
Read more

PJSIP version 0.8.0

14 Feb 04:57
Compare
Choose a tag to compare

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

14 Feb 04:57
Compare
Choose a tag to compare

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

14 Feb 04:57
Compare
Choose a tag to compare

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

14 Feb 04:57
Compare
Choose a tag to compare

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