Re: Custom audio device or master port

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxx>
To: "pjsip" <pjsip@xxxxxxxxxxxxxxx>
Sent: Tuesday, November 7, 2017 8:02:51 PM
Subject: 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@xxxxxxxxxxxxxxx
http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
_______________________________________________
Visit our blog: http://blog.pjsip.org

pjsip mailing list
pjsip@xxxxxxxxxxxxxxx
http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org

[Index of Archives]     [Asterisk Users]     [Asterisk App Development]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [Linux API]
  Powered by Linux