| 1 | = Major Changes since Version 0.5 = |
| 2 | |
| 3 | = Summary = |
| 4 | |
| 5 | == Summary of Changes == |
| 6 | |
| 7 | * Added {{{PJ_POOL_ALLOC_T}}} and {{{PJ_POOL_ZALLOC_T}}} macros in pjlib. |
| 8 | * Added IP helper API in {{{ip_helper.h}}}. |
| 9 | * Added new '''PJNATH''' library containing ICE, STUN, and TURN. |
| 10 | * Most third party libraries now lives in separate directories, under '''third_party''' directory. |
| 11 | * STUN related settings have been moved from transport config to pjsua config in PJSUA-LIB. |
| 12 | |
| 13 | == Updating the Application == |
| 14 | |
| 15 | === All Projects === |
| 16 | |
| 17 | * The STUN settings have been moved from {{{pjsua_transport_config}}} to {{{pjsua_config}}}. |
| 18 | |
| 19 | === All Visual Studio/Embedded Visual C Projects === |
| 20 | |
| 21 | * Add '''IPHLPAPI.LIB''' to input library (Visual Studio 6 users see below). |
| 22 | * Add these third party libraries into your project dependencies: |
| 23 | * {{{third_party/build/gsm/libgsmcodec}}} |
| 24 | * {{{third_party/build/ilbc/libilbccodec}}} |
| 25 | * {{{third_party/build/portaudio/libportaudio}}} |
| 26 | * {{{third_party/build/resample/libresample}}} |
| 27 | * {{{third_party/build/speex/libspeex}}} |
| 28 | * Applications based on PJSUA-LIB, or applications wanting to use the new STUN and ICE functionality in PJNATH, should add {{{pjnath/build/pjnath}}} library into the project dependencies. |
| 29 | |
| 30 | === Visual Studio 6 === |
| 31 | |
| 32 | VS6 users need to download another/newer Platform SDK from MSDN because IPHLPAPI.LIB is not shipped with VS6. This step is not necessasry if VC++ 2005 Express is already installed in the same machine. |
| 33 | |
| 34 | Once Platform SDK has been downloaded, add the relevant include and library paths to VS6 directories, '''after''' the include and library paths of the VS6's Platform SDK. |
| 35 | |
| 36 | === Makefile based Projects === |
| 37 | |
| 38 | Makefile based project should include PJ's '''{{{build.mak}}}''' file and gets the link specification from that file (as described in [wiki:Getting_Started_Using Getting Started Part II: Building Your Own Application using PJSIP]). |
| 39 | |
| 40 | |
| 41 | = Detail Changes = |
| 42 | |
| 43 | == PJLIB == |
| 44 | |
| 45 | Changes in PJLIB: |
| 46 | * Added {{{PJ_POOL_ALLOC_T}}} and {{{PJ_POOL_ZALLOC_T}}} macros, which should be preferable than the old {{{pj_pool_alloc()}}}/{{{pj_pool_zalloc()}}} since it provides more type safety. |
| 47 | * PJLIB now has IP Helper API in {{{ip_helper.h}}} file to enumerate local interface and local routing (needed by ICE). Windows application must link with IPHLPAPI.LIB. |
| 48 | |
| 49 | |
| 50 | == New PJNATH Library == |
| 51 | |
| 52 | There is a new {{{PJNATH}}} library for NAT traversal helper, containing ICE and new STUN implementation. This library is platform independent, and it depends only on {{{pjlib}}} and {{{pjlib-util}}}. |
| 53 | |
| 54 | If the application is based on {{{pjsua-lib}}}, then you will have to add {{{pjnath}}} library to your link process. |
| 55 | |
| 56 | == PJMEDIA == |
| 57 | |
| 58 | PJMEDIA is the one that has underdone the most changes, although most the API remains the same: |
| 59 | * All third party libraries now are separated from {{{pjmedia}}} or {{{pjmedia-codec}}} into their own directory, so that it would be easier to maintain (synchronize with the original source). They now live in '''{{{third_party}}}''' directory. |
| 60 | * Added Speex resampler as one of the resampling backend (default is still disabled) |
| 61 | * Steve Underwood's PLC has been removed from PJMEDIA. Now PJMEDIA only uses PLC that is built-in with the codec, for example in Speex and iLBC. |
| 62 | |
| 63 | === !PortAudio === |
| 64 | |
| 65 | !PortAudio now lives in '''{{{third_party/portaudio}}}''' directory, and is directly synch-ed to main !PortAudio SVN ({{{v19-devel}}} branch, although it's locked to a specific revision). This arrangement would make it easy to synchronize !PortAudio with their development. |
| 66 | |
| 67 | The PJMEDIA specific build files for !PortAudio is located under '''{{{third_party/build/portaudio}}}''' directory. |
| 68 | |
| 69 | === Speex === |
| 70 | |
| 71 | Speex now lives in '''{{{third_party/speex}}}''' directory, and is directly synch-ed to main Speex SVN ({{{trunk}}}, although it's locked to a specific revision). This arrangement would make it easy to synchronize !PortAudio with Speex development. |
| 72 | |
| 73 | The PJMEDIA specific build files for Speex is located under '''{{{third_party/build/speex}}}''' directory. |
| 74 | |
| 75 | === GSM Codec === |
| 76 | |
| 77 | The GSM codec now lives in '''{{{third_party/gsm}}}''' directory, and the content is taken from GSM tarball release. |
| 78 | |
| 79 | The PJMEDIA specific build files for GSM is located under '''{{{third_party/build/gsm}}}''' directory. |
| 80 | |
| 81 | |
| 82 | === iLBC Codec === |
| 83 | |
| 84 | The iLBC codec now lives in '''{{{third_party/ilbc}}}''' directory, and the content is taken from iLBC RFC. |
| 85 | |
| 86 | The PJMEDIA specific build files for iLBC is located under '''{{{third_party/build/ilbc}}}''' directory. |
| 87 | |
| 88 | |
| 89 | |
| 90 | === Resample === |
| 91 | |
| 92 | The resampling library now lives in '''{{{third_party/resample}}}''' directory, and the implementation was based on {{{libresample-1.7}}}, but was modified (unfortunately I couldn't find the original {{{libresample-1.7.tar.gz}}} anymore, so most original files that come with the original library are missing). |
| 93 | |
| 94 | The PJMEDIA specific build files for resample is located under '''{{{third_party/build/resample}}}''' directory. |
| 95 | |
| 96 | In addition, PJMEDIA now also supports the sample rate converter in Speex. |
| 97 | |
| 98 | To control which resampling back-end to be used in PJMEDIA, declare either of |
| 99 | |
| 100 | these macros in your {{{config_site.h}}}: |
| 101 | * {{{PJMEDIA_HAS_LIBRESAMPLE=1}}}, which is the default. |
| 102 | * {{{PJMEDIA_HAS_SPEEX_RESAMPLE=1}}}, if you want to try Speex resampler. |
| 103 | |
| 104 | Because of this new arrangements, {{{PJMEDIA_HAS_SMALL_FILTER}}} and {{{PJMEDIA_HAS_LARGE_FILTER}}} macros are now obsolete. |
| 105 | |
| 106 | |
| 107 | === PLC === |
| 108 | |
| 109 | Support for PLC (Packet Loss Concealment) implementation that is based on Steve Underwood's SpanDSP work has been removed. Now PJMEDIA will only use PLC that is built-in with the codec, which means that this feature is only available for Speex and iLBC codec. |
| 110 | |
| 111 | Because of this, the '''{{{PJMEDIA_HAS_STEVEU_PLC}}}''' configuration macro is now obsolete. |
| 112 | |
| 113 | |
| 114 | === MP3 File Writer === |
| 115 | |
| 116 | Support for encoding/writing MP3 file (the MP3 file writer port) has been removed from PJMEDIA. If application wants this, it can get the original files from '''{{{third_party/mp3}}}''' directory. |
| 117 | |
| 118 | |
| 119 | == PJSUA-LIB == |
| 120 | |
| 121 | The STUN related settings have been moved from transport config to PJSUA config. |