Hello,
I am sure some of you already went through the same or similar issue. I would like to use as much of PJSIP stack to handle SIP signaling, codec negotiation, and call management. The only problem is that instead of media going through PJSIP I would like to pass all RTP processing to a SoC. I consulted https://trac.pjsip.org/repos/wiki/3rd_Party_Media_20 but things do not go easy.
For example, when an outgoing call happens at the moment the following happens:
create_rtp_rtcp_sock() at pjsua_media.c:267 0xce9a4
create_udp_media_transport() at pjsua_media.c:592 0xcf89c
pjsua_call_media_init() at pjsua_media.c:1,677 0xd1fd0
pjsua_media_channel_init() at pjsua_media.c:2,106 0xd3100
pjsua_call_make_call() at pjsua_call.c:834 0xb7440
After that RTP and RTCP sockets are attached to ioqueue using following function 'pjmedia_transport_udp_attach'. And RTP packets are received through callback functions.
I would like to avoid registering RTP and RTCP sockets with ioqueue and simply pass the sockets to a low-level library, which besides some basic codec config, will receive and send RTP packets over the sockets given. I am not sure what is the most elegant way to achieve wanted functionality. I do not want to butcher the code without considering using some other clever methods like using 'transport adapter'. Can transport adapter even help in this case? If yes, I need a small guidance on how it can be done.
Alternatively, is it possible to get RTP and RTCP sockets from 'pjsua_call' structure?
Thanks in advance to those who bother to reply.
Zarko
Well, it turns out I found out the solution myself. In case anyone else stumbles upon the same obstacle, the following had to be done:
I had to substitute a default media adapter which is in charge of dealing with RTP packets with my own which does exactly what I want.
Zarko
From: pjsip pjsip-bounces@lists.pjsip.org on behalf of Zarko Coklin zcoklin@hotmail.com
Sent: August 27, 2018 4:37:03 PM
To: pjsip@lists.pjsip.org
Subject: [pjsip] Help with 3rd party media library, PJSIP and SoC
Hello,
I am sure some of you already went through the same or similar issue. I would like to use as much of PJSIP stack to handle SIP signaling, codec negotiation, and call management. The only problem is that instead of media going through PJSIP I would like to pass all RTP processing to a SoC. I consulted https://trac.pjsip.org/repos/wiki/3rd_Party_Media_20 but things do not go easy.
For example, when an outgoing call happens at the moment the following happens:
create_rtp_rtcp_sock() at pjsua_media.c:267 0xce9a4
create_udp_media_transport() at pjsua_media.c:592 0xcf89c
pjsua_call_media_init() at pjsua_media.c:1,677 0xd1fd0
pjsua_media_channel_init() at pjsua_media.c:2,106 0xd3100
pjsua_call_make_call() at pjsua_call.c:834 0xb7440
After that RTP and RTCP sockets are attached to ioqueue using following function 'pjmedia_transport_udp_attach'. And RTP packets are received through callback functions.
I would like to avoid registering RTP and RTCP sockets with ioqueue and simply pass the sockets to a low-level library, which besides some basic codec config, will receive and send RTP packets over the sockets given. I am not sure what is the most elegant way to achieve wanted functionality. I do not want to butcher the code without considering using some other clever methods like using 'transport adapter'. Can transport adapter even help in this case? If yes, I need a small guidance on how it can be done.
Alternatively, is it possible to get RTP and RTCP sockets from 'pjsua_call' structure?
Thanks in advance to those who bother to reply.
Zarko