[Top][All Lists]

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

Re: [Linphone-developers] oRTP pb during SIP refresh

From: Frédérik Rouleau
Subject: Re: [Linphone-developers] oRTP pb during SIP refresh
Date: Thu, 21 Jan 2010 10:22:28 +0100

Hi Simon,

I cannot see why my patch is a problem. You are still locked to a stream, it just enable to switch faster on a new stream when you ask oRTP to.
Linphone has the same problem, at each refresh, you have a 1 second silence (50 * 20ms). The gateway is a Cirpack, the same equipement used by Free operator in France. Might be difficult to have any upgrade on that side !!!
You also have this problem during ringing, when you answer the call, the RTP stream is reset by the Cirpack, then you also have a 1 s silence !
I am looking for a way to solve this issues. If you have better suggestion, I am open to any proposal.



2010/1/19 Simon Morlat <address@hidden>
Hi Frédérik,

I understand this change solves your problem, but it is not really
compatible with what this SSRC checking was done for.
Initially the goal was to lock on the initial stream (and discard any
others), and when one stream appears to be active (50 packet received
without any other SSRC in between), we lock to this new stream.
I think the gateway should not reinit the seq and timestamp numbers.

RFC4028 was implemented in linphone quite recently. If you have both
last svn/git of linphone and last svn of eXosip2, and have
use_session_timers=1 in the [sip] section of the .linphonerc config
file, they are enabled.

Try it, this may workaround the gateway behaviour.


Le mardi 12 janvier 2010 à 16:03 +0100, Frédérik Rouleau a écrit :
> Hello all,
> I am using oRTP and a SIP gateway which support SIP REFRESH (RFC
> 4028). So at a fixed interval (600 s) I receive a SIP UPDATE but the
> gateway also reinit the SSRC et seq number of the RTP flow.
> The problem is that oRTP waits 1 second before it sends SSRC_CHANGED
> message and during that ime I am loosing RTP paquets. Looking into the
> code shows that there is a constant SSRC_CHANGED_THRESHOLD set at 50
> setting this delay.
> Reducing the threshold might have some side effects but can we add a
> kind of SSRC_change_pending state which set the flag
> RTP_SESSION_RECV_SYNC on the first SSRC change paquet. for example the
> rtp_parse code will look like:
>             if (session->inc_same_ssrc_count>SSRC_CHANGED_THRESHOLD){
>                 /* store the sender rtp address to do symmetric RTP */
>                 if (!session->use_connect){
>                     if (session->rtp.socket>0 &&
> session->symmetric_rtp){
>                         /* store the sender rtp address to do
> symmetric RTP */
>                         memcpy(&session->rtp.rem_addr,addr,addrlen);
>                         session->rtp.rem_addrlen=addrlen;
>                     }
>                 }
>                 session->rtp.rcv_last_ts = rtp->timestamp;
>                 session->rcv.ssrc=rtp->ssrc;
>                 rtp_signal_table_emit(&session->on_ssrc_changed);
>             }else if (session->ssrc_change_pending){
>                 session->ssrc_change_pending=FALSE;
>                 rtp_session_set_flag(session, RTP_SESSION_RECV_SYNC);
>             }else{
>                 /*discard the packet*/
>                 ortp_debug("Receiving packet with unknown ssrc.");
>                 stats->bad++;
>                 ortp_global_stats.bad++;
>                 freemsg(mp);
>                 return;
>             }
> What do you think about it ? If you agree I can make changes and
> propose a patch.
> Regards,
> _______________________________________________
> Linphone-developers mailing list
> address@hidden

reply via email to

[Prev in Thread] Current Thread [Next in Thread]