From bc846854970099dc72ec9644c4b18cd43b7ace5e Mon Sep 17 00:00:00 2001 From: Rasmus Brandt Date: Thu, 24 May 2018 17:37:51 +0200 Subject: [PATCH] Remove VideoCodecTestFixtureImpl dependency on Android specifics. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is needed for downstream users of the impl, as we currently pull in Chromium specifics in the android_codec_factory_helper. Further, the downstream users should explicitly supply their own factories if they do not want to use the internal ones. Bug: None Change-Id: Ia7b01a66aadaba3d5accf44e5ca38e1a319e4e34 Reviewed-on: https://webrtc-review.googlesource.com/78420 Commit-Queue: Rasmus Brandt Reviewed-by: Åsa Persson Cr-Commit-Position: refs/heads/master@{#23390} --- modules/video_coding/BUILD.gn | 3 - .../test/videocodec_test_fixture_impl.cc | 66 ++++--------------- .../test/videocodec_test_fixture_impl.h | 6 +- .../codecs/test/videocodec_test_mediacodec.cc | 19 ++++-- 4 files changed, 28 insertions(+), 66 deletions(-) diff --git a/modules/video_coding/BUILD.gn b/modules/video_coding/BUILD.gn index 998f83fa94..d1909b415f 100644 --- a/modules/video_coding/BUILD.gn +++ b/modules/video_coding/BUILD.gn @@ -700,9 +700,6 @@ if (rtc_include_tests) { # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163). suppressed_configs += [ "//build/config/clang:find_bad_constructs" ] } - if (is_android) { - deps += [ ":android_codec_factory_helper" ] - } } rtc_source_set("video_coding_modules_tests") { diff --git a/modules/video_coding/codecs/test/videocodec_test_fixture_impl.cc b/modules/video_coding/codecs/test/videocodec_test_fixture_impl.cc index 58851195f7..1b1a6c6381 100644 --- a/modules/video_coding/codecs/test/videocodec_test_fixture_impl.cc +++ b/modules/video_coding/codecs/test/videocodec_test_fixture_impl.cc @@ -14,10 +14,6 @@ #include #include -#if defined(WEBRTC_ANDROID) -#include "modules/video_coding/codecs/test/android_codec_factory_helper.h" -#endif - #include "api/video_codecs/sdp_video_format.h" #include "call/video_config.h" #include "common_types.h" // NOLINT(build/include) @@ -367,26 +363,18 @@ class VideoCodecTestFixtureImpl::CpuProcessTime final { int64_t wallclock_time_ = 0; }; -VideoCodecTestFixtureImpl:: - VideoCodecTestFixtureImpl(Config config) - : config_(config) { -#if defined(WEBRTC_ANDROID) - InitializeAndroidObjects(); -#endif -} +VideoCodecTestFixtureImpl::VideoCodecTestFixtureImpl(Config config) + : encoder_factory_(rtc::MakeUnique()), + decoder_factory_(rtc::MakeUnique()), + config_(config) {} -VideoCodecTestFixtureImpl:: - VideoCodecTestFixtureImpl( - Config config, - std::unique_ptr decoder_factory, - std::unique_ptr encoder_factory) - : decoder_factory_(std::move(decoder_factory)), - encoder_factory_(std::move(encoder_factory)), - config_(config) { -#if defined(WEBRTC_ANDROID) - InitializeAndroidObjects(); -#endif -} +VideoCodecTestFixtureImpl::VideoCodecTestFixtureImpl( + Config config, + std::unique_ptr decoder_factory, + std::unique_ptr encoder_factory) + : encoder_factory_(std::move(encoder_factory)), + decoder_factory_(std::move(decoder_factory)), + config_(config) {} VideoCodecTestFixtureImpl:: ~VideoCodecTestFixtureImpl() = default; @@ -556,34 +544,6 @@ void VideoCodecTestFixtureImpl::VerifyVideoStatistic( } } -std::unique_ptr -VideoCodecTestFixtureImpl::CreateDecoderFactory() { - if (config_.hw_decoder) { -#if defined(WEBRTC_ANDROID) - return CreateAndroidDecoderFactory(); -#else - RTC_NOTREACHED() << "Only support HW decoder on Android."; - return nullptr; -#endif - } else { - return rtc::MakeUnique(); - } -} - -std::unique_ptr -VideoCodecTestFixtureImpl::CreateEncoderFactory() { - if (config_.hw_encoder) { -#if defined(WEBRTC_ANDROID) - return CreateAndroidEncoderFactory(); -#else - RTC_NOTREACHED() << "Only support HW encoder on Android."; - return nullptr; -#endif - } else { - return rtc::MakeUnique(); - } -} - void VideoCodecTestFixtureImpl::CreateEncoderAndDecoder() { SdpVideoFormat::Parameters params; if (config_.codec_settings.codecType == kVideoCodecH264) { @@ -600,10 +560,6 @@ void VideoCodecTestFixtureImpl::CreateEncoderAndDecoder() { params = {}; } SdpVideoFormat format(config_.codec_name); - if (!decoder_factory_) - decoder_factory_ = CreateDecoderFactory(); - if (!encoder_factory_) - encoder_factory_ = CreateEncoderFactory(); if (config_.simulcast_adapted_encoder) { EXPECT_EQ("VP8", format.name); encoder_.reset(new SimulcastEncoderAdapter(encoder_factory_.get())); diff --git a/modules/video_coding/codecs/test/videocodec_test_fixture_impl.h b/modules/video_coding/codecs/test/videocodec_test_fixture_impl.h index 324983cf58..5861699e26 100644 --- a/modules/video_coding/codecs/test/videocodec_test_fixture_impl.h +++ b/modules/video_coding/codecs/test/videocodec_test_fixture_impl.h @@ -86,13 +86,11 @@ class VideoCodecTestFixtureImpl : public VideoCodecTestFixture { float input_framerate_fps); void PrintSettings(rtc::test::TaskQueueForTest* task_queue) const; - std::unique_ptr CreateDecoderFactory(); - std::unique_ptr CreateEncoderFactory(); // Codecs. - std::unique_ptr decoder_factory_; - std::unique_ptr encoder_factory_; + const std::unique_ptr encoder_factory_; std::unique_ptr encoder_; + const std::unique_ptr decoder_factory_; VideoProcessor::VideoDecoderList decoders_; // Helper objects. diff --git a/modules/video_coding/codecs/test/videocodec_test_mediacodec.cc b/modules/video_coding/codecs/test/videocodec_test_mediacodec.cc index a0b363725f..1529fb006d 100644 --- a/modules/video_coding/codecs/test/videocodec_test_mediacodec.cc +++ b/modules/video_coding/codecs/test/videocodec_test_mediacodec.cc @@ -15,7 +15,9 @@ #include "api/test/create_videocodec_test_fixture.h" #include "common_types.h" // NOLINT(build/include) #include "media/base/mediaconstants.h" +#include "modules/video_coding/codecs/test/android_codec_factory_helper.h" #include "modules/video_coding/codecs/test/videocodec_test_fixture_impl.h" +#include "rtc_base/ptr_util.h" #include "test/gtest.h" #include "test/testsupport/fileutils.h" @@ -35,13 +37,22 @@ VideoCodecTestFixture::Config CreateConfig() { config.hw_decoder = true; return config; } + +std::unique_ptr CreateTestFixtureWithConfig( + VideoCodecTestFixture::Config config) { + InitializeAndroidObjects(); // Idempotent. + auto encoder_factory = CreateAndroidEncoderFactory(); + auto decoder_factory = CreateAndroidDecoderFactory(); + return CreateVideoCodecTestFixture(config, std::move(decoder_factory), + std::move(encoder_factory)); +} } // namespace TEST(VideoCodecTestMediaCodec, ForemanCif500kbpsVp8) { auto config = CreateConfig(); config.SetCodecSettings(cricket::kVp8CodecName, 1, 1, 1, false, false, false, 352, 288); - auto fixture = CreateVideoCodecTestFixture(config); + auto fixture = CreateTestFixtureWithConfig(config); std::vector rate_profiles = { {500, kForemanFramerateFps, kForemanNumFrames}}; @@ -65,7 +76,7 @@ TEST(VideoCodecTestMediaCodec, ForemanCif500kbpsH264CBP) { config.encoded_frame_checker = frame_checker.get(); config.SetCodecSettings(cricket::kH264CodecName, 1, 1, 1, false, false, false, 352, 288); - auto fixture = CreateVideoCodecTestFixture(config); + auto fixture = CreateTestFixtureWithConfig(config); std::vector rate_profiles = { {500, kForemanFramerateFps, kForemanNumFrames}}; @@ -93,7 +104,7 @@ TEST(VideoCodecTestMediaCodec, DISABLED_ForemanCif500kbpsH264CHP) { config.encoded_frame_checker = frame_checker.get(); config.SetCodecSettings(cricket::kH264CodecName, 1, 1, 1, false, false, false, 352, 288); - auto fixture = CreateVideoCodecTestFixture(config); + auto fixture = CreateTestFixtureWithConfig(config); std::vector rate_profiles = { {500, kForemanFramerateFps, kForemanNumFrames}}; @@ -133,7 +144,7 @@ TEST(VideoCodecTestMediaCodec, ForemanMixedRes100kbpsVp8H264) { config.SetCodecSettings(codec, 1, 1, 1, false, false, false, width, height); - auto fixture = CreateVideoCodecTestFixture(config); + auto fixture = CreateTestFixtureWithConfig(config); fixture->RunTest(rate_profiles, nullptr /* rc_thresholds */, &quality_thresholds, nullptr /* bs_thresholds */, nullptr /* visualization_params */);