mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-03-04 17:51:03 +00:00
FS-10311: [core] RTP timestamp rollover calculation is incorrect
This commit is contained in:
parent
03427ba5ab
commit
7f8478232a
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user