From d34597cf3d721aa699b2f14e5d54d110674bdb44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=85sa=20Persson?= Date: Mon, 22 Oct 2018 17:34:02 +0200 Subject: [PATCH] Update test::CreateVideoStreams to use num_temporal_layers. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit MultiCodecReceiveTest/VideoSendStreamTest: Configure num_temporal_layers via VideoEncoderConfig (and remove implementations of VideoStreamFactoryInterface used to override the default num_temporal_layers configuration). Bug: none Change-Id: I9855245477fe3c6fe48d1a755d401d6a35a17c70 Reviewed-on: https://webrtc-review.googlesource.com/c/107301 Commit-Queue: Åsa Persson Reviewed-by: Sebastian Jansson Cr-Commit-Position: refs/heads/master@{#25302} --- test/encoder_settings.cc | 5 +- .../multi_codec_receive_tests.cc | 29 +------ video/video_send_stream_tests.cc | 82 +++---------------- 3 files changed, 17 insertions(+), 99 deletions(-) diff --git a/test/encoder_settings.cc b/test/encoder_settings.cc index cab90df8c1..bfbd2bdec4 100644 --- a/test/encoder_settings.cc +++ b/test/encoder_settings.cc @@ -62,10 +62,13 @@ std::vector CreateVideoStreams( : DefaultVideoStreamFactory::kMaxBitratePerStream[i]; target_bitrate_bps = std::min(max_bitrate_bps, target_bitrate_bps); - // Used configured framerate if set. if (stream.max_framerate > 0) { stream_settings[i].max_framerate = stream.max_framerate; } + if (stream.num_temporal_layers) { + RTC_DCHECK_GE(*stream.num_temporal_layers, 1); + stream_settings[i].num_temporal_layers = stream.num_temporal_layers; + } } else { max_bitrate_bps = std::min( bitrate_left_bps, DefaultVideoStreamFactory::kMaxBitratePerStream[i]); diff --git a/video/end_to_end_tests/multi_codec_receive_tests.cc b/video/end_to_end_tests/multi_codec_receive_tests.cc index dbde472561..338e7a1bf2 100644 --- a/video/end_to_end_tests/multi_codec_receive_tests.cc +++ b/video/end_to_end_tests/multi_codec_receive_tests.cc @@ -51,29 +51,6 @@ int RemoveOlderOrEqual(uint32_t timestamp, std::vector* timestamps) { return num_removed; } -class VideoStreamFactoryTest - : public VideoEncoderConfig::VideoStreamFactoryInterface { - public: - explicit VideoStreamFactoryTest(size_t num_temporal_layers) - : num_temporal_layers_(num_temporal_layers) {} - - private: - std::vector CreateEncoderStreams( - int width, - int height, - const VideoEncoderConfig& encoder_config) override { - std::vector streams = - test::CreateVideoStreams(width, height, encoder_config); - - for (size_t i = 0; i < encoder_config.number_of_streams; ++i) - streams[i].num_temporal_layers = num_temporal_layers_; - - return streams; - } - - const size_t num_temporal_layers_; -}; - class FrameObserver : public test::RtpRtcpObserver, public rtc::VideoSinkInterface { public: @@ -217,9 +194,9 @@ void MultiCodecReceiveTest::ConfigureEncoder(const CodecConfig& config) { PayloadNameToPayloadType(config.payload_name); GetVideoEncoderConfig()->codec_type = PayloadStringToCodecType(config.payload_name); - GetVideoEncoderConfig()->video_stream_factory = - new rtc::RefCountedObject( - config.num_temporal_layers); + EXPECT_EQ(1u, GetVideoEncoderConfig()->simulcast_layers.size()); + GetVideoEncoderConfig()->simulcast_layers[0].num_temporal_layers = + config.num_temporal_layers; } void MultiCodecReceiveTest::RunTestWithCodecs( diff --git a/video/video_send_stream_tests.cc b/video/video_send_stream_tests.cc index dba1c578d1..4ec25af837 100644 --- a/video/video_send_stream_tests.cc +++ b/video/video_send_stream_tests.cc @@ -1148,31 +1148,8 @@ void VideoSendStreamTest::TestPacketFragmentationSize(VideoFormat format, EXPECT_FALSE(send_config->rtp.extensions.empty()); // Setup screen content disables frame dropping which makes this easier. - class VideoStreamFactory - : public VideoEncoderConfig::VideoStreamFactoryInterface { - public: - explicit VideoStreamFactory(size_t num_temporal_layers) - : num_temporal_layers_(num_temporal_layers) { - EXPECT_GT(num_temporal_layers, 0u); - } - - private: - std::vector CreateEncoderStreams( - int width, - int height, - const VideoEncoderConfig& encoder_config) override { - std::vector streams = - test::CreateVideoStreams(width, height, encoder_config); - for (VideoStream& stream : streams) { - stream.num_temporal_layers = num_temporal_layers_; - } - return streams; - } - const size_t num_temporal_layers_; - }; - - encoder_config->video_stream_factory = - new rtc::RefCountedObject(2); + EXPECT_EQ(1u, encoder_config->simulcast_layers.size()); + encoder_config->simulcast_layers[0].num_temporal_layers = 2; encoder_config->content_type = VideoEncoderConfig::ContentType::kScreen; } @@ -2547,26 +2524,6 @@ class VideoCodecConfigObserver : public test::SendTest, } private: - class VideoStreamFactory - : public VideoEncoderConfig::VideoStreamFactoryInterface { - public: - VideoStreamFactory() {} - - private: - std::vector CreateEncoderStreams( - int width, - int height, - const VideoEncoderConfig& encoder_config) override { - std::vector streams = - test::CreateVideoStreams(width, height, encoder_config); - for (size_t i = 0; i < streams.size(); ++i) { - streams[i].num_temporal_layers = - kVideoCodecConfigObserverNumberOfTemporalLayers; - } - return streams; - } - }; - void ModifyVideoConfigs( VideoSendStream::Config* send_config, std::vector* receive_configs, @@ -2576,8 +2533,9 @@ class VideoCodecConfigObserver : public test::SendTest, encoder_config->codec_type = video_codec_type_; encoder_config->encoder_specific_settings = GetEncoderSpecificSettings(); - encoder_config->video_stream_factory = - new rtc::RefCountedObject(); + EXPECT_EQ(1u, encoder_config->simulcast_layers.size()); + encoder_config->simulcast_layers[0].num_temporal_layers = + kVideoCodecConfigObserverNumberOfTemporalLayers; encoder_config_ = encoder_config->Copy(); } @@ -2803,8 +2761,6 @@ TEST_P(VideoSendStreamTest, TranslatesTwoLayerScreencastToTargetBitrate) { const VideoEncoderConfig& encoder_config) override { std::vector streams = test::CreateVideoStreams(width, height, encoder_config); - EXPECT_FALSE(streams[0].num_temporal_layers.has_value()); - streams[0].num_temporal_layers = 2; RTC_CHECK_GT(streams[0].max_bitrate_bps, kScreencastMaxTargetBitrateDeltaKbps); streams[0].target_bitrate_bps = @@ -2842,6 +2798,8 @@ TEST_P(VideoSendStreamTest, TranslatesTwoLayerScreencastToTargetBitrate) { EXPECT_EQ(1u, encoder_config->number_of_streams); encoder_config->video_stream_factory = new rtc::RefCountedObject(); + EXPECT_EQ(1u, encoder_config->simulcast_layers.size()); + encoder_config->simulcast_layers[0].num_temporal_layers = 2; encoder_config->content_type = VideoEncoderConfig::ContentType::kScreen; } @@ -3146,26 +3104,6 @@ class Vp9HeaderObserver : public test::SendTest { private: const int kVp9PayloadType = test::CallTest::kVideoSendPayloadType; - class VideoStreamFactory - : public VideoEncoderConfig::VideoStreamFactoryInterface { - public: - explicit VideoStreamFactory(size_t number_of_temporal_layers) - : number_of_temporal_layers_(number_of_temporal_layers) {} - - private: - std::vector CreateEncoderStreams( - int width, - int height, - const VideoEncoderConfig& encoder_config) override { - std::vector streams = - test::CreateVideoStreams(width, height, encoder_config); - streams.back().num_temporal_layers = number_of_temporal_layers_; - return streams; - } - - const size_t number_of_temporal_layers_; - }; - void ModifyVideoConfigs( VideoSendStream::Config* send_config, std::vector* receive_configs, @@ -3177,9 +3115,9 @@ class Vp9HeaderObserver : public test::SendTest { encoder_config->encoder_specific_settings = new rtc::RefCountedObject< VideoEncoderConfig::Vp9EncoderSpecificSettings>(vp9_settings_); EXPECT_EQ(1u, encoder_config->number_of_streams); - encoder_config->video_stream_factory = - new rtc::RefCountedObject( - vp9_settings_.numberOfTemporalLayers); + EXPECT_EQ(1u, encoder_config->simulcast_layers.size()); + encoder_config->simulcast_layers[0].num_temporal_layers = + vp9_settings_.numberOfTemporalLayers; encoder_config_ = encoder_config->Copy(); }