From f06baccf819e91df9c4223eab98c9bc1c40ed602 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=85sa=20Persson?= Date: Fri, 12 Oct 2018 11:07:20 +0200 Subject: [PATCH] Add test that verifies that VideoEncoderConfig max_framerate is reported to source. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Update test::CreateVideoStreams to use the configured framerate if set. Bug: webrtc:9597 Change-Id: I3c49dbf38e6c4935e864c4168be1d7e19a054a2c Reviewed-on: https://webrtc-review.googlesource.com/c/105621 Commit-Queue: Åsa Persson Reviewed-by: Rasmus Brandt Reviewed-by: Sebastian Jansson Cr-Commit-Position: refs/heads/master@{#25195} --- test/encoder_settings.cc | 5 +++++ video/video_send_stream_tests.cc | 33 ++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/test/encoder_settings.cc b/test/encoder_settings.cc index 945559b4ee..cab90df8c1 100644 --- a/test/encoder_settings.cc +++ b/test/encoder_settings.cc @@ -61,6 +61,11 @@ std::vector CreateVideoStreams( ? stream.target_bitrate_bps : 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; + } } else { max_bitrate_bps = std::min( bitrate_left_bps, DefaultVideoStreamFactory::kMaxBitratePerStream[i]); diff --git a/video/video_send_stream_tests.cc b/video/video_send_stream_tests.cc index ffd3132cb8..dba1c578d1 100644 --- a/video/video_send_stream_tests.cc +++ b/video/video_send_stream_tests.cc @@ -3672,6 +3672,39 @@ TEST_P(VideoSendStreamTest, TestRequestSourceRotateVideo(true); } +TEST_P(VideoSendStreamTest, EncoderConfigMaxFramerateReportedToSource) { + static const int kMaxFps = 22; + class FpsObserver : public test::SendTest, + public test::FrameGeneratorCapturer::SinkWantsObserver { + public: + FpsObserver() : SendTest(kDefaultTimeoutMs) {} + + void OnFrameGeneratorCapturerCreated( + test::FrameGeneratorCapturer* frame_generator_capturer) override { + frame_generator_capturer->SetSinkWantsObserver(this); + } + + void OnSinkWantsChanged(rtc::VideoSinkInterface* sink, + const rtc::VideoSinkWants& wants) override { + if (wants.max_framerate_fps == kMaxFps) + observation_complete_.Set(); + } + + void ModifyVideoConfigs( + VideoSendStream::Config* send_config, + std::vector* receive_configs, + VideoEncoderConfig* encoder_config) override { + encoder_config->simulcast_layers[0].max_framerate = kMaxFps; + } + + void PerformTest() override { + EXPECT_TRUE(Wait()) << "Timed out while waiting for fps to be reported."; + } + } test; + + RunBaseTest(&test); +} + // This test verifies that overhead is removed from the bandwidth estimate by // testing that the maximum possible target payload rate is smaller than the // maximum bandwidth estimate by the overhead rate.