|
@@ -81,13 +81,15 @@ static void get_base_time(void)
|
|
|
st.wDay=1;
|
|
|
SystemTimeToFileTime(&st, &ft);
|
|
|
|
|
|
- toolkit_getResource()->base_time.LowPart = ft.dwLowDateTime;
|
|
|
- toolkit_getResource()->base_time.HighPart = ft.dwHighDateTime;
|
|
|
+ /*for linux compatibility*/
|
|
|
+ toolkit_getResource()->base_time.u.LowPart = ft.dwLowDateTime;
|
|
|
+ toolkit_getResource()->base_time.u.HighPart = ft.dwHighDateTime;
|
|
|
toolkit_getResource()->base_time.QuadPart /= SECS_TO_FT_MULT;
|
|
|
}
|
|
|
|
|
|
-static void gettimeofday(struct timeval *tv)
|
|
|
+static void conflict_gettimeofday(struct timeval *tv)
|
|
|
{
|
|
|
+#ifdef _WIN32
|
|
|
SYSTEMTIME st;
|
|
|
FILETIME ft;
|
|
|
LARGE_INTEGER li;
|
|
@@ -98,13 +100,16 @@ static void gettimeofday(struct timeval *tv)
|
|
|
if (toolkit_getResource()->base_time.QuadPart == 0)
|
|
|
get_base_time();
|
|
|
|
|
|
- li.LowPart = ft.dwLowDateTime;
|
|
|
- li.HighPart = ft.dwHighDateTime;
|
|
|
+ li.u.LowPart = ft.dwLowDateTime;
|
|
|
+ li.u.HighPart = ft.dwHighDateTime;
|
|
|
li.QuadPart /= SECS_TO_FT_MULT;
|
|
|
li.QuadPart -= toolkit_getResource()->base_time.QuadPart;
|
|
|
|
|
|
- tv->tv_sec = li.LowPart;
|
|
|
+ tv->tv_sec = li.u.LowPart;
|
|
|
tv->tv_usec = st.wMilliseconds * 1000;
|
|
|
+#else
|
|
|
+ gettimeofday(tv, NULL);
|
|
|
+#endif
|
|
|
}
|
|
|
|
|
|
static char *copymsg(char *msg, int len)
|
|
@@ -160,7 +165,7 @@ static rtcp_fb_tmmbr_fci_t * rtcp_rtpfb_tmmbr_get_fci(const char *msg) {
|
|
|
return (rtcp_fb_tmmbr_fci_t *)(msg + size - sizeof(rtcp_fb_tmmbr_fci_t));
|
|
|
}
|
|
|
|
|
|
-static unsigned __int64 rtcp_rtpfb_tmmbr_get_max_bitrate(const char *msg) {
|
|
|
+static u__int64_t rtcp_rtpfb_tmmbr_get_max_bitrate(const char *msg) {
|
|
|
rtcp_fb_tmmbr_fci_t *fci = rtcp_rtpfb_tmmbr_get_fci(msg);
|
|
|
return rtcp_fb_tmmbr_fci_get_mxtbr_mantissa(fci) * (1 << rtcp_fb_tmmbr_fci_get_mxtbr_exp(fci));
|
|
|
}
|
|
@@ -245,23 +250,23 @@ TOOLKIT_API int rtp_state_set_rtcp_sdes_string(rtp_state *rs,
|
|
|
return rs->sdes_str[type] ? 0 : -1;
|
|
|
}
|
|
|
|
|
|
-static unsigned __int64 rtp_timeval_to_ntp(const struct timeval *tv){
|
|
|
- unsigned __int64 msw;
|
|
|
- unsigned __int64 lsw;
|
|
|
+static u__int64_t rtp_timeval_to_ntp(const struct timeval *tv){
|
|
|
+ u__int64_t msw;
|
|
|
+ u__int64_t lsw;
|
|
|
msw=tv->tv_sec + 0x83AA7E80; /* 0x83AA7E80 is the number of seconds from 1900 to 1970 */
|
|
|
- lsw=(unsigned int)((double)tv->tv_usec*(double)(((unsigned __int64)1)<<32)*1.0e-6);
|
|
|
+ lsw=(unsigned int)((double)tv->tv_usec*(double)(((u__int64_t)1)<<32)*1.0e-6);
|
|
|
return msw<<32 | lsw;
|
|
|
}
|
|
|
|
|
|
TOOLKIT_API int rtp_state_fill_rtcp_sender_info(rtp_state *rs, rtcp_sender_info_t *info)
|
|
|
{
|
|
|
struct timeval tv;
|
|
|
- unsigned __int64 ntp;
|
|
|
+ u__int64_t ntp;
|
|
|
|
|
|
if (!rs)
|
|
|
return -1;
|
|
|
info->ssrc = rs->ssrc; /* sender's own ssrc */
|
|
|
- gettimeofday(&tv);
|
|
|
+ conflict_gettimeofday(&tv);
|
|
|
ntp=rtp_timeval_to_ntp(&tv);
|
|
|
info->ntp_sec = htonl(ntp >>32);//(unsigned int)htonl(tv.tv_sec + JAN_1970);
|
|
|
info->ntp_frac = htonl(ntp & 0xFFFFFFFF);//(unsigned int)htonl((unsigned long)(tv.tv_usec*4294.967296));
|
|
@@ -297,7 +302,7 @@ TOOLKIT_API int rtp_state_fill_rtcp_reception_report(rtp_state *rs, rtcp_rr_t *r
|
|
|
if (rs->s.lsr_tm.tv_sec != 0) {
|
|
|
struct timeval now;
|
|
|
double delay;
|
|
|
- gettimeofday(&now);
|
|
|
+ conflict_gettimeofday(&now);
|
|
|
delay= (now.tv_sec-rs->s.lsr_tm.tv_sec)+ ((now.tv_usec-rs->s.lsr_tm.tv_usec)*1e-6);
|
|
|
delay= (delay*65536);
|
|
|
delay_since_lsr=(unsigned int) delay;
|
|
@@ -598,7 +603,7 @@ TOOLKIT_API int rtp_state_rtcp_make_h261_nack(rtp_state *rs, char *buf, size_t b
|
|
|
}
|
|
|
|
|
|
|
|
|
-TOOLKIT_API int rtp_state_rtcp_make_rtcp_fb_tmmbr(rtp_state *rs, char *buf, size_t buflen, unsigned __int64 mxtbr, unsigned short measured_overhead) {
|
|
|
+TOOLKIT_API int rtp_state_rtcp_make_rtcp_fb_tmmbr(rtp_state *rs, char *buf, size_t buflen, u__int64_t mxtbr, unsigned short measured_overhead) {
|
|
|
rtcp_common_t *ch;
|
|
|
rtcp_fb_header_t *fbh;
|
|
|
rtcp_fb_tmmbr_fci_t *fci;
|
|
@@ -673,7 +678,7 @@ TOOLKIT_API int rtp_state_rtcp_make_rtcp_fb_tmmbn(rtp_state *rs, char *buf, size
|
|
|
}
|
|
|
|
|
|
|
|
|
-int rtp_state_get_tmmbr_wait_send_maxbitrate(rtp_state *rs, unsigned __int64 *mxtbr){
|
|
|
+int rtp_state_get_tmmbr_wait_send_maxbitrate(rtp_state *rs, u__int64_t *mxtbr){
|
|
|
if (rs->tmmbr_info.sent) {
|
|
|
*mxtbr = rtcp_rtpfb_tmmbr_get_max_bitrate(rs->tmmbr_info.sent);
|
|
|
return 0;
|
|
@@ -722,7 +727,7 @@ static void compute_rtt_from_report_block(rtp_state *rs, const struct timeval *n
|
|
|
unsigned int last_sr_time;
|
|
|
unsigned int sr_delay;
|
|
|
|
|
|
- unsigned __int64 curntp;
|
|
|
+ u__int64_t curntp;
|
|
|
unsigned int approx_ntp;
|
|
|
|
|
|
last_sr_time = ntohl(rr->lsr);
|
|
@@ -763,12 +768,12 @@ TOOLKIT_API int rtp_state_on_recv_rtcp(rtp_state *rs, const void *buf, int len)
|
|
|
rtcp_sender_info_t *si;
|
|
|
si = (rtcp_sender_info_t *)((const char*)buf + n);
|
|
|
rs->s.lsr = ( ntohl( si->ntp_sec ) << 16 ) | ( ntohl( si->ntp_frac ) >> 16 );
|
|
|
- gettimeofday(&rs->s.lsr_tm);
|
|
|
+ conflict_gettimeofday(&rs->s.lsr_tm);
|
|
|
}
|
|
|
if ((common->pt == RTCP_SR || common->pt == RTCP_RR) && common->count) {
|
|
|
rtcp_rr_t *rr;
|
|
|
struct timeval now;
|
|
|
- gettimeofday(&now);
|
|
|
+ conflict_gettimeofday(&now);
|
|
|
|
|
|
if (common->pt == RTCP_SR)
|
|
|
rr = rtcp_SR_get_report_block((const char*)buf);
|