From 7dfb47df997081d431eb41616a205d4a593bb1f7 Mon Sep 17 00:00:00 2001 From: Eloi BAIL <eloi.bail@savoirfairelinux.com> Date: Thu, 8 Oct 2015 12:08:51 -0400 Subject: [PATCH] conference: attach mixer sink if source restarted If video_rtp_session is restarted due to bitrate changement we need to setup again conferencepipeline. Otherwise videomixer sink would be never attached and video never send. Issue: #81547 Change-Id: I6de180afab5a7dd320fe3b31a1d61735106d76d1 --- src/media/video/video_rtp_session.cpp | 25 ++++++++++++++++--------- src/media/video/video_rtp_session.h | 1 + 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/src/media/video/video_rtp_session.cpp b/src/media/video/video_rtp_session.cpp index f19ec1ebc8..c2c7ff20f8 100644 --- a/src/media/video/video_rtp_session.cpp +++ b/src/media/video/video_rtp_session.cpp @@ -120,6 +120,8 @@ VideoRtpSession::restartSender() if (videoLocal_) videoLocal_->attach(sender_.get()); } + + setupVideoPipeline(); } void VideoRtpSession::startReceiver() @@ -170,15 +172,7 @@ void VideoRtpSession::start(std::unique_ptr<IceSocket> rtp_sock, startSender(); startReceiver(); - // Setup video pipeline - if (conference_) - setupConferenceVideoPipeline(*conference_); - else if (sender_) { - if (videoLocal_) - videoLocal_->attach(sender_.get()); - } else { - videoLocal_.reset(); - } + setupVideoPipeline(); } void VideoRtpSession::stop() @@ -211,6 +205,19 @@ void VideoRtpSession::forceKeyFrame() sender_->forceKeyFrame(); } +void +VideoRtpSession::setupVideoPipeline() +{ + if (conference_) + setupConferenceVideoPipeline(*conference_); + else if (sender_) { + if (videoLocal_) + videoLocal_->attach(sender_.get()); + } else { + videoLocal_.reset(); + } +} + void VideoRtpSession::setupConferenceVideoPipeline(Conference& conference) { RING_DBG("[call:%s] Setup video pipeline on conference %s", callID_.c_str(), diff --git a/src/media/video/video_rtp_session.h b/src/media/video/video_rtp_session.h index 45e0b5c384..ca469b828f 100644 --- a/src/media/video/video_rtp_session.h +++ b/src/media/video/video_rtp_session.h @@ -74,6 +74,7 @@ public: private: void setupConferenceVideoPipeline(Conference& conference); + void setupVideoPipeline(); void startSender(); void startReceiver(); -- GitLab