提交 7f847823 authored 作者: Anthony Minessale's avatar Anthony Minessale

FS-10311: [core] RTP timestamp rollover calculation is incorrect

上级 03427ba5
......@@ -2022,6 +2022,10 @@ static int check_rtcp_and_ice(switch_rtp_t *rtp_session)
int rate = 0, nack_ttl = 0;
uint32_t cur_nack[MAX_NACK] = { 0 };
if (rtp_session->flags[SWITCH_RTP_FLAG_USE_TIMER]) {
switch_core_timer_sync(&rtp_session->write_timer);
}
if (!rtp_session->flags[SWITCH_RTP_FLAG_UDPTL] &&
rtp_session->flags[SWITCH_RTP_FLAG_AUTO_CNG] &&
rtp_session->send_msg.header.ts &&
......@@ -5079,6 +5083,7 @@ static void do_2833(switch_rtp_t *rtp_session)
if (!rtp_session->last_write_ts) {
if (rtp_session->timer.timer_interface) {
switch_core_timer_sync(&rtp_session->write_timer);
rtp_session->last_write_ts = rtp_session->write_timer.samplecount;
} else {
rtp_session->last_write_ts = rtp_session->samples_per_interval;
......@@ -5129,6 +5134,7 @@ static void do_2833(switch_rtp_t *rtp_session)
rtp_session->need_mark = 1;
if (rtp_session->flags[SWITCH_RTP_FLAG_USE_TIMER]) {
switch_core_timer_sync(&rtp_session->write_timer);
rtp_session->last_write_samplecount = rtp_session->write_timer.samplecount;
}
......@@ -5146,6 +5152,7 @@ static void do_2833(switch_rtp_t *rtp_session)
void *pop;
if (rtp_session->flags[SWITCH_RTP_FLAG_USE_TIMER]) {
switch_core_timer_sync(&rtp_session->write_timer);
if (rtp_session->write_timer.samplecount < rtp_session->next_write_samplecount) {
return;
}
......@@ -5191,8 +5198,6 @@ static void do_2833(switch_rtp_t *rtp_session)
return;
}
memset(rtp_session->dtmf_data.out_digit_packet, 0, 4);
rtp_session->dtmf_data.out_digit_sofar = samples;
rtp_session->dtmf_data.out_digit_sub_sofar = samples;
......@@ -7740,6 +7745,10 @@ static int rtp_common_write(switch_rtp_t *rtp_session,
}
WRITE_INC(rtp_session);
if (rtp_session->flags[SWITCH_RTP_FLAG_USE_TIMER]) {
switch_core_timer_sync(&rtp_session->write_timer);
}
if (send_msg) {
bytes = datalen;
......@@ -7791,6 +7800,10 @@ static int rtp_common_write(switch_rtp_t *rtp_session,
m++;
}
if (rtp_session->flags[SWITCH_RTP_FLAG_USE_TIMER]) {
switch_core_timer_sync(&rtp_session->write_timer);
}
if (rtp_session->flags[SWITCH_RTP_FLAG_USE_TIMER] &&
(rtp_session->write_timer.samplecount - rtp_session->last_write_samplecount) > rtp_session->samples_per_interval * 10) {
m++;
......@@ -8228,6 +8241,7 @@ static int rtp_common_write(switch_rtp_t *rtp_session,
}
if (rtp_session->flags[SWITCH_RTP_FLAG_USE_TIMER]) {
switch_core_timer_sync(&rtp_session->write_timer);
rtp_session->last_write_samplecount = rtp_session->write_timer.samplecount;
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论