From 2aae2733a70c9dadfe20f04e8a85e4bfd9ef8ef7 Mon Sep 17 00:00:00 2001 From: Rasmus Brandt Date: Tue, 29 May 2018 09:31:15 +0200 Subject: [PATCH] Remove adapter bools from VideoCodecTestFixture::Config. It should be the responsibility of the fixture user to provide the exact codecs that should be tested instead. This reduces the coupling between the test fixture and the codec instantiation. Bug: webrtc:9317 Change-Id: I60d8f5c4b516ba33e2293d574ba17602c39f992b Reviewed-on: https://webrtc-review.googlesource.com/79147 Commit-Queue: Rasmus Brandt Reviewed-by: Sergey Silkin Reviewed-by: Fredrik Solenberg Cr-Commit-Position: refs/heads/master@{#23425} --- api/test/videocodec_test_fixture.h | 7 ---- modules/video_coding/BUILD.gn | 10 +++--- .../test/videocodec_test_fixture_impl.cc | 34 +++---------------- .../codecs/test/videocodec_test_libvpx.cc | 20 +++++++++-- 4 files changed, 27 insertions(+), 44 deletions(-) diff --git a/api/test/videocodec_test_fixture.h b/api/test/videocodec_test_fixture.h index 817ce05a79..ec69e50ae1 100644 --- a/api/test/videocodec_test_fixture.h +++ b/api/test/videocodec_test_fixture.h @@ -125,13 +125,6 @@ class VideoCodecTestFixture { bool hw_encoder = false; bool hw_decoder = false; - // Should the encoder be wrapped in a SimulcastEncoderAdapter? - bool simulcast_adapted_encoder = false; - - // Should the hardware codecs be wrapped in software fallbacks? - bool sw_fallback_encoder = false; - bool sw_fallback_decoder = false; - // Custom checker that will be called for each frame. const EncodedFrameChecker* encoded_frame_checker = nullptr; diff --git a/modules/video_coding/BUILD.gn b/modules/video_coding/BUILD.gn index 548225f7d5..5e5e8c3f09 100644 --- a/modules/video_coding/BUILD.gn +++ b/modules/video_coding/BUILD.gn @@ -660,10 +660,7 @@ if (rtc_include_tests) { deps = [ ":video_codec_interface", ":video_codecs_test_framework", - ":video_coding", ":video_coding_utility", - ":webrtc_multiplex", - ":webrtc_vp8_helpers", ":webrtc_vp9_helpers", "../..:webrtc_common", "../../api:videocodec_test_fixture_api", @@ -673,10 +670,11 @@ if (rtc_include_tests) { "../../media:rtc_audio_video", "../../media:rtc_h264_profile_id", "../../media:rtc_internal_video_codecs", - "../../media:rtc_software_fallback_wrappers", + "../../media:rtc_media_base", "../../rtc_base:checks", - "../../rtc_base:rtc_base", + "../../rtc_base:rtc_base_approved", "../../rtc_base:rtc_base_tests_utils", + "../../rtc_base:rtc_event", "../../rtc_base:rtc_task_queue_for_test", "../../system_wrappers", "../../test:fileutils", @@ -728,8 +726,10 @@ if (rtc_include_tests) { "../../media:rtc_h264_profile_id", "../../media:rtc_internal_video_codecs", "../../media:rtc_media_base", + "../../media:rtc_software_fallback_wrappers", "../../rtc_base:rtc_base", "../../test:fileutils", + "../../test:test_common", "../../test:test_support", "../../test:video_test_common", "../rtp_rtcp:rtp_rtcp_format", 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 575c97e0fc..7a69768826 100644 --- a/modules/video_coding/codecs/test/videocodec_test_fixture_impl.cc +++ b/modules/video_coding/codecs/test/videocodec_test_fixture_impl.cc @@ -18,16 +18,12 @@ #include "call/video_config.h" #include "common_types.h" // NOLINT(build/include) #include "media/base/h264_profile_level_id.h" +#include "media/base/mediaconstants.h" #include "media/engine/internaldecoderfactory.h" #include "media/engine/internalencoderfactory.h" #include "media/engine/simulcast.h" -#include "media/engine/simulcast_encoder_adapter.h" -#include "media/engine/videodecodersoftwarefallbackwrapper.h" -#include "media/engine/videoencodersoftwarefallbackwrapper.h" -#include "modules/video_coding/codecs/vp8/include/vp8_common_types.h" #include "modules/video_coding/codecs/vp9/svc_config.h" #include "modules/video_coding/include/video_codec_interface.h" -#include "modules/video_coding/include/video_coding.h" #include "rtc_base/checks.h" #include "rtc_base/cpu_time.h" #include "rtc_base/event.h" @@ -559,39 +555,17 @@ void VideoCodecTestFixtureImpl::CreateEncoderAndDecoder() { params = {}; } SdpVideoFormat format(config_.codec_name); - if (config_.simulcast_adapted_encoder) { - EXPECT_EQ("VP8", format.name); - encoder_.reset(new SimulcastEncoderAdapter(encoder_factory_.get(), format)); - } else { - encoder_ = encoder_factory_->CreateVideoEncoder(format); - } + + encoder_ = encoder_factory_->CreateVideoEncoder(format); + EXPECT_TRUE(encoder_) << "Encoder not successfully created."; const size_t num_simulcast_or_spatial_layers = std::max( config_.NumberOfSimulcastStreams(), config_.NumberOfSpatialLayers()); - for (size_t i = 0; i < num_simulcast_or_spatial_layers; ++i) { decoders_.push_back(std::unique_ptr( decoder_factory_->CreateVideoDecoder(format))); } - if (config_.sw_fallback_encoder) { - EXPECT_FALSE(config_.simulcast_adapted_encoder) - << "SimulcastEncoderAdapter and VideoEncoderSoftwareFallbackWrapper " - "are not jointly supported."; - encoder_ = rtc::MakeUnique( - InternalEncoderFactory().CreateVideoEncoder(format), - std::move(encoder_)); - } - if (config_.sw_fallback_decoder) { - for (auto& decoder : decoders_) { - decoder = rtc::MakeUnique( - InternalDecoderFactory().CreateVideoDecoder(format), - std::move(decoder)); - } - } - - EXPECT_TRUE(encoder_) << "Encoder not successfully created."; - for (const auto& decoder : decoders_) { EXPECT_TRUE(decoder) << "Decoder not successfully created."; } diff --git a/modules/video_coding/codecs/test/videocodec_test_libvpx.cc b/modules/video_coding/codecs/test/videocodec_test_libvpx.cc index 700b8635bc..be8ef4c923 100644 --- a/modules/video_coding/codecs/test/videocodec_test_libvpx.cc +++ b/modules/video_coding/codecs/test/videocodec_test_libvpx.cc @@ -11,10 +11,15 @@ #include #include "api/test/create_videocodec_test_fixture.h" +#include "api/video_codecs/sdp_video_format.h" #include "media/base/mediaconstants.h" +#include "media/engine/internaldecoderfactory.h" +#include "media/engine/internalencoderfactory.h" +#include "media/engine/simulcast_encoder_adapter.h" #include "modules/video_coding/utility/vp8_header_parser.h" #include "modules/video_coding/utility/vp9_uncompressed_header_parser.h" #include "rtc_base/ptr_util.h" +#include "test/function_video_encoder_factory.h" #include "test/gtest.h" #include "test/testsupport/fileutils.h" @@ -374,12 +379,23 @@ TEST(VideoCodecTestLibvpx, MAYBE_SimulcastVP8) { config.filename = "ConferenceMotion_1280_720_50"; config.filepath = ResourcePath(config.filename, "yuv"); config.num_frames = 100; - config.simulcast_adapted_encoder = true; config.SetCodecSettings(cricket::kVp8CodecName, 3, 1, 3, true, true, false, 1280, 720); const auto frame_checker = rtc::MakeUnique(); config.encoded_frame_checker = frame_checker.get(); - auto fixture = CreateVideoCodecTestFixture(config); + + InternalEncoderFactory internal_encoder_factory; + std::unique_ptr adapted_encoder_factory = + rtc::MakeUnique([&]() { + return rtc::MakeUnique( + &internal_encoder_factory, SdpVideoFormat(cricket::kVp8CodecName)); + }); + std::unique_ptr internal_decoder_factory( + new InternalDecoderFactory()); + + auto fixture = + CreateVideoCodecTestFixture(config, std::move(internal_decoder_factory), + std::move(adapted_encoder_factory)); std::vector rate_profiles = {{1500, 30, config.num_frames}};