Remove VideoCodecTestFixtureImpl dependency on Android specifics.

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 <brandtr@webrtc.org>
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23390}
This commit is contained in:
Rasmus Brandt
2018-05-24 17:37:51 +02:00
committed by Commit Bot
parent a564afe149
commit bc84685497
4 changed files with 28 additions and 66 deletions

View File

@ -14,10 +14,6 @@
#include <memory>
#include <utility>
#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<InternalEncoderFactory>()),
decoder_factory_(rtc::MakeUnique<InternalDecoderFactory>()),
config_(config) {}
VideoCodecTestFixtureImpl::
VideoCodecTestFixtureImpl(
Config config,
std::unique_ptr<VideoDecoderFactory> decoder_factory,
std::unique_ptr<VideoEncoderFactory> 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<VideoDecoderFactory> decoder_factory,
std::unique_ptr<VideoEncoderFactory> 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<VideoDecoderFactory>
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<InternalDecoderFactory>();
}
}
std::unique_ptr<VideoEncoderFactory>
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<InternalEncoderFactory>();
}
}
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()));

View File

@ -86,13 +86,11 @@ class VideoCodecTestFixtureImpl : public VideoCodecTestFixture {
float input_framerate_fps);
void PrintSettings(rtc::test::TaskQueueForTest* task_queue) const;
std::unique_ptr<VideoDecoderFactory> CreateDecoderFactory();
std::unique_ptr<VideoEncoderFactory> CreateEncoderFactory();
// Codecs.
std::unique_ptr<VideoDecoderFactory> decoder_factory_;
std::unique_ptr<VideoEncoderFactory> encoder_factory_;
const std::unique_ptr<VideoEncoderFactory> encoder_factory_;
std::unique_ptr<VideoEncoder> encoder_;
const std::unique_ptr<VideoDecoderFactory> decoder_factory_;
VideoProcessor::VideoDecoderList decoders_;
// Helper objects.

View File

@ -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<VideoCodecTestFixture> 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<RateProfile> 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<RateProfile> 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<RateProfile> 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 */);