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:

committed by
Commit Bot

parent
a564afe149
commit
bc84685497
@ -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()));
|
||||
|
@ -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.
|
||||
|
@ -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 */);
|
||||
|
Reference in New Issue
Block a user