Move VisualizationParams to VideoCodecTestFixture::Config.

Bug: None
Change-Id: I0a725535c840dda2704dfff33f5e5d3bef3fc0a7
Reviewed-on: https://webrtc-review.googlesource.com/78882
Commit-Queue: Rasmus Brandt <brandtr@webrtc.org>
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Reviewed-by: Fredrik Solenberg <solenberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23422}
This commit is contained in:
Rasmus Brandt
2018-05-25 11:58:44 +02:00
committed by Commit Bot
parent 5e8a205021
commit 7c1ccfa881
8 changed files with 60 additions and 90 deletions

View File

@ -384,17 +384,16 @@ void VideoCodecTestFixtureImpl::RunTest(
const std::vector<RateProfile>& rate_profiles,
const std::vector<RateControlThresholds>* rc_thresholds,
const std::vector<QualityThresholds>* quality_thresholds,
const BitstreamThresholds* bs_thresholds,
const VisualizationParams* visualization_params) {
const BitstreamThresholds* bs_thresholds) {
RTC_DCHECK(!rate_profiles.empty());
// To emulate operation on a production VideoStreamEncoder, we call the
// codecs on a task queue.
rtc::test::TaskQueueForTest task_queue("VidProc TQ");
SetUpAndInitObjects(
&task_queue, static_cast<const int>(rate_profiles[0].target_kbps),
static_cast<const int>(rate_profiles[0].input_fps), visualization_params);
SetUpAndInitObjects(&task_queue,
static_cast<const int>(rate_profiles[0].target_kbps),
static_cast<const int>(rate_profiles[0].input_fps));
PrintSettings(&task_queue);
ProcessAllFrames(&task_queue, rate_profiles);
ReleaseAndCloseObjects(&task_queue);
@ -610,8 +609,7 @@ VideoCodecTestStats& VideoCodecTestFixtureImpl::GetStats() {
void VideoCodecTestFixtureImpl::SetUpAndInitObjects(
rtc::test::TaskQueueForTest* task_queue,
int initial_bitrate_kbps,
int initial_framerate_fps,
const VisualizationParams* visualization_params) {
int initial_framerate_fps) {
config_.codec_settings.minBitrate = 0;
config_.codec_settings.startBitrate = initial_bitrate_kbps;
config_.codec_settings.maxFramerate = initial_framerate_fps;
@ -622,34 +620,31 @@ void VideoCodecTestFixtureImpl::SetUpAndInitObjects(
config_.codec_settings.height));
EXPECT_TRUE(source_frame_reader_->Init());
RTC_DCHECK(encoded_frame_writers_.empty());
RTC_DCHECK(decoded_frame_writers_.empty());
const size_t num_simulcast_or_spatial_layers = std::max(
config_.NumberOfSimulcastStreams(), config_.NumberOfSpatialLayers());
for (size_t simulcast_svc_idx = 0;
simulcast_svc_idx < num_simulcast_or_spatial_layers;
++simulcast_svc_idx) {
const std::string output_filename_base = OutputPath() +
FilenameWithParams(config_) + "_" +
std::to_string(simulcast_svc_idx);
if (visualization_params) {
RTC_DCHECK(encoded_frame_writers_.empty());
RTC_DCHECK(decoded_frame_writers_.empty());
for (size_t simulcast_svc_idx = 0;
simulcast_svc_idx < num_simulcast_or_spatial_layers;
++simulcast_svc_idx) {
const std::string output_filename_base =
OutputPath() + FilenameWithParams(config_) + "_" +
std::to_string(simulcast_svc_idx);
if (config_.visualization_params.save_encoded_ivf) {
rtc::File post_encode_file =
rtc::File::Create(output_filename_base + ".ivf");
encoded_frame_writers_.push_back(
IvfFileWriter::Wrap(std::move(post_encode_file), 0));
}
if (visualization_params->save_encoded_ivf) {
rtc::File post_encode_file =
rtc::File::Create(output_filename_base + ".ivf");
encoded_frame_writers_.push_back(
IvfFileWriter::Wrap(std::move(post_encode_file), 0));
}
if (visualization_params->save_decoded_y4m) {
FrameWriter* decoded_frame_writer = new Y4mFrameWriterImpl(
output_filename_base + ".y4m", config_.codec_settings.width,
config_.codec_settings.height, initial_framerate_fps);
EXPECT_TRUE(decoded_frame_writer->Init());
decoded_frame_writers_.push_back(
std::unique_ptr<FrameWriter>(decoded_frame_writer));
}
if (config_.visualization_params.save_decoded_y4m) {
FrameWriter* decoded_frame_writer = new Y4mFrameWriterImpl(
output_filename_base + ".y4m", config_.codec_settings.width,
config_.codec_settings.height, initial_framerate_fps);
EXPECT_TRUE(decoded_frame_writer->Init());
decoded_frame_writers_.push_back(
std::unique_ptr<FrameWriter>(decoded_frame_writer));
}
}

View File

@ -53,8 +53,7 @@ class VideoCodecTestFixtureImpl : public VideoCodecTestFixture {
void RunTest(const std::vector<RateProfile>& rate_profiles,
const std::vector<RateControlThresholds>* rc_thresholds,
const std::vector<QualityThresholds>* quality_thresholds,
const BitstreamThresholds* bs_thresholds,
const VisualizationParams* visualization_params) override;
const BitstreamThresholds* bs_thresholds) override;
VideoCodecTestStats& GetStats() override;
@ -65,8 +64,7 @@ class VideoCodecTestFixtureImpl : public VideoCodecTestFixture {
void DestroyEncoderAndDecoder();
void SetUpAndInitObjects(rtc::test::TaskQueueForTest* task_queue,
int initial_bitrate_kbps,
int initial_framerate_fps,
const VisualizationParams* visualization_params);
int initial_framerate_fps);
void ReleaseAndCloseObjects(rtc::test::TaskQueueForTest* task_queue);
void ProcessAllFrames(rtc::TaskQueue* task_queue,

View File

@ -104,8 +104,7 @@ TEST(VideoCodecTestLibvpx, HighBitrateVP9) {
std::vector<QualityThresholds> quality_thresholds = {{37, 36, 0.94, 0.92}};
fixture->RunTest(rate_profiles, &rc_thresholds, &quality_thresholds, nullptr,
nullptr);
fixture->RunTest(rate_profiles, &rc_thresholds, &quality_thresholds, nullptr);
}
TEST(VideoCodecTestLibvpx, ChangeBitrateVP9) {
@ -129,8 +128,7 @@ TEST(VideoCodecTestLibvpx, ChangeBitrateVP9) {
std::vector<QualityThresholds> quality_thresholds = {
{34, 33, 0.90, 0.88}, {38, 35, 0.95, 0.91}, {35, 34, 0.93, 0.90}};
fixture->RunTest(rate_profiles, &rc_thresholds, &quality_thresholds, nullptr,
nullptr);
fixture->RunTest(rate_profiles, &rc_thresholds, &quality_thresholds, nullptr);
}
TEST(VideoCodecTestLibvpx, ChangeFramerateVP9) {
@ -156,8 +154,7 @@ TEST(VideoCodecTestLibvpx, ChangeFramerateVP9) {
std::vector<QualityThresholds> quality_thresholds = {
{33, 32, 0.89, 0.87}, {33.5, 32, 0.90, 0.86}, {33.5, 31.5, 0.90, 0.85}};
fixture->RunTest(rate_profiles, &rc_thresholds, &quality_thresholds, nullptr,
nullptr);
fixture->RunTest(rate_profiles, &rc_thresholds, &quality_thresholds, nullptr);
}
TEST(VideoCodecTestLibvpx, DenoiserOnVP9) {
@ -176,8 +173,7 @@ TEST(VideoCodecTestLibvpx, DenoiserOnVP9) {
std::vector<QualityThresholds> quality_thresholds = {{37.5, 36, 0.94, 0.93}};
fixture->RunTest(rate_profiles, &rc_thresholds, &quality_thresholds, nullptr,
nullptr);
fixture->RunTest(rate_profiles, &rc_thresholds, &quality_thresholds, nullptr);
}
TEST(VideoCodecTestLibvpx, VeryLowBitrateVP9) {
@ -195,8 +191,7 @@ TEST(VideoCodecTestLibvpx, VeryLowBitrateVP9) {
std::vector<QualityThresholds> quality_thresholds = {{28, 25, 0.80, 0.65}};
fixture->RunTest(rate_profiles, &rc_thresholds, &quality_thresholds, nullptr,
nullptr);
fixture->RunTest(rate_profiles, &rc_thresholds, &quality_thresholds, nullptr);
}
// TODO(marpan): Add temporal layer test for VP9, once changes are in
@ -223,8 +218,7 @@ TEST(VideoCodecTestLibvpx, HighBitrateVP8) {
// than quality of x86 version. Use lower thresholds for now.
std::vector<QualityThresholds> quality_thresholds = {{35, 33, 0.91, 0.89}};
fixture->RunTest(rate_profiles, &rc_thresholds, &quality_thresholds, nullptr,
nullptr);
fixture->RunTest(rate_profiles, &rc_thresholds, &quality_thresholds, nullptr);
}
// The tests below are currently disabled for Android. For ARM, the encoder
@ -267,8 +261,7 @@ TEST(VideoCodecTestLibvpx, MAYBE_ChangeBitrateVP8) {
std::vector<QualityThresholds> quality_thresholds = {
{31.8, 31, 0.86, 0.85}, {36, 34.8, 0.92, 0.90}, {33.5, 32, 0.90, 0.88}};
fixture->RunTest(rate_profiles, &rc_thresholds, &quality_thresholds, nullptr,
nullptr);
fixture->RunTest(rate_profiles, &rc_thresholds, &quality_thresholds, nullptr);
}
// TODO(webrtc:9267): Fails on iOS
@ -308,8 +301,7 @@ TEST(VideoCodecTestLibvpx, MAYBE_ChangeFramerateVP8) {
std::vector<QualityThresholds> quality_thresholds = {
{31, 30, 0.85, 0.84}, {31.5, 30.5, 0.86, 0.84}, {30.5, 29, 0.83, 0.78}};
fixture->RunTest(rate_profiles, &rc_thresholds, &quality_thresholds, nullptr,
nullptr);
fixture->RunTest(rate_profiles, &rc_thresholds, &quality_thresholds, nullptr);
}
#if defined(WEBRTC_ANDROID)
@ -343,8 +335,7 @@ TEST(VideoCodecTestLibvpx, MAYBE_TemporalLayersVP8) {
std::vector<QualityThresholds> quality_thresholds = {{31, 30, 0.85, 0.84},
{31, 28, 0.85, 0.75}};
fixture->RunTest(rate_profiles, &rc_thresholds, &quality_thresholds, nullptr,
nullptr);
fixture->RunTest(rate_profiles, &rc_thresholds, &quality_thresholds, nullptr);
}
// TODO(webrtc:9267): Fails on iOS
@ -370,8 +361,7 @@ TEST(VideoCodecTestLibvpx, MAYBE_MultiresVP8) {
{5, 1, 5, 0.2, 0.3, 0.1, 0, 1}};
std::vector<QualityThresholds> quality_thresholds = {{34, 32, 0.90, 0.88}};
fixture->RunTest(rate_profiles, &rc_thresholds, &quality_thresholds, nullptr,
nullptr);
fixture->RunTest(rate_profiles, &rc_thresholds, &quality_thresholds, nullptr);
}
#if defined(WEBRTC_ANDROID)
@ -397,8 +387,7 @@ TEST(VideoCodecTestLibvpx, MAYBE_SimulcastVP8) {
{20, 5, 90, 0.8, 0.5, 0.3, 0, 1}};
std::vector<QualityThresholds> quality_thresholds = {{34, 32, 0.90, 0.88}};
fixture->RunTest(rate_profiles, &rc_thresholds, &quality_thresholds, nullptr,
nullptr);
fixture->RunTest(rate_profiles, &rc_thresholds, &quality_thresholds, nullptr);
}
#if defined(WEBRTC_ANDROID)
@ -423,8 +412,7 @@ TEST(VideoCodecTestLibvpx, MAYBE_SvcVP9) {
{5, 1, 5, 0.2, 0.3, 0.1, 0, 1}};
std::vector<QualityThresholds> quality_thresholds = {{36, 34, 0.93, 0.91}};
fixture->RunTest(rate_profiles, &rc_thresholds, &quality_thresholds, nullptr,
nullptr);
fixture->RunTest(rate_profiles, &rc_thresholds, &quality_thresholds, nullptr);
}
TEST(VideoCodecTestLibvpx, DISABLED_MultiresVP8RdPerf) {
@ -444,7 +432,7 @@ TEST(VideoCodecTestLibvpx, DISABLED_MultiresVP8RdPerf) {
std::vector<RateProfile> rate_profiles = {
{bitrate_kbps, 30, config.num_frames}};
fixture->RunTest(rate_profiles, nullptr, nullptr, nullptr, nullptr);
fixture->RunTest(rate_profiles, nullptr, nullptr, nullptr);
rd_stats[bitrate_kbps] =
fixture->GetStats().SliceAndCalcLayerVideoStatistic(
@ -471,7 +459,7 @@ TEST(VideoCodecTestLibvpx, DISABLED_SvcVP9RdPerf) {
std::vector<RateProfile> rate_profiles = {
{bitrate_kbps, 30, config.num_frames}};
fixture->RunTest(rate_profiles, nullptr, nullptr, nullptr, nullptr);
fixture->RunTest(rate_profiles, nullptr, nullptr, nullptr);
rd_stats[bitrate_kbps] =
fixture->GetStats().SliceAndCalcLayerVideoStatistic(

View File

@ -65,8 +65,7 @@ TEST(VideoCodecTestMediaCodec, ForemanCif500kbpsVp8) {
std::vector<QualityThresholds> quality_thresholds = {{36, 31, 0.92, 0.86}};
fixture->RunTest(rate_profiles, &rc_thresholds, &quality_thresholds, nullptr,
nullptr);
fixture->RunTest(rate_profiles, &rc_thresholds, &quality_thresholds, nullptr);
}
TEST(VideoCodecTestMediaCodec, ForemanCif500kbpsH264CBP) {
@ -89,8 +88,7 @@ TEST(VideoCodecTestMediaCodec, ForemanCif500kbpsH264CBP) {
std::vector<QualityThresholds> quality_thresholds = {{36, 31, 0.92, 0.86}};
fixture->RunTest(rate_profiles, &rc_thresholds, &quality_thresholds, nullptr,
nullptr);
fixture->RunTest(rate_profiles, &rc_thresholds, &quality_thresholds, nullptr);
}
// TODO(brandtr): Enable this test when we have trybots/buildbots with
@ -117,8 +115,7 @@ TEST(VideoCodecTestMediaCodec, DISABLED_ForemanCif500kbpsH264CHP) {
std::vector<QualityThresholds> quality_thresholds = {{37, 35, 0.93, 0.91}};
fixture->RunTest(rate_profiles, &rc_thresholds, &quality_thresholds, nullptr,
nullptr);
fixture->RunTest(rate_profiles, &rc_thresholds, &quality_thresholds, nullptr);
}
TEST(VideoCodecTestMediaCodec, ForemanMixedRes100kbpsVp8H264) {
@ -146,8 +143,7 @@ TEST(VideoCodecTestMediaCodec, ForemanMixedRes100kbpsVp8H264) {
auto fixture = CreateTestFixtureWithConfig(config);
fixture->RunTest(rate_profiles, nullptr /* rc_thresholds */,
&quality_thresholds, nullptr /* bs_thresholds */,
nullptr /* visualization_params */);
&quality_thresholds, nullptr /* bs_thresholds */);
}
}
}

View File

@ -54,8 +54,7 @@ TEST(VideoCodecTestOpenH264, ConstantHighBitrate) {
std::vector<QualityThresholds> quality_thresholds = {{37, 35, 0.93, 0.91}};
fixture->RunTest(rate_profiles, &rc_thresholds, &quality_thresholds, nullptr,
nullptr);
fixture->RunTest(rate_profiles, &rc_thresholds, &quality_thresholds, nullptr);
}
// H264: Enable SingleNalUnit packetization mode. Encoder should split
@ -82,7 +81,7 @@ TEST(VideoCodecTestOpenH264, SingleNalUnit) {
BitstreamThresholds bs_thresholds = {config.max_payload_size_bytes};
fixture->RunTest(rate_profiles, &rc_thresholds, &quality_thresholds,
&bs_thresholds, nullptr);
&bs_thresholds);
}
} // namespace test

View File

@ -32,10 +32,6 @@ const bool kFrameDropperOn = false;
// Test settings.
const bool kUseSingleCore = false;
const bool kMeasureCpu = false;
const VisualizationParams kVisualizationParams = {
false, // save_encoded_ivf
false, // save_decoded_y4m
};
const int kNumFrames = 30;
} // namespace
@ -79,8 +75,7 @@ class VideoCodecTestParameterized
{bitrate_, framerate, kNumFrames}};
fixture_ = CreateVideoCodecTestFixture(config);
fixture_->RunTest(rate_profiles, nullptr, nullptr, nullptr,
&kVisualizationParams);
fixture_->RunTest(rate_profiles, nullptr, nullptr, nullptr);
}
std::unique_ptr<VideoCodecTestFixture> fixture_;
const size_t bitrate_;

View File

@ -65,8 +65,7 @@ MAYBE_TEST(VideoCodecTestVideoToolbox, ForemanCif500kbpsH264CBP) {
std::vector<QualityThresholds> quality_thresholds = {{33, 29, 0.9, 0.82}};
fixture->RunTest(rate_profiles, nullptr, &quality_thresholds, nullptr,
nullptr);
fixture->RunTest(rate_profiles, nullptr, &quality_thresholds, nullptr);
}
MAYBE_TEST(VideoCodecTestVideoToolbox, ForemanCif500kbpsH264CHP) {
@ -83,8 +82,7 @@ MAYBE_TEST(VideoCodecTestVideoToolbox, ForemanCif500kbpsH264CHP) {
std::vector<QualityThresholds> quality_thresholds = {{33, 30, 0.91, 0.83}};
fixture->RunTest(rate_profiles, nullptr, &quality_thresholds, nullptr,
nullptr);
fixture->RunTest(rate_profiles, nullptr, &quality_thresholds, nullptr);
}
} // namespace test