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

This commit is contained in:
Anthony Minessale 2017-05-15 18:00:40 -05:00
parent 03427ba5ab
commit 7f8478232a

View File

@ -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;
}