diff --git a/test/scenario/scenario_config.h b/test/scenario/scenario_config.h index a4d55ab64f..02cd21ece6 100644 --- a/test/scenario/scenario_config.h +++ b/test/scenario/scenario_config.h @@ -75,6 +75,10 @@ struct PacketStreamConfig { struct VideoStreamConfig { bool autostart = true; struct Source { + enum class ContentType { + kVideo, + kScreen, + } content_type = ContentType::kVideo; enum Capture { kGenerator, kVideoFile, @@ -118,6 +122,7 @@ struct VideoStreamConfig { ~Stream(); bool packet_feedback = true; bool use_rtx = true; + DataRate pad_to_rate = DataRate::Zero(); TimeDelta nack_history_time = TimeDelta::ms(1000); bool use_flexfec = false; bool use_ulpfec = false; diff --git a/test/scenario/video_stream.cc b/test/scenario/video_stream.cc index 4f0078a9da..77dff147c6 100644 --- a/test/scenario/video_stream.cc +++ b/test/scenario/video_stream.cc @@ -132,11 +132,20 @@ VideoEncoderConfig CreateVideoEncoderConfig(VideoStreamConfig config) { size_t num_streams = config.encoder.num_simulcast_streams; VideoEncoderConfig encoder_config; encoder_config.codec_type = config.encoder.codec; - encoder_config.content_type = VideoEncoderConfig::ContentType::kRealtimeVideo; + switch (config.source.content_type) { + case VideoStreamConfig::Source::ContentType::kVideo: + encoder_config.content_type = + VideoEncoderConfig::ContentType::kRealtimeVideo; + break; + case VideoStreamConfig::Source::ContentType::kScreen: + encoder_config.content_type = VideoEncoderConfig::ContentType::kScreen; + break; + } encoder_config.video_format = SdpVideoFormat(CodecTypeToPayloadString(config.encoder.codec), {}); encoder_config.number_of_streams = num_streams; encoder_config.simulcast_layers = std::vector(num_streams); + encoder_config.min_transmit_bitrate_bps = config.stream.pad_to_rate.bps(); std::string cricket_codec = CodecTypeToCodecName(config.encoder.codec); if (!cricket_codec.empty()) {