From: Chris Rienzo Date: Thu, 16 Apr 2015 20:02:16 +0000 (-0400) Subject: FS-7434 reset jitter buffer when SSRC changes X-Git-Tag: v1.4.19~6^2~52^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=638e93242257ca2c16dc3ab11ded5768a30f7007;p=thirdparty%2Ffreeswitch.git FS-7434 reset jitter buffer when SSRC changes --- diff --git a/src/switch_rtp.c b/src/switch_rtp.c index 50206a91b8..62601ecef4 100644 --- a/src/switch_rtp.c +++ b/src/switch_rtp.c @@ -328,6 +328,7 @@ struct switch_rtp { uint16_t seq; uint32_t ssrc; uint32_t remote_ssrc; + uint32_t last_read_ssrc; int8_t sending_dtmf; uint8_t need_mark; switch_payload_t payload; @@ -5067,10 +5068,14 @@ static switch_status_t read_rtp_packet(switch_rtp_t *rtp_session, switch_size_t if (rtp_session->jb && !rtp_session->pause_jb && jb_valid(rtp_session) && rtp_session->recv_msg.header.version == 2 && *bytes) { + uint32_t read_ssrc = ntohl((uint32_t)rtp_session->recv_msg.header.ssrc); if (rtp_session->recv_msg.header.m && rtp_session->recv_msg.header.pt != rtp_session->recv_te && !rtp_session->flags[SWITCH_RTP_FLAG_VIDEO] && !(rtp_session->rtp_bugs & RTP_BUG_IGNORE_MARK_BIT)) { stfu_n_reset(rtp_session->jb); + } else if (rtp_session->last_read_ssrc && rtp_session->last_read_ssrc != read_ssrc) { + stfu_n_reset(rtp_session->jb); } + rtp_session->last_read_ssrc = read_ssrc; if (!rtp_session->flags[SWITCH_RTP_FLAG_USE_TIMER] && rtp_session->timer.interval) { switch_core_timer_sync(&rtp_session->timer);