From e6d7c3e32a749a7850148001e3837cd14f1f9367 Mon Sep 17 00:00:00 2001 From: Sebastian Jansson Date: Wed, 11 Jul 2018 15:00:41 +0200 Subject: [PATCH] Using FunctionVideoEncoderFactory in VideoQualityTest. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reduces code duplication. FunctionVideoEncoderFactory is modified to allow providing a function that takes an argument for the format. Bug: webrtc:9510 Change-Id: I67fee84af4968a51326b52db35f3eb0c65848735 Reviewed-on: https://webrtc-review.googlesource.com/88222 Reviewed-by: Erik Språng Commit-Queue: Sebastian Jansson Cr-Commit-Position: refs/heads/master@{#23965} --- test/function_video_encoder_factory.h | 22 +++++++++++++--------- video/video_quality_test.cc | 26 +++++++------------------- video/video_quality_test.h | 21 +++++---------------- 3 files changed, 25 insertions(+), 44 deletions(-) diff --git a/test/function_video_encoder_factory.h b/test/function_video_encoder_factory.h index d06d333762..567397f6c0 100644 --- a/test/function_video_encoder_factory.h +++ b/test/function_video_encoder_factory.h @@ -29,10 +29,11 @@ class FunctionVideoEncoderFactory final : public VideoEncoderFactory { public: explicit FunctionVideoEncoderFactory( std::function()> create) - : create_(std::move(create)) { - codec_info_.is_hardware_accelerated = false; - codec_info_.has_internal_source = false; - } + : create_([create](const SdpVideoFormat&) { return create(); }) {} + explicit FunctionVideoEncoderFactory( + std::function(const SdpVideoFormat&)> + create) + : create_(std::move(create)) {} // Unused by tests. std::vector GetSupportedFormats() const override { @@ -42,17 +43,20 @@ class FunctionVideoEncoderFactory final : public VideoEncoderFactory { CodecInfo QueryVideoEncoder( const SdpVideoFormat& /* format */) const override { - return codec_info_; + CodecInfo codec_info; + codec_info.is_hardware_accelerated = false; + codec_info.has_internal_source = false; + return codec_info; } std::unique_ptr CreateVideoEncoder( - const SdpVideoFormat& /* format */) override { - return create_(); + const SdpVideoFormat& format) override { + return create_(format); } private: - const std::function()> create_; - CodecInfo codec_info_; + const std::function(const SdpVideoFormat&)> + create_; }; } // namespace test diff --git a/video/video_quality_test.cc b/video/video_quality_test.cc index b017609c5b..cbf9dbe3ef 100644 --- a/video/video_quality_test.cc +++ b/video/video_quality_test.cc @@ -67,24 +67,7 @@ class VideoStreamFactory namespace webrtc { -// Not used by these tests. -std::vector -VideoQualityTest::TestVideoEncoderFactory::GetSupportedFormats() const { - RTC_NOTREACHED(); - return {}; -} - -VideoEncoderFactory::CodecInfo -VideoQualityTest::TestVideoEncoderFactory::QueryVideoEncoder( - const SdpVideoFormat& format) const { - CodecInfo codec_info; - codec_info.is_hardware_accelerated = false; - codec_info.has_internal_source = false; - return codec_info; -} - -std::unique_ptr -VideoQualityTest::TestVideoEncoderFactory::CreateVideoEncoder( +std::unique_ptr VideoQualityTest::CreateVideoEncoder( const SdpVideoFormat& format) { if (format.name == "VP8") { return absl::make_unique( @@ -99,7 +82,12 @@ VideoQualityTest::TestVideoEncoderFactory::CreateVideoEncoder( VideoQualityTest::VideoQualityTest( std::unique_ptr fec_controller_factory) - : clock_(Clock::GetRealTimeClock()), receive_logs_(0), send_logs_(0) { + : clock_(Clock::GetRealTimeClock()), + video_encoder_factory_([this](const SdpVideoFormat& format) { + return this->CreateVideoEncoder(format); + }), + receive_logs_(0), + send_logs_(0) { payload_type_map_ = test::CallTest::payload_type_map_; RTC_DCHECK(payload_type_map_.find(kPayloadTypeH264) == payload_type_map_.end()); diff --git a/video/video_quality_test.h b/video/video_quality_test.h index c996bae95d..dbc5b6b9ca 100644 --- a/video/video_quality_test.h +++ b/video/video_quality_test.h @@ -55,18 +55,6 @@ class VideoQualityTest : static std::vector ParseCSV(const std::string& str); protected: - class TestVideoEncoderFactory : public VideoEncoderFactory { - std::vector GetSupportedFormats() const override; - - CodecInfo QueryVideoEncoder(const SdpVideoFormat& format) const override; - - std::unique_ptr CreateVideoEncoder( - const SdpVideoFormat& format) override; - - private: - InternalEncoderFactory internal_encoder_factory_; - }; - std::map payload_type_map_; std::unique_ptr fec_controller_factory_; @@ -84,6 +72,8 @@ class VideoQualityTest : void CreateCapturers(); std::unique_ptr CreateFrameGenerator(size_t video_idx); void SetupThumbnailCapturers(size_t num_thumbnail_streams); + std::unique_ptr CreateVideoEncoder( + const SdpVideoFormat& format); void SetupVideo(Transport* send_transport, Transport* recv_transport); void SetupThumbnails(Transport* send_transport, Transport* recv_transport); void DestroyThumbnailStreams(); @@ -98,8 +88,10 @@ class VideoQualityTest : std::vector> video_capturers_; std::vector> thumbnail_capturers_; - TestVideoEncoderFactory video_encoder_factory_; + Clock* const clock_; + test::FunctionVideoEncoderFactory video_encoder_factory_; + InternalEncoderFactory internal_encoder_factory_; std::vector thumbnail_send_configs_; std::vector thumbnail_encoder_configs_; std::vector thumbnail_send_streams_; @@ -109,9 +101,6 @@ class VideoQualityTest : std::vector video_send_configs_; std::vector video_encoder_configs_; std::vector video_send_streams_; - - Clock* const clock_; - int receive_logs_; int send_logs_;