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:
committed by
Commit Bot
parent
5e8a205021
commit
7c1ccfa881
@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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(
|
||||
|
||||
@ -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 */);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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_;
|
||||
|
||||
@ -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
|
||||
|
||||
Reference in New Issue
Block a user