[pjsip] PJSIP with JACK Audio Connection Kit?

Benny Prijono bennylp at pjsip.org
Tue Feb 26 06:01:55 EST 2008

On 2/25/08, Matthias Geier <matthias.geier at gmail.com> wrote:
> Hello all!
>  The thing is: Portaudio originally supports JACK which can be activated with
>  ./configure --with-jack
>  It is even switched on by default (I think).
>  Sadly, PJSIP uses its own build-process and this feature was somehow lost.

Yeah sorry about that, but there are some benefits of having our own
build system (such as having consistent setting).

>  I tried to re-activate it with the following changes:
>  1) I created a user.mak with following contents:
>  export AC_PA_USE_ALSA = 0
>  export AC_PA_USE_OSS = 0
>  export CFLAGS += -DPA_USE_JACK=1
>  export APP_LDLIBS += -ljack
>  export LDFLAGS += -ljack
>  export PORTAUDIO_OBJS += pa_jack.o pa_ringbuffer.o
>  2) I created a third_party/build/portaudio/src/pa_jack.c with
>  following contents:
>  #include "../../../portaudio/src/hostapi/jack/pa_jack.c"
>  3) I temporarily disabled the file /usr/include/alsa/version.h by
>  renaming it. Without that, the configure script tries to build the
>  ALSA driver and the JACK driver doesn't work
>  After these 3 steps it worked.


>  Then, when I tried it again several days (maybe some weeks?) later, I
>  got the following error from the linker:
>  [...]/pjproject-0.8.0/third_party/lib/libportaudio-i686-pc-linux-gnu.a(pa_jack.o):
>  In function `RealStop':
>  pa_jack.c:(.text+0x1b7f): undefined reference to `jack_port_unlock'
>  pa_jack.c:(.text+0x1bb4): undefined reference to `jack_port_lock'
>  pa_jack.c:(.text+0x1c4f): undefined reference to `jack_port_unlock'
>  pa_jack.c:(.text+0x1c88): undefined reference to `jack_port_lock'
>  collect2: ld returned 1 exit status
>  make[2]: *** [../bin/pjsua-i686-pc-linux-gnu] Error 1
>  make[2]: Leaving directory `[...]/pjproject-0.8.0/pjsip-apps/build'
>  I did a web-search and found the explanation that those two functions
>  jack_port_lock and jack_port_unlock are deprecated and were removed
>  from JACK.
>  So I guess in a recent system update (btw: I'm using Debian) JACK was
>  updated and these functions got deactivated.
>  I don't know if that's true, but at least it's an explanation ;-)

That is quite strange, since we have our own copy of PortAudio in our
SVN (pulled directly from PA SVN), and this copy is locked to a
specific revision (do "svn pget svn:externals" in third_party
directory). So unless you removed this specific revision number in
your SVN flag, system update should not affect the build.

>  So now I'm kind of stuck.
>  It would be great if someone could help me out.
>  Is there another (better) way to activate JACK?
>  Would it work if libportaudio were linked dynamically? There is a
>  Debian packet "libportaudio19-dev" which I could probably use.

You can probably do that, by:
 1) copying libportaudio.a from your /usr/lib to third_party/lib, and
renaming the filename to libportaudio-${TARGET}.a
 2) modify third_party/build/portaudio to do nothing
 3) Add "CFLAGS += -I/portaudio/inc/dir" in user.mak to let pasound.c
find the new PortAudio

Good luck! :)


>  Or do I have to downgrade JACK?
>  If you need more information about my system I will gladly provide it,
>  I just didn't want to make this post even longer.
>  TIA
>  Matthias

More information about the pjsip mailing list