From e82266836b3ef714c8302fa1cbb365127cf695a9 Mon Sep 17 00:00:00 2001 From: Sebastian Jansson Date: Tue, 30 Apr 2019 14:29:09 +0200 Subject: [PATCH] Adds control of active layers in scenario tests. Bug: webrtc:9510 Change-Id: I889633650885d8ceb529c879febee811e4934b47 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/134647 Reviewed-by: Ilya Nikolaevskiy Commit-Queue: Sebastian Jansson Cr-Commit-Position: refs/heads/master@{#27821} --- test/scenario/video_stream.cc | 26 ++++++++++++++++++++++---- test/scenario/video_stream.h | 1 + 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/test/scenario/video_stream.cc b/test/scenario/video_stream.cc index f7d26cebd1..46852d8c99 100644 --- a/test/scenario/video_stream.cc +++ b/test/scenario/video_stream.cc @@ -214,11 +214,12 @@ VideoEncoderConfig CreateVideoEncoderConfig(VideoStreamConfig config) { encoder_config.video_format = SdpVideoFormat(CodecTypeToPayloadString(config.encoder.codec), {}); - size_t num_streams = 1; + encoder_config.number_of_streams = 1; if (config.encoder.codec == VideoStreamConfig::Encoder::Codec::kVideoCodecVP8) - num_streams = static_cast(config.encoder.layers.spatial); - encoder_config.number_of_streams = num_streams; - encoder_config.simulcast_layers = std::vector(num_streams); + encoder_config.number_of_streams = + static_cast(config.encoder.layers.spatial); + encoder_config.simulcast_layers = + std::vector(config.encoder.layers.spatial); encoder_config.min_transmit_bitrate_bps = config.stream.pad_to_rate.bps(); std::string cricket_codec = CodecTypeToCodecName(config.encoder.codec); @@ -446,6 +447,23 @@ void SendVideoStream::UpdateConfig( }); } +void SendVideoStream::UpdateActiveLayers(std::vector active_layers) { + sender_->task_queue_.PostTask([=] { + rtc::CritScope cs(&crit_); + if (config_.encoder.codec == + VideoStreamConfig::Encoder::Codec::kVideoCodecVP8) { + send_stream_->UpdateActiveSimulcastLayers(active_layers); + } else { + VideoEncoderConfig encoder_config = CreateVideoEncoderConfig(config_); + RTC_CHECK_EQ(encoder_config.simulcast_layers.size(), + active_layers.size()); + for (size_t i = 0; i < encoder_config.simulcast_layers.size(); ++i) + encoder_config.simulcast_layers[i].active = active_layers[i]; + send_stream_->ReconfigureVideoEncoder(std::move(encoder_config)); + } + }); +} + void SendVideoStream::SetCaptureFramerate(int framerate) { sender_->SendTask([&] { video_capturer_->ChangeFramerate(framerate); }); } diff --git a/test/scenario/video_stream.h b/test/scenario/video_stream.h index cac5861011..ef98679963 100644 --- a/test/scenario/video_stream.h +++ b/test/scenario/video_stream.h @@ -39,6 +39,7 @@ class SendVideoStream { void Start(); void Stop(); void UpdateConfig(std::function modifier); + void UpdateActiveLayers(std::vector active_layers); private: friend class Scenario;