[pjsip] Calls being mixed :S
João César
jpcesar at gmail.com
Tue Nov 11 07:56:19 EST 2008
Ok i've added that debug method, and called it after i call the
make_call method.
(...)
on call state 12:47:10.468 APP Call 0 state=CALLING
(...)
--> Conference ports:
--> Port #00[16KHz/20ms/1] Master/sound transmitting to:
--> Port #01[ 8KHz/32ms/1] memory playback transmitting to:
(...)
on call state 12:47:10.468 APP Call 0 state=EARLY
on call state 12:47:10.718 APP Call 0 state=CONNECTING
(...)
12:47:10.718 pjsua_media.c Media updates, stream #0: PCMA (sendrecv)
on call media state 12:47:10.718 conference.c Port 2 (sip:6633 at 10.0.1.27) tran
smitting to port 0 (Master/sound)
12:47:10.718 conference.c Port 1 (memory playback) transmitting to port 2 (si
p:6633 at 10.0.1.27)
(...)
on call state 12:47:10.718 APP Call 0 state=CONFIRMED
12:47:50.656 pjsua_call.c Making call with acc #0 to sip:2557 at 10.0.1.27
12:47:50.656 pjsua_media.c Media index 0 selected for call 1
(...)
on call state 12:47:50.671 APP Call 1 state=CALLING
(...)
--> Conference ports:
--> Port #00[16KHz/20ms/1] Master/sound transmitting to:
--> Port #01[ 8KHz/32ms/1] memory playback transmitting to: #2
--> Port #02[ 8KHz/20ms/1] sip:6633 at 10.0.1.27 transmitting to: #0
--> Port #03[ 8KHz/32ms/1] memory playback transmitting to:
(...)
on call state 12:47:50.671 APP Call 1 state=EARLY
on call state 12:47:50.859 APP Call 1 state=CONNECTING
12:47:50.875 pjsua_media.c Media updates, stream #0: PCMA (sendrecv)
on call media state 12:47:50.875 conference.c Port 4 (sip:2557 at 10.0.1.27) tran
smitting to port 0 (Master/sound)
12:47:50.875 conference.c Port 3 (memory playback) transmitting to port 4 (si
p:2557 at 10.0.1.27)
on call state 12:47:50.875 APP Call 1 state=CONFIRMED
(...)
I'm supposed to have 2 calls, one to sip2557 at 10.0.1.27 and other to
sip:6633 at 10.0.1.27
The conference list does not seem right but also does not seem he is
mixing the 2 slots.
Where is the proper place to put the list? On the media callback?
Thanks
On Tue, Nov 11, 2008 at 12:34 PM, Nanang Izzuddin <nanang at pjsip.org> wrote:
> Hi,
>
> It seems to be about connecting conference bridge ports. Perhaps
> providing a 'debug' function like conf_list() in the pjsua_app.c can
> help locating the problem.
>
> Regards,
> nanang
>
>
> On Tue, Nov 11, 2008 at 6:14 PM, João César <jpcesar at gmail.com> wrote:
>> Hello mighty ones,
>>
>> We are using memory ports to feed audio samples to our calls. He have
>> now started to test multiple calls and for our surprise calls are
>> being mixed together by the conference.
>>
>> As an example, I've just made 2 calls and debugged the result.
>>
>> Call 0 is on conference slot 2 and media port 1.
>> Call 1 is on conference slot 4 and media port 3.
>>
>> This is how we are making a call:
>>
>> --------------------------------------
>>
>> // create a media port to generate samples.
>> status = create_memory_port( pool, sampleRate, frameSize,
>> numberFrames, channelCount,
>> &callData[sessionId].memory_port_phone_out);
>> WriteToLog("Created Memory Port",sessionId);
>>
>> // add port to conference
>> status = pjsua_conf_add_port(pool,
>> callData[sessionId].memory_port_phone_out,
>> &callData[sessionId].port_id);
>> if (status != PJ_SUCCESS) error_exit("Error adding memory port", status);
>> WriteToLog("Added Memory Port to conference
>> port",callData[sessionId].port_id);
>>
>> // make call
>> WriteToLog("Making Call",sessionId);
>> status = pjsua_call_make_call(acc_id,uri, 0,
>> &callData[sessionId].port_id, NULL,NULL);
>> if (status != PJ_SUCCESS) error_exit("Error making call", status);
>>
>>
>> // assign the callid to the current call in callData
>> callData[sessionId].call_id = callId;
>> callData[sessionId].isUsed = TRUE;
>> WriteToLog("Call Established",sessionId);
>>
>> // increment callId for next call
>> callId++;
>>
>> --------------------------------------
>>
>> This is how we put an audio frame into a specific call:
>>
>> memory_put_frame(callData[sessionId].memory_port_phone_out, &pjframe );
>>
>> --------------------------------------
>>
>> This is how we handle the on_call_media_state:
>>
>>
>> pjsua_call_info ci;
>> pjsua_conf_port_id *portId;
>>
>> pjsua_call_get_info(call_id,&ci);
>> portId = pjsua_call_get_user_data(call_id);
>>
>> #ifdef DEBUG
>> printf("on call media state");
>> #endif
>>
>> if (ci.media_status == PJSUA_CALL_MEDIA_ACTIVE)
>> {
>> WriteToLog("Call media state ACTIVE",call_id);
>> WriteToLog("---> slot",ci.conf_slot);
>> WriteToLog("---> port",*portId);
>> pjsua_conf_connect(ci.conf_slot, 0);
>> pjsua_conf_connect(*portId, ci.conf_slot);
>> }
>> else
>> {
>> WriteToLog("Call media state NOT ACTIVE",call_id);
>> }
>> -----
>>
>> Are we doing something here that is leading to mixing on different calls ?
>>
>> Thanks a lot for any feedback
>>
>>
>> --
>> Joao Cesar
>> msn: jpcesar at gmail.com
>> gtalk: jpcesar at gmail.com
>> icq: 13790802
>>
>> _______________________________________________
>> Visit our blog: http://blog.pjsip.org
>>
>> pjsip mailing list
>> pjsip at lists.pjsip.org
>> http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
>>
>
> _______________________________________________
> Visit our blog: http://blog.pjsip.org
>
> pjsip mailing list
> pjsip at lists.pjsip.org
> http://lists.pjsip.org/mailman/listinfo/pjsip_lists.pjsip.org
>
--
Joao Cesar
msn: jpcesar at gmail.com
gtalk: jpcesar at gmail.com
icq: 13790802
More information about the pjsip
mailing list