id summary reporter owner description type status priority milestone component version resolution keywords cc backport_to_milestone backported
696 Wrong timestamp calculation causing RTCP clock skew (thanks Guido Fischer for the fix!) bennylp nanang "Quoting Guido's post on the list:
""There seems to be a bug in ""rtcp.c"". The rtt-time was faulty at some point and a few times, when enabling the trace in rtcp.c, I got ""Internal RTCP NTP clock skew detected""-failures (time now < time of lsr).
In my understanding the problem is in pjmedia_rtcp_get_ntp_time:
{{{
/* Calculate seconds fractions */
ts.u64 %= sess->ts_freq.u64;
pj_assert(ts.u64 < sess->ts_freq.u64);
ts.u64 = (ts.u64 << 32) / sess->ts_freq.u64;
}}}
When calculating ntp->hi, this is done hooked on its base (ts.u64 - sess->ts_base.u64). I think this should also be done when calculating the fractions.
{{{
/* Calculate seconds fractions */
ts.u64 = (ts.u64 - sess->ts_base.u64) % sess->ts_freq.u64;
pj_assert(ts.u64 < sess->ts_freq.u64);
ts.u64 = (ts.u64 << 32) / sess->ts_freq.u64;
}}}
Worked fine for me. No more clock skews and noticeable rtt-time failures.""
Kudos Guido Fischer for fixing this two and half year old bug!
" defect closed normal release-1.1 pjmedia trunk fixed