Skip to content
Snippets Groups Projects
Commit 82edcbbf authored by Guillaume Roguez's avatar Guillaume Roguez
Browse files

video: remove blink fx during conference

During a conference, video display blink on a full black image
at each video restart (due to adaptative bitrate algorithm).
This patch fixes this effect due to an unvoluntary mixer's sink
start/stop.

Issue: #82044
Change-Id: I181051de7230189d0a951f65f02b5673f202ffb5
parent 7f7bc0e7
Branches
Tags
Loading
...@@ -115,12 +115,6 @@ VideoRtpSession::restartSender() ...@@ -115,12 +115,6 @@ VideoRtpSession::restartSender()
std::lock_guard<std::recursive_mutex> lock(mutex_); std::lock_guard<std::recursive_mutex> lock(mutex_);
startSender(); startSender();
if (sender_) {
if (videoLocal_)
videoLocal_->attach(sender_.get());
}
setupVideoPipeline(); setupVideoPipeline();
} }
...@@ -218,12 +212,12 @@ VideoRtpSession::setupVideoPipeline() ...@@ -218,12 +212,12 @@ VideoRtpSession::setupVideoPipeline()
} }
} }
void VideoRtpSession::setupConferenceVideoPipeline(Conference& conference) void
VideoRtpSession::setupConferenceVideoPipeline(Conference& conference)
{ {
RING_DBG("[call:%s] Setup video pipeline on conference %s", callID_.c_str(), RING_DBG("[call:%s] Setup video pipeline on conference %s", callID_.c_str(),
conference.getConfID().c_str()); conference.getConfID().c_str());
videoMixer_ = conference.getVideoMixer(); videoMixer_ = conference.getVideoMixer();
videoMixer_->setDimensions(localVideoParams_.width, localVideoParams_.height);
if (sender_) { if (sender_) {
// Swap sender from local video to conference video mixer // Swap sender from local video to conference video mixer
...@@ -240,7 +234,8 @@ void VideoRtpSession::setupConferenceVideoPipeline(Conference& conference) ...@@ -240,7 +234,8 @@ void VideoRtpSession::setupConferenceVideoPipeline(Conference& conference)
RING_WARN("[call:%s] no receiver", callID_.c_str()); RING_WARN("[call:%s] no receiver", callID_.c_str());
} }
void VideoRtpSession::enterConference(Conference* conference) void
VideoRtpSession::enterConference(Conference* conference)
{ {
std::lock_guard<std::recursive_mutex> lock(mutex_); std::lock_guard<std::recursive_mutex> lock(mutex_);
...@@ -250,9 +245,12 @@ void VideoRtpSession::enterConference(Conference* conference) ...@@ -250,9 +245,12 @@ void VideoRtpSession::enterConference(Conference* conference)
RING_DBG("[call:%s] enterConference (conf: %s)", callID_.c_str(), RING_DBG("[call:%s] enterConference (conf: %s)", callID_.c_str(),
conference->getConfID().c_str()); conference->getConfID().c_str());
if (send_.enabled or receiveThread_) if (send_.enabled or receiveThread_) {
videoMixer_ = conference->getVideoMixer();
videoMixer_->setDimensions(localVideoParams_.width, localVideoParams_.height);
setupConferenceVideoPipeline(*conference_); setupConferenceVideoPipeline(*conference_);
} }
}
void VideoRtpSession::exitConference() void VideoRtpSession::exitConference()
{ {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment