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;