mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-04-15 16:39:14 +00:00
[core] RTP: handle flush for incoming stream with DTX or packet loss.
This commit is contained in:
parent
73569bb1f7
commit
7fc5d9a7c3
@ -390,6 +390,7 @@ struct switch_rtp {
|
|||||||
//uint32_t last_clock_ts;
|
//uint32_t last_clock_ts;
|
||||||
uint32_t last_write_ts;
|
uint32_t last_write_ts;
|
||||||
uint32_t last_read_ts;
|
uint32_t last_read_ts;
|
||||||
|
uint32_t prev_read_ts;
|
||||||
uint32_t last_cng_ts;
|
uint32_t last_cng_ts;
|
||||||
uint32_t last_write_samplecount;
|
uint32_t last_write_samplecount;
|
||||||
uint32_t delay_samples;
|
uint32_t delay_samples;
|
||||||
@ -6413,6 +6414,7 @@ static switch_status_t read_rtp_packet(switch_rtp_t *rtp_session, switch_size_t
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (ts) {
|
if (ts) {
|
||||||
|
rtp_session->prev_read_ts = rtp_session->last_read_ts;
|
||||||
rtp_session->last_read_ts = ts;
|
rtp_session->last_read_ts = ts;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -6488,7 +6490,8 @@ static switch_status_t read_rtp_packet(switch_rtp_t *rtp_session, switch_size_t
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (rtp_session->last_rtp_hdr.m && rtp_session->last_rtp_hdr.pt != rtp_session->recv_te &&
|
if (rtp_session->last_rtp_hdr.m && rtp_session->last_rtp_hdr.pt != rtp_session->recv_te &&
|
||||||
!rtp_session->flags[SWITCH_RTP_FLAG_VIDEO] && !(rtp_session->rtp_bugs & RTP_BUG_IGNORE_MARK_BIT)) {
|
!rtp_session->flags[SWITCH_RTP_FLAG_VIDEO] && !(rtp_session->rtp_bugs & RTP_BUG_IGNORE_MARK_BIT) &&
|
||||||
|
rtp_session->last_read_ts - rtp_session->prev_read_ts < rtp_session->samples_per_interval * 3) {
|
||||||
switch_rtp_set_flag(rtp_session, SWITCH_RTP_FLAG_FLUSH);
|
switch_rtp_set_flag(rtp_session, SWITCH_RTP_FLAG_FLUSH);
|
||||||
} else if (rtp_session->last_jb_read_ssrc && rtp_session->last_jb_read_ssrc != read_ssrc) {
|
} else if (rtp_session->last_jb_read_ssrc && rtp_session->last_jb_read_ssrc != read_ssrc) {
|
||||||
switch_rtp_set_flag(rtp_session, SWITCH_RTP_FLAG_FLUSH);
|
switch_rtp_set_flag(rtp_session, SWITCH_RTP_FLAG_FLUSH);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user