From e94b175c421e1acb57e3bfd5c2668aa89fa59d61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20Spr=C3=A5ng?= Date: Thu, 4 Aug 2022 21:02:02 +0200 Subject: [PATCH] Attach video sink only after VideoSendStream is started. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit By attaching the sink when all is set up, we make it possible for an application to listen for that event - and only then start producing frames. Otherwise frames risk being dropped during the setup phase. Bug: webrtc:14276 Change-Id: I0a906681fc526b0ee88c60a842afb0d68e21de14 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/270660 Auto-Submit: Erik Språng Commit-Queue: Per Kjellander Reviewed-by: Per Kjellander Cr-Commit-Position: refs/heads/main@{#37696} --- media/engine/webrtc_video_engine.cc | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/media/engine/webrtc_video_engine.cc b/media/engine/webrtc_video_engine.cc index a7c6024ec2..4cc18fbd31 100644 --- a/media/engine/webrtc_video_engine.cc +++ b/media/engine/webrtc_video_engine.cc @@ -2855,12 +2855,15 @@ void WebRtcVideoChannel::WebRtcVideoSendStream::RecreateWebRtcStream() { parameters_.encoder_config.encoder_specific_settings = NULL; + // Calls stream_->UpdateActiveSimulcastLayers() to start the VideoSendStream + // if necessary conditions are met. + UpdateSendState(); + + // Attach the source after starting the send stream to prevent frames from + // being injected into a not-yet initializated video stream encoder. if (source_) { stream_->SetSource(source_, GetDegradationPreference()); } - - // Call stream_->Start() if necessary conditions are met. - UpdateSendState(); } WebRtcVideoChannel::WebRtcVideoReceiveStream::WebRtcVideoReceiveStream(