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 <ilnik@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27821}
This commit is contained in:
Sebastian Jansson 2019-04-30 14:29:09 +02:00 committed by Commit Bot
parent bc7f41b231
commit e82266836b
2 changed files with 23 additions and 4 deletions

View File

@ -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<size_t>(config.encoder.layers.spatial);
encoder_config.number_of_streams = num_streams;
encoder_config.simulcast_layers = std::vector<VideoStream>(num_streams);
encoder_config.number_of_streams =
static_cast<size_t>(config.encoder.layers.spatial);
encoder_config.simulcast_layers =
std::vector<VideoStream>(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<bool> 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); });
}

View File

@ -39,6 +39,7 @@ class SendVideoStream {
void Start();
void Stop();
void UpdateConfig(std::function<void(VideoStreamConfig*)> modifier);
void UpdateActiveLayers(std::vector<bool> active_layers);
private:
friend class Scenario;