From 3fcd595dfbed102d516080c41778a562dffef53d Mon Sep 17 00:00:00 2001 From: Marco Date: Mon, 19 Dec 2016 14:07:49 -0800 Subject: [PATCH] vp9: Add datarate test for denoiser, for high noise case. Also breakout the denoiser tests, as the denoiser only runs for real-time speed >=5. Change-Id: I921b785860c35e9d1ebfad0833673a98490186c2 --- test/datarate_test.cc | 43 +++++++++++++++++++++++++++++++++++++++++-- test/test-data.mk | 1 + test/test-data.sha1 | 1 + 3 files changed, 43 insertions(+), 2 deletions(-) diff --git a/test/datarate_test.cc b/test/datarate_test.cc index df6168d06..8273aa1a3 100644 --- a/test/datarate_test.cc +++ b/test/datarate_test.cc @@ -954,8 +954,13 @@ TEST_P(DatarateTestVP9Large, BasicRateTargeting3TemporalLayersFrameDropping) { } #if CONFIG_VP9_TEMPORAL_DENOISING +class DatarateTestVP9LargeDenoiser : public DatarateTestVP9Large { + public: + virtual ~DatarateTestVP9LargeDenoiser() {} +}; + // Check basic datarate targeting, for a single bitrate, when denoiser is on. -TEST_P(DatarateTestVP9Large, DenoiserLevels) { +TEST_P(DatarateTestVP9LargeDenoiser, LowNoise) { cfg_.rc_buf_initial_sz = 500; cfg_.rc_buf_optimal_sz = 500; cfg_.rc_buf_sz = 1000; @@ -982,9 +987,38 @@ TEST_P(DatarateTestVP9Large, DenoiserLevels) { << " The datarate for the file is greater than target by too much!"; } +// Check basic datarate targeting, for a single bitrate, when denoiser is on, +// for HD clip with high noise level. +TEST_P(DatarateTestVP9LargeDenoiser, HighNoise) { + cfg_.rc_buf_initial_sz = 500; + cfg_.rc_buf_optimal_sz = 500; + cfg_.rc_buf_sz = 1000; + cfg_.rc_dropframe_thresh = 1; + cfg_.rc_min_quantizer = 2; + cfg_.rc_max_quantizer = 56; + cfg_.rc_end_usage = VPX_CBR; + cfg_.g_lag_in_frames = 0; + + ::libvpx_test::I420VideoSource video("noisy_clip_640_360.y4m", 640, 360, 30, + 1, 0, 200); + + // For the temporal denoiser (#if CONFIG_VP9_TEMPORAL_DENOISING), + // there is only one denoiser mode: denoiserYonly(which is 1), + // but may add more modes in the future. + cfg_.rc_target_bitrate = 1000; + ResetModel(); + // Turn on the denoiser. + denoiser_on_ = 1; + ASSERT_NO_FATAL_FAILURE(RunLoop(&video)); + ASSERT_GE(effective_datarate_[0], cfg_.rc_target_bitrate * 0.85) + << " The datarate for the file is lower than target by too much!"; + ASSERT_LE(effective_datarate_[0], cfg_.rc_target_bitrate * 1.15) + << " The datarate for the file is greater than target by too much!"; +} + // Check basic datarate targeting, for a single bitrate, when denoiser is off // and on. -TEST_P(DatarateTestVP9Large, DenoiserOffOn) { +TEST_P(DatarateTestVP9LargeDenoiser, DenoiserOffOn) { cfg_.rc_buf_initial_sz = 500; cfg_.rc_buf_optimal_sz = 500; cfg_.rc_buf_sz = 1000; @@ -1435,6 +1469,11 @@ VP9_INSTANTIATE_TEST_CASE(DatarateTestVP9Large, ::testing::Values(::libvpx_test::kOnePassGood, ::libvpx_test::kRealTime), ::testing::Range(2, 9)); +#if CONFIG_VP9_TEMPORAL_DENOISING +VP9_INSTANTIATE_TEST_CASE(DatarateTestVP9LargeDenoiser, + ::testing::Values(::libvpx_test::kRealTime), + ::testing::Range(5, 9)); +#endif VP9_INSTANTIATE_TEST_CASE(DatarateOnePassCbrSvc, ::testing::Values(::libvpx_test::kRealTime), ::testing::Range(5, 9)); diff --git a/test/test-data.mk b/test/test-data.mk index c1116f534..a6cda1e9b 100644 --- a/test/test-data.mk +++ b/test/test-data.mk @@ -20,6 +20,7 @@ LIBVPX_TEST_DATA-$(CONFIG_ENCODERS) += park_joy_90p_8_440.yuv LIBVPX_TEST_DATA-$(CONFIG_VP9_ENCODER) += desktop_credits.y4m LIBVPX_TEST_DATA-$(CONFIG_VP9_ENCODER) += niklas_1280_720_30.y4m +LIBVPX_TEST_DATA-$(CONFIG_VP9_ENCODER) += noisy_clip_640_360.y4m LIBVPX_TEST_DATA-$(CONFIG_VP9_ENCODER) += rush_hour_444.y4m LIBVPX_TEST_DATA-$(CONFIG_VP9_ENCODER) += screendata.y4m diff --git a/test/test-data.sha1 b/test/test-data.sha1 index 8b51f064b..22ca6f564 100644 --- a/test/test-data.sha1 +++ b/test/test-data.sha1 @@ -14,6 +14,7 @@ df1a1453feb3c00d7d89746c7003b4163523bff3 *invalid-vp90-03-v3.webm 4935c62becc68c13642a03db1e6d3e2331c1c612 *invalid-vp90-03-v3.webm.res d637297561dd904eb2c97a9015deeb31c4a1e8d2 *invalid-vp90-2-08-tile_1x4_frame_parallel_all_key.webm 3a204bdbeaa3c6458b77bcebb8366d107267f55d *invalid-vp90-2-08-tile_1x4_frame_parallel_all_key.webm.res +9aa21d8b2cb9d39abe8a7bb6032dc66955fb4342 *noisy_clip_640_360.y4m a432f96ff0a787268e2f94a8092ab161a18d1b06 *park_joy_90p_10_420.y4m 0b194cc312c3a2e84d156a221b0a5eb615dfddc5 *park_joy_90p_10_422.y4m ff0e0a21dc2adc95b8c1b37902713700655ced17 *park_joy_90p_10_444.y4m -- 2.40.0