Calls being mixed :S

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

 



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
>



[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