Hold, Re-Invite and Conference

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

 



Hello Everybody,

I am trying to implement a 3-party-conference by connecting the mediastreams as follows:

void mergeCalls(int callOne, int callTwo) {

	// make sure that both calls are off-hold
	pjsua_call_reinvite(callOne, PJ_TRUE, NULL);
	pjsua_call_reinvite(callTwo, PJ_TRUE, NULL);

	// obtaining the media-slots
	pjsua_conf_port_id slotOne = pjsua_call_get_conf_port(callOne);
	pjsua_conf_port_id slotTwo = pjsua_call_get_conf_port(callTwo);

	// connecting everybody
	pjsua_conf_connect(0, slotOne);
	pjsua_conf_connect(slotOne, 0);
    
	pjsua_conf_connect(0, slotTwo);
	pjsua_conf_connect(slotTwo, 0);

   	pjsua_conf_connect(slotOne, slotTwo);
	pjsua_conf_connect(slotTwo, slotOne);
}

"mergeCalls()" is called, while two calls are connected and either callOne or callTwo is "holding" (as in "pjsua_call_set_hold(callID, NULL)").

Even though the above code might be a bit of "overkill" (inefficient) with respect to re-inviting both calls and (re-)connecting both calls to "slot 0", this should not really be harmful.

The Log states:

 12:07:34.115   conference.c  Port 3 (sip:12345 at provider.com;user=phone) transmitting to port 0 (iPhone IO device)
 12:07:34.115   conference.c  Port 0 (iPhone IO device) transmitting to port 3 (sip:12345 at provider.com;user=phone)

 12:07:37.677   conference.c  Port 4 (sip:54321 at provider.com) transmitting to port 0 (iPhone IO device)
 12:07:37.677   conference.c  Port 0 (iPhone IO device) transmitting to port 4 (sip:54321 at provider.com)

 12:07:37.736   conference.c  Port 4 (sip:54321 at provider.com) transmitting to port 3 (sip:12345 at provider.com;user=phone)
 12:07:37.736   conference.c  Port 3 (sip:12345 at provider.com;user=phone) transmitting to port 4 (sip:54321 at provider.com)

However, the mediastreams do not seem to get merged:

Port 0 can listen and talk to both, Port 3 and Port 4
but:
Port 3 can listen and talk to Port 0 but NOT to Port 4
Port 4 can listen and talk to Port 0 but NOT to Port 3

(Port 3 seems to be able to hear Port 4 for a fraction of a second)

Somewhere, I had read about complications regarding re-pjsua_call_set_hold() and pjsua_call_reinvite() but I can't find the reference anymore.

Any hints are greatly appreciated!

Thank you very much in advance.

Best Regards,

Thomas







 




[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