diff --git a/src/mod/applications/mod_conference/mod_conference.c b/src/mod/applications/mod_conference/mod_conference.c index 37ff2bd684..9735f609fb 100644 --- a/src/mod/applications/mod_conference/mod_conference.c +++ b/src/mod/applications/mod_conference/mod_conference.c @@ -1820,6 +1820,7 @@ static void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread if (conference->canvas->send_keyframe) { need_keyframe = SWITCH_TRUE; + need_refresh = SWITCH_TRUE; conference->canvas->send_keyframe = 0; } diff --git a/src/switch_rtp.c b/src/switch_rtp.c index 35fb04e21a..90e1c3c348 100644 --- a/src/switch_rtp.c +++ b/src/switch_rtp.c @@ -5087,6 +5087,14 @@ static switch_status_t read_rtp_packet(switch_rtp_t *rtp_session, switch_size_t if (!(*flags & SFF_PLC)) { stat = srtp_unprotect(rtp_session->recv_ctx[rtp_session->srtp_idx_rtp], &rtp_session->recv_msg.header, &sbytes); + if (rtp_session->flags[SWITCH_RTP_FLAG_NACK] && stat == err_status_replay_fail) { + /* false alarm nack */ + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(rtp_session->session), SWITCH_LOG_DEBUG, "REPLAY ERR, FALSE NACK"); + stat = 0; + sbytes = 0; + *bytes = 0; + goto more; + } } if (stat && rtp_session->recv_msg.header.pt != rtp_session->recv_te && rtp_session->recv_msg.header.pt != rtp_session->cng_pt) {