Hi,
I am new to pjsip, sorry if I am asking something silly :-)
I am trying to integrate pjsip in an audio processing application. This
application has its own interface to the audio device connected to an audio
processing graph. Each node of this graph performs a different audio
processing (e.g. gain, equaliser,...).
I would like to "disable" pjsip's audio device and connect the conference
bridge to my graph. The conference bridge should be seen as a node of the
processing graph.
So far, I have been doing different tests using the PJSUA2 C++ API.
What would be the best approach to achieve this goal ?
Ideally, the pjsip conference bridge should run at the same clock rate and
have the same frame size as the rest of the graph so that the latency is
minimized (no extra buffer needed between the conference bridge and the
rest of the graph).
Note that in my application, the frame size is a user settings and can not
be hard coded. It won't change dynamically during operation though.
I have tested solution 1 but I need extra buffers between graph and
conference bridge as the frame size is different. Furthermore, the timing
of the master port is not synchronised with the audio card as it runs in
its own thread.
I have also tried solution 2 but I could not get it working properly so
far. I guess I did something wrong but didn't find what. Does anyone has a
sample code ?
I am looking at solution 3 but it seemed to me quite complicated.
Any suggestion is welcome.
Many thanks.
Best regards,
Renaud Schoonbroodt
Hi, Renaud!
Have you seen this wiki article https://trac.pjsip.org/repos/wiki/3rd_Party_Media_20 ?
I suppose, it'd be of some help for you.
Andrey
From: "Renaud Schoonbroodt" renaud.schoonbroodt@gmail.com
To: "pjsip" pjsip@lists.pjsip.org
Sent: Tuesday, November 7, 2017 8:02:51 PM
Subject: [pjsip] Custom audio device or master port
Hi,
I am new to pjsip, sorry if I am asking something silly :-)
I am trying to integrate pjsip in an audio processing application. This application has its own interface to the audio device connected to an audio processing graph. Each node of this graph performs a different audio processing (e.g. gain, equaliser,...).
I would like to "disable" pjsip's audio device and connect the conference bridge to my graph. The conference bridge should be seen as a node of the processing graph.
So far, I have been doing different tests using the PJSUA2 C++ API.
What would be the best approach to achieve this goal ?
1. set the audio device to null using audDevManager().setNullDev() and implement the graph node as custom ports
2. set the audio device to "no device" audDevManager().setNoDev() and implement my own "master port"
3. implement a graph node as a pjsip audio device (using the audio device factory API)
4. any other suggestion ???
Ideally, the pjsip conference bridge should run at the same clock rate and have the same frame size as the rest of the graph so that the latency is minimized (no extra buffer needed between the conference bridge and the rest of the graph).
Note that in my application, the frame size is a user settings and can not be hard coded. It won't change dynamically during operation though.
I have tested solution 1 but I need extra buffers between graph and conference bridge as the frame size is different. Furthermore, the timing of the master port is not synchronised with the audio card as it runs in its own thread.
I have also tried solution 2 but I could not get it working properly so far. I guess I did something wrong but didn't find what. Does anyone has a sample code ?
I am looking at solution 3 but it seemed to me quite complicated.
Any suggestion is welcome.
Many thanks.
Best regards,
Renaud Schoonbroodt
Visit our blog: http://blog.pjsip.org
pjsip mailing list
pjsip@lists.pjsip.org
http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org