= Migration From 0.5 Version To 0.6 Version = = Changes = == PJLIB == Changes in PJLIB: * 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. * PJLIB now has {{{ip_helper.h}}} file to enumerate local interface and local routing (needed by ICE). Windows application must link with IPHLPAPI.LIB now. == New PJNATH Library == 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}}}. If the application is based on {{{pjsua-lib}}}, then you will have to add {{{pjnath}}} library to your link process. == PJMEDIA == PJMEDIA is the one that has underdone the most changes, although most the API remains the same: * 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. * Added Speex resampler as one of the resampling backend (default is still disabled) * 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. === !PortAudio === !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. The PJMEDIA specific build files for !PortAudio is located under '''{{{third_party/build/portaudio}}}''' directory. === Speex === 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 their development. The PJMEDIA specific build files for Speex is located under '''{{{third_party/build/speex}}}''' directory. === GSM Codec === The GSM codec now lives in '''{{{third_party/gsm}}}''' directory, and the content is taken from GSM tarball release. The PJMEDIA specific build files for GSM is located under '''{{{third_party/build/gsm}}}''' directory. === iLBC Codec === The iLBC codec now lives in '''{{{third_party/ilbc}}}''' directory, and the content is taken from iLBC RFC. The PJMEDIA specific build files for iLBC is located under '''{{{third_party/build/ilbc}}}''' directory. === Resample === 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 comes with the original library are missing). The PJMEDIA specific build files for resample is located under '''{{{third_party/build/resample}}}''' directory. In addition, PJMEDIA now also supports the sample rate converter in Speex. To control which resampling back-end to be used in PJMEDIA, declare either of these macros in your {{{config_site.h}}}: * {{{PJMEDIA_HAS_LIBRESAMPLE=1}}}, which is the default. * {{{PJMEDIA_HAS_SPEEX_RESAMPLE=1}}}, if you want to try Speex resampler. === PLC === 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. === MP3 File Writer === 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. = Migrating Your Application = == All Applications == If your application is based on PJSUA-LIB, you need to add '''PJNATH''' in your input library, == All Windows and WinCE Applications == What need to change: * On Windows and WinCE, the new IP helper abstraction requires application to link with '''IPHLPAPI.LIB'''. Note that IPHLPAPI.LIB is not shipped with Visual Studio 6 so you need to download Platform SDK to get this library. See the section about Visual Studio 6 below. == Visual Studio 6 == If you're using Visual Studio 6, you need to: * download '''Platform SDK''' from MSDN, and * add relevant include and library directory to VS6 options, '''after''' the standard Visual Studio 6 include and library path. This is required because Iphlpapi.[h|lib] is not shipped with Visual Studio 6.