[Top][All Lists]
[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
- [Linphone-developers] oRTP pb during SIP refresh, Frédérik Rouleau, 2010/01/12
- Re: [Linphone-developers] oRTP pb during SIP refresh,
Simon Morlat <=
- Re: [Linphone-developers] oRTP pb during SIP refresh, Frédérik Rouleau, 2010/01/21
- Re: [Linphone-developers] oRTP pb during SIP refresh, Simon Morlat, 2010/01/21
- Re: [Linphone-developers] oRTP pb during SIP refresh, Frédérik Rouleau, 2010/01/21
- Re: [Linphone-developers] oRTP pb during SIP refresh, Frédérik Rouleau, 2010/01/25
- Re: [Linphone-developers] oRTP pb during SIP refresh, Simon Morlat, 2010/01/27