linphone-developers
[Top][All Lists]
Advanced

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

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


From: Simon Morlat
Subject: Re: [Linphone-developers] oRTP pb during SIP refresh
Date: Tue, 19 Jan 2010 17:02:07 +0100

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.

Simon

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
> http://lists.nongnu.org/mailman/listinfo/linphone-developers






reply via email to

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