[pjsip] PJSIP with JACK Audio Connection Kit?

Matthias Geier matthias.geier at gmail.com
Mon Feb 25 14:43:56 EST 2008


Hello all!

I guess this is a pure Linux question, so any non-Linux people may
want to stop reading right now.

I'm trying to compile PJSUA with support for the JACK Audio Connection
Kit (http://jackaudio.org/) and I ran into several problems. Maybe
someone of you can help me?

Has anyone of you successfully compiled PJSIP with JACK support?

For those of you who don't know JACK:
It is an audio server for Linux which runs on top of ALSA (or others)
and makes it easy to connect several audio programs running at the
same time.
I would like to use it and have PJSUA as one program in my chain of
audio processing applications.

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.

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 ;-)

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.

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