diff --git a/src/media/video/video_rtp_session.cpp b/src/media/video/video_rtp_session.cpp index f19ec1ebc8b85bc1b1c5859b64d95e8932f88310..c2c7ff20f87b7ef615438e05bf4b76514b798b3e 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 45e0b5c384d7bbba816b0cb44453e439b73e663e..ca469b828f203d49ac2bc65f1ceee19f9bd53392 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();