[Freeswitch-dev] Freeswitch communication delay after three hours

Achim Stamm stamm at lyth.de
Thu Aug 26 04:19:44 PDT 2010


Mathieu Rene schrieb:
> Hi,
>
> Lange nicht gesprochen. What can happen, usually, is network congestion causing a delay buildup over time (FS times its reads at every 20ms and returns a comfort noise frame if it can't get an RTP frame immediately). If frames come in 2-3 ms delayed because of congestion, delay can build up over time. If you are in a C module, you can send a message to the channel so it drops frames (essentially reads until EWOULDBLOCK).
>
> zB:
>
> switch_core_session_message_t msg = { 0 };
> msg.message_id = SWITCH_MESSAGE_INDICATE_AUDIO_SYNC;
> msg.from = __FILE__;
> switch_core_session_receive_message(session, &msg); 
>
> Hope that fixes it
>  
> Mathieu Rene
> Avant-Garde Solutions Inc
> Office: + 1 (514) 664-1044 x100
> Cell: +1 (514) 664-1044 x200
> mrene at avgs.ca
>
>
>
>
> On 2010-08-24, at 1:54 PM, Achim Stamm wrote:
>
>   
>> Hello!
>>
>> I have following problem:
>>
>> My current session is connected to a thirdParty Application by using an 
>> own FreeSwitch
>> application "DoingReadAndWriteFrames". The communication between 
>> FreeSwitch Session and
>> thirdParty Application is done by reading and writing frames in a while 
>> loop.
>> At start of FreeSwitch Session the communication works without delay.
>> After three or more hours i get a communication delay of one or more 
>> seconds.
>> If i hang up and make a new call (a new freeswitch session), than the 
>> delay disappears, but after several hours
>> the delay comes up again.
>>
>> It is possible, that i get an old frame (one second ago) with 
>> switch_core_session_read_frame ?
>>
>> Is there a solution (for example an freeswitch core api call) to avoid 
>> the delay ?
>>
>> Greetings
>>
>> Achim Stamm
>>
>> -- 
>> Achim Stamm, Dipl.-Inform. (FH)
>>
>>
>> Lyncker & Theis GmbH
>> Wilhelmstr. 16
>> 65185 Wiesbaden
>> Germany
>>
>> Fon +49 611/9006951
>> Fax +49 611/9406125
>>
>>
>> Handelsregister: HRB 23156 Amtsgericht Wiesbaden
>> Steuernummer: 04323897052
>> USt-IdNr.: DE255806399
>>
>> Geschäftsführer:
>> Filip Lyncker,
>> Armin Theis 
>>
>>
>> _______________________________________________
>> FreeSWITCH-dev mailing list
>> FreeSWITCH-dev at lists.freeswitch.org
>> http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev
>> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev
>> http://www.freeswitch.org
>>     
>
>
> _______________________________________________
> FreeSWITCH-dev mailing list
> FreeSWITCH-dev at lists.freeswitch.org
> http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev
> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev
> http://www.freeswitch.org
>
>   
Thanks for your suggestion.

The fix works, but when should i do the fix ?

Best way for me is to call "Audio Sync" every hour (or every ten 
minutes) after session is started and when silence is on channel.

First try was to place audio synchronisation, when i get a silent Frame:
if (switch_test_flag(read_frame, SFF_CNG) || !read_frame->samples)
{
    switch_core_session_message_t msg = { 0 };
    msg.message_id = SWITCH_MESSAGE_INDICATE_AUDIO_SYNC;
    msg.from = __FILE__;
    switch_core_session_receive_message(session, &msg);
}
Here the problem is, that i don't get an silence Frame, so audio 
synchronisation is never called.

How can i recognize silent on channel ?

Next try was to call every 10 minutes to do the "Audio Sync".
But if somebody says something at same time doing audio synchronisation, 
this frames will be droped.

How can i get the session running time ?


Greetings

Achim Stamm


-- 
Achim Stamm, Dipl.-Inform. (FH)


Lyncker & Theis GmbH
Wilhelmstr. 16
65185 Wiesbaden
Germany

Fon +49 611/9006951
Fax +49 611/9406125


Handelsregister: HRB 23156 Amtsgericht Wiesbaden
Steuernummer: 04323897052
USt-IdNr.: DE255806399

Geschäftsführer:
Filip Lyncker,
Armin Theis 




More information about the FreeSWITCH-dev mailing list