From a20db61e18b071e25e5a4e4e54adcb12a11f389a Mon Sep 17 00:00:00 2001
From: philippegorley <philippe.gorley@savoirfairelinux.com>
Date: Fri, 16 Aug 2019 16:06:35 -0400
Subject: [PATCH] video_rtp_session: skip packets on sender restart

When using nvenc and the media sender gets restarted, the peer's srtp
decryption breaks and only gets set up correctly again after a pause and
play.

This issue was traced back to the RTP sequence numbers. Skipping a few
numbers before reinitializing the sender works.

Change-Id: Ic93f1368fc7eb01b3c57341f31d3832c9f2f2c1f
---
 src/media/video/video_rtp_session.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/media/video/video_rtp_session.cpp b/src/media/video/video_rtp_session.cpp
index f12bb12f80..c36d9135a1 100644
--- a/src/media/video/video_rtp_session.cpp
+++ b/src/media/video/video_rtp_session.cpp
@@ -116,7 +116,7 @@ void VideoRtpSession::startSender()
         // be sure to not send any packets before saving last RTP seq value
         socketPair_->stopSendOp();
         if (sender_)
-            initSeqVal_ = sender_->getLastSeqValue() + 1;
+            initSeqVal_ = sender_->getLastSeqValue() + 10; // Skip a few sequences to make nvenc happy on a sender restart
         try {
             sender_.reset();
             socketPair_->stopSendOp(false);
-- 
GitLab