wiki:Migration From 0.5 Version To 0.6 Version

Version 12 (modified by bennylp, 12 years ago) (diff)

--

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 come 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.

Because of this new arrangements, PJMEDIA_HAS_SMALL_FILTER and PJMEDIA_HAS_LARGE_FILTER macros are now obsolete.

Changes for (Embedded) Visual Studio Based Projects:

Visual Studio applications now must link with third_party/lib/libresample-$(TARGET) library, or add third_party/build/resample/libresample.dsp in the application 's project dependency.

Changes for Makefile Based Projects:

There is no change for Makefile based application, as long as it includes PJ's build.mak file and gets the link specification from that file (as described in Getting Started Part II: Building Your Own Application using PJSIP).

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.

Because of this, the PJMEDIA_HAS_STEVEU_PLC configuration macro is now obsolete.

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.