Changes between Initial Version and Version 1 of 0.9/ReleaseNotes


Ignore:
Timestamp:
Jun 29, 2008 10:50:03 AM (11 years ago)
Author:
bennylp
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • 0.9/ReleaseNotes

    v1 v1  
     1 
     2= Release 0.9 = 
     3 
     4== New Features and Enhancements == 
     5 
     6Many new features have been implemented on this release. 
     7 
     8=== Audio quality improvements === 
     9 
     10This release contains many improvements to stability, latency, and in general quality of audio: 
     11 * Implementation of Waveform Similarity Based Overlap-Add (WSOLA) algorithm (ticket #497) which provides the base algorithm for buffer expansion/compression and packet loss concealment. 
     12 * Ticket #438 fixed many problems related to audio impairments: 
     13   - fixed the click noise produced by splitcomb or conference bridge upon underflow/overflow situation (which normally happens when there is drift in audio device) 
     14   - 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. 
     15 * New conference mixing algorithm which does not weaken the signal unlike to old algorithm (ticket #449) 
     16 * New packet loss concealment for G.711 and GSM codec (ticket #502) 
     17 * Boost the priority of master port/splitcomb to avoid audio disruption because of CPU usage (ticket #501) 
     18 * Optimize the delay in the jitter buffer (ticket #505) 
     19 * Much better stereo support all the way, including support for mixing ports with different channel number in the conference bridge (ticket #504) 
     20 
     21 
     22=== Secure RTP (SRTP) === 
     23 
     24SRTP have been implemented and it is available for all platforms including Symbian and Windows Mobile. The implementation uses [http://srtp.sourceforge.net/srtp.html libsrtp], and SDES is used for the key exchange. 
     25 
     26=== G.722 codec === 
     27 
     28The G.722 codec is now included in the standard source distribution and it is available for all platforms. 
     29 
     30=== TURN Relay support === 
     31 
     32TURN has been implemented. The implementation is based on [http://tools.ietf.org/html/draft-ietf-behave-turn-07 draft-ietf-behave-turn-07] draft and with the default settings should be compatible with the newly released [http://tools.ietf.org/html/draft-ietf-behave-turn-08 draft-ietf-behave-turn-08] draft. 
     33 
     34In 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. 
     35 
     36=== ICE enhancements === 
     37 
     38The SDP offer/answer procedures related to ICE have been enhanced and should now comply to the latest [http://tools.ietf.org/html/draft-ietf-mmusic-ice-19 draft-ietf-mmusic-ice-19] draft. 
     39 
     40=== IPv6 Support === 
     41 
     42Support 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. 
     43 
     44 
     45 
     46=== RTCP XR support === 
     47 
     48Support for subset of RTCP XR (RFC 3611) has been implemented (see ticket #513) 
     49 
     50=== Improved Windows Mobile sample application === 
     51 
     52A new and more usable sample application !PocketPJ has been provided for !PocketPC/Windows Mobile based platforms. 
     53 
     54=== Improved Symbian support === 
     55 
     56Carbide C++ is now supported, and a [wiki:DevelopingSymbianAppWithCarbide tutorial on developing PJSIP application with Carbide C++] is provided. More codecs have been ported to Symbian, including GSM and Speex. 
     57 
     58=== !ActiveSocket Framework === 
     59 
     60The new [http://www.pjsip.org/pjlib/docs/html/group__PJ__ACTIVESOCK.htm ActiveSocket] framework in PJLIB provides higher and easier to use abstraction to create asynchronous sockets, utilizing PJLIB's [http://www.pjsip.org/pjlib/docs/html/group__PJ__IOQUEUE.htm ioqueue]. 
     61 
     62=== More Thorough Tests === 
     63 
     64Last 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. 
     65 
     66 
     67[[BR]] 
     68[[BR]] 
     69 
     70== (In)Compatibility Info == #changes 
     71 
     72=== PJLIB === 
     73 
     74 [http://www.pjsip.org/pjlib/docs/html/group__pj__config.htm Config] ({{{config.h}}}): :: 
     75  - New settings: 
     76      - PJ_HAS_IPV6 (default 0) 
     77      - PJ_IOQUEUE_DEFAULT_ALLOW_CONCURRENCY 
     78      - PJ_FD_SETSIZE_SETABLE 
     79 
     80 
     81 [http://www.pjsip.org/pjlib/docs/html/group__pj__math.htm Math and statistic functions] ({{{math.h}}}): :: 
     82  - New file 
     83 
     84 [http://www.pjsip.org/pjlib/docs/html/group__PJ__SOCK.htm Socket] ({{{sock.h}}}): :: 
     85  - The {{{struct pj_in6_addr}}} has been changed to {{{union pj_in6_addr}}}. 
     86  - Member names changes in {{{struct pj_sockaddr_in6}}}. 
     87  - New functions: 
     88      - pj_sockaddr_init() 
     89      - pj_inet_pton() 
     90      - pj_inet_ntop() 
     91      - pj_inet_ntop2() 
     92      - pj_sockaddr_print() 
     93      - pj_sockaddr_cmp() 
     94      - pj_sockaddr_get_addr() 
     95      - pj_sockaddr_has_addr() 
     96      - pj_sockaddr_get_addr_len() 
     97      - pj_sockaddr_get_len() 
     98      - pj_sockaddr_copy_addr() 
     99      - pj_sockaddr_cp() 
     100      - pj_sockaddr_set_str_addr() 
     101      - and pj_sockaddr_get_port() 
     102  - New constants: 
     103      - PJ_INET_ADDRSTRLEN 
     104      - PJ_INET6_ADDRSTRLEN.  
     105 
     106 [http://www.pjsip.org/pjlib/docs/html/group__PJ__ACTIVESOCK.htm ActiveSocket] ({{{activesock.h.h}}}): :: 
     107  - New file 
     108 
     109 [http://www.pjsip.org/pjlib/docs/html/group__pj__addr__resolve.htm Address resolution] ({{{addr_resolv.h}}}): :: 
     110  - {{{pj_gethostip()}}} now takes additional address family parameter 
     111  - New functions: 
     112      - pj_getdefaultipinterface() 
     113      - pj_getaddrinfo() 
     114 
     115 [http://www.pjsip.org/pjlib/docs/html/group__PJ__PSTR.htm String] ({{{string.h}}}): :: 
     116  - New functions: 
     117      - pj_strstr() 
     118      - pj_stristr() 
     119 
     120 [http://www.pjsip.org/pjlib/docs/html/group__PJ__THREAD.htm Thread] ({{{os.h}}}): :: 
     121  - New functions: 
     122      - pj_thread_get_prio() 
     123      - pj_thread_set_prio() 
     124      - pj_thread_get_prio_min() 
     125      - pj_thread_get_prio_max() 
     126      - pj_thread_get_os_handle() 
     127 
     128 [http://www.pjsip.org/pjlib/docs/html/group__pj__ip__helper.htm IP Helper] ({{{ip_helper.h}}}): :: 
     129  - The {{{pj_enum_ip_interface()}}} now takes additional address family parameter 
     130 
     131 [http://www.pjsip.org/pjlib/docs/html/group__PJ__IOQUEUE.htm IOqueue] ({{{ioqueue.h}}}): :: 
     132  - New functions: 
     133      - pj_ioqueue_set_default_concurrency() 
     134      - pj_ioqueue_set_concurrency() 
     135      - pj_ioqueue_lock_key() 
     136      - pj_ioqueue_unlock_key() 
     137 
     138 
     139=== PJLIB-UTIL === 
     140 
     141 [http://www.pjsip.org/pjlib-util/docs/html/group__PJ__DNS__SERVER.htm DNS Server] ({{{dns_server.h}}}): :: 
     142  - New file 
     143 
     144 [http://www.pjsip.org/pjlib-util/docs/html/group__PJ__PCAP.htm PCAP File Format Support] ({{{pcap.h}}}): :: 
     145  - New file 
     146 
     147 [http://www.pjsip.org/pjlib-util/docs/html/group__PJ__DNS__PARSING.htm DNS] ({{{dns.h}}}): :: 
     148  - New helper functions: 
     149      - pj_dns_init_srv_rr() 
     150      - pj_dns_init_cname_rr() 
     151      - pj_dns_init_a_rr() 
     152 
     153 
     154=== PJNATH === 
     155 
     156 [http://www.pjsip.org/pjnath/docs/html/group__PJNATH__TURN__SESSION.htm Transport Independent TURN Session] ({{{turn_session.h}}}): :: 
     157  - New file 
     158 
     159 [http://www.pjsip.org/pjnath/docs/html/group__PJNATH__TURN__SOCK.htm TURN Client Socket/Transport] ({{{turn_sock.h}}}): :: 
     160  - New file 
     161 
     162 [http://www.pjsip.org/pjnath/docs/html/group__PJNATH__STUN__SOCK.htm STUN Client Socket/Transport] ({{{stun_sock.h}}}): :: 
     163  - New file 
     164 
     165 [http://www.pjsip.org/pjnath/docs/html/group__PJNATH__ICE__STREAM__TRANSPORT.htm ICE Stream Transport] ({{{ice_strans.h}}}): :: 
     166  - 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. 
     167  - The {{{struct pj_ice_strans}}} is no longer visible in the API, and various accessor functions have been added 
     168 
     169 [http://www.pjsip.org/pjnath/docs/html/group__PJNATH__STUN__AUTH.htm STUN Authentication] ({{{stun_auth.h}}}): :: 
     170  - API change 
     171 
     172 [http://www.pjsip.org/pjnath/docs/html/group__PJNATH__STUN__SESSION.htm Transport Independent STUN Session] ({{{stun_session.h}}}): :: 
     173  - Changes to all API's 
     174 
     175 [http://www.pjsip.org/pjnath/docs/html/group__PJNATH__STUN__MSG.htm STUN Messaging] ({{{stun_msg.h}}}): :: 
     176  - Addition and removal of STUN methods and attributes to support latest STUN, TURN, and ICE drafts. 
     177  - Minor changes to parameter types in {{{pj_stun_msg_encode()}}} 
     178  - Minor changes to parameter types in {{{pj_stun_msg_check()}}} 
     179  - Minor changes to parameter types in {{{pj_stun_msg_decode()}}} 
     180  - New functions: 
     181     - pj_stun_msg_init() 
     182     - pj_stun_msg_clone() 
     183     - pj_stun_attr_clone() 
     184     - pj_stun_sockaddr_attr_init() 
     185     - pj_stun_string_attr_init() 
     186     - pj_stun_binary_attr_init() 
     187 
     188  [http://www.pjsip.org/pjnath/docs/html/group__PJNATH__ICE__SESSION.htm Transport Independent ICE Session] ({{{ice_sess.h}}}): :: 
     189   - The addition of {{{transport_id}}} parameter in: 
     190      - {{{pj_ice_sess_add_cand()}}} 
     191      - {{{pj_ice_sess_on_rx_pkt()}}} 
     192      - {{{on_tx_pkt()}}} callback 
     193      - {{{on_rx_data()}}} callback 
     194 
     195  [http://www.pjsip.org/pjnath/docs/html/group__PJNATH__CONFIG.htm Configuration] ({{{config.h}}}): :: 
     196   - New settings: 
     197      - PJ_STUN_SOCK_PKT_LEN 
     198      - PJ_STUN_KEEP_ALIVE_SEC 
     199      - PJ_TURN_MAX_DNS_SRV_CNT 
     200      - PJ_TURN_MAX_PKT_LEN 
     201      - PJ_TURN_PERM_TIMEOUT 
     202      - PJ_TURN_CHANNEL_TIMEOUT 
     203      - PJ_TURN_REFRESH_SEC_BEFORE 
     204      - PJ_TURN_KEEP_ALIVE_SEC 
     205      - PJ_ICE_COMP_BITS 
     206      - PJ_ICE_CAND_TYPE_PREF_BITS 
     207      - PJ_ICE_LOCAL_PREF_BITS 
     208   - New settings to control pool size: 
     209      - PJNATH_POOL_LEN_ICE_SESS 
     210      - PJNATH_POOL_INC_ICE_SESS 
     211      - PJNATH_POOL_LEN_ICE_STRANS 
     212      - PJNATH_POOL_INC_ICE_STRANS 
     213      - PJNATH_POOL_LEN_NATCK 
     214      - PJNATH_POOL_INC_NATCK 
     215      - PJNATH_POOL_LEN_STUN_SESS 
     216      - PJNATH_POOL_INC_STUN_SESS 
     217      - PJNATH_POOL_LEN_STUN_TDATA 
     218      - PJNATH_POOL_INC_STUN_TDATA 
     219 
     220[[BR]] 
     221[[BR]] 
     222 
     223 
     224== Known Issues == 
     225 
     226Apart from general known issues documented in [milestone:Known-Issues], there is a specific issue related to ICE on Symbian, as it raises E32USER CBase 46 exception. 
     227 
     228 
     229 
     230 
     231---- 
     232 
     233== List of Enhancements == 
     234 
     235=== common === 
     236[[TicketQuery(type=enhancement&milestone=release-0.9.0&version=trunk&component=common)]] 
     237 
     238=== pjlib === 
     239[[TicketQuery(type=enhancement&milestone=release-0.9.0&version=trunk&component=pjlib)]] 
     240 
     241=== pjlib-util === 
     242[[TicketQuery(type=enhancement&milestone=release-0.9.0&version=trunk&component=pjlib-util)]] 
     243 
     244=== pjnath === 
     245[[TicketQuery(type=enhancement&milestone=release-0.9.0&version=trunk&component=pjnath)]] 
     246 
     247=== pjmedia === 
     248[[TicketQuery(type=enhancement&milestone=release-0.9.0&version=trunk&component=pjmedia)]] 
     249 
     250=== pjsip === 
     251[[TicketQuery(type=enhancement&milestone=release-0.9.0&version=trunk&component=pjsip)]] 
     252 
     253=== pjsua-lib === 
     254[[TicketQuery(type=enhancement&milestone=release-0.9.0&version=trunk&component=pjsua-lib)]] 
     255 
     256=== applications === 
     257[[TicketQuery(type=enhancement&milestone=release-0.9.0&version=trunk&component=applications)]] 
     258 
     259== List of Bugs == 
     260 
     261=== common === 
     262[[TicketQuery(type=defect&milestone=release-0.9.0&version=trunk&component=common)]] 
     263 
     264=== pjlib === 
     265[[TicketQuery(type=defect&milestone=release-0.9.0&version=trunk&component=pjlib)]] 
     266 
     267=== pjlib-util === 
     268[[TicketQuery(type=defect&milestone=release-0.9.0&version=trunk&component=pjlib-util)]] 
     269 
     270=== pjnath === 
     271[[TicketQuery(type=defect&milestone=release-0.9.0&version=trunk&component=pjnath)]] 
     272 
     273=== pjmedia === 
     274[[TicketQuery(type=defect&milestone=release-0.9.0&version=trunk&component=pjmedia)]] 
     275 
     276=== pjsip === 
     277[[TicketQuery(type=defect&milestone=release-0.9.0&version=trunk&component=pjsip)]] 
     278 
     279=== pjsua-lib === 
     280[[TicketQuery(type=defect&milestone=release-0.9.0&version=trunk&component=pjsua-lib)]] 
     281 
     282=== applications === 
     283[[TicketQuery(type=defect&milestone=release-0.9.0&version=trunk&component=applications)]] 
     284 
     285 
     286 
     287 
     288 
     289