Hi experts, I'm reading pjsip code, here the function pjmedia_rtcp_ntp_time makes me confused. I'm confused why we need implement like this. I mean, according to NTP spec, we can simply call "gettimeofday",and populate second and fraction fields of ntp timestamp with 'gettimeofday's sec and usec>32/1000000 respectively. Is there anything I overlook? I think I am. please give me a clarification. Thanks in advance. /* * Get NTP time. */ PJ_DEF(pj_status_t) pjmedia_rtcp_get_ntp_time(const pjmedia_rtcp_session *sess, pjmedia_rtcp_ntp_rec *ntp) { /* Seconds between 1900-01-01 to 1970-01-01 */ #define JAN_1970 (2208988800UL) pj_timestamp ts; pj_status_t status; status = pj_get_timestamp(&ts); /* Fill up the high 32bit part */ ntp->hi = (pj_uint32_t)((ts.u64 - sess->ts_base.u64) / sess->ts_freq.u64) + sess->tv_base.sec + JAN_1970; /* 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; /* Fill up the low 32bit part */ ntp->lo = ts.u32.lo; } Thanks Kandy