diff --git a/src/switch_rtp.c b/src/switch_rtp.c index c3a3be8837..f574003068 100644 --- a/src/switch_rtp.c +++ b/src/switch_rtp.c @@ -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; }