diff options
Diffstat (limited to 'libvpx/test')
31 files changed, 2103 insertions, 776 deletions
diff --git a/libvpx/test/altref_test.cc b/libvpx/test/altref_test.cc index 14af265..af25b72 100644 --- a/libvpx/test/altref_test.cc +++ b/libvpx/test/altref_test.cc @@ -33,10 +33,6 @@ class AltRefTest : public ::libvpx_test::EncoderTest, altref_count_ = 0; } - virtual bool Continue() const { - return !HasFatalFailure() && !abort_; - } - virtual void PreEncodeFrameHook(libvpx_test::VideoSource *video, libvpx_test::Encoder *encoder) { if (video->frame() == 1) { diff --git a/libvpx/test/borders_test.cc b/libvpx/test/borders_test.cc index 49505ee..7bfece8 100644 --- a/libvpx/test/borders_test.cc +++ b/libvpx/test/borders_test.cc @@ -27,10 +27,6 @@ class BordersTest : public ::libvpx_test::EncoderTest, SetMode(GET_PARAM(1)); } - virtual bool Continue() const { - return !HasFatalFailure() && !abort_; - } - virtual void PreEncodeFrameHook(::libvpx_test::VideoSource *video, ::libvpx_test::Encoder *encoder) { if ( video->frame() == 1) { diff --git a/libvpx/test/codec_factory.h b/libvpx/test/codec_factory.h index fdae572..cc7b53f 100644 --- a/libvpx/test/codec_factory.h +++ b/libvpx/test/codec_factory.h @@ -134,14 +134,14 @@ class VP8CodecFactory : public CodecFactory { const libvpx_test::VP8CodecFactory kVP8; -#define VP8_INSTANTIATE_TEST_CASE(test, params)\ +#define VP8_INSTANTIATE_TEST_CASE(test, ...)\ INSTANTIATE_TEST_CASE_P(VP8, test, \ ::testing::Combine( \ ::testing::Values(static_cast<const libvpx_test::CodecFactory*>( \ &libvpx_test::kVP8)), \ - params)) + __VA_ARGS__)) #else -#define VP8_INSTANTIATE_TEST_CASE(test, params) +#define VP8_INSTANTIATE_TEST_CASE(test, ...) #endif // CONFIG_VP8 @@ -216,14 +216,14 @@ class VP9CodecFactory : public CodecFactory { const libvpx_test::VP9CodecFactory kVP9; -#define VP9_INSTANTIATE_TEST_CASE(test, params)\ +#define VP9_INSTANTIATE_TEST_CASE(test, ...)\ INSTANTIATE_TEST_CASE_P(VP9, test, \ ::testing::Combine( \ ::testing::Values(static_cast<const libvpx_test::CodecFactory*>( \ &libvpx_test::kVP9)), \ - params)) + __VA_ARGS__)) #else -#define VP9_INSTANTIATE_TEST_CASE(test, params) +#define VP9_INSTANTIATE_TEST_CASE(test, ...) #endif // CONFIG_VP9 diff --git a/libvpx/test/config_test.cc b/libvpx/test/config_test.cc index 9008728..36c6330 100644 --- a/libvpx/test/config_test.cc +++ b/libvpx/test/config_test.cc @@ -40,10 +40,6 @@ class ConfigTest : public ::libvpx_test::EncoderTest, ++frame_count_out_; } - virtual bool Continue() const { - return !HasFatalFailure() && !abort_; - } - unsigned int frame_count_in_; unsigned int frame_count_out_; unsigned int frame_count_max_; diff --git a/libvpx/test/convolve_test.cc b/libvpx/test/convolve_test.cc index fd2bd36..3b72129 100644 --- a/libvpx/test/convolve_test.cc +++ b/libvpx/test/convolve_test.cc @@ -22,8 +22,8 @@ extern "C" { } namespace { -typedef void (*convolve_fn_t)(const uint8_t *src, int src_stride, - uint8_t *dst, int dst_stride, +typedef void (*convolve_fn_t)(const uint8_t *src, ptrdiff_t src_stride, + uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int filter_x_stride, const int16_t *filter_y, int filter_y_stride, int w, int h); @@ -211,7 +211,7 @@ class ConvolveTest : public PARAMS(int, int, const ConvolveFunctions*) { virtual void SetUp() { UUT_ = GET_PARAM(2); - /* Set up guard blocks for an inner block cetered in the outer block */ + /* Set up guard blocks for an inner block centered in the outer block */ for (int i = 0; i < kOutputBufferSize; ++i) { if (IsIndexInBorder(i)) output_[i] = 255; @@ -546,4 +546,26 @@ INSTANTIATE_TEST_CASE_P(SSSE3, ConvolveTest, ::testing::Values( make_tuple(32, 64, &convolve8_ssse3), make_tuple(64, 64, &convolve8_ssse3))); #endif + +#if HAVE_NEON +const ConvolveFunctions convolve8_neon( + vp9_convolve8_horiz_neon, vp9_convolve8_avg_horiz_neon, + vp9_convolve8_vert_neon, vp9_convolve8_avg_vert_neon, + vp9_convolve8_neon, vp9_convolve8_avg_neon); + +INSTANTIATE_TEST_CASE_P(NEON, ConvolveTest, ::testing::Values( + make_tuple(4, 4, &convolve8_neon), + make_tuple(8, 4, &convolve8_neon), + make_tuple(4, 8, &convolve8_neon), + make_tuple(8, 8, &convolve8_neon), + make_tuple(16, 8, &convolve8_neon), + make_tuple(8, 16, &convolve8_neon), + make_tuple(16, 16, &convolve8_neon), + make_tuple(32, 16, &convolve8_neon), + make_tuple(16, 32, &convolve8_neon), + make_tuple(32, 32, &convolve8_neon), + make_tuple(64, 32, &convolve8_neon), + make_tuple(32, 64, &convolve8_neon), + make_tuple(64, 64, &convolve8_neon))); +#endif } // namespace diff --git a/libvpx/test/cpu_speed_test.cc b/libvpx/test/cpu_speed_test.cc new file mode 100644 index 0000000..e6ad75b --- /dev/null +++ b/libvpx/test/cpu_speed_test.cc @@ -0,0 +1,112 @@ +/* + * Copyright (c) 2012 The WebM project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. An additional intellectual property rights grant can be found + * in the file PATENTS. All contributing project authors may + * be found in the AUTHORS file in the root of the source tree. + */ +#include <climits> +#include <vector> +#include "third_party/googletest/src/include/gtest/gtest.h" +#include "test/codec_factory.h" +#include "test/encode_test_driver.h" +#include "test/i420_video_source.h" +#include "test/util.h" + +namespace { + +class CpuSpeedTest : public ::libvpx_test::EncoderTest, + public ::libvpx_test::CodecTestWith2Params< + libvpx_test::TestMode, int> { + protected: + CpuSpeedTest() : EncoderTest(GET_PARAM(0)) {} + + virtual void SetUp() { + InitializeConfig(); + SetMode(GET_PARAM(1)); + set_cpu_used_ = GET_PARAM(2); + } + + virtual void PreEncodeFrameHook(::libvpx_test::VideoSource *video, + ::libvpx_test::Encoder *encoder) { + if (video->frame() == 1) { + encoder->Control(VP8E_SET_CPUUSED, set_cpu_used_); + encoder->Control(VP8E_SET_ENABLEAUTOALTREF, 1); + encoder->Control(VP8E_SET_ARNR_MAXFRAMES, 7); + encoder->Control(VP8E_SET_ARNR_STRENGTH, 5); + encoder->Control(VP8E_SET_ARNR_TYPE, 3); + } + } + + virtual void FramePktHook(const vpx_codec_cx_pkt_t *pkt) { + if (pkt->data.frame.flags & VPX_FRAME_IS_KEY) { + } + } + int set_cpu_used_; +}; + +TEST_P(CpuSpeedTest, TestQ0) { + // Validate that this non multiple of 64 wide clip encodes and decodes + // without a mismatch when passing in a very low max q. This pushes + // the encoder to producing lots of big partitions which will likely + // extend into the border and test the border condition. + cfg_.g_lag_in_frames = 25; + cfg_.rc_2pass_vbr_minsection_pct = 5; + cfg_.rc_2pass_vbr_minsection_pct = 2000; + cfg_.rc_target_bitrate = 400; + cfg_.rc_max_quantizer = 0; + cfg_.rc_min_quantizer = 0; + + ::libvpx_test::I420VideoSource video("hantro_odd.yuv", 208, 144, 30, 1, 0, + 20); + + ASSERT_NO_FATAL_FAILURE(RunLoop(&video)); +} + + +TEST_P(CpuSpeedTest, TestEncodeHighBitrate) { + // Validate that this non multiple of 64 wide clip encodes and decodes + // without a mismatch when passing in a very low max q. This pushes + // the encoder to producing lots of big partitions which will likely + // extend into the border and test the border condition. + cfg_.g_lag_in_frames = 25; + cfg_.rc_2pass_vbr_minsection_pct = 5; + cfg_.rc_2pass_vbr_minsection_pct = 2000; + cfg_.rc_target_bitrate = 12000; + cfg_.rc_max_quantizer = 10; + cfg_.rc_min_quantizer = 0; + + ::libvpx_test::I420VideoSource video("hantro_odd.yuv", 208, 144, 30, 1, 0, + 40); + + ASSERT_NO_FATAL_FAILURE(RunLoop(&video)); +} +TEST_P(CpuSpeedTest, TestLowBitrate) { + // Validate that this clip encodes and decodes without a mismatch + // when passing in a very high min q. This pushes the encoder to producing + // lots of small partitions which might will test the other condition. + + cfg_.g_lag_in_frames = 25; + cfg_.rc_2pass_vbr_minsection_pct = 5; + cfg_.rc_2pass_vbr_minsection_pct = 2000; + cfg_.rc_target_bitrate = 200; + cfg_.rc_min_quantizer = 40; + + ::libvpx_test::I420VideoSource video("hantro_odd.yuv", 208, 144, 30, 1, 0, + 40); + + ASSERT_NO_FATAL_FAILURE(RunLoop(&video)); +} + +using std::tr1::make_tuple; + +#define VP9_FACTORY \ + static_cast<const libvpx_test::CodecFactory*> (&libvpx_test::kVP9) + +VP9_INSTANTIATE_TEST_CASE( + CpuSpeedTest, + ::testing::Values(::libvpx_test::kTwoPassGood), + ::testing::Range(0, 3)); +} // namespace diff --git a/libvpx/test/cq_test.cc b/libvpx/test/cq_test.cc index a6a4b8e..a2c8291 100644 --- a/libvpx/test/cq_test.cc +++ b/libvpx/test/cq_test.cc @@ -42,10 +42,6 @@ class CQTest : public ::libvpx_test::EncoderTest, n_frames_ = 0; } - virtual bool Continue() const { - return !HasFatalFailure() && !abort_; - } - virtual void PreEncodeFrameHook(libvpx_test::VideoSource *video, libvpx_test::Encoder *encoder) { if (video->frame() == 1) { diff --git a/libvpx/test/datarate_test.cc b/libvpx/test/datarate_test.cc index 85eeafb..287e805 100644 --- a/libvpx/test/datarate_test.cc +++ b/libvpx/test/datarate_test.cc @@ -36,10 +36,6 @@ class DatarateTest : public ::libvpx_test::EncoderTest, duration_ = 0.0; } - virtual bool Continue() const { - return !HasFatalFailure() && !abort_; - } - virtual void PreEncodeFrameHook(::libvpx_test::VideoSource *video, ::libvpx_test::Encoder *encoder) { const vpx_rational_t tb = video->timebase(); diff --git a/libvpx/test/dct16x16_test.cc b/libvpx/test/dct16x16_test.cc index 9fb45d6..0795054 100644 --- a/libvpx/test/dct16x16_test.cc +++ b/libvpx/test/dct16x16_test.cc @@ -13,6 +13,7 @@ #include <string.h> #include "third_party/googletest/src/include/gtest/gtest.h" +#include "vpx_ports/mem.h" extern "C" { #include "vp9/common/vp9_entropy.h" @@ -264,59 +265,79 @@ void reference_16x16_dct_2d(int16_t input[16*16], double output[16*16]) { } } +void fdct16x16(int16_t *in, int16_t *out, uint8_t* /*dst*/, + int stride, int /*tx_type*/) { + vp9_short_fdct16x16_c(in, out, stride); +} +void idct16x16_add(int16_t* /*in*/, int16_t *out, uint8_t *dst, + int stride, int /*tx_type*/) { + vp9_short_idct16x16_add_c(out, dst, stride >> 1); +} +void fht16x16(int16_t *in, int16_t *out, uint8_t* /*dst*/, + int stride, int tx_type) { + // FIXME(jingning): need to test both SSE2 and c +#if HAVE_SSE2 + vp9_short_fht16x16_sse2(in, out, stride >> 1, tx_type); +#else + vp9_short_fht16x16_c(in, out, stride >> 1, tx_type); +#endif +} +void iht16x16_add(int16_t* /*in*/, int16_t *out, uint8_t *dst, + int stride, int tx_type) { + vp9_short_iht16x16_add_c(out, dst, stride >> 1, tx_type); +} -TEST(VP9Idct16x16Test, AccuracyCheck) { - ACMRandom rnd(ACMRandom::DeterministicSeed()); - const int count_test_block = 1000; - for (int i = 0; i < count_test_block; ++i) { - int16_t in[256], coeff[256]; - uint8_t dst[256], src[256]; - double out_r[256]; - - for (int j = 0; j < 256; ++j) { - src[j] = rnd.Rand8(); - dst[j] = rnd.Rand8(); +class FwdTrans16x16Test : public ::testing::TestWithParam<int> { + public: + virtual ~FwdTrans16x16Test() {} + + virtual void SetUp() { + tx_type_ = GetParam(); + if (tx_type_ == 0) { + fwd_txfm = fdct16x16; + inv_txfm = idct16x16_add; + } else { + fwd_txfm = fht16x16; + inv_txfm = iht16x16_add; } - // Initialize a test block with input range [-255, 255]. - for (int j = 0; j < 256; ++j) - in[j] = src[j] - dst[j]; + } - reference_16x16_dct_2d(in, out_r); - for (int j = 0; j < 256; j++) - coeff[j] = round(out_r[j]); - vp9_short_idct16x16_add_c(coeff, dst, 16); - for (int j = 0; j < 256; ++j) { - const int diff = dst[j] - src[j]; - const int error = diff * diff; - EXPECT_GE(1, error) - << "Error: 16x16 IDCT has error " << error - << " at index " << j; - } + protected: + void RunFwdTxfm(int16_t *in, int16_t *out, uint8_t *dst, + int stride, int tx_type) { + (*fwd_txfm)(in, out, dst, stride, tx_type); } -} + void RunInvTxfm(int16_t *in, int16_t *out, uint8_t *dst, + int stride, int tx_type) { + (*inv_txfm)(in, out, dst, stride, tx_type); + } + + int tx_type_; + void (*fwd_txfm)(int16_t*, int16_t*, uint8_t*, int, int); + void (*inv_txfm)(int16_t*, int16_t*, uint8_t*, int, int); +}; -// we need enable fdct test once we re-do the 16 point fdct. -TEST(VP9Fdct16x16Test, AccuracyCheck) { +TEST_P(FwdTrans16x16Test, AccuracyCheck) { ACMRandom rnd(ACMRandom::DeterministicSeed()); int max_error = 0; double total_error = 0; - const int count_test_block = 1000; + const int count_test_block = 10000; for (int i = 0; i < count_test_block; ++i) { - int16_t test_input_block[256]; - int16_t test_temp_block[256]; - uint8_t dst[256], src[256]; + DECLARE_ALIGNED_ARRAY(16, int16_t, test_input_block, 256); + DECLARE_ALIGNED_ARRAY(16, int16_t, test_temp_block, 256); + DECLARE_ALIGNED_ARRAY(16, uint8_t, dst, 256); + DECLARE_ALIGNED_ARRAY(16, uint8_t, src, 256); for (int j = 0; j < 256; ++j) { src[j] = rnd.Rand8(); dst[j] = rnd.Rand8(); - } - // Initialize a test block with input range [-255, 255]. - for (int j = 0; j < 256; ++j) + // Initialize a test block with input range [-255, 255]. test_input_block[j] = src[j] - dst[j]; + } const int pitch = 32; - vp9_short_fdct16x16_c(test_input_block, test_temp_block, pitch); - vp9_short_idct16x16_add_c(test_temp_block, dst, 16); + RunFwdTxfm(test_input_block, test_temp_block, dst, pitch, tx_type_); + RunInvTxfm(test_input_block, test_temp_block, dst, pitch, tx_type_); for (int j = 0; j < 256; ++j) { const int diff = dst[j] - src[j]; @@ -328,18 +349,21 @@ TEST(VP9Fdct16x16Test, AccuracyCheck) { } EXPECT_GE(1, max_error) - << "Error: 16x16 FDCT/IDCT has an individual round trip error > 1"; + << "Error: 16x16 FHT/IHT has an individual round trip error > 1"; EXPECT_GE(count_test_block , total_error) - << "Error: 16x16 FDCT/IDCT has average round trip error > 1 per block"; + << "Error: 16x16 FHT/IHT has average round trip error > 1 per block"; } -TEST(VP9Fdct16x16Test, CoeffSizeCheck) { +TEST_P(FwdTrans16x16Test, CoeffSizeCheck) { ACMRandom rnd(ACMRandom::DeterministicSeed()); const int count_test_block = 1000; for (int i = 0; i < count_test_block; ++i) { - int16_t input_block[256], input_extreme_block[256]; - int16_t output_block[256], output_extreme_block[256]; + DECLARE_ALIGNED_ARRAY(16, int16_t, input_block, 256); + DECLARE_ALIGNED_ARRAY(16, int16_t, input_extreme_block, 256); + DECLARE_ALIGNED_ARRAY(16, int16_t, output_block, 256); + DECLARE_ALIGNED_ARRAY(16, int16_t, output_extreme_block, 256); + DECLARE_ALIGNED_ARRAY(16, uint8_t, dst, 256); // Initialize a test block with input range [-255, 255]. for (int j = 0; j < 256; ++j) { @@ -351,16 +375,50 @@ TEST(VP9Fdct16x16Test, CoeffSizeCheck) { input_extreme_block[j] = 255; const int pitch = 32; - vp9_short_fdct16x16_c(input_block, output_block, pitch); - vp9_short_fdct16x16_c(input_extreme_block, output_extreme_block, pitch); + RunFwdTxfm(input_block, output_block, dst, pitch, tx_type_); + RunFwdTxfm(input_extreme_block, output_extreme_block, dst, pitch, tx_type_); // The minimum quant value is 4. for (int j = 0; j < 256; ++j) { - EXPECT_GE(4*DCT_MAX_VALUE, abs(output_block[j])) + EXPECT_GE(4 * DCT_MAX_VALUE, abs(output_block[j])) << "Error: 16x16 FDCT has coefficient larger than 4*DCT_MAX_VALUE"; - EXPECT_GE(4*DCT_MAX_VALUE, abs(output_extreme_block[j])) - << "Error: 16x16 FDCT extreme has coefficient larger than 4*DCT_MAX_VALUE"; + EXPECT_GE(4 * DCT_MAX_VALUE, abs(output_extreme_block[j])) + << "Error: 16x16 FDCT extreme has coefficient larger " + << "than 4*DCT_MAX_VALUE"; + } + } +} + +INSTANTIATE_TEST_CASE_P(VP9, FwdTrans16x16Test, ::testing::Range(0, 4)); + +TEST(VP9Idct16x16Test, AccuracyCheck) { + ACMRandom rnd(ACMRandom::DeterministicSeed()); + const int count_test_block = 1000; + for (int i = 0; i < count_test_block; ++i) { + int16_t in[256], coeff[256]; + uint8_t dst[256], src[256]; + double out_r[256]; + + for (int j = 0; j < 256; ++j) { + src[j] = rnd.Rand8(); + dst[j] = rnd.Rand8(); + } + // Initialize a test block with input range [-255, 255]. + for (int j = 0; j < 256; ++j) + in[j] = src[j] - dst[j]; + + reference_16x16_dct_2d(in, out_r); + for (int j = 0; j < 256; j++) + coeff[j] = round(out_r[j]); + vp9_short_idct16x16_add_c(coeff, dst, 16); + for (int j = 0; j < 256; ++j) { + const int diff = dst[j] - src[j]; + const int error = diff * diff; + EXPECT_GE(1, error) + << "Error: 16x16 IDCT has error " << error + << " at index " << j; } } } + } // namespace diff --git a/libvpx/test/encode_test_driver.h b/libvpx/test/encode_test_driver.h index 6aeb96b..dbdc33c 100644 --- a/libvpx/test/encode_test_driver.h +++ b/libvpx/test/encode_test_driver.h @@ -190,7 +190,9 @@ class EncoderTest { virtual void PSNRPktHook(const vpx_codec_cx_pkt_t *pkt) {} // Hook to determine whether the encode loop should continue. - virtual bool Continue() const { return !abort_; } + virtual bool Continue() const { + return !(::testing::Test::HasFatalFailure() || abort_); + } const CodecFactory *codec_; // Hook to determine whether to decode frame after encoding diff --git a/libvpx/test/error_resilience_test.cc b/libvpx/test/error_resilience_test.cc index ddfbd0f..d4a6967 100644 --- a/libvpx/test/error_resilience_test.cc +++ b/libvpx/test/error_resilience_test.cc @@ -50,10 +50,6 @@ class ErrorResilienceTest : public ::libvpx_test::EncoderTest, mismatch_nframes_ = 0; } - virtual bool Continue() const { - return !HasFatalFailure() && !abort_; - } - virtual void PSNRPktHook(const vpx_codec_cx_pkt_t *pkt) { psnr_ += pkt->data.psnr.psnr[0]; nframes_++; diff --git a/libvpx/test/fdct4x4_test.cc b/libvpx/test/fdct4x4_test.cc index 1c887bb..9dcc078 100644 --- a/libvpx/test/fdct4x4_test.cc +++ b/libvpx/test/fdct4x4_test.cc @@ -20,29 +20,75 @@ extern "C" { #include "acm_random.h" #include "vpx/vpx_integer.h" +#include "vpx_ports/mem.h" using libvpx_test::ACMRandom; namespace { +void fdct4x4(int16_t *in, int16_t *out, uint8_t* /*dst*/, + int stride, int /*tx_type*/) { + vp9_short_fdct4x4_c(in, out, stride); +} +void idct4x4_add(int16_t* /*in*/, int16_t *out, uint8_t *dst, + int stride, int /*tx_type*/) { + vp9_short_idct4x4_add_c(out, dst, stride >> 1); +} +void fht4x4(int16_t *in, int16_t *out, uint8_t* /*dst*/, + int stride, int tx_type) { + vp9_short_fht4x4_c(in, out, stride >> 1, tx_type); +} +void iht4x4_add(int16_t* /*in*/, int16_t *out, uint8_t *dst, + int stride, int tx_type) { + vp9_short_iht4x4_add_c(out, dst, stride >> 1, tx_type); +} + +class FwdTrans4x4Test : public ::testing::TestWithParam<int> { + public: + virtual ~FwdTrans4x4Test() {} + virtual void SetUp() { + tx_type_ = GetParam(); + if (tx_type_ == 0) { + fwd_txfm_ = fdct4x4; + inv_txfm_ = idct4x4_add; + } else { + fwd_txfm_ = fht4x4; + inv_txfm_ = iht4x4_add; + } + } + + protected: + void RunFwdTxfm(int16_t *in, int16_t *out, uint8_t *dst, + int stride, int tx_type) { + (*fwd_txfm_)(in, out, dst, stride, tx_type); + } + + void RunInvTxfm(int16_t *in, int16_t *out, uint8_t *dst, + int stride, int tx_type) { + (*inv_txfm_)(in, out, dst, stride, tx_type); + } + + int tx_type_; + void (*fwd_txfm_)(int16_t *in, int16_t *out, uint8_t *dst, + int stride, int tx_type); + void (*inv_txfm_)(int16_t *in, int16_t *out, uint8_t *dst, + int stride, int tx_type); +}; -TEST(Vp9Fdct4x4Test, SignBiasCheck) { +TEST_P(FwdTrans4x4Test, SignBiasCheck) { ACMRandom rnd(ACMRandom::DeterministicSeed()); - int16_t test_input_block[16]; - int16_t test_output_block[16]; + DECLARE_ALIGNED_ARRAY(16, int16_t, test_input_block, 16); + DECLARE_ALIGNED_ARRAY(16, int16_t, test_output_block, 16); const int pitch = 8; int count_sign_block[16][2]; const int count_test_block = 1000000; memset(count_sign_block, 0, sizeof(count_sign_block)); - for (int i = 0; i < count_test_block; ++i) { // Initialize a test block with input range [-255, 255]. for (int j = 0; j < 16; ++j) test_input_block[j] = rnd.Rand8() - rnd.Rand8(); - // TODO(Yaowu): this should be converted to a parameterized test - // to test optimized versions of this function. - vp9_short_fdct4x4_c(test_input_block, test_output_block, pitch); + RunFwdTxfm(test_input_block, test_output_block, NULL, pitch, tx_type_); for (int j = 0; j < 16; ++j) { if (test_output_block[j] < 0) @@ -56,20 +102,18 @@ TEST(Vp9Fdct4x4Test, SignBiasCheck) { const bool bias_acceptable = (abs(count_sign_block[j][0] - count_sign_block[j][1]) < 10000); EXPECT_TRUE(bias_acceptable) - << "Error: 4x4 FDCT has a sign bias > 1%" - << " for input range [-255, 255] at index " << j; + << "Error: 4x4 FDCT/FHT has a sign bias > 1%" + << " for input range [-255, 255] at index " << j + << " tx_type " << tx_type_; } memset(count_sign_block, 0, sizeof(count_sign_block)); - for (int i = 0; i < count_test_block; ++i) { // Initialize a test block with input range [-15, 15]. for (int j = 0; j < 16; ++j) test_input_block[j] = (rnd.Rand8() >> 4) - (rnd.Rand8() >> 4); - // TODO(Yaowu): this should be converted to a parameterized test - // to test optimized versions of this function. - vp9_short_fdct4x4_c(test_input_block, test_output_block, pitch); + RunFwdTxfm(test_input_block, test_output_block, NULL, pitch, tx_type_); for (int j = 0; j < 16; ++j) { if (test_output_block[j] < 0) @@ -83,20 +127,22 @@ TEST(Vp9Fdct4x4Test, SignBiasCheck) { const bool bias_acceptable = (abs(count_sign_block[j][0] - count_sign_block[j][1]) < 100000); EXPECT_TRUE(bias_acceptable) - << "Error: 4x4 FDCT has a sign bias > 10%" + << "Error: 4x4 FDCT/FHT has a sign bias > 10%" << " for input range [-15, 15] at index " << j; } -}; +} -TEST(Vp9Fdct4x4Test, RoundTripErrorCheck) { +TEST_P(FwdTrans4x4Test, RoundTripErrorCheck) { ACMRandom rnd(ACMRandom::DeterministicSeed()); + int max_error = 0; double total_error = 0; const int count_test_block = 1000000; for (int i = 0; i < count_test_block; ++i) { - int16_t test_input_block[16]; - int16_t test_temp_block[16]; - uint8_t dst[16], src[16]; + DECLARE_ALIGNED_ARRAY(16, int16_t, test_input_block, 16); + DECLARE_ALIGNED_ARRAY(16, int16_t, test_temp_block, 16); + DECLARE_ALIGNED_ARRAY(16, uint8_t, dst, 16); + DECLARE_ALIGNED_ARRAY(16, uint8_t, src, 16); for (int j = 0; j < 16; ++j) { src[j] = rnd.Rand8(); @@ -106,10 +152,8 @@ TEST(Vp9Fdct4x4Test, RoundTripErrorCheck) { for (int j = 0; j < 16; ++j) test_input_block[j] = src[j] - dst[j]; - // TODO(Yaowu): this should be converted to a parameterized test - // to test optimized versions of this function. const int pitch = 8; - vp9_short_fdct4x4_c(test_input_block, test_temp_block, pitch); + RunFwdTxfm(test_input_block, test_temp_block, dst, pitch, tx_type_); for (int j = 0; j < 16; ++j) { if(test_temp_block[j] > 0) { @@ -123,8 +167,8 @@ TEST(Vp9Fdct4x4Test, RoundTripErrorCheck) { } } - // Because the bitstream is not frozen yet, use the idct in the codebase. - vp9_short_idct4x4_add_c(test_temp_block, dst, 4); + // inverse transform and reconstruct the pixel block + RunInvTxfm(test_input_block, test_temp_block, dst, pitch, tx_type_); for (int j = 0; j < 16; ++j) { const int diff = dst[j] - src[j]; @@ -135,10 +179,12 @@ TEST(Vp9Fdct4x4Test, RoundTripErrorCheck) { } } EXPECT_GE(1, max_error) - << "Error: FDCT/IDCT has an individual roundtrip error > 1"; + << "Error: FDCT/IDCT or FHT/IHT has an individual roundtrip error > 1"; EXPECT_GE(count_test_block, total_error) - << "Error: FDCT/IDCT has average roundtrip error > 1 per block"; -}; + << "Error: FDCT/IDCT or FHT/IHT has average " + << "roundtrip error > 1 per block"; +} +INSTANTIATE_TEST_CASE_P(VP9, FwdTrans4x4Test, ::testing::Range(0, 4)); } // namespace diff --git a/libvpx/test/fdct8x8_test.cc b/libvpx/test/fdct8x8_test.cc index 90b4ecd..50e2e9d 100644 --- a/libvpx/test/fdct8x8_test.cc +++ b/libvpx/test/fdct8x8_test.cc @@ -13,6 +13,7 @@ #include <string.h> #include "third_party/googletest/src/include/gtest/gtest.h" +#include "vpx_ports/mem.h" extern "C" { #include "vp9_rtcd.h" @@ -25,11 +26,62 @@ void vp9_short_idct8x8_add_c(short *input, uint8_t *output, int pitch); using libvpx_test::ACMRandom; namespace { +void fdct8x8(int16_t *in, int16_t *out, uint8_t* /*dst*/, + int stride, int /*tx_type*/) { + vp9_short_fdct8x8_c(in, out, stride); +} +void idct8x8_add(int16_t* /*in*/, int16_t *out, uint8_t *dst, + int stride, int /*tx_type*/) { + vp9_short_idct8x8_add_c(out, dst, stride >> 1); +} +void fht8x8(int16_t *in, int16_t *out, uint8_t* /*dst*/, + int stride, int tx_type) { + // TODO(jingning): need to refactor this to test both _c and _sse2 functions, + // when we have all inverse dct functions done sse2. +#if HAVE_SSE2 + vp9_short_fht8x8_sse2(in, out, stride >> 1, tx_type); +#else + vp9_short_fht8x8_c(in, out, stride >> 1, tx_type); +#endif +} +void iht8x8_add(int16_t* /*in*/, int16_t *out, uint8_t *dst, + int stride, int tx_type) { + vp9_short_iht8x8_add_c(out, dst, stride >> 1, tx_type); +} + +class FwdTrans8x8Test : public ::testing::TestWithParam<int> { + public: + virtual ~FwdTrans8x8Test() {} + virtual void SetUp() { + tx_type_ = GetParam(); + if (tx_type_ == 0) { + fwd_txfm = fdct8x8; + inv_txfm = idct8x8_add; + } else { + fwd_txfm = fht8x8; + inv_txfm = iht8x8_add; + } + } + + protected: + void RunFwdTxfm(int16_t *in, int16_t *out, uint8_t *dst, + int stride, int tx_type) { + (*fwd_txfm)(in, out, dst, stride, tx_type); + } + void RunInvTxfm(int16_t *in, int16_t *out, uint8_t *dst, + int stride, int tx_type) { + (*inv_txfm)(in, out, dst, stride, tx_type); + } + + int tx_type_; + void (*fwd_txfm)(int16_t*, int16_t*, uint8_t*, int, int); + void (*inv_txfm)(int16_t*, int16_t*, uint8_t*, int, int); +}; -TEST(VP9Fdct8x8Test, SignBiasCheck) { +TEST_P(FwdTrans8x8Test, SignBiasCheck) { ACMRandom rnd(ACMRandom::DeterministicSeed()); - int16_t test_input_block[64]; - int16_t test_output_block[64]; + DECLARE_ALIGNED_ARRAY(16, int16_t, test_input_block, 64); + DECLARE_ALIGNED_ARRAY(16, int16_t, test_output_block, 64); const int pitch = 16; int count_sign_block[64][2]; const int count_test_block = 100000; @@ -41,7 +93,7 @@ TEST(VP9Fdct8x8Test, SignBiasCheck) { for (int j = 0; j < 64; ++j) test_input_block[j] = rnd.Rand8() - rnd.Rand8(); - vp9_short_fdct8x8_c(test_input_block, test_output_block, pitch); + RunFwdTxfm(test_input_block, test_output_block, NULL, pitch, tx_type_); for (int j = 0; j < 64; ++j) { if (test_output_block[j] < 0) @@ -55,7 +107,7 @@ TEST(VP9Fdct8x8Test, SignBiasCheck) { const int diff = abs(count_sign_block[j][0] - count_sign_block[j][1]); const int max_diff = 1125; EXPECT_LT(diff, max_diff) - << "Error: 8x8 FDCT has a sign bias > " + << "Error: 8x8 FDCT/FHT has a sign bias > " << 1. * max_diff / count_test_block * 100 << "%" << " for input range [-255, 255] at index " << j << " count0: " << count_sign_block[j][0] @@ -70,7 +122,7 @@ TEST(VP9Fdct8x8Test, SignBiasCheck) { for (int j = 0; j < 64; ++j) test_input_block[j] = (rnd.Rand8() >> 4) - (rnd.Rand8() >> 4); - vp9_short_fdct8x8_c(test_input_block, test_output_block, pitch); + RunFwdTxfm(test_input_block, test_output_block, NULL, pitch, tx_type_); for (int j = 0; j < 64; ++j) { if (test_output_block[j] < 0) @@ -84,24 +136,25 @@ TEST(VP9Fdct8x8Test, SignBiasCheck) { const int diff = abs(count_sign_block[j][0] - count_sign_block[j][1]); const int max_diff = 10000; EXPECT_LT(diff, max_diff) - << "Error: 4x4 FDCT has a sign bias > " + << "Error: 4x4 FDCT/FHT has a sign bias > " << 1. * max_diff / count_test_block * 100 << "%" << " for input range [-15, 15] at index " << j << " count0: " << count_sign_block[j][0] << " count1: " << count_sign_block[j][1] << " diff: " << diff; } -}; +} -TEST(VP9Fdct8x8Test, RoundTripErrorCheck) { +TEST_P(FwdTrans8x8Test, RoundTripErrorCheck) { ACMRandom rnd(ACMRandom::DeterministicSeed()); int max_error = 0; double total_error = 0; const int count_test_block = 100000; for (int i = 0; i < count_test_block; ++i) { - int16_t test_input_block[64]; - int16_t test_temp_block[64]; - uint8_t dst[64], src[64]; + DECLARE_ALIGNED_ARRAY(16, int16_t, test_input_block, 64); + DECLARE_ALIGNED_ARRAY(16, int16_t, test_temp_block, 64); + DECLARE_ALIGNED_ARRAY(16, uint8_t, dst, 64); + DECLARE_ALIGNED_ARRAY(16, uint8_t, src, 64); for (int j = 0; j < 64; ++j) { src[j] = rnd.Rand8(); @@ -112,7 +165,7 @@ TEST(VP9Fdct8x8Test, RoundTripErrorCheck) { test_input_block[j] = src[j] - dst[j]; const int pitch = 16; - vp9_short_fdct8x8_c(test_input_block, test_temp_block, pitch); + RunFwdTxfm(test_input_block, test_temp_block, dst, pitch, tx_type_); for (int j = 0; j < 64; ++j){ if(test_temp_block[j] > 0) { test_temp_block[j] += 2; @@ -124,7 +177,7 @@ TEST(VP9Fdct8x8Test, RoundTripErrorCheck) { test_temp_block[j] *= 4; } } - vp9_short_idct8x8_add_c(test_temp_block, dst, 8); + RunInvTxfm(test_input_block, test_temp_block, dst, pitch, tx_type_); for (int j = 0; j < 64; ++j) { const int diff = dst[j] - src[j]; @@ -136,21 +189,23 @@ TEST(VP9Fdct8x8Test, RoundTripErrorCheck) { } EXPECT_GE(1, max_error) - << "Error: 8x8 FDCT/IDCT has an individual roundtrip error > 1"; + << "Error: 8x8 FDCT/IDCT or FHT/IHT has an individual roundtrip error > 1"; EXPECT_GE(count_test_block/5, total_error) - << "Error: 8x8 FDCT/IDCT has average roundtrip error > 1/5 per block"; -}; + << "Error: 8x8 FDCT/IDCT or FHT/IHT has average roundtrip " + "error > 1/5 per block"; +} -TEST(VP9Fdct8x8Test, ExtremalCheck) { +TEST_P(FwdTrans8x8Test, ExtremalCheck) { ACMRandom rnd(ACMRandom::DeterministicSeed()); int max_error = 0; double total_error = 0; const int count_test_block = 100000; for (int i = 0; i < count_test_block; ++i) { - int16_t test_input_block[64]; - int16_t test_temp_block[64]; - uint8_t dst[64], src[64]; + DECLARE_ALIGNED_ARRAY(16, int16_t, test_input_block, 64); + DECLARE_ALIGNED_ARRAY(16, int16_t, test_temp_block, 64); + DECLARE_ALIGNED_ARRAY(16, uint8_t, dst, 64); + DECLARE_ALIGNED_ARRAY(16, uint8_t, src, 64); for (int j = 0; j < 64; ++j) { src[j] = rnd.Rand8() % 2 ? 255 : 0; @@ -161,8 +216,8 @@ TEST(VP9Fdct8x8Test, ExtremalCheck) { test_input_block[j] = src[j] - dst[j]; const int pitch = 16; - vp9_short_fdct8x8_c(test_input_block, test_temp_block, pitch); - vp9_short_idct8x8_add_c(test_temp_block, dst, 8); + RunFwdTxfm(test_input_block, test_temp_block, dst, pitch, tx_type_); + RunInvTxfm(test_input_block, test_temp_block, dst, pitch, tx_type_); for (int j = 0; j < 64; ++j) { const int diff = dst[j] - src[j]; @@ -173,13 +228,14 @@ TEST(VP9Fdct8x8Test, ExtremalCheck) { } EXPECT_GE(1, max_error) - << "Error: Extremal 8x8 FDCT/IDCT has an" + << "Error: Extremal 8x8 FDCT/IDCT or FHT/IHT has an" << " individual roundtrip error > 1"; EXPECT_GE(count_test_block/5, total_error) - << "Error: Extremal 8x8 FDCT/IDCT has average" + << "Error: Extremal 8x8 FDCT/IDCT or FHT/IHT has average" << " roundtrip error > 1/5 per block"; } -}; +} +INSTANTIATE_TEST_CASE_P(VP9, FwdTrans8x8Test, ::testing::Range(0, 4)); } // namespace diff --git a/libvpx/test/i420_video_source.h b/libvpx/test/i420_video_source.h index 12a6ab1..bcbe8a7 100644 --- a/libvpx/test/i420_video_source.h +++ b/libvpx/test/i420_video_source.h @@ -49,7 +49,7 @@ class I420VideoSource : public VideoSource { if (input_file_) fclose(input_file_); input_file_ = OpenTestDataFile(file_name_); - ASSERT_TRUE(input_file_) << "Input file open failed. Filename: " + ASSERT_TRUE(input_file_ != NULL) << "Input file open failed. Filename: " << file_name_; if (start_) { fseek(input_file_, raw_sz_ * start_, SEEK_SET); @@ -92,6 +92,7 @@ class I420VideoSource : public VideoSource { } virtual void FillFrame() { + ASSERT_TRUE(input_file_ != NULL); // Read a frame from input_file. if (fread(img_->img_data, raw_sz_, 1, input_file_) == 0) { limit_ = frame_; @@ -108,8 +109,8 @@ class I420VideoSource : public VideoSource { unsigned int frame_; unsigned int width_; unsigned int height_; - unsigned int framerate_numerator_; - unsigned int framerate_denominator_; + int framerate_numerator_; + int framerate_denominator_; }; } // namespace libvpx_test diff --git a/libvpx/test/idct_test.cc b/libvpx/test/idct_test.cc index 659cce0..aa786cb 100644 --- a/libvpx/test/idct_test.cc +++ b/libvpx/test/idct_test.cc @@ -8,7 +8,6 @@ * be found in the AUTHORS file in the root of the source tree. */ - extern "C" { #include "./vpx_config.h" #include "./vp8_rtcd.h" @@ -22,100 +21,94 @@ typedef void (*idct_fn_t)(short *input, unsigned char *pred_ptr, int dst_stride); namespace { class IDCTTest : public ::testing::TestWithParam<idct_fn_t> { - protected: - virtual void SetUp() { - int i; - - UUT = GetParam(); - memset(input, 0, sizeof(input)); - /* Set up guard blocks */ - for (i = 0; i < 256; i++) - output[i] = ((i & 0xF) < 4 && (i < 64)) ? 0 : -1; - } - - virtual void TearDown() { - libvpx_test::ClearSystemState(); - } - - idct_fn_t UUT; - short input[16]; - unsigned char output[256]; - unsigned char predict[256]; + protected: + virtual void SetUp() { + int i; + + UUT = GetParam(); + memset(input, 0, sizeof(input)); + /* Set up guard blocks */ + for (i = 0; i < 256; i++) output[i] = ((i & 0xF) < 4 && (i < 64)) ? 0 : -1; + } + + virtual void TearDown() { libvpx_test::ClearSystemState(); } + + idct_fn_t UUT; + short input[16]; + unsigned char output[256]; + unsigned char predict[256]; }; TEST_P(IDCTTest, TestGuardBlocks) { - int i; + int i; - for (i = 0; i < 256; i++) - if ((i & 0xF) < 4 && i < 64) - EXPECT_EQ(0, output[i]) << i; - else - EXPECT_EQ(255, output[i]); + for (i = 0; i < 256; i++) + if ((i & 0xF) < 4 && i < 64) + EXPECT_EQ(0, output[i]) << i; + else + EXPECT_EQ(255, output[i]); } TEST_P(IDCTTest, TestAllZeros) { - int i; + int i; - REGISTER_STATE_CHECK(UUT(input, output, 16, output, 16)); + REGISTER_STATE_CHECK(UUT(input, output, 16, output, 16)); - for (i = 0; i < 256; i++) - if ((i & 0xF) < 4 && i < 64) - EXPECT_EQ(0, output[i]) << "i==" << i; - else - EXPECT_EQ(255, output[i]) << "i==" << i; + for (i = 0; i < 256; i++) + if ((i & 0xF) < 4 && i < 64) + EXPECT_EQ(0, output[i]) << "i==" << i; + else + EXPECT_EQ(255, output[i]) << "i==" << i; } TEST_P(IDCTTest, TestAllOnes) { - int i; + int i; - input[0] = 4; - REGISTER_STATE_CHECK(UUT(input, output, 16, output, 16)); + input[0] = 4; + REGISTER_STATE_CHECK(UUT(input, output, 16, output, 16)); - for (i = 0; i < 256; i++) - if ((i & 0xF) < 4 && i < 64) - EXPECT_EQ(1, output[i]) << "i==" << i; - else - EXPECT_EQ(255, output[i]) << "i==" << i; + for (i = 0; i < 256; i++) + if ((i & 0xF) < 4 && i < 64) + EXPECT_EQ(1, output[i]) << "i==" << i; + else + EXPECT_EQ(255, output[i]) << "i==" << i; } TEST_P(IDCTTest, TestAddOne) { - int i; + int i; - for (i = 0; i < 256; i++) - predict[i] = i; - input[0] = 4; - REGISTER_STATE_CHECK(UUT(input, predict, 16, output, 16)); + for (i = 0; i < 256; i++) predict[i] = i; + input[0] = 4; + REGISTER_STATE_CHECK(UUT(input, predict, 16, output, 16)); - for (i = 0; i < 256; i++) - if ((i & 0xF) < 4 && i < 64) - EXPECT_EQ(i+1, output[i]) << "i==" << i; - else - EXPECT_EQ(255, output[i]) << "i==" << i; + for (i = 0; i < 256; i++) + if ((i & 0xF) < 4 && i < 64) + EXPECT_EQ(i + 1, output[i]) << "i==" << i; + else + EXPECT_EQ(255, output[i]) << "i==" << i; } TEST_P(IDCTTest, TestWithData) { - int i; - - for (i = 0; i < 16; i++) - input[i] = i; - - REGISTER_STATE_CHECK(UUT(input, output, 16, output, 16)); - - for (i = 0; i < 256; i++) - if ((i & 0xF) > 3 || i > 63) - EXPECT_EQ(255, output[i]) << "i==" << i; - else if (i == 0) - EXPECT_EQ(11, output[i]) << "i==" << i; - else if (i == 34) - EXPECT_EQ(1, output[i]) << "i==" << i; - else if (i == 2 || i == 17 || i == 32) - EXPECT_EQ(3, output[i]) << "i==" << i; - else - EXPECT_EQ(0, output[i]) << "i==" << i; + int i; + + for (i = 0; i < 16; i++) input[i] = i; + + REGISTER_STATE_CHECK(UUT(input, output, 16, output, 16)); + + for (i = 0; i < 256; i++) + if ((i & 0xF) > 3 || i > 63) + EXPECT_EQ(255, output[i]) << "i==" << i; + else if (i == 0) + EXPECT_EQ(11, output[i]) << "i==" << i; + else if (i == 34) + EXPECT_EQ(1, output[i]) << "i==" << i; + else if (i == 2 || i == 17 || i == 32) + EXPECT_EQ(3, output[i]) << "i==" << i; + else + EXPECT_EQ(0, output[i]) << "i==" << i; } -INSTANTIATE_TEST_CASE_P(C, IDCTTest, - ::testing::Values(vp8_short_idct4x4llm_c)); +INSTANTIATE_TEST_CASE_P(C, IDCTTest, ::testing::Values(vp8_short_idct4x4llm_c)); #if HAVE_MMX INSTANTIATE_TEST_CASE_P(MMX, IDCTTest, ::testing::Values(vp8_short_idct4x4llm_mmx)); diff --git a/libvpx/test/intrapred_test.cc b/libvpx/test/intrapred_test.cc index 39ec896..da96741 100644 --- a/libvpx/test/intrapred_test.cc +++ b/libvpx/test/intrapred_test.cc @@ -27,6 +27,8 @@ using libvpx_test::ACMRandom; class IntraPredBase { public: + virtual ~IntraPredBase() {} + virtual void TearDown() { libvpx_test::ClearSystemState(); } diff --git a/libvpx/test/ivf_video_source.h b/libvpx/test/ivf_video_source.h index 48c3a7d..926f801 100644 --- a/libvpx/test/ivf_video_source.h +++ b/libvpx/test/ivf_video_source.h @@ -47,12 +47,13 @@ class IVFVideoSource : public CompressedVideoSource { virtual void Init() { // Allocate a buffer for read in the compressed video frame. compressed_frame_buf_ = new uint8_t[libvpx_test::kCodeBufferSize]; - ASSERT_TRUE(compressed_frame_buf_) << "Allocate frame buffer failed"; + ASSERT_TRUE(compressed_frame_buf_ != NULL) + << "Allocate frame buffer failed"; } virtual void Begin() { input_file_ = OpenTestDataFile(file_name_); - ASSERT_TRUE(input_file_) << "Input file open failed. Filename: " + ASSERT_TRUE(input_file_ != NULL) << "Input file open failed. Filename: " << file_name_; // Read file header @@ -72,6 +73,7 @@ class IVFVideoSource : public CompressedVideoSource { } void FillFrame() { + ASSERT_TRUE(input_file_ != NULL); uint8_t frame_hdr[kIvfFrameHdrSize]; // Check frame header and read a frame from input_file. if (fread(frame_hdr, 1, kIvfFrameHdrSize, input_file_) diff --git a/libvpx/test/keyframe_test.cc b/libvpx/test/keyframe_test.cc index 85ca0b9..f7572e8 100644 --- a/libvpx/test/keyframe_test.cc +++ b/libvpx/test/keyframe_test.cc @@ -31,10 +31,6 @@ class KeyframeTest : public ::libvpx_test::EncoderTest, set_cpu_used_ = 0; } - virtual bool Continue() const { - return !HasFatalFailure() && !abort_; - } - virtual void PreEncodeFrameHook(::libvpx_test::VideoSource *video, ::libvpx_test::Encoder *encoder) { if (kf_do_force_kf_) diff --git a/libvpx/test/resize_test.cc b/libvpx/test/resize_test.cc index 0d591ad..7412a24 100644 --- a/libvpx/test/resize_test.cc +++ b/libvpx/test/resize_test.cc @@ -70,10 +70,6 @@ class ResizeTest : public ::libvpx_test::EncoderTest, SetMode(GET_PARAM(1)); } - virtual bool Continue() const { - return !HasFatalFailure() && !abort_; - } - virtual void DecompressedFrameHook(const vpx_image_t &img, vpx_codec_pts_t pts) { frame_info_list_.push_back(FrameInfo(pts, img.d_w, img.d_h)); diff --git a/libvpx/test/sad_test.cc b/libvpx/test/sad_test.cc index 1f5435f..bf3e0b8 100644 --- a/libvpx/test/sad_test.cc +++ b/libvpx/test/sad_test.cc @@ -452,10 +452,14 @@ const sad_m_by_n_fn_t sad_4x4_wmt = vp8_sad4x4_wmt; #endif #if CONFIG_VP9_ENCODER const sad_m_by_n_fn_t sad_64x64_sse2_vp9 = vp9_sad64x64_sse2; +const sad_m_by_n_fn_t sad_64x32_sse2_vp9 = vp9_sad64x32_sse2; +const sad_m_by_n_fn_t sad_32x64_sse2_vp9 = vp9_sad32x64_sse2; const sad_m_by_n_fn_t sad_32x32_sse2_vp9 = vp9_sad32x32_sse2; +const sad_m_by_n_fn_t sad_32x16_sse2_vp9 = vp9_sad32x16_sse2; +const sad_m_by_n_fn_t sad_16x32_sse2_vp9 = vp9_sad16x32_sse2; const sad_m_by_n_fn_t sad_16x16_sse2_vp9 = vp9_sad16x16_sse2; -const sad_m_by_n_fn_t sad_8x16_sse2_vp9 = vp9_sad8x16_sse2; const sad_m_by_n_fn_t sad_16x8_sse2_vp9 = vp9_sad16x8_sse2; +const sad_m_by_n_fn_t sad_8x16_sse2_vp9 = vp9_sad8x16_sse2; const sad_m_by_n_fn_t sad_8x8_sse2_vp9 = vp9_sad8x8_sse2; const sad_m_by_n_fn_t sad_8x4_sse2_vp9 = vp9_sad8x4_sse2; #endif @@ -469,10 +473,14 @@ const sad_m_by_n_test_param_t sse2_tests[] = { #endif #if CONFIG_VP9_ENCODER make_tuple(64, 64, sad_64x64_sse2_vp9), + make_tuple(64, 32, sad_64x32_sse2_vp9), + make_tuple(32, 64, sad_32x64_sse2_vp9), make_tuple(32, 32, sad_32x32_sse2_vp9), + make_tuple(32, 16, sad_32x16_sse2_vp9), + make_tuple(16, 32, sad_16x32_sse2_vp9), make_tuple(16, 16, sad_16x16_sse2_vp9), - make_tuple(8, 16, sad_8x16_sse2_vp9), make_tuple(16, 8, sad_16x8_sse2_vp9), + make_tuple(8, 16, sad_8x16_sse2_vp9), make_tuple(8, 8, sad_8x8_sse2_vp9), make_tuple(8, 4, sad_8x4_sse2_vp9), #endif diff --git a/libvpx/test/subtract_test.cc b/libvpx/test/subtract_test.cc index 81bfb66..574bfbf 100644 --- a/libvpx/test/subtract_test.cc +++ b/libvpx/test/subtract_test.cc @@ -61,7 +61,7 @@ TEST_P(SubtractBlockTest, SimpleSubtract) { int16_t *src_diff = be.src_diff; for (int r = 0; r < kBlockHeight; ++r) { for (int c = 0; c < kBlockWidth; ++c) { - src_diff[c] = 0xa5a5; + src_diff[c] = static_cast<int16_t>(0xa5a5); } src_diff += kDiffPredStride; } diff --git a/libvpx/test/superframe_test.cc b/libvpx/test/superframe_test.cc index 062ec6c..d91e7b1 100644 --- a/libvpx/test/superframe_test.cc +++ b/libvpx/test/superframe_test.cc @@ -33,10 +33,6 @@ class SuperframeTest : public ::libvpx_test::EncoderTest, delete[] modified_buf_; } - virtual bool Continue() const { - return !HasFatalFailure() && !abort_; - } - virtual void PreEncodeFrameHook(libvpx_test::VideoSource *video, libvpx_test::Encoder *encoder) { if (video->frame() == 1) { diff --git a/libvpx/test/test-data.sha1 b/libvpx/test/test-data.sha1 index 1036d7c..0ac4905 100644 --- a/libvpx/test/test-data.sha1 +++ b/libvpx/test/test-data.sha1 @@ -122,223 +122,401 @@ f95eb6214571434f1f73ab7833b9ccdf47588020 vp80-03-segmentation-1437.ivf.md5 086c56378df81b6cee264d7540a7b8f2b405c7a4 vp80-05-sharpness-1439.ivf.md5 d32dc2c4165eb266ea4c23c14a45459b363def32 vp80-05-sharpness-1440.ivf.md5 8c69dc3d8e563f56ffab5ad1e400d9e689dd23df vp80-05-sharpness-1443.ivf.md5 -c5b6fc822d7b4ed97b5a0d69e3a71d9de6cab815 vp90-00-akiyo-100.webm -1cd8ee73b53f4ecc2511effd233f9af6ecdfac7e vp90-00-akiyo-100.webm.md5 -a854b0f2313efde7767a4465afbcbe35005ffb07 vp90-00-akiyo-200.webm -b0f53ad309611246821174b642f6808cc1e670de vp90-00-akiyo-200.webm.md5 -38a5c0e5465f884474b1a5a9184685f17f961ba1 vp90-00-akiyo-300.webm -756a34417fc10dc2a49464eccaa6b7f987227b57 vp90-00-akiyo-300.webm.md5 -1047e6f19dd137ae7bbd5b93d407fc7186f8a98e vp90-00-akiyo-50.webm -0fa08a76901a6a5b2d4b58a6b20bfa5239409b9d vp90-00-akiyo-50.webm.md5 -767511b25dde2c5926f5284782a9f1e04fe7afda vp90-00-bowing-150.webm -b259c3c6afb30fd1ae7d3a563c1fe9fe6a4644cd vp90-00-bowing-150.webm.md5 -2ef831c75c021a03176536fb652196e9afc37888 vp90-00-bowing-25.webm -37d3522cd76b7bab3b5e973e2b2c51edea49ef3f vp90-00-bowing-25.webm.md5 -c1e4639f14914516ca704f38c875d01f4c06be14 vp90-00-bowing-400.webm -ca35c574512185d5f20f3b81517d6ac3333a1377 vp90-00-bowing-400.webm.md5 -e20fc293db095e52f29b891bc09458e7568e8603 vp90-00-bus-100.webm -a754ea588cc409546936c09fb1ad06b3014b94f9 vp90-00-bus-100.webm.md5 -da5eb45fa42f55ff70ec7b71999e6fd8489d12f9 vp90-00-bus-2000.webm -2a7356328eb991175cbddebd51a30018e48632f2 vp90-00-bus-2000.webm.md5 -607169c774664176aca7c7d46dabf04b9c3634e4 vp90-00-bus-300.webm -c84daa3a0290d73226b243dd630820ac97bf4fbd vp90-00-bus-300.webm.md5 -655902b54b9a8a882c11bc8bce1447f3b2085035 vp90-00-bus-4400.webm -f719ecd7b53c8e35fae735396629d1915ffc1ff9 vp90-00-bus-4400.webm.md5 -afcdca9763d233dd63fd67165a7b92ea679822af vp90-00-bus-800.webm -66e2a55560e570cae09520060f1ae315c7ea0a07 vp90-00-bus-800.webm.md5 -390b91c8566d94c3a869af77531585c38f9f78da vp90-00-cheer-1600.webm -3d47da26375a75afef0cf2123f5c808d0862e25d vp90-00-cheer-1600.webm.md5 -23419784db17a50e129e3bd030c20256cf0d6eb0 vp90-00-cheer-2800.webm -0df4676171f19e7807d719a9b8a6fadcefc8f1fc vp90-00-cheer-2800.webm.md5 -45ed3c42874d5ec88852798691cf54bfb0cf652a vp90-00-cheer-400.webm -374fd67ac9ae0e8146051b77963459c54b9eaaa2 vp90-00-cheer-400.webm.md5 -1c9459d824116a297ff0e90bed9be783005f9ac1 vp90-00-cheer-600.webm -9dc0d43f72c8eb49d51a9748fb9948495529a6b5 vp90-00-cheer-600.webm.md5 -a86c5af1929d2f929a5caf6ef847d0066086223b vp90-00-city-1200.webm -231c7f0f406e3a8d2328daee4c4466e1b4d47354 vp90-00-city-1200.webm.md5 -be9cf927e6ab517d7876925d21b3193b1373d03d vp90-00-city-2000.webm -487d60226a3a3039528a049e9c6e8243b07404e6 vp90-00-city-2000.webm.md5 -1f3cd649d5829d52c08da3323baa86b1dcf2d2de vp90-00-city-300.webm -8e3b38cfa2be757e46ea12cff11762cb50134615 vp90-00-city-300.webm.md5 -286f6ea64c33ce735b5b7806aac4ca5ee331af66 vp90-00-city-600.webm -7c51ead147ef4029094a2b455239090c1999d8fe vp90-00-city-600.webm.md5 -f7ecbd63bed06ed15afe0ba2a192f2cf7943714c vp90-00-coastguard-1200.webm -8c8fed2c64cc8fb330e9200e1e0f58a79b953b79 vp90-00-coastguard-1200.webm.md5 -2e63178e5b2c2cc84226df2b514c4dde46c32d70 vp90-00-coastguard-200.webm -128f2b22fdcfd02bc50e63b1cd6d40c0cc4998d6 vp90-00-coastguard-200.webm.md5 -97b779617d3c1ca8f50beda7126be5df913d071d vp90-00-coastguard-3600.webm -0da0ab4794439e6b8ab9ced41239e1307686be69 vp90-00-coastguard-3600.webm.md5 -5e060d66573a40f7f0a46ae9b6acb51b0afb2e3c vp90-00-coastguard-5200.webm -4ba526d4bb895c4794dc20edeb38b102a9b1bd92 vp90-00-coastguard-5200.webm.md5 -17810fa737f29d5b032836e38243bbb666f06636 vp90-00-container-1000.webm -7e0fd7e93c5a16394818f844aa5f2d5fa7a73ee2 vp90-00-container-1000.webm.md5 -38deb4f59cec9e62715dec2f3670ffe7b1cf493e vp90-00-container-200.webm -aa3229017f920750bd5d919e19ea6127ea05adc0 vp90-00-container-200.webm.md5 -8b1a67ef35d3f00981d23c41b56a0a2e09976312 vp90-00-container-50.webm -0a6f1a793b936ff1287326882f1165065a2dcea0 vp90-00-container-50.webm.md5 -4c724db691b7202b60b56107ec7b0abc6cc52bdc vp90-00-deadline-1000.webm -5903bd89be457be681a6c6c8fd8c19f4570173db vp90-00-deadline-1000.webm.md5 -ee5e19a8fe14d3e72b1314a012b49a3bc0586375 vp90-00-deadline-200.webm -77095f98406fa27a2da8661f21664c00292dcefc vp90-00-deadline-200.webm.md5 -8230b07aa0ee7adf3caabae4e3bef997929001eb vp90-00-deadline-50.webm -fc47a159b2d2b0bed93d4e2c35408243e70b6d24 vp90-00-deadline-50.webm.md5 -244d12cda51235dcc421fedbe12422b326f539e7 vp90-00-flower-100.webm -dfeca236450b5ff19c1558ad33fba7ab7ff75f27 vp90-00-flower-100.webm.md5 -d5b7057564f670f7bf82017e2abc3aed5656b810 vp90-00-flower-2000.webm -65118811f4d46ef1e911d520296731536d3a507e vp90-00-flower-2000.webm.md5 -a9c226643365f0c8ae03e780d55aa6c6fa9cc0e7 vp90-00-flower-300.webm -fa5193d1a6e6b9e8bb91f75e91a3a377f00fa42e vp90-00-flower-300.webm.md5 -b206284b51dec6219c46e9b03def38a94d91bf89 vp90-00-flower-4400.webm -c8a73acd8234b287e86465d03fbf4f886d1fefb2 vp90-00-flower-4400.webm.md5 -faff83d7b6aa89f5d9518ffc5d4b145eb02b6800 vp90-00-flower-800.webm -328dd1969804afc094d010f54f350bd05390d6a9 vp90-00-flower-800.webm.md5 -42caa40d3b76b8ae5e7573b95e09bc4e57bea835 vp90-00-football-1600.webm -167b8f58a85d83050d4c56391d6b2d9a9a205b9a vp90-00-football-1600.webm.md5 -4c4f93f594a8ef89a9ba903bbcff914022a5ad9d vp90-00-football-2800.webm -7995f7f91b13d4ab5badcd3f9282bd1fceba38f3 vp90-00-football-2800.webm.md5 -c3ff724e79b4ae0202929f3ed1a1a5b67d10901f vp90-00-football-400.webm -19164a0e58ca5d407282a867866e8ec4a0a08fea vp90-00-football-400.webm.md5 -95de1c4abceab3706f0225e3b9c5dc719901a6cf vp90-00-football-600.webm -4a4454ae4d65748a45eaa3decb783bbe0ba190dc vp90-00-football-600.webm.md5 -80eebcdae76459c00d14b6c50f7529377e53a1c2 vp90-00-foreman-1200.webm -8228cc5a7cc83970b3a65f9b49bc74733255b09c vp90-00-foreman-1200.webm.md5 -601d0ff4f058a3da3af4409e4117795f7c231fda vp90-00-foreman-2000.webm -e0c0b0aa6f9597984a2d78e799a00e0052710b2c vp90-00-foreman-2000.webm.md5 -30ebc327645d68bcc83eab72610bba22f877fb4c vp90-00-foreman-300.webm -080fc2adf29a84f02a3e4b5508fc2f8dc32f1440 vp90-00-foreman-300.webm.md5 -6b1a6be0f7bd7605b565750b3080be397d4c48a0 vp90-00-foreman-600.webm -f7713d3eba8d34d511ba1c9585a5a3f34e133ba5 vp90-00-foreman-600.webm.md5 -b080d9786abc89b4be59bffc5baba7b42fbc286a vp90-00-hallmonitor-1200.webm -77be47800b58001eb7a854d4d4a9b9823bbbe158 vp90-00-hallmonitor-1200.webm.md5 -05cd8e8d58ab8311ad528c27b4c89cdf268e749b vp90-00-hallmonitor-2000.webm -de1aa35c7172e78e07d6b197280214bbd362cc4e vp90-00-hallmonitor-2000.webm.md5 -908676b32b190e956518bb742d1415efceeb8c75 vp90-00-hallmonitor-300.webm -f9d39866db341d18256339e9fd2c0ec296f47702 vp90-00-hallmonitor-300.webm.md5 -1307c7f7558de34a6230912e684ff9571a05db5f vp90-00-hallmonitor-600.webm -954b292dd56be5c1bf153df440b132e1b1fbcb68 vp90-00-hallmonitor-600.webm.md5 -05f556288c5c4211420f7c332daded816f9b31b7 vp90-00-harbour-1200.webm -399481f93cc252f20ad5141dd402cf5363673578 vp90-00-harbour-1200.webm.md5 -fa62e449485c544c281030c5ccff32c60d4dd169 vp90-00-harbour-200.webm -3d0e1885befb2493c477384917797164d4fe58e4 vp90-00-harbour-200.webm.md5 -fa3a5e563c3d2215703c1a68f71fbe2168a42468 vp90-00-harbour-3600.webm -9af392f6b2cb5ec5c9446b7262206773df535319 vp90-00-harbour-3600.webm.md5 -476db4b15989a5a078f1d2fc5f9734d1d24f1da1 vp90-00-harbour-5200.webm -352a05b179dc1f86cf6ce27494a4a8fb42379d72 vp90-00-harbour-5200.webm.md5 -0ea17a4892383a2fd0be9f88f213f5f48f2a61f4 vp90-00-highway-100.webm -a2fe942955bafa83295d1381c9a25264764924c5 vp90-00-highway-100.webm.md5 -7ab80485670a5343a74c4a2454761ed3bed7ceef vp90-00-highway-1600.webm -fda9c82cb5d28a5ff5f7dae7c537e9187dfbd4cc vp90-00-highway-1600.webm.md5 -162d42e033dad04fd7ae3bf9d39e9e204c022edc vp90-00-highway-2800.webm -b882c93a2dc89feb6090b0f72e67ac8a59fc0986 vp90-00-highway-2800.webm.md5 -79b9a0e6fa6cdd2367228e9ac8d6a369a8d647e6 vp90-00-highway-50.webm -80ecf926372dbe8c1b4bcd68ea2101f78a93b02e vp90-00-highway-50.webm.md5 -a67fd02cbb75c1a757b5ea56b9eee46069bfadbf vp90-00-husky-100.webm -12cd583e791c8e5b40b5dffe4a9dbcc1929dc645 vp90-00-husky-100.webm.md5 -1a8b4302eb6f88b14a9acd4a6cbe62d0b380f2e4 vp90-00-husky-2000.webm -a9c2532e5d867d7627bb6767008b43b653cce904 vp90-00-husky-2000.webm.md5 -f56f66afd4d4512a49904275a1c942ba7379fec4 vp90-00-husky-300.webm -196dc386f104b7b9ed2ec6c6a1f104ce0319c2eb vp90-00-husky-300.webm.md5 -6ba3c16fd98d37a8de7023419682a3595778b9bc vp90-00-husky-4400.webm -2f4815ba97e352fcd0089d1a5883a0aff1e5394a vp90-00-husky-4400.webm.md5 -db04a296c377693dd6e974bea36256f4b14cddef vp90-00-husky-800.webm -7658473ad17ee689a37fda558c5a23816131cfc3 vp90-00-husky-800.webm.md5 -50cf9e34b61e1cf32c9dde2ebcc5f5703c379a41 vp90-00-ice-150.webm -806ceba91dc40c45eafc4d7ee61df9346c6fe5f9 vp90-00-ice-150.webm.md5 -4cfca1bea7aae6e4405abfca603cfbded13ded1a vp90-00-ice-400.webm -e4298abf05419973da89c0bfcdf0006b1606ebcd vp90-00-ice-400.webm.md5 -12e3ccfdf96c3f4eebeed8106c5daef6c2b28d83 vp90-00-ice-800.webm -6fb2aacb4d8131dcabaa61a9cd2497cd09854377 vp90-00-ice-800.webm.md5 -124977938c47ba739e918533bc5d6d73e41ce2ec vp90-00-mobile-1600.webm -603b2b523c8ed5922121d285567a845bb6693d35 vp90-00-mobile-1600.webm.md5 -93f204b90250791b884479be5da534a5bc6304ff vp90-00-mobile-2800.webm -21ec8735b774c66e192f7270c12075f598f700d5 vp90-00-mobile-2800.webm.md5 -fe9cdbfdeee2b7554efb532f646703cff55c2d2c vp90-00-mobile-400.webm -4def63c78ee09e90e6385d3122ada95343246102 vp90-00-mobile-400.webm.md5 -2a042aa8a06c45770dcb52c56a7f5cea6d51b8dd vp90-00-mobile-600.webm -03169f031dece0db3d89ce16cc3e0ee3eca21065 vp90-00-mobile-600.webm.md5 -7fc5b0b0c684d63e161c9c5932e1374327e15dd4 vp90-00-motherdaughter-100.webm -290ac7722caf4b15136b307a239c9b903113b9c4 vp90-00-motherdaughter-100.webm.md5 -67ddfce82bff083a1ceb108a7dcfb801791102f1 vp90-00-motherdaughter-300.webm -7696698d38e32f0afeb3a3e9a45b7fe3f237aaba vp90-00-motherdaughter-300.webm.md5 -ff65a1bee2fe384728017c5148df61379043d5b6 vp90-00-motherdaughter-600.webm -f0b167000bf40877d1ba7ba52a08b4310011c032 vp90-00-motherdaughter-600.webm.md5 -d73c54e676bd63424fc9ad8d0cef64e929081cf4 vp90-00-news-100.webm -71821b71a97823e9ba58563efc841dc6beefe9df vp90-00-news-100.webm.md5 -2937238d094863951eb8f218438b966d2b7b5430 vp90-00-news-300.webm -2587d0859a330cf6d8e0a135d1f586bb2a5033fc vp90-00-news-300.webm.md5 -65afdd4fc411951115b48435b8b65155594b5c99 vp90-00-news-600.webm -5815bb341db976f44dab97bb9cfba8ea0ca55502 vp90-00-news-600.webm.md5 -de5dd99ac04d3a937fc0951d06fb8f533fdc393a vp90-00-pamphlet-150.webm -0381d705fa490f35c772e3048b423b382088d546 vp90-00-pamphlet-150.webm.md5 -46f283284cb64b79243b2ea6aad709a526c26393 vp90-00-pamphlet-25.webm -f100fbebcad96f27ed8f340414b939bc738d49d0 vp90-00-pamphlet-25.webm.md5 -8df04ece12455c5c40f14cb089348260798c5f2b vp90-00-pamphlet-400.webm -66a2c87cd4194368d3477e9a334880b76c87e991 vp90-00-pamphlet-400.webm.md5 -a00e97e4a71f5e24f194c59cde7d41bc2c3af325 vp90-00-paris-1000.webm -53ef896e16d1b83aa5166945d149c7133401b3f0 vp90-00-paris-1000.webm.md5 -6b03388e0236f6171e20c73834858e3c87b441b2 vp90-00-paris-200.webm -55a324b0153c5d54cd0c0492fed8755c441fa18c vp90-00-paris-200.webm.md5 -429ec362a9600c8822652cf7e122e22bca033d69 vp90-00-paris-50.webm -4406226b7bddb11ede8ee0c442d52e5d3bbbde78 vp90-00-paris-50.webm.md5 -a7996d4e757ea484aa72e14f623d6c9e72537888 vp90-00-signirene-1000.webm -f65a1ac6e1ce77102e63fb363dbca361b8108c02 vp90-00-signirene-1000.webm.md5 -8c2f686179bc3e87a18b48bcb5058f3cd61e1b4c vp90-00-signirene-200.webm -b8ab16cba9392e49169c374eb1e0c1b763ccaefb vp90-00-signirene-200.webm.md5 -5f8f99c386dce64931bbd4fc42a59a78dc6fdba1 vp90-00-signirene-50.webm -fdb8c4bc302884d413a256634d3e2fbd92867c90 vp90-00-signirene-50.webm.md5 -d5074f0a5bcefe9fd651afbbebf0e0f3fedb965b vp90-00-silent-1000.webm -9c075894fbfb84791fcc7dbd3fcab15b0a9bd64e vp90-00-silent-1000.webm.md5 -32101f334f675715a8f411638dfda80afacc37a6 vp90-00-silent-200.webm -fb0dac37f31ca711443832046a6aaf868e69b357 vp90-00-silent-200.webm.md5 -0aaef50d7f94873e99ec7e39f59a6b74e92ad946 vp90-00-silent-50.webm -be9fc41965b5b63f7c7bbd6c91191e940903e012 vp90-00-silent-50.webm.md5 -5e22ad14c562733d4d4a3ce163b580ed4a64e6fe vp90-00-soccer-100.webm -1ca9a0016910cfca26def9944568749a168131d8 vp90-00-soccer-100.webm.md5 -2d9b2a0fa5ac210f8d7c646578698e045733ad4a vp90-00-soccer-2000.webm -f979078650057606ca770b3f03be4c509efb40a9 vp90-00-soccer-2000.webm.md5 -7b789360ffc1eb5a3735f8a1f8d248a24ca4267c vp90-00-soccer-300.webm -195d33b23ca8304519bd6e38e9657e53a04779d8 vp90-00-soccer-300.webm.md5 -3907318ef35573e4efc5c150d3aff271c7157501 vp90-00-soccer-4400.webm -4b43ceecae9a9a7d39a47347f9e20af3613827d1 vp90-00-soccer-4400.webm.md5 -c89920aa89194cb6a36f77dff8722573f0df7241 vp90-00-soccer-800.webm -1da71751009afa483a03e274a538df24c9f5e513 vp90-00-soccer-800.webm.md5 -efca14e8e0515a8f8ed3ded11fdbff24b09a7f9d vp90-00-stefan-1600.webm -6f103270ce03cc85b28dd1c86d0447922d810671 vp90-00-stefan-1600.webm.md5 -b99ab6a983d48c15aa3a9160d06286fca0074193 vp90-00-stefan-2800.webm -986a72dd9988c6bf4246cd5bd966ce991ba55319 vp90-00-stefan-2800.webm.md5 -eb962244ca51a101ad8f585df6be8f5f96691f18 vp90-00-stefan-400.webm -2747cfd8f74aedc370767f08129b35ace70e1fe7 vp90-00-stefan-400.webm.md5 -b507b8cedd0147c5316db8f84f35ace768c25069 vp90-00-stefan-600.webm -daeb369046c2dc27ecfde978b87fd8b49d83789f vp90-00-stefan-600.webm.md5 -c5c2dd891c2b5fe4a70845858ccb859df3455ee7 vp90-00-students-100.webm -d1be06dc636ece0c34ab8c17399888aaf19e0c19 vp90-00-students-100.webm.md5 -c9e4da3a8b455aa690d89338f32f9d76773cdd18 vp90-00-students-300.webm -a9aa72e1ee27063f8e9f13b4647cec01c8efb2d6 vp90-00-students-300.webm.md5 -e9e5072cd944a8994e50fce367975e3ce526bd67 vp90-00-students-600.webm -86525ce188a98a51f86fad27341729bb61d1ca8b vp90-00-students-600.webm.md5 -58deb053aeafefdfdf13741accf9fcbe4584ea94 vp90-00-tempete-1200.webm -ec395a2ec76b4c1e64e243366a8840da22ee3a65 vp90-00-tempete-1200.webm.md5 -5d35232eaa8ee149a917ff94536968fb37dad50e vp90-00-tempete-200.webm -7f8c7529f40d6b6d6de8e89dbf9697623d27c234 vp90-00-tempete-200.webm.md5 -c44eb147bc3f8682b96096fccef8beb4380c40db vp90-00-tempete-3600.webm -01fd23e412530fa2d5319a22886161957a747ee0 vp90-00-tempete-3600.webm.md5 -56ab322b34a750e16dcc8ccfb735a5b9270cedc4 vp90-00-tempete-5200.webm -1cf803409ae53b991bff10079af4ab07aaa2853d vp90-00-tempete-5200.webm.md5 -ffe48d52019c228e919f4b123028664b8d0c2f4b vp90-00-tennis-100.webm -406fda3367899995d4e37170063495832e2be372 vp90-00-tennis-100.webm.md5 -6c030f8142b1932fbe8eb5c2b39b3452a5eea3aa vp90-00-tennis-2000.webm -dcf20921e2a8ab0dcd09f7f6bdcdd35f979205ae vp90-00-tennis-2000.webm.md5 -3fe0df7b74f301b39e1b21e6926c69a8418b9b70 vp90-00-tennis-300.webm -80c8301d3a37b33ca50318ba000066a6ae9929dc vp90-00-tennis-300.webm.md5 -82a2497083b8dce6b1c73bcdf16323ea69d1cca9 vp90-00-tennis-4400.webm -83ce97bc09a7e1b2f2c3437195a8931d7608a62b vp90-00-tennis-4400.webm.md5 -2c8bd3a29bbd1085169bfcba9fdf65a37f4a16bb vp90-00-tennis-800.webm -9920a65e06d2e7025f13f3d8bf35670503875aed vp90-00-tennis-800.webm.md5 -26469062c5724c2cc4914436ef032bb55373f843 vp90-00-waterfall-150.webm -9b86373ce15302a9b22cef8f808ce0e37e6d2b65 vp90-00-waterfall-150.webm.md5 -410ba6af2ddca5110fa7a4c383dc8b28f38cf565 vp90-00-waterfall-200.webm -251892d3fdcbc9d7a20c22ba202ed4935222e5b8 vp90-00-waterfall-200.webm.md5 -40b643aff88aed3764c5b58c446a8fbbc5fb36d7 vp90-00-waterfall-400.webm -51f31a6b6408f8af4d107e0f2a3c1a274d4da6bb vp90-00-waterfall-400.webm.md5 -bd421141e01f53dc15ced790f9a96ab70a613260 vp90-00-waterfall-800.webm -1366efe772fccaa2b8a6ac3ce45255b312a2ef6c vp90-00-waterfall-800.webm.md5 +ce881e567fe1d0fbcb2d3e9e6281a1a8d74d82e0 vp90-2-00-quantizer-00.webm +ac5eda33407d0521c7afca43a63fd305c0cd9d13 vp90-2-00-quantizer-00.webm.md5 +2ca0463f2cfb93d25d7dded174db70b7cb87cb48 vp90-2-00-quantizer-01.webm +10d98884fc6d9a5f47a2057922b8e25dd48d7786 vp90-2-00-quantizer-01.webm.md5 +d80a2920a5e0819d69dcba8fe260c01f820f8982 vp90-2-00-quantizer-02.webm +c964c8e5e04165fabbf1c6ee8ee5121d35921965 vp90-2-00-quantizer-02.webm.md5 +fdef046777b5b75c962b715d809dbe2ea331afb9 vp90-2-00-quantizer-03.webm +f270bee0b0c7aa2bf4c5afe098556b4f3f890faf vp90-2-00-quantizer-03.webm.md5 +66d98609e809394a6ac730787e6724e3badc075a vp90-2-00-quantizer-04.webm +427433bfe121c4aea1095ec3124fdc174d200e3a vp90-2-00-quantizer-04.webm.md5 +e6e42626d8cadf0b5be16313f69212981b96fee5 vp90-2-00-quantizer-05.webm +c98f6a9a1af4cfd71416792827304266aad4bd46 vp90-2-00-quantizer-05.webm.md5 +413ef09b721f5dcec1a96e937a97e5873c2e6db6 vp90-2-00-quantizer-06.webm +5080e940a23805c82e578e21b57fc2c511e76376 vp90-2-00-quantizer-06.webm.md5 +4a50a5f4ac717c30dfaae8bb46702e3542e867de vp90-2-00-quantizer-07.webm +76c429a02b56762e10ee4db88729d8834b3a70f4 vp90-2-00-quantizer-07.webm.md5 +d2f4e464780bf8b7e647efa18ac777a930e62bc0 vp90-2-00-quantizer-08.webm +ab94aabf9316111b52d7c531962ed4123313b6ba vp90-2-00-quantizer-08.webm.md5 +174bc58433936dd79550398d744f1072ce7f5693 vp90-2-00-quantizer-09.webm +e1f7690cd83ccc56d045e17cce552544a5f03810 vp90-2-00-quantizer-09.webm.md5 +52bc1dfd3a97b24d922eb8a31d07527891561f2a vp90-2-00-quantizer-10.webm +9b37bed893b5f6a4e12f2aa40f02dd40f944d0f8 vp90-2-00-quantizer-10.webm.md5 +10031eecafde1e1d8e6323fe2b2a1d7e77a66869 vp90-2-00-quantizer-11.webm +fe4620a4bb0e4f5cb9bbfedc4039a22b81b0f5c0 vp90-2-00-quantizer-11.webm.md5 +78e9f7bb77e8e348155bbdfa12790789d1d50c34 vp90-2-00-quantizer-12.webm +0961d060cc8dd469c6dac8d7d75f927c0bb971b8 vp90-2-00-quantizer-12.webm.md5 +133b77a3bbcef652552d74ffc46afbfe3b8a1cba vp90-2-00-quantizer-13.webm +df29e5e0f95772af482f540d776f6b9dea4bfa29 vp90-2-00-quantizer-13.webm.md5 +27323afdaf8987e025c27129c74c86502315a206 vp90-2-00-quantizer-14.webm +ce96a2cc312942f0427a463f15a392870dd69764 vp90-2-00-quantizer-14.webm.md5 +ab58d0b41037829f6bc993910999f4af0212aafd vp90-2-00-quantizer-15.webm +40f700db606501aa7cb49049624cbdde6409b122 vp90-2-00-quantizer-15.webm.md5 +cd948e66448aafb65998815ce37241f95d7c9ee7 vp90-2-00-quantizer-16.webm +039b742d149c945ed79c7b9a6384352852a1c116 vp90-2-00-quantizer-16.webm.md5 +62f56e663e13c576764e491cf08f19bd46a71999 vp90-2-00-quantizer-17.webm +90c5a39bf76e6b3e0a1c0d3e9b68a9fd78be963e vp90-2-00-quantizer-17.webm.md5 +f26ecad7263cd66a614e53ba5d7c00df181affeb vp90-2-00-quantizer-18.webm +cda0a1c0fca2ec2976ae55124a8a67305508bae6 vp90-2-00-quantizer-18.webm.md5 +94bfc4c04fcfe139a63b98c569e8c14ba98c401f vp90-2-00-quantizer-19.webm +5b8ec169ccf67d8a0a8e46a62eb173f5a1dbaf4f vp90-2-00-quantizer-19.webm.md5 +0ee88e9318985e1e245de78c2c4a665885ab76a7 vp90-2-00-quantizer-20.webm +4b26f7edb4fcd3a1b4cce9ba3cb8650e3ee6e063 vp90-2-00-quantizer-20.webm.md5 +6a995cb2b1db33da8087321df1e646f95c3e32d1 vp90-2-00-quantizer-21.webm +e216b4a1eceac03efcc433759be54ab8ea87b24b vp90-2-00-quantizer-21.webm.md5 +aa7722fc427e7180115f3c9cd96bb6b2768e7296 vp90-2-00-quantizer-22.webm +1aa813bd45ae831bf5e79ace4d73dfd25989a07d vp90-2-00-quantizer-22.webm.md5 +7677e5b929ed6d142041f19b8a9cd5822ee1504a vp90-2-00-quantizer-23.webm +0de0af34abd843d5b37e58baf3ed96a6104b64c3 vp90-2-00-quantizer-23.webm.md5 +b2995cbe1128b2d4926f1b28d01c501ecb6be8c8 vp90-2-00-quantizer-24.webm +db6033af2ba2f2bca62468fb4b8808e474f93923 vp90-2-00-quantizer-24.webm.md5 +8135ba35587fd92cd4667be7896323d9b634401c vp90-2-00-quantizer-25.webm +3499e00c2cc15876f61f07e3d3cfca54ebcd98fd vp90-2-00-quantizer-25.webm.md5 +af0fa2907746db82d345f6d831fcc1b2862a29fb vp90-2-00-quantizer-26.webm +cd6fe3d14dab48886ebf65be00e6ed9616ebe5a7 vp90-2-00-quantizer-26.webm.md5 +bd0002e91323776beb5ff11e06edcf19fc08e9b9 vp90-2-00-quantizer-27.webm +fe72154ef196067d6c272521012dd79706496cac vp90-2-00-quantizer-27.webm.md5 +fc15eb606f81455ff03df16bf3432296b002c43c vp90-2-00-quantizer-28.webm +40b2e24b542206a6bfd746ef199e49ccea07678a vp90-2-00-quantizer-28.webm.md5 +3090bbf913cad0b2eddca7228f5ed51a58378b8d vp90-2-00-quantizer-29.webm +eb59745e0912d8ed6c928268bcf265237c9ba93f vp90-2-00-quantizer-29.webm.md5 +c615abdca9c25e1cb110d908edbedfb3b7c92b91 vp90-2-00-quantizer-30.webm +ad0f4fe6733e4e7cdfe8ef8722bb341dcc7538c0 vp90-2-00-quantizer-30.webm.md5 +037d9f242086cfb085518f6416259defa82d5fc2 vp90-2-00-quantizer-31.webm +4654b40792572f0a790874c6347ef9196d86c1a7 vp90-2-00-quantizer-31.webm.md5 +505899f3f3515044c5c8b3213d9b9d16f614619d vp90-2-00-quantizer-32.webm +659a2e6dd02df323f62600626859006640b445df vp90-2-00-quantizer-32.webm.md5 +8b32ec9c3b7e5ca8ddc6b8aea1c1cb7ca996bccc vp90-2-00-quantizer-33.webm +5b175ef1120ddeba4feae1247bf381bbc4e816ce vp90-2-00-quantizer-33.webm.md5 +4d283755d17e287b1d099a80604398f60d7fb6ea vp90-2-00-quantizer-34.webm +22a739de95acfeb27524e3700b8f678a9ad744d8 vp90-2-00-quantizer-34.webm.md5 +4296f56a892a412d3d4f64824718dd566c4e6459 vp90-2-00-quantizer-35.webm +c532c9c8dc7b3506fc6a51e5c20c17ef0ac039e7 vp90-2-00-quantizer-35.webm.md5 +6f54e11da461e4410dd9075b015e2d9bc1d07dfb vp90-2-00-quantizer-36.webm +0b3573f5addea4e3eb11a0b85f068299d5bdad78 vp90-2-00-quantizer-36.webm.md5 +210581682a26c2c4375efc785c36e07539888bc2 vp90-2-00-quantizer-37.webm +2b4fb6f8ba975237858e61cc8f560bcfc87cb38e vp90-2-00-quantizer-37.webm.md5 +a15ef31283dfc4860f837fe200eb32a445f59629 vp90-2-00-quantizer-38.webm +fb76771f3a795054b9936f70da7505c3ac585284 vp90-2-00-quantizer-38.webm.md5 +1df8433a441412831daae6726df89fa70d21b14d vp90-2-00-quantizer-39.webm +39e162c09a20e7e684868097766347014371fee6 vp90-2-00-quantizer-39.webm.md5 +5330e4788ab9129dbb25a7a7d5411104521248b6 vp90-2-00-quantizer-40.webm +872cc0f2cc9dbf000f89eadb4d8f9940e48e00b1 vp90-2-00-quantizer-40.webm.md5 +d88d03b982889e399a78d7a06eeb1cf30e6c2da2 vp90-2-00-quantizer-41.webm +5b4f7217e57fa2a221011d0b32f8d0409496b7b6 vp90-2-00-quantizer-41.webm.md5 +9e16406e3e26955a6e17d455ef1ef64bbfa26e53 vp90-2-00-quantizer-42.webm +0219d090cf37daabe19256ba8e932ba4874b92e4 vp90-2-00-quantizer-42.webm.md5 +a9b15843486fb05f8cd15437ef279782a42b75db vp90-2-00-quantizer-43.webm +3c9b0b4c607f9579a31726bfcf56729334ddc686 vp90-2-00-quantizer-43.webm.md5 +1dbc931ac446c91eabe7213efff55b596cccf07c vp90-2-00-quantizer-44.webm +73bc8f675103abaef3d9f73a2742b3bffd726d23 vp90-2-00-quantizer-44.webm.md5 +7c6c1be15beb9d6201204b018966c8c4f9777efc vp90-2-00-quantizer-45.webm +c907b29da821f790c6748de61f592689312e4e36 vp90-2-00-quantizer-45.webm.md5 +07b434da1a467580f73b32177ee11b3e00f65a0d vp90-2-00-quantizer-46.webm +7b2b7ce60c50bc970bc0ada46d7a7ce440148da3 vp90-2-00-quantizer-46.webm.md5 +233d0465fb1a6fa36e9f89bd2193ac79bd4d2809 vp90-2-00-quantizer-47.webm +527e0a9fb932efe915027ffe077f9e8d3a4fb139 vp90-2-00-quantizer-47.webm.md5 +719613df7307e205c3fdb6acfb373849c5ab23c7 vp90-2-00-quantizer-48.webm +65ab6c9d1b682c183b201c7ff42b90343ce3e304 vp90-2-00-quantizer-48.webm.md5 +3bf04a598325ed0eabae1598ec7f718f715ec672 vp90-2-00-quantizer-49.webm +ac68c4387ce11fcc998d8ba455ab9b2bb361d240 vp90-2-00-quantizer-49.webm.md5 +d59238fb3a654931c9b65a11e7321b40d1f702e9 vp90-2-00-quantizer-50.webm +d0576bfede46fd55659f028f2fd28554ceb3e6cc vp90-2-00-quantizer-50.webm.md5 +3f579785101d4209360dd96f8c2ffe9beddf3bee vp90-2-00-quantizer-51.webm +89fcfe04f4457a7f02ab4a2f94aacbb88aee5789 vp90-2-00-quantizer-51.webm.md5 +28be5836e2fedefe4babf12fc9b79e460ab0a0f4 vp90-2-00-quantizer-52.webm +f3dd52b70c18345fee740220f35da9c4def2017a vp90-2-00-quantizer-52.webm.md5 +488ad4058c17170665b6acd1021fade9a02771e4 vp90-2-00-quantizer-53.webm +1cdcb1d4f3a37cf83ad235eb27ec62ed2a01afc7 vp90-2-00-quantizer-53.webm.md5 +682978289cb28cc8c9d39bc797300e45d6039de7 vp90-2-00-quantizer-54.webm +36c35353f2c03cb099bd710d9994de7d9ed88834 vp90-2-00-quantizer-54.webm.md5 +c398ce49af762a48f10cc4da9fae0769aae5f226 vp90-2-00-quantizer-55.webm +2cf3570542d984f167ab087f59493c7fb47e0ed2 vp90-2-00-quantizer-55.webm.md5 +3071f18b2fce261aa82d61f81a7ae4ca9a75d0e3 vp90-2-00-quantizer-56.webm +d3f93f8272b6de31cffb011a26f11abb514efb12 vp90-2-00-quantizer-56.webm.md5 +f4e8e14b1f278801a7eb6f11734780a01b1668e9 vp90-2-00-quantizer-57.webm +6478fdf1d7faf6db5f19dffc5e1363af358699ee vp90-2-00-quantizer-57.webm.md5 +307dc264f57cc618fff211fa44d7f52767ed9660 vp90-2-00-quantizer-58.webm +cf231d4a52d492fa692ea4194ec5eb7511fec54e vp90-2-00-quantizer-58.webm.md5 +1fd7cd596170afce2de0b1441b7674bda5723440 vp90-2-00-quantizer-59.webm +4681f7ef96f63e085c41bb1a964b0df7e67e0b38 vp90-2-00-quantizer-59.webm.md5 +34cdcc81c0ba7085aefbb22d7b4aa9bca3dd7c62 vp90-2-00-quantizer-60.webm +58691ef53b6b623810e2c57ded374c77535df935 vp90-2-00-quantizer-60.webm.md5 +e6e812406aab81021bb16e772c1db03f75906cb6 vp90-2-00-quantizer-61.webm +76436eace62f08ff92b61a0845e66667a027db1b vp90-2-00-quantizer-61.webm.md5 +84d811bceed70c950a6a08e572a6e274866e72b1 vp90-2-00-quantizer-62.webm +2d937cc011eeddd95222b960982da5cd18db580f vp90-2-00-quantizer-62.webm.md5 +0912b295ba0ea09359315315ffd67d22d046f883 vp90-2-00-quantizer-63.webm +5a829031055d70565f57dbcd47a6ac33619952b3 vp90-2-00-quantizer-63.webm.md5 +0cf9e5ebe0112bdb47b5887ee5d58eb9d4727c00 vp90-2-01-sharpness-1.webm +5a0476be4448bae8f8ca17ea236c98793a755948 vp90-2-01-sharpness-1.webm.md5 +51e02d7911810cdf5be8b68ac40aedab479a3179 vp90-2-01-sharpness-2.webm +a0ca5bc87a5ed7c7051f59078daa0d03be1b45b6 vp90-2-01-sharpness-2.webm.md5 +0603f8ad239c07a531d948187f4dafcaf51eda8d vp90-2-01-sharpness-3.webm +3af8000a69c72fe77881e3176f026c2affb78cc7 vp90-2-01-sharpness-3.webm.md5 +4ca4839f48146252fb261ed88838d80211804841 vp90-2-01-sharpness-4.webm +08832a1494f84fa9edd40e080bcf2c0e80100c76 vp90-2-01-sharpness-4.webm.md5 +95099dc8f9cbaf9b9a7dd65311923e441ff70731 vp90-2-01-sharpness-5.webm +93ceee30c140f0b406726c0d896b9db6031c4c7f vp90-2-01-sharpness-5.webm.md5 +ceb4116fb7b078d266d153233b6d62a255a34e4c vp90-2-01-sharpness-6.webm +da83efe59e537ce538e8b03a6eac63cf25849c9a vp90-2-01-sharpness-6.webm.md5 +b5f7cd19aece3880f9d616a778e5cc24c6b9b505 vp90-2-01-sharpness-7.webm +2957408d20deac8633941a2169f801bae6f086e1 vp90-2-01-sharpness-7.webm.md5 +ffc096c2ce1050450ad462b5fabd2a5220846319 vp90-2-02-size-08x08.webm +e36d2ed6fa2746347710b750586aafa6a01ff3ae vp90-2-02-size-08x08.webm.md5 +895b986f9fd55cd879472b31c6a06b82094418c8 vp90-2-02-size-08x10.webm +079157a19137ccaebba606f2871f45a397347150 vp90-2-02-size-08x10.webm.md5 +1c5992203e62a2b83040ccbecd748b604e19f4c0 vp90-2-02-size-08x16.webm +9aa45ffdf2078f883bbed01450031b691819c144 vp90-2-02-size-08x16.webm.md5 +d0a8953da1f85f484487408fee5da9e2a8391901 vp90-2-02-size-08x18.webm +59a5cc17d354c6a23e5e959d666b1456a5d49c56 vp90-2-02-size-08x18.webm.md5 +1b13461a9fc65cb041bacfe4ea6f02d363397d61 vp90-2-02-size-08x32.webm +2bdddd6878f05d37d84cde056a3f5e7f926ba3d6 vp90-2-02-size-08x32.webm.md5 +2861f0a0daadb62295b0504a1fbe5b50c79a8f59 vp90-2-02-size-08x34.webm +6b5812cfb8a82d378ea2913bf009e93668020147 vp90-2-02-size-08x34.webm.md5 +02f948216d4246579dc53c47fe55d8fb264ba251 vp90-2-02-size-08x64.webm +84b55fdee6d9aa820c7a8c62822446184b191767 vp90-2-02-size-08x64.webm.md5 +4b011242cbf42516efd2b197baebb61dd34562c9 vp90-2-02-size-08x66.webm +6b1fa0a885947b3cc0fe58f75f838e662bd9bb8b vp90-2-02-size-08x66.webm.md5 +4057796be9dd12df48ab607f502ae6aa70eeeab6 vp90-2-02-size-10x08.webm +71c752c51aec9f48de286b93f4c20e9c11cad7d0 vp90-2-02-size-10x08.webm.md5 +6583c853fa43fc53d51743eac5f3a43a359d45d0 vp90-2-02-size-10x10.webm +1da524d24af1944b671d4d3f2b398d6e336584c3 vp90-2-02-size-10x10.webm.md5 +ba442fc03ccd3a705c64c83b36f5ada67d198874 vp90-2-02-size-10x16.webm +7cfd960f232c34c641a4a2a9411b6fd0efb2fc50 vp90-2-02-size-10x16.webm.md5 +cc92ed40eef14f52e4d080cb2c57939dd8326374 vp90-2-02-size-10x18.webm +db5626275cc55ce970b91c995e74f6838d943aca vp90-2-02-size-10x18.webm.md5 +3a93d501d22325e9fd4c9d8b82e2a432de33c351 vp90-2-02-size-10x32.webm +5cae51b0c71cfc131651f345f87583eb2903afaf vp90-2-02-size-10x32.webm.md5 +50d2f2b15a9a5178153db44a9e03aaf32b227f67 vp90-2-02-size-10x34.webm +bb0efe058122641e7f73e94497dda2b9e6c21efd vp90-2-02-size-10x34.webm.md5 +01624ec173e533e0b33fd9bdb91eb7360c7c9175 vp90-2-02-size-10x64.webm +b9c0e3b054463546356acf5157f9be92fd34732f vp90-2-02-size-10x64.webm.md5 +2942879baf1c09e96b14d0fc84806abfe129c706 vp90-2-02-size-10x66.webm +bab5f539c2f91952e187456b4beafbb4c01e25ee vp90-2-02-size-10x66.webm.md5 +88d2b63ca5e9ee163d8f20e8886f3df3ff301a66 vp90-2-02-size-16x08.webm +7f48a0fcf8c25963f3057d7f6669c5f2415834b8 vp90-2-02-size-16x08.webm.md5 +59261eb34c15ea9b5ddd2d416215c1a8b9e6dc1f vp90-2-02-size-16x10.webm +73a7c209a46dd051c9f7339b6e02ccd5b3b9fc81 vp90-2-02-size-16x10.webm.md5 +066834fef9cf5b9a72932cf4dea5f253e14a976d vp90-2-02-size-16x16.webm +faec542f52f37601cb9c480d887ae9355be99372 vp90-2-02-size-16x16.webm.md5 +195307b4eb3192271ee4a935b0e48deef0c54cc2 vp90-2-02-size-16x18.webm +5a92e19e624c0376321d4d0e22c0c91995bc23e1 vp90-2-02-size-16x18.webm.md5 +14f3f884216d7ae16ec521f024a2f2d31bbf9c1a vp90-2-02-size-16x32.webm +ea622d1c817dd174556f7ee7ccfe4942b34d4845 vp90-2-02-size-16x32.webm.md5 +2e0501100578a5da9dd47e4beea160f945bdd1ba vp90-2-02-size-16x34.webm +1b8645ef64239334921c5f56b24ce815e6070b05 vp90-2-02-size-16x34.webm.md5 +89a6797fbebebe93215f367229a9152277f5dcfe vp90-2-02-size-16x64.webm +a03d8c1179ca626a8856fb416d635dbf377979cd vp90-2-02-size-16x64.webm.md5 +0f3a182e0750fcbae0b9eae80c7a53aabafdd18d vp90-2-02-size-16x66.webm +8cb6736dc2d897c1283919a32068af377d66c59c vp90-2-02-size-16x66.webm.md5 +68fe70dc7914cc1d8d6dcd97388b79196ba3e7f1 vp90-2-02-size-18x08.webm +874c7fb505be9db3160c57cb405c4dbd5b990dc2 vp90-2-02-size-18x08.webm.md5 +0546352dd78496d4dd86c3727ac2ff36c9e72032 vp90-2-02-size-18x10.webm +1d80eb36557ea5f25a386495a36f93da0f25316b vp90-2-02-size-18x10.webm.md5 +60fe99e5f5cc99706efa3e0b894e45cbcf0d6330 vp90-2-02-size-18x16.webm +1ab6cdd89a53662995d103546e6611c84f9292ab vp90-2-02-size-18x16.webm.md5 +f9a8f5fb749d69fd555db6ca093b7f77800c7b4f vp90-2-02-size-18x18.webm +ace8a66328f7802b15f9989c2720c029c6abd279 vp90-2-02-size-18x18.webm.md5 +a197123a527ec25913a9bf52dc8c347749e00045 vp90-2-02-size-18x32.webm +34fbd7036752232d1663e70d7f7cdc93f7129202 vp90-2-02-size-18x32.webm.md5 +f219655a639a774a2c9c0a9f45c28dc0b5e75e24 vp90-2-02-size-18x34.webm +2c4d622a9ea548791c1a07903d3702e9774388bb vp90-2-02-size-18x34.webm.md5 +5308578da48c677d477a5404e19391d1303033c9 vp90-2-02-size-18x64.webm +e7fd4462527bac38559518ba80e41847db880f15 vp90-2-02-size-18x64.webm.md5 +e109a7e013bd179f97e378542e1e81689ed06802 vp90-2-02-size-18x66.webm +45c04e422fb383c1f3be04beefaa4490e83bdb1a vp90-2-02-size-18x66.webm.md5 +38844cae5d99caf445f7de33c3ae78494ce36c01 vp90-2-02-size-32x08.webm +ad018be39e493ca2405225034b1a5b7a42af6f3a vp90-2-02-size-32x08.webm.md5 +7b57eaad55906f9de9903c8657a3fcb2aaf792ea vp90-2-02-size-32x10.webm +2294425d4e55d275af5e25a0beac9738a1b4ee73 vp90-2-02-size-32x10.webm.md5 +f47ca2ced0d47f761bb0a5fdcd911d3f450fdcc1 vp90-2-02-size-32x16.webm +ae10981d93913f0ab1f28c1146255e01769aa8c0 vp90-2-02-size-32x16.webm.md5 +08b23ad838b6cf1fbfe3ad7e7775d95573e815fc vp90-2-02-size-32x18.webm +1ba76f4c4a4ac7aabfa3ce195c1b473535eb7cc8 vp90-2-02-size-32x18.webm.md5 +d5b88ae6c8c25c53dee74d9f1e6ca64244349a57 vp90-2-02-size-32x32.webm +e39c067a8ee2da52a51641eb1cb7f8eba935eb6b vp90-2-02-size-32x32.webm.md5 +529429920dc36bd899059fa75a767f02c8c60874 vp90-2-02-size-32x34.webm +56888e7834f52b106e8911e3a7fc0f473b609995 vp90-2-02-size-32x34.webm.md5 +38e848e160391c2b1a55040aadde613b9f4bf15e vp90-2-02-size-32x64.webm +8950485fb3f68b0e8be234db860e4ec5f5490fd0 vp90-2-02-size-32x64.webm.md5 +5e8670f0b8ec9cefa8795b8959ffbe1a8e1aea94 vp90-2-02-size-32x66.webm +225df9d7d72ec711b0b60f4aeb65311c97db054a vp90-2-02-size-32x66.webm.md5 +695f929e2ce6fb11a1f180322d46c5cb1c97fa61 vp90-2-02-size-34x08.webm +5bb4262030018dd01883965c6aa6070185924ef6 vp90-2-02-size-34x08.webm.md5 +5adf74ec906d2ad3f7526e06bd29f5ad7d966a90 vp90-2-02-size-34x10.webm +71c100b437d3e8701632ae8d65c3555339b1c68f vp90-2-02-size-34x10.webm.md5 +d0918923c987fba2d00193d83797b21289fe54aa vp90-2-02-size-34x16.webm +5d5a52f3535b4d2698dd3d87f4a13fdc9b57163d vp90-2-02-size-34x16.webm.md5 +553ab0042cf87f5e668ec31b2e4b2a4b6ec196fd vp90-2-02-size-34x18.webm +a164c7f3c424987df2340496e6a8cf76e973f0f1 vp90-2-02-size-34x18.webm.md5 +baf3e233634f150de81c18ba5d8848068e1c3c54 vp90-2-02-size-34x32.webm +22a79d3bd1c9b85dfe8c70bb2e19f08a92a8be03 vp90-2-02-size-34x32.webm.md5 +6d50a533774a7167350e4a7ef43c94a5622179a2 vp90-2-02-size-34x34.webm +0c099638e79c273546523e06704553e42eb00b00 vp90-2-02-size-34x34.webm.md5 +698cdd0a5e895cc202c488675e682a8c537ede4f vp90-2-02-size-34x64.webm +9317b63987cddab8389510a27b86f9f3d46e3fa5 vp90-2-02-size-34x64.webm.md5 +4b5335ca06f082b6b69f584eb8e7886bdcafefd3 vp90-2-02-size-34x66.webm +e18d68b35428f46a84a947c646804a51ef1d7cec vp90-2-02-size-34x66.webm.md5 +a54ae7b494906ec928a876e8290e5574f2f9f6a2 vp90-2-02-size-64x08.webm +87f9f7087b6489d45e9e4b38ede2c5aef4a4928f vp90-2-02-size-64x08.webm.md5 +24522c70804a3c23d937df2d829ae63965b23f38 vp90-2-02-size-64x10.webm +447ce03938ab53bffcb4a841ee0bfaa90462dcb9 vp90-2-02-size-64x10.webm.md5 +2a5035d035d214ae614af8051930690ef623989b vp90-2-02-size-64x16.webm +84e355761dd2e0361b904c84c52a0dd0384d89cf vp90-2-02-size-64x16.webm.md5 +3a293ef4e270a19438e59b817fbe5f43eed4d36b vp90-2-02-size-64x18.webm +666824e5ba746779eb46079e0631853dcc86d48b vp90-2-02-size-64x18.webm.md5 +ed32fae837095c9e8fc95d223ec68101812932c2 vp90-2-02-size-64x32.webm +97086eadedce1d0d9c072b585ba7b49aec69b1e7 vp90-2-02-size-64x32.webm.md5 +696c7a7250bdfff594f4dfd88af34239092ecd00 vp90-2-02-size-64x34.webm +253a1d38d452e7826b086846c6f872f829c276bb vp90-2-02-size-64x34.webm.md5 +fc508e0e3c2e6872c60919a60b812c5232e9c2b0 vp90-2-02-size-64x64.webm +2cd6ebeca0f82e9f505616825c07950371b905ab vp90-2-02-size-64x64.webm.md5 +0f8a4fc1d6521187660425c283f08dff8c66e476 vp90-2-02-size-64x66.webm +5806be11a1d346be235f88d3683e69f73746166c vp90-2-02-size-64x66.webm.md5 +273b0c36e3658685cde250408a478116d7ae92f1 vp90-2-02-size-66x08.webm +23c3cd0dca20a2f71f036e77ea92025ff4e7a298 vp90-2-02-size-66x08.webm.md5 +4844c59c3306d1e671bb0568f00e344bf797e66e vp90-2-02-size-66x10.webm +e041eaf6841d775f8fde8bbb4949d2733fdaab7f vp90-2-02-size-66x10.webm.md5 +bdf3f1582b234fcd2805ffec59f9d716a2345302 vp90-2-02-size-66x16.webm +2ec85ee18119e6798968571ea6e1b93ca386e3af vp90-2-02-size-66x16.webm.md5 +0acce9af12b13b025d5274013da7ef6f568f075f vp90-2-02-size-66x18.webm +77c4d53e2a5c96b70af9d575fe6811e0f5ee627b vp90-2-02-size-66x18.webm.md5 +682b36a25774bbdedcd603f504d18eb63f0167d4 vp90-2-02-size-66x32.webm +53728fae2a428f16d376a29f341a64ddca97996a vp90-2-02-size-66x32.webm.md5 +e71b70e901e29eaa6672a6aa4f37f6f5faa02bd6 vp90-2-02-size-66x34.webm +f69a6a555e3f614b0a35f9bfc313d8ebb35bc725 vp90-2-02-size-66x34.webm.md5 +4151b8c29452d5c2266397a7b9bf688899a2937b vp90-2-02-size-66x64.webm +69486e7fd9e380b6c97a03d3e167affc79f73840 vp90-2-02-size-66x64.webm.md5 +68784a1ecac776fe2a3f230345af32f06f123536 vp90-2-02-size-66x66.webm +7f008c7f48d55e652fbd6bac405b51e0015c94f2 vp90-2-02-size-66x66.webm.md5 +7e1bc449231ac1c5c2a11c9a6333b3e828763798 vp90-2-03-size-196x196.webm +6788a561466dace32d500194bf042e19cccc35e1 vp90-2-03-size-196x196.webm.md5 +a170c9a88ec1dd854c7a471ff55fb2a97ac31870 vp90-2-03-size-196x198.webm +6bf9d6a8e2bdc5bf4f8a78071a3fed5ca02ad6f2 vp90-2-03-size-196x198.webm.md5 +68f861d21c4c8b03d572c3d3fcd9f4fbf1f4503f vp90-2-03-size-196x200.webm +bbfc260b2bfd872cc6054272bb6b7f959a9e1c6e vp90-2-03-size-196x200.webm.md5 +fc34889feeca2b7e5b27b4f1ce22d2e2b8e3e4b1 vp90-2-03-size-196x202.webm +158ee72af578f39aad0c3b8f4cbed2fc78b57e0f vp90-2-03-size-196x202.webm.md5 +dd28fb7247af534bdf5e6795a3ac429610489a0b vp90-2-03-size-196x208.webm +7546be847efce2d1c0a23f807bfb03f91b764e1e vp90-2-03-size-196x208.webm.md5 +41d5cf5ed65b722a1b6dc035e67f978ea8ffecf8 vp90-2-03-size-196x210.webm +9444fdf632d6a1b6143f4cb10fed8f63c1d67ec1 vp90-2-03-size-196x210.webm.md5 +5007bc618143437c009d6dde5fc2e86f72d37dc2 vp90-2-03-size-196x224.webm +858361d8f79b44df5545feabbc9754ec9ede632f vp90-2-03-size-196x224.webm.md5 +0bcbe357fbc776c3fa68e7117179574ed7564a44 vp90-2-03-size-196x226.webm +72006a5f42031a43d70a2cd9fc1958962a86628f vp90-2-03-size-196x226.webm.md5 +000239f048cceaac055558e97ef07078ebf65502 vp90-2-03-size-198x196.webm +2d6841901b72000c5340f30be602853438c1b787 vp90-2-03-size-198x196.webm.md5 +ae75b766306a6404c3b3b35a6b6d53633c14fbdb vp90-2-03-size-198x198.webm +3f2544b4f3b4b643a98f2c3b15ea5826fc702fa1 vp90-2-03-size-198x198.webm.md5 +95ffd573fa84ccef1cd59e1583e6054f56a5c83d vp90-2-03-size-198x200.webm +5d537e3c9b9c54418c79677543454c4cda3de1af vp90-2-03-size-198x200.webm.md5 +ecc845bf574375f469bc91bf5c75c79dc00073d6 vp90-2-03-size-198x202.webm +1b59f5e111265615a7a459eeda8cc9045178d228 vp90-2-03-size-198x202.webm.md5 +432fb27144fe421b9f51cf44d2750a26133ed585 vp90-2-03-size-198x208.webm +a58a67f4fb357c73ca078aeecbc0f782975630b1 vp90-2-03-size-198x208.webm.md5 +ff5058e7e6a47435046612afc8536f2040989e6f vp90-2-03-size-198x210.webm +18d3be7935e52217e2e9400b6f2c681a9e45dc89 vp90-2-03-size-198x210.webm.md5 +a0d55263c1ed2c03817454dd4ec4090d36dbc864 vp90-2-03-size-198x224.webm +efa366a299817e2da51c00623b165aab9fbb8d91 vp90-2-03-size-198x224.webm.md5 +ccd142fa2920fc85bb753f049160c1c353ad1574 vp90-2-03-size-198x226.webm +534524a0b2dbff852e0b92ef09939db072f83243 vp90-2-03-size-198x226.webm.md5 +0d483b94ed40abc8ab6e49f960432ee54ad9c7f1 vp90-2-03-size-200x196.webm +41795f548181717906e7a504ba551f06c32102ae vp90-2-03-size-200x196.webm.md5 +f6c2dc54e0989d50f01333fe40c91661fcbf849a vp90-2-03-size-200x198.webm +43df5d8c46a40089441392e6d096c588c1079a68 vp90-2-03-size-200x198.webm.md5 +2f6e9df82e44fc145f0d9212dcccbed3de605e23 vp90-2-03-size-200x200.webm +757b2ef96b82093255725bab9690bbafe27f3caf vp90-2-03-size-200x200.webm.md5 +40c5ea60415642a4a2e75c0d127b06309baadfab vp90-2-03-size-200x202.webm +3022c4a1c625b5dc04fdb1052d17d45b4171cfba vp90-2-03-size-200x202.webm.md5 +6942ed5b27476bb8506d10e600d6ff60887780ca vp90-2-03-size-200x208.webm +c4ab8c66f3cf2dc8e8dd7abae9ac21f4d32cd6be vp90-2-03-size-200x208.webm.md5 +71dbc99b83c49d1da45589b91eabb98e2f4a7b1e vp90-2-03-size-200x210.webm +3f0b40da7eef7974b9bc326562f251feb67d9c7c vp90-2-03-size-200x210.webm.md5 +6b6b8489081cfefb377cc5f18eb754ec2383f655 vp90-2-03-size-200x224.webm +a259df2ac0e294492e3f9d4315baa34cab044f04 vp90-2-03-size-200x224.webm.md5 +c9adc1c9bb07559349a0b054df4af56f7a6edbb9 vp90-2-03-size-200x226.webm +714cec61e3575581e4f1a0e3921f4dfdbbd316c5 vp90-2-03-size-200x226.webm.md5 +f9bdc936bdf53f8be9ce78fecd41a21d31ff3943 vp90-2-03-size-202x196.webm +5b8e2e50fcea2c43b12fc067b8a9cc117af77bda vp90-2-03-size-202x196.webm.md5 +c7b66ea3da87613deb47ff24a111247d3c384fec vp90-2-03-size-202x198.webm +517e91204b25586da943556f4adc5951c9be8bee vp90-2-03-size-202x198.webm.md5 +935ef56b01cfdb4265a7e24696645209ccb20970 vp90-2-03-size-202x200.webm +55b8ec4a2513183144a8e27564596c06c7576fce vp90-2-03-size-202x200.webm.md5 +849acf75e4f1d8d90046704e1103a18c64f30e35 vp90-2-03-size-202x202.webm +c79afc6660df2824e7df314e5bfd71f0d8acf76b vp90-2-03-size-202x202.webm.md5 +17b3a4d55576b770626ccb856b9f1a6c8f6ae476 vp90-2-03-size-202x208.webm +0b887ff30409c58f2ccdc3bfacd6be7c69f8997a vp90-2-03-size-202x208.webm.md5 +032d0ade4230fb2eef6d19915a7a1c9aa4a52617 vp90-2-03-size-202x210.webm +f78f8e79533c0c88dd2bfdcec9b1c07848568ece vp90-2-03-size-202x210.webm.md5 +915a38c31fe425d5b93c837121cfa8082f5ea5bc vp90-2-03-size-202x224.webm +bf52a104074d0c5942aa7a5b31e11db47e43d48e vp90-2-03-size-202x224.webm.md5 +be5cfde35666fa435e47d544d9258215beb1cf29 vp90-2-03-size-202x226.webm +2fa2f87502fda756b319389c8975204e130a2e3f vp90-2-03-size-202x226.webm.md5 +15d908e97862b5b4bf295610df011fb9aa09909b vp90-2-03-size-208x196.webm +50c60792305d6a99be376dd596a6ff979325e6cc vp90-2-03-size-208x196.webm.md5 +a367c7bc9fde56d6f4848cc573c7d4c1ce75e348 vp90-2-03-size-208x198.webm +be85fb2c8d435a75484231356f07d06ebddd13cd vp90-2-03-size-208x198.webm.md5 +05fd46deb7288e7253742091f56e54a9a441a187 vp90-2-03-size-208x200.webm +74f8ec3b3a2fe81767ed1ab36a47bc0062d6223c vp90-2-03-size-208x200.webm.md5 +d8985c4b386513a7385a4b3639bf91e469f1378b vp90-2-03-size-208x202.webm +0614a1e8d92048852adcf605a51333f5fabc7f03 vp90-2-03-size-208x202.webm.md5 +28b002242238479165ba4fb87ee6b442c64b32e4 vp90-2-03-size-208x208.webm +37de5aca59bb900228400b0e115d3229edb9dcc0 vp90-2-03-size-208x208.webm.md5 +c545be0050c2fad7c68427dbf86c62a739e94ab3 vp90-2-03-size-208x210.webm +d646eccb3cd578f94b54777e32b88898bef6e17a vp90-2-03-size-208x210.webm.md5 +63a0cfe295b661026dd7b1bebb67acace1db766f vp90-2-03-size-208x224.webm +85c0361d93bf85a335248fef2767ff43eeef23db vp90-2-03-size-208x224.webm.md5 +f911cc718d66e4fe8a865226088939c9eb1b7825 vp90-2-03-size-208x226.webm +a6d583a57876e7b7ec48625b2b2cdbcf70cab837 vp90-2-03-size-208x226.webm.md5 +5bbb0f36da9a4683cf04e724124d8696332911bf vp90-2-03-size-210x196.webm +a3580fc7816d7fbcfb54fdba501cabbd06ba2f1d vp90-2-03-size-210x196.webm.md5 +8db64d6f9ce36dd382013b42ae4e292deba697bc vp90-2-03-size-210x198.webm +eda20f8268c7f4147bead4059e9c4897e09140a9 vp90-2-03-size-210x198.webm.md5 +ce391505eeaf1d12406563101cd6b2dbbbb44bfc vp90-2-03-size-210x200.webm +79d73b7f623082d2a00aa33e95c79d11c7d9c3a8 vp90-2-03-size-210x200.webm.md5 +852db6fdc206e72391fc69b807f1954934679949 vp90-2-03-size-210x202.webm +f69414c5677ed2f2b8b37ae76429e509a92276a5 vp90-2-03-size-210x202.webm.md5 +c424cc3edd2308da7d33f27acb36b54db5bf2595 vp90-2-03-size-210x208.webm +27b18562faa1b3184256f4eae8114b539b3e9d3e vp90-2-03-size-210x208.webm.md5 +dd029eba719d50a2851592fa8b9b2efe88904930 vp90-2-03-size-210x210.webm +c853a1670465eaa04ca31b3511995f1b6ed4f58f vp90-2-03-size-210x210.webm.md5 +d962e8ae676c54d0c3ea04ec7c04b37ae6a786e3 vp90-2-03-size-210x224.webm +93b793e79d987065b39ad8e2e71244368435fc25 vp90-2-03-size-210x224.webm.md5 +3d0825fe83bcc125be1f78145ff43ca6d7588784 vp90-2-03-size-210x226.webm +5230f31a57ca3b5311698a12035d2644533b3ec4 vp90-2-03-size-210x226.webm.md5 +6622f8bd9279e1ce45509a58a31a990052d45e14 vp90-2-03-size-224x196.webm +65411da07f60113f2be05c807879072b161d561e vp90-2-03-size-224x196.webm.md5 +6744ff2ee2c41eb08c62ff30880833b6d77b585b vp90-2-03-size-224x198.webm +46ea3641d41acd4bff347b224646c060d5620385 vp90-2-03-size-224x198.webm.md5 +8eb91f3416a1404705f370caecd74b2b458351b1 vp90-2-03-size-224x200.webm +196aefb854c8b95b9330263d6690b7ee15693ecf vp90-2-03-size-224x200.webm.md5 +256a5a23ef4e6d5ef2871af5afb8cd13d28cec00 vp90-2-03-size-224x202.webm +840ad8455dcf2be378c14b007e66fa642fc8196d vp90-2-03-size-224x202.webm.md5 +db4606480ab48b96c9a6ff5e639f1f1aea2a12e4 vp90-2-03-size-224x208.webm +40b9801d5620467499ac70fa6b7c40aaa5e1c331 vp90-2-03-size-224x208.webm.md5 +e37159e687fe1cb24cffddfae059301adbaf4212 vp90-2-03-size-224x210.webm +1e4acd4b6334ae260c3eed08652d0ba8122073f2 vp90-2-03-size-224x210.webm.md5 +0de1eb4bb6285ae621e4f2b613d2aa4a8c95a130 vp90-2-03-size-224x224.webm +37db449ad86fb286c2c02d94aa8fe0379c05044a vp90-2-03-size-224x224.webm.md5 +32ebbf903a7d7881bcfe59639f1d472371f3bf27 vp90-2-03-size-224x226.webm +5cc3ac5dc9f6912491aa2ddac863f8187f34c569 vp90-2-03-size-224x226.webm.md5 +9480ff5c2c32b1870ac760c87514912616e6cf01 vp90-2-03-size-226x196.webm +fe83655c0f1888f0af7b047785f01ba7ca9f1324 vp90-2-03-size-226x196.webm.md5 +09cad4221996315cdddad4e502dbfabf53ca1d6a vp90-2-03-size-226x198.webm +e3ddfdc650acb95adb45abd9b634e1f09ea8ac96 vp90-2-03-size-226x198.webm.md5 +c34f49d55fe39e3f0b607e3cc95e30244225cecb vp90-2-03-size-226x200.webm +abb83edc868a3523ccd4e5523fac2efbe7c3df1f vp90-2-03-size-226x200.webm.md5 +d17bc08eedfc60c4c23d576a6c964a21bf854d1f vp90-2-03-size-226x202.webm +1d22d2d0f375251c2d5a1acb4714bc35d963865b vp90-2-03-size-226x202.webm.md5 +9bd537c4f92a25596ccd29fedfe181feac948b92 vp90-2-03-size-226x208.webm +6feb0e7325386275719f3511ada9e248a2ae7df4 vp90-2-03-size-226x208.webm.md5 +4487067f6cedd495b93696b44b37fe0a3e7eda14 vp90-2-03-size-226x210.webm +49a8fa87945f47208168d541c068e78d878075d5 vp90-2-03-size-226x210.webm.md5 +559fea2f8da42b33c1aa1dbc34d1d6781009847a vp90-2-03-size-226x224.webm +83c6d8f2969b759e10e5c6542baca1265c874c29 vp90-2-03-size-226x224.webm.md5 +fe0af2ee47b1e5f6a66db369e2d7e9d870b38dce vp90-2-03-size-226x226.webm +94ad19b8b699cea105e2ff18f0df2afd7242bcf7 vp90-2-03-size-226x226.webm.md5 diff --git a/libvpx/test/test.mk b/libvpx/test/test.mk index 806901d..619533a 100644 --- a/libvpx/test/test.mk +++ b/libvpx/test/test.mk @@ -25,6 +25,8 @@ LIBVPX_TEST_SRCS-$(CONFIG_ENCODERS) += i420_video_source.h LIBVPX_TEST_SRCS-$(CONFIG_VP8_ENCODER) += keyframe_test.cc LIBVPX_TEST_SRCS-$(CONFIG_VP9_ENCODER) += borders_test.cc LIBVPX_TEST_SRCS-$(CONFIG_VP8_ENCODER) += resize_test.cc +LIBVPX_TEST_SRCS-$(CONFIG_VP9_ENCODER) += cpu_speed_test.cc +LIBVPX_TEST_SRCS-$(CONFIG_VP9_ENCODER) += vp9_lossless_test.cc LIBVPX_TEST_SRCS-$(CONFIG_DECODERS) += ../md5_utils.h ../md5_utils.c LIBVPX_TEST_SRCS-yes += decode_test_driver.cc @@ -66,6 +68,7 @@ LIBVPX_TEST_SRCS-$(CONFIG_ENCODERS) += sad_test.cc LIBVPX_TEST_SRCS-$(CONFIG_VP8_ENCODER) += set_roi.cc LIBVPX_TEST_SRCS-yes += sixtap_predict_test.cc LIBVPX_TEST_SRCS-$(CONFIG_VP8_ENCODER) += subtract_test.cc +LIBVPX_TEST_SRCS-$(CONFIG_VP9_ENCODER) += vp9_subtract_test.cc LIBVPX_TEST_SRCS-$(CONFIG_VP8_ENCODER) += variance_test.cc LIBVPX_TEST_SRCS-$(CONFIG_VP8_DECODER) += vp8_decrypt_test.cc LIBVPX_TEST_SRCS-$(CONFIG_VP8_ENCODER) += vp8_fdct4x4_test.cc @@ -227,223 +230,401 @@ LIBVPX_TEST_DATA-$(CONFIG_VP8_DECODER) += vp80-05-sharpness-1438.ivf.md5 LIBVPX_TEST_DATA-$(CONFIG_VP8_DECODER) += vp80-05-sharpness-1439.ivf.md5 LIBVPX_TEST_DATA-$(CONFIG_VP8_DECODER) += vp80-05-sharpness-1440.ivf.md5 LIBVPX_TEST_DATA-$(CONFIG_VP8_DECODER) += vp80-05-sharpness-1443.ivf.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-akiyo-100.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-akiyo-100.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-akiyo-200.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-akiyo-200.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-akiyo-300.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-akiyo-300.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-akiyo-50.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-akiyo-50.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-bowing-150.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-bowing-150.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-bowing-25.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-bowing-25.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-bowing-400.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-bowing-400.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-bus-100.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-bus-100.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-bus-2000.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-bus-2000.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-bus-300.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-bus-300.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-bus-4400.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-bus-4400.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-bus-800.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-bus-800.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-cheer-1600.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-cheer-1600.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-cheer-2800.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-cheer-2800.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-cheer-400.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-cheer-400.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-cheer-600.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-cheer-600.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-city-1200.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-city-1200.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-city-2000.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-city-2000.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-city-300.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-city-300.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-city-600.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-city-600.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-coastguard-1200.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-coastguard-1200.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-coastguard-200.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-coastguard-200.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-coastguard-3600.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-coastguard-3600.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-coastguard-5200.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-coastguard-5200.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-container-1000.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-container-1000.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-container-200.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-container-200.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-container-50.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-container-50.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-deadline-1000.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-deadline-1000.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-deadline-200.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-deadline-200.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-deadline-50.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-deadline-50.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-flower-100.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-flower-100.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-flower-2000.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-flower-2000.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-flower-300.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-flower-300.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-flower-4400.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-flower-4400.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-flower-800.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-flower-800.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-football-1600.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-football-1600.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-football-2800.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-football-2800.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-football-400.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-football-400.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-football-600.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-football-600.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-foreman-1200.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-foreman-1200.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-foreman-2000.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-foreman-2000.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-foreman-300.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-foreman-300.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-foreman-600.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-foreman-600.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-hallmonitor-1200.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-hallmonitor-1200.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-hallmonitor-2000.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-hallmonitor-2000.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-hallmonitor-300.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-hallmonitor-300.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-hallmonitor-600.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-hallmonitor-600.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-harbour-1200.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-harbour-1200.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-harbour-200.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-harbour-200.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-harbour-3600.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-harbour-3600.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-harbour-5200.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-harbour-5200.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-highway-100.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-highway-100.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-highway-1600.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-highway-1600.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-highway-2800.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-highway-2800.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-highway-50.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-highway-50.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-husky-100.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-husky-100.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-husky-2000.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-husky-2000.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-husky-300.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-husky-300.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-husky-4400.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-husky-4400.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-husky-800.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-husky-800.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-ice-150.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-ice-150.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-ice-400.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-ice-400.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-ice-800.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-ice-800.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-mobile-1600.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-mobile-1600.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-mobile-2800.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-mobile-2800.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-mobile-400.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-mobile-400.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-mobile-600.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-mobile-600.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-motherdaughter-100.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-motherdaughter-100.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-motherdaughter-300.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-motherdaughter-300.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-motherdaughter-600.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-motherdaughter-600.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-news-100.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-news-100.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-news-300.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-news-300.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-news-600.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-news-600.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-pamphlet-150.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-pamphlet-150.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-pamphlet-25.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-pamphlet-25.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-pamphlet-400.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-pamphlet-400.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-paris-1000.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-paris-1000.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-paris-200.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-paris-200.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-paris-50.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-paris-50.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-signirene-1000.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-signirene-1000.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-signirene-200.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-signirene-200.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-signirene-50.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-signirene-50.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-silent-1000.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-silent-1000.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-silent-200.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-silent-200.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-silent-50.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-silent-50.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-soccer-100.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-soccer-100.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-soccer-2000.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-soccer-2000.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-soccer-300.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-soccer-300.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-soccer-4400.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-soccer-4400.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-soccer-800.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-soccer-800.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-stefan-1600.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-stefan-1600.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-stefan-2800.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-stefan-2800.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-stefan-400.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-stefan-400.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-stefan-600.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-stefan-600.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-students-100.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-students-100.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-students-300.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-students-300.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-students-600.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-students-600.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-tempete-1200.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-tempete-1200.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-tempete-200.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-tempete-200.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-tempete-3600.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-tempete-3600.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-tempete-5200.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-tempete-5200.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-tennis-100.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-tennis-100.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-tennis-2000.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-tennis-2000.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-tennis-300.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-tennis-300.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-tennis-4400.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-tennis-4400.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-tennis-800.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-tennis-800.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-waterfall-150.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-waterfall-150.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-waterfall-200.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-waterfall-200.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-waterfall-400.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-waterfall-400.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-waterfall-800.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-waterfall-800.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-00.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-00.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-01.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-01.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-02.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-02.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-03.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-03.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-04.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-04.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-05.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-05.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-06.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-06.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-07.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-07.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-08.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-08.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-09.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-09.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-10.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-10.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-11.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-11.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-12.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-12.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-13.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-13.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-14.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-14.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-15.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-15.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-16.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-16.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-17.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-17.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-18.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-18.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-19.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-19.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-20.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-20.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-21.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-21.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-22.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-22.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-23.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-23.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-24.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-24.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-25.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-25.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-26.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-26.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-27.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-27.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-28.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-28.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-29.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-29.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-30.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-30.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-31.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-31.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-32.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-32.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-33.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-33.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-34.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-34.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-35.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-35.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-36.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-36.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-37.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-37.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-38.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-38.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-39.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-39.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-40.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-40.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-41.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-41.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-42.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-42.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-43.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-43.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-44.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-44.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-45.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-45.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-46.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-46.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-47.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-47.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-48.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-48.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-49.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-49.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-50.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-50.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-51.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-51.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-52.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-52.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-53.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-53.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-54.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-54.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-55.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-55.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-56.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-56.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-57.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-57.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-58.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-58.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-59.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-59.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-60.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-60.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-61.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-61.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-62.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-62.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-63.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-00-quantizer-63.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-01-sharpness-1.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-01-sharpness-1.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-01-sharpness-2.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-01-sharpness-2.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-01-sharpness-3.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-01-sharpness-3.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-01-sharpness-4.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-01-sharpness-4.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-01-sharpness-5.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-01-sharpness-5.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-01-sharpness-6.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-01-sharpness-6.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-01-sharpness-7.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-01-sharpness-7.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-08x08.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-08x08.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-08x10.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-08x10.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-08x16.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-08x16.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-08x18.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-08x18.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-08x32.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-08x32.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-08x34.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-08x34.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-08x64.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-08x64.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-08x66.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-08x66.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-10x08.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-10x08.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-10x10.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-10x10.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-10x16.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-10x16.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-10x18.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-10x18.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-10x32.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-10x32.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-10x34.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-10x34.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-10x64.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-10x64.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-10x66.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-10x66.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-16x08.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-16x08.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-16x10.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-16x10.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-16x16.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-16x16.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-16x18.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-16x18.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-16x32.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-16x32.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-16x34.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-16x34.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-16x64.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-16x64.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-16x66.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-16x66.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-18x08.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-18x08.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-18x10.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-18x10.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-18x16.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-18x16.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-18x18.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-18x18.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-18x32.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-18x32.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-18x34.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-18x34.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-18x64.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-18x64.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-18x66.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-18x66.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-32x08.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-32x08.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-32x10.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-32x10.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-32x16.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-32x16.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-32x18.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-32x18.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-32x32.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-32x32.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-32x34.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-32x34.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-32x64.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-32x64.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-32x66.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-32x66.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-34x08.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-34x08.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-34x10.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-34x10.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-34x16.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-34x16.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-34x18.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-34x18.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-34x32.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-34x32.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-34x34.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-34x34.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-34x64.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-34x64.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-34x66.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-34x66.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-64x08.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-64x08.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-64x10.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-64x10.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-64x16.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-64x16.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-64x18.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-64x18.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-64x32.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-64x32.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-64x34.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-64x34.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-64x64.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-64x64.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-64x66.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-64x66.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-66x08.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-66x08.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-66x10.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-66x10.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-66x16.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-66x16.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-66x18.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-66x18.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-66x32.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-66x32.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-66x34.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-66x34.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-66x64.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-66x64.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-66x66.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-02-size-66x66.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-196x196.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-196x196.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-196x198.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-196x198.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-196x200.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-196x200.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-196x202.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-196x202.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-196x208.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-196x208.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-196x210.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-196x210.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-196x224.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-196x224.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-196x226.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-196x226.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-198x196.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-198x196.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-198x198.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-198x198.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-198x200.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-198x200.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-198x202.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-198x202.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-198x208.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-198x208.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-198x210.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-198x210.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-198x224.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-198x224.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-198x226.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-198x226.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-200x196.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-200x196.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-200x198.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-200x198.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-200x200.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-200x200.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-200x202.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-200x202.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-200x208.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-200x208.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-200x210.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-200x210.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-200x224.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-200x224.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-200x226.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-200x226.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-202x196.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-202x196.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-202x198.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-202x198.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-202x200.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-202x200.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-202x202.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-202x202.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-202x208.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-202x208.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-202x210.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-202x210.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-202x224.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-202x224.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-202x226.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-202x226.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-208x196.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-208x196.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-208x198.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-208x198.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-208x200.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-208x200.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-208x202.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-208x202.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-208x208.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-208x208.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-208x210.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-208x210.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-208x224.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-208x224.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-208x226.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-208x226.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-210x196.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-210x196.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-210x198.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-210x198.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-210x200.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-210x200.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-210x202.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-210x202.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-210x208.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-210x208.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-210x210.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-210x210.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-210x224.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-210x224.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-210x226.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-210x226.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-224x196.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-224x196.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-224x198.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-224x198.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-224x200.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-224x200.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-224x202.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-224x202.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-224x208.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-224x208.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-224x210.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-224x210.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-224x224.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-224x224.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-224x226.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-224x226.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-226x196.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-226x196.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-226x198.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-226x198.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-226x200.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-226x200.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-226x202.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-226x202.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-226x208.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-226x208.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-226x210.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-226x210.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-226x224.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-226x224.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-226x226.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-2-03-size-226x226.webm.md5 diff --git a/libvpx/test/test_vector_test.cc b/libvpx/test/test_vector_test.cc index d7bd184..9b0e9d5 100644 --- a/libvpx/test/test_vector_test.cc +++ b/libvpx/test/test_vector_test.cc @@ -60,61 +60,106 @@ const char *kVP8TestVectors[] = { #endif #if CONFIG_VP9_DECODER const char *kVP9TestVectors[] = { - "vp90-00-akiyo-200.webm", "vp90-00-akiyo-300.webm", - "vp90-00-akiyo-50.webm", "vp90-00-bowing-150.webm", - "vp90-00-bowing-25.webm", "vp90-00-bowing-400.webm", - "vp90-00-bus-100.webm", "vp90-00-bus-2000.webm", - "vp90-00-bus-300.webm", "vp90-00-bus-4400.webm", - "vp90-00-bus-800.webm", "vp90-00-cheer-1600.webm", - "vp90-00-cheer-2800.webm", "vp90-00-cheer-400.webm", - "vp90-00-cheer-600.webm", "vp90-00-city-1200.webm", - "vp90-00-city-2000.webm", "vp90-00-city-300.webm", - "vp90-00-city-600.webm", "vp90-00-coastguard-1200.webm", - "vp90-00-coastguard-200.webm", "vp90-00-coastguard-3600.webm", - "vp90-00-coastguard-5200.webm", "vp90-00-container-1000.webm", - "vp90-00-container-200.webm", "vp90-00-container-50.webm", - "vp90-00-deadline-1000.webm", "vp90-00-deadline-200.webm", - "vp90-00-deadline-50.webm", "vp90-00-flower-100.webm", - "vp90-00-flower-2000.webm", "vp90-00-flower-300.webm", - "vp90-00-flower-4400.webm", "vp90-00-flower-800.webm", - "vp90-00-football-1600.webm", "vp90-00-football-2800.webm", - "vp90-00-football-400.webm", "vp90-00-football-600.webm", - "vp90-00-foreman-1200.webm", "vp90-00-foreman-2000.webm", - "vp90-00-foreman-300.webm", "vp90-00-foreman-600.webm", - "vp90-00-hallmonitor-1200.webm", "vp90-00-hallmonitor-2000.webm", - "vp90-00-hallmonitor-300.webm", "vp90-00-hallmonitor-600.webm", - "vp90-00-harbour-1200.webm", "vp90-00-harbour-200.webm", - "vp90-00-harbour-3600.webm", "vp90-00-harbour-5200.webm", - "vp90-00-highway-100.webm", "vp90-00-highway-1600.webm", - "vp90-00-highway-2800.webm", "vp90-00-highway-50.webm", - "vp90-00-husky-100.webm", "vp90-00-husky-2000.webm", - "vp90-00-husky-300.webm", "vp90-00-husky-4400.webm", - "vp90-00-husky-800.webm", "vp90-00-ice-150.webm", - "vp90-00-ice-400.webm", "vp90-00-ice-800.webm", - "vp90-00-mobile-1600.webm", "vp90-00-mobile-2800.webm", - "vp90-00-mobile-400.webm", "vp90-00-mobile-600.webm", - "vp90-00-motherdaughter-100.webm", "vp90-00-motherdaughter-300.webm", - "vp90-00-motherdaughter-600.webm", "vp90-00-news-100.webm", - "vp90-00-news-300.webm", "vp90-00-news-600.webm", - "vp90-00-pamphlet-150.webm", "vp90-00-pamphlet-25.webm", - "vp90-00-pamphlet-400.webm", "vp90-00-paris-1000.webm", - "vp90-00-paris-200.webm", "vp90-00-paris-50.webm", - "vp90-00-signirene-1000.webm", "vp90-00-signirene-200.webm", - "vp90-00-signirene-50.webm", "vp90-00-silent-1000.webm", - "vp90-00-silent-200.webm", "vp90-00-silent-50.webm", - "vp90-00-soccer-100.webm", "vp90-00-soccer-2000.webm", - "vp90-00-soccer-300.webm", "vp90-00-soccer-4400.webm", - "vp90-00-soccer-800.webm", "vp90-00-stefan-1600.webm", - "vp90-00-stefan-2800.webm", "vp90-00-stefan-400.webm", - "vp90-00-stefan-600.webm", "vp90-00-students-100.webm", - "vp90-00-students-300.webm", "vp90-00-students-600.webm", - "vp90-00-tempete-1200.webm", "vp90-00-tempete-200.webm", - "vp90-00-tempete-3600.webm", "vp90-00-tempete-5200.webm", - "vp90-00-tennis-100.webm", "vp90-00-tennis-2000.webm", - "vp90-00-tennis-300.webm", "vp90-00-tennis-4400.webm", - "vp90-00-tennis-800.webm", "vp90-00-waterfall-150.webm", - "vp90-00-waterfall-200.webm", "vp90-00-waterfall-400.webm", - "vp90-00-waterfall-800.webm", + "vp90-2-00-quantizer-00.webm", "vp90-2-00-quantizer-01.webm", + "vp90-2-00-quantizer-02.webm", "vp90-2-00-quantizer-03.webm", + "vp90-2-00-quantizer-04.webm", "vp90-2-00-quantizer-05.webm", + "vp90-2-00-quantizer-06.webm", "vp90-2-00-quantizer-07.webm", + "vp90-2-00-quantizer-08.webm", "vp90-2-00-quantizer-09.webm", + "vp90-2-00-quantizer-10.webm", "vp90-2-00-quantizer-11.webm", + "vp90-2-00-quantizer-12.webm", "vp90-2-00-quantizer-13.webm", + "vp90-2-00-quantizer-14.webm", "vp90-2-00-quantizer-15.webm", + "vp90-2-00-quantizer-16.webm", "vp90-2-00-quantizer-17.webm", + "vp90-2-00-quantizer-18.webm", "vp90-2-00-quantizer-19.webm", + "vp90-2-00-quantizer-20.webm", "vp90-2-00-quantizer-21.webm", + "vp90-2-00-quantizer-22.webm", "vp90-2-00-quantizer-23.webm", + "vp90-2-00-quantizer-24.webm", "vp90-2-00-quantizer-25.webm", + "vp90-2-00-quantizer-26.webm", "vp90-2-00-quantizer-27.webm", + "vp90-2-00-quantizer-28.webm", "vp90-2-00-quantizer-29.webm", + "vp90-2-00-quantizer-30.webm", "vp90-2-00-quantizer-31.webm", + "vp90-2-00-quantizer-32.webm", "vp90-2-00-quantizer-33.webm", + "vp90-2-00-quantizer-34.webm", "vp90-2-00-quantizer-35.webm", + "vp90-2-00-quantizer-36.webm", "vp90-2-00-quantizer-37.webm", + "vp90-2-00-quantizer-38.webm", "vp90-2-00-quantizer-39.webm", + "vp90-2-00-quantizer-40.webm", "vp90-2-00-quantizer-41.webm", + "vp90-2-00-quantizer-42.webm", "vp90-2-00-quantizer-43.webm", + "vp90-2-00-quantizer-44.webm", "vp90-2-00-quantizer-45.webm", + "vp90-2-00-quantizer-46.webm", "vp90-2-00-quantizer-47.webm", + "vp90-2-00-quantizer-48.webm", "vp90-2-00-quantizer-49.webm", + "vp90-2-00-quantizer-50.webm", "vp90-2-00-quantizer-51.webm", + "vp90-2-00-quantizer-52.webm", "vp90-2-00-quantizer-53.webm", + "vp90-2-00-quantizer-54.webm", "vp90-2-00-quantizer-55.webm", + "vp90-2-00-quantizer-56.webm", "vp90-2-00-quantizer-57.webm", + "vp90-2-00-quantizer-58.webm", "vp90-2-00-quantizer-59.webm", + "vp90-2-00-quantizer-60.webm", "vp90-2-00-quantizer-61.webm", + "vp90-2-00-quantizer-62.webm", "vp90-2-00-quantizer-63.webm", + "vp90-2-01-sharpness-1.webm", "vp90-2-01-sharpness-2.webm", + "vp90-2-01-sharpness-3.webm", "vp90-2-01-sharpness-4.webm", + "vp90-2-01-sharpness-5.webm", "vp90-2-01-sharpness-6.webm", + "vp90-2-01-sharpness-7.webm", "vp90-2-02-size-08x08.webm", + "vp90-2-02-size-08x10.webm", "vp90-2-02-size-08x16.webm", + "vp90-2-02-size-08x18.webm", "vp90-2-02-size-08x32.webm", + "vp90-2-02-size-08x34.webm", "vp90-2-02-size-08x64.webm", + "vp90-2-02-size-08x66.webm", "vp90-2-02-size-10x08.webm", + "vp90-2-02-size-10x10.webm", "vp90-2-02-size-10x16.webm", + "vp90-2-02-size-10x18.webm", "vp90-2-02-size-10x32.webm", + "vp90-2-02-size-10x34.webm", "vp90-2-02-size-10x64.webm", + "vp90-2-02-size-10x66.webm", "vp90-2-02-size-16x08.webm", + "vp90-2-02-size-16x10.webm", "vp90-2-02-size-16x16.webm", + "vp90-2-02-size-16x18.webm", "vp90-2-02-size-16x32.webm", + "vp90-2-02-size-16x34.webm", "vp90-2-02-size-16x64.webm", + "vp90-2-02-size-16x66.webm", "vp90-2-02-size-18x08.webm", + "vp90-2-02-size-18x10.webm", "vp90-2-02-size-18x16.webm", + "vp90-2-02-size-18x18.webm", "vp90-2-02-size-18x32.webm", + "vp90-2-02-size-18x34.webm", "vp90-2-02-size-18x64.webm", + "vp90-2-02-size-18x66.webm", "vp90-2-02-size-32x08.webm", + "vp90-2-02-size-32x10.webm", "vp90-2-02-size-32x16.webm", + "vp90-2-02-size-32x18.webm", "vp90-2-02-size-32x32.webm", + "vp90-2-02-size-32x34.webm", "vp90-2-02-size-32x64.webm", + "vp90-2-02-size-32x66.webm", "vp90-2-02-size-34x08.webm", + "vp90-2-02-size-34x10.webm", "vp90-2-02-size-34x16.webm", + "vp90-2-02-size-34x18.webm", "vp90-2-02-size-34x32.webm", + "vp90-2-02-size-34x34.webm", "vp90-2-02-size-34x64.webm", + "vp90-2-02-size-34x66.webm", "vp90-2-02-size-64x08.webm", + "vp90-2-02-size-64x10.webm", "vp90-2-02-size-64x16.webm", + "vp90-2-02-size-64x18.webm", "vp90-2-02-size-64x32.webm", + "vp90-2-02-size-64x34.webm", "vp90-2-02-size-64x64.webm", + "vp90-2-02-size-64x66.webm", "vp90-2-02-size-66x08.webm", + "vp90-2-02-size-66x10.webm", "vp90-2-02-size-66x16.webm", + "vp90-2-02-size-66x18.webm", "vp90-2-02-size-66x32.webm", + "vp90-2-02-size-66x34.webm", "vp90-2-02-size-66x64.webm", + "vp90-2-02-size-66x66.webm", "vp90-2-03-size-196x196.webm", + "vp90-2-03-size-196x198.webm", "vp90-2-03-size-196x200.webm", + "vp90-2-03-size-196x202.webm", "vp90-2-03-size-196x208.webm", + "vp90-2-03-size-196x210.webm", "vp90-2-03-size-196x224.webm", + "vp90-2-03-size-196x226.webm", "vp90-2-03-size-198x196.webm", + "vp90-2-03-size-198x198.webm", "vp90-2-03-size-198x200.webm", + "vp90-2-03-size-198x202.webm", "vp90-2-03-size-198x208.webm", + "vp90-2-03-size-198x210.webm", "vp90-2-03-size-198x224.webm", + "vp90-2-03-size-198x226.webm", "vp90-2-03-size-200x196.webm", + "vp90-2-03-size-200x198.webm", "vp90-2-03-size-200x200.webm", + "vp90-2-03-size-200x202.webm", "vp90-2-03-size-200x208.webm", + "vp90-2-03-size-200x210.webm", "vp90-2-03-size-200x224.webm", + "vp90-2-03-size-200x226.webm", "vp90-2-03-size-202x196.webm", + "vp90-2-03-size-202x198.webm", "vp90-2-03-size-202x200.webm", + "vp90-2-03-size-202x202.webm", "vp90-2-03-size-202x208.webm", + "vp90-2-03-size-202x210.webm", "vp90-2-03-size-202x224.webm", + "vp90-2-03-size-202x226.webm", "vp90-2-03-size-208x196.webm", + "vp90-2-03-size-208x198.webm", "vp90-2-03-size-208x200.webm", + "vp90-2-03-size-208x202.webm", "vp90-2-03-size-208x208.webm", + "vp90-2-03-size-208x210.webm", "vp90-2-03-size-208x224.webm", + "vp90-2-03-size-208x226.webm", "vp90-2-03-size-210x196.webm", + "vp90-2-03-size-210x198.webm", "vp90-2-03-size-210x200.webm", + "vp90-2-03-size-210x202.webm", "vp90-2-03-size-210x208.webm", + "vp90-2-03-size-210x210.webm", "vp90-2-03-size-210x224.webm", + "vp90-2-03-size-210x226.webm", "vp90-2-03-size-224x196.webm", + "vp90-2-03-size-224x198.webm", "vp90-2-03-size-224x200.webm", + "vp90-2-03-size-224x202.webm", "vp90-2-03-size-224x208.webm", + "vp90-2-03-size-224x210.webm", "vp90-2-03-size-224x224.webm", + "vp90-2-03-size-224x226.webm", "vp90-2-03-size-226x196.webm", + "vp90-2-03-size-226x198.webm", "vp90-2-03-size-226x200.webm", + "vp90-2-03-size-226x202.webm", "vp90-2-03-size-226x208.webm", + "vp90-2-03-size-226x210.webm", "vp90-2-03-size-226x224.webm", + "vp90-2-03-size-226x226.webm" }; #endif @@ -136,6 +181,7 @@ class TestVectorTest : public ::libvpx_test::DecoderTest, virtual void DecompressedFrameHook(const vpx_image_t& img, const unsigned int frame_number) { + ASSERT_TRUE(md5_file_ != NULL); char expected_md5[33]; char junk[128]; diff --git a/libvpx/test/tile_independence_test.cc b/libvpx/test/tile_independence_test.cc index 9633ed7..403dbb6 100644 --- a/libvpx/test/tile_independence_test.cc +++ b/libvpx/test/tile_independence_test.cc @@ -23,10 +23,13 @@ extern "C" { namespace { class TileIndependenceTest : public ::libvpx_test::EncoderTest, - public ::libvpx_test::CodecTestWithParam<int> { + public ::libvpx_test::CodecTestWithParam<int> { protected: - TileIndependenceTest() : EncoderTest(GET_PARAM(0)), n_tiles_(GET_PARAM(1)), - md5_fw_order_(), md5_inv_order_() { + TileIndependenceTest() + : EncoderTest(GET_PARAM(0)), + md5_fw_order_(), + md5_inv_order_(), + n_tiles_(GET_PARAM(1)) { init_flags_ = VPX_CODEC_USE_PSNR; vpx_codec_dec_cfg_t cfg; cfg.w = 704; @@ -56,9 +59,8 @@ class TileIndependenceTest : public ::libvpx_test::EncoderTest, void UpdateMD5(::libvpx_test::Decoder *dec, const vpx_codec_cx_pkt_t *pkt, ::libvpx_test::MD5 *md5) { - const vpx_codec_err_t res = - dec->DecodeFrame(reinterpret_cast<uint8_t*>(pkt->data.frame.buf), - pkt->data.frame.sz); + const vpx_codec_err_t res = dec->DecodeFrame( + reinterpret_cast<uint8_t*>(pkt->data.frame.buf), pkt->data.frame.sz); if (res != VPX_CODEC_OK) { abort_ = true; ASSERT_EQ(VPX_CODEC_OK, res); @@ -72,11 +74,11 @@ class TileIndependenceTest : public ::libvpx_test::EncoderTest, UpdateMD5(inv_dec_, pkt, &md5_inv_order_); } - private: - int n_tiles_; - protected: ::libvpx_test::MD5 md5_fw_order_, md5_inv_order_; ::libvpx_test::Decoder *fw_dec_, *inv_dec_; + + private: + int n_tiles_; }; // run an encode with 2 or 4 tiles, and do the decode both in normal and @@ -93,7 +95,7 @@ TEST_P(TileIndependenceTest, MD5Match) { timebase.den, timebase.num, 0, 30); ASSERT_NO_FATAL_FAILURE(RunLoop(&video)); - const char *md5_fw_str = md5_fw_order_.Get(); + const char *md5_fw_str = md5_fw_order_.Get(); const char *md5_inv_str = md5_inv_order_.Get(); // could use ASSERT_EQ(!memcmp(.., .., 16) here, but this gives nicer @@ -102,7 +104,6 @@ TEST_P(TileIndependenceTest, MD5Match) { ASSERT_STREQ(md5_fw_str, md5_inv_str); } -VP9_INSTANTIATE_TEST_CASE(TileIndependenceTest, - ::testing::Range(0, 2, 1)); +VP9_INSTANTIATE_TEST_CASE(TileIndependenceTest, ::testing::Range(0, 2, 1)); } // namespace diff --git a/libvpx/test/util.h b/libvpx/test/util.h index 533a1db..4d7f3d4 100644 --- a/libvpx/test/util.h +++ b/libvpx/test/util.h @@ -37,7 +37,7 @@ static double compute_psnr(const vpx_image_t *img1, img2->planes[VPX_PLANE_Y][i * img2->stride[VPX_PLANE_Y] + j]; sqrerr += d * d; } - double mse = sqrerr / (width_y * height_y); + double mse = static_cast<double>(sqrerr) / (width_y * height_y); double psnr = 100.0; if (mse > 0.0) { psnr = 10 * log10(255.0 * 255.0 / mse); diff --git a/libvpx/test/variance_test.cc b/libvpx/test/variance_test.cc index dfa1a07..207b6e7 100644 --- a/libvpx/test/variance_test.cc +++ b/libvpx/test/variance_test.cc @@ -13,10 +13,12 @@ #include "third_party/googletest/src/include/gtest/gtest.h" #include "test/clear_system_state.h" +#include "test/register_state_check.h" #include "vpx/vpx_integer.h" #include "vpx_config.h" extern "C" { +#include "vpx_mem/vpx_mem.h" #if CONFIG_VP8_ENCODER # include "vp8/common/variance.h" # include "vp8_rtcd.h" @@ -26,12 +28,83 @@ extern "C" { # include "vp9_rtcd.h" #endif } +#include "test/acm_random.h" namespace { using ::std::tr1::get; using ::std::tr1::make_tuple; using ::std::tr1::tuple; +using libvpx_test::ACMRandom; + +static unsigned int variance_ref(const uint8_t *ref, const uint8_t *src, + int l2w, int l2h, unsigned int *sse_ptr) { + int se = 0; + unsigned int sse = 0; + const int w = 1 << l2w, h = 1 << l2h; + for (int y = 0; y < h; y++) { + for (int x = 0; x < w; x++) { + int diff = ref[w * y + x] - src[w * y + x]; + se += diff; + sse += diff * diff; + } + } + *sse_ptr = sse; + return sse - (((int64_t) se * se) >> (l2w + l2h)); +} + +static unsigned int subpel_variance_ref(const uint8_t *ref, const uint8_t *src, + int l2w, int l2h, int xoff, int yoff, + unsigned int *sse_ptr) { + int se = 0; + unsigned int sse = 0; + const int w = 1 << l2w, h = 1 << l2h; + for (int y = 0; y < h; y++) { + for (int x = 0; x < w; x++) { + // bilinear interpolation at a 16th pel step + const int a1 = ref[(w + 1) * (y + 0) + x + 0]; + const int a2 = ref[(w + 1) * (y + 0) + x + 1]; + const int b1 = ref[(w + 1) * (y + 1) + x + 0]; + const int b2 = ref[(w + 1) * (y + 1) + x + 1]; + const int a = a1 + (((a2 - a1) * xoff + 8) >> 4); + const int b = b1 + (((b2 - b1) * xoff + 8) >> 4); + const int r = a + (((b - a) * yoff + 8) >> 4); + int diff = r - src[w * y + x]; + se += diff; + sse += diff * diff; + } + } + *sse_ptr = sse; + return sse - (((int64_t) se * se) >> (l2w + l2h)); +} + +static unsigned int subpel_avg_variance_ref(const uint8_t *ref, + const uint8_t *src, + const uint8_t *second_pred, + int l2w, int l2h, + int xoff, int yoff, + unsigned int *sse_ptr) { + int se = 0; + unsigned int sse = 0; + const int w = 1 << l2w, h = 1 << l2h; + for (int y = 0; y < h; y++) { + for (int x = 0; x < w; x++) { + // bilinear interpolation at a 16th pel step + const int a1 = ref[(w + 1) * (y + 0) + x + 0]; + const int a2 = ref[(w + 1) * (y + 0) + x + 1]; + const int b1 = ref[(w + 1) * (y + 1) + x + 0]; + const int b2 = ref[(w + 1) * (y + 1) + x + 1]; + const int a = a1 + (((a2 - a1) * xoff + 8) >> 4); + const int b = b1 + (((b2 - b1) * xoff + 8) >> 4); + const int r = a + (((b - a) * yoff + 8) >> 4); + int diff = ((r + second_pred[w * y + x] + 1) >> 1) - src[w * y + x]; + se += diff; + sse += diff * diff; + } + } + *sse_ptr = sse; + return sse - (((int64_t) se * se) >> (l2w + l2h)); +} template<typename VarianceFunctionType> class VarianceTest : @@ -39,10 +112,13 @@ class VarianceTest : public: virtual void SetUp() { const tuple<int, int, VarianceFunctionType>& params = this->GetParam(); - width_ = get<0>(params); - height_ = get<1>(params); + log2width_ = get<0>(params); + width_ = 1 << log2width_; + log2height_ = get<1>(params); + height_ = 1 << log2height_; variance_ = get<2>(params); + rnd(ACMRandom::DeterministicSeed()); block_size_ = width_ * height_; src_ = new uint8_t[block_size_]; ref_ = new uint8_t[block_size_]; @@ -58,15 +134,16 @@ class VarianceTest : protected: void ZeroTest(); + void RefTest(); void OneQuarterTest(); + ACMRandom rnd; uint8_t* src_; uint8_t* ref_; - int width_; - int height_; + int width_, log2width_; + int height_, log2height_; int block_size_; VarianceFunctionType variance_; - }; template<typename VarianceFunctionType> @@ -76,24 +153,133 @@ void VarianceTest<VarianceFunctionType>::ZeroTest() { for (int j = 0; j <= 255; ++j) { memset(ref_, j, block_size_); unsigned int sse; - const unsigned int var = variance_(src_, width_, ref_, width_, &sse); + unsigned int var; + REGISTER_STATE_CHECK(var = variance_(src_, width_, ref_, width_, &sse)); EXPECT_EQ(0u, var) << "src values: " << i << "ref values: " << j; } } } template<typename VarianceFunctionType> +void VarianceTest<VarianceFunctionType>::RefTest() { + for (int i = 0; i < 10; ++i) { + for (int j = 0; j < block_size_; j++) { + src_[j] = rnd.Rand8(); + ref_[j] = rnd.Rand8(); + } + unsigned int sse1, sse2; + unsigned int var1; + REGISTER_STATE_CHECK(var1 = variance_(src_, width_, ref_, width_, &sse1)); + const unsigned int var2 = variance_ref(src_, ref_, log2width_, + log2height_, &sse2); + EXPECT_EQ(sse1, sse2); + EXPECT_EQ(var1, var2); + } +} + +template<typename VarianceFunctionType> void VarianceTest<VarianceFunctionType>::OneQuarterTest() { memset(src_, 255, block_size_); const int half = block_size_ / 2; memset(ref_, 255, half); memset(ref_ + half, 0, half); unsigned int sse; - const unsigned int var = variance_(src_, width_, ref_, width_, &sse); + unsigned int var; + REGISTER_STATE_CHECK(var = variance_(src_, width_, ref_, width_, &sse)); const unsigned int expected = block_size_ * 255 * 255 / 4; EXPECT_EQ(expected, var); } +template<typename SubpelVarianceFunctionType> +class SubpelVarianceTest : + public ::testing::TestWithParam<tuple<int, int, + SubpelVarianceFunctionType> > { + public: + virtual void SetUp() { + const tuple<int, int, SubpelVarianceFunctionType>& params = + this->GetParam(); + log2width_ = get<0>(params); + width_ = 1 << log2width_; + log2height_ = get<1>(params); + height_ = 1 << log2height_; + subpel_variance_ = get<2>(params); + + rnd(ACMRandom::DeterministicSeed()); + block_size_ = width_ * height_; + src_ = reinterpret_cast<uint8_t *>(vpx_memalign(16, block_size_)); + sec_ = reinterpret_cast<uint8_t *>(vpx_memalign(16, block_size_)); + ref_ = new uint8_t[block_size_ + width_ + height_ + 1]; + ASSERT_TRUE(src_ != NULL); + ASSERT_TRUE(sec_ != NULL); + ASSERT_TRUE(ref_ != NULL); + } + + virtual void TearDown() { + vpx_free(src_); + delete[] ref_; + vpx_free(sec_); + libvpx_test::ClearSystemState(); + } + + protected: + void RefTest(); + + ACMRandom rnd; + uint8_t *src_; + uint8_t *ref_; + uint8_t *sec_; + int width_, log2width_; + int height_, log2height_; + int block_size_; + SubpelVarianceFunctionType subpel_variance_; +}; + +template<typename SubpelVarianceFunctionType> +void SubpelVarianceTest<SubpelVarianceFunctionType>::RefTest() { + for (int x = 0; x < 16; ++x) { + for (int y = 0; y < 16; ++y) { + for (int j = 0; j < block_size_; j++) { + src_[j] = rnd.Rand8(); + } + for (int j = 0; j < block_size_ + width_ + height_ + 1; j++) { + ref_[j] = rnd.Rand8(); + } + unsigned int sse1, sse2; + unsigned int var1; + REGISTER_STATE_CHECK(var1 = subpel_variance_(ref_, width_ + 1, x, y, + src_, width_, &sse1)); + const unsigned int var2 = subpel_variance_ref(ref_, src_, log2width_, + log2height_, x, y, &sse2); + EXPECT_EQ(sse1, sse2) << "at position " << x << ", " << y; + EXPECT_EQ(var1, var2) << "at position " << x << ", " << y; + } + } +} + +template<> +void SubpelVarianceTest<vp9_subp_avg_variance_fn_t>::RefTest() { + for (int x = 0; x < 16; ++x) { + for (int y = 0; y < 16; ++y) { + for (int j = 0; j < block_size_; j++) { + src_[j] = rnd.Rand8(); + sec_[j] = rnd.Rand8(); + } + for (int j = 0; j < block_size_ + width_ + height_ + 1; j++) { + ref_[j] = rnd.Rand8(); + } + unsigned int sse1, sse2; + unsigned int var1; + REGISTER_STATE_CHECK(var1 = subpel_variance_(ref_, width_ + 1, x, y, + src_, width_, &sse1, sec_)); + const unsigned int var2 = subpel_avg_variance_ref(ref_, src_, sec_, + log2width_, log2height_, + x, y, &sse2); + EXPECT_EQ(sse1, sse2) << "at position " << x << ", " << y; + EXPECT_EQ(var1, var2) << "at position " << x << ", " << y; + } + } +} + // ----------------------------------------------------------------------------- // VP8 test cases. @@ -103,6 +289,7 @@ namespace vp8 { typedef VarianceTest<vp8_variance_fn_t> VP8VarianceTest; TEST_P(VP8VarianceTest, Zero) { ZeroTest(); } +TEST_P(VP8VarianceTest, Ref) { RefTest(); } TEST_P(VP8VarianceTest, OneQuarter) { OneQuarterTest(); } const vp8_variance_fn_t variance4x4_c = vp8_variance4x4_c; @@ -112,11 +299,11 @@ const vp8_variance_fn_t variance16x8_c = vp8_variance16x8_c; const vp8_variance_fn_t variance16x16_c = vp8_variance16x16_c; INSTANTIATE_TEST_CASE_P( C, VP8VarianceTest, - ::testing::Values(make_tuple(4, 4, variance4x4_c), - make_tuple(8, 8, variance8x8_c), - make_tuple(8, 16, variance8x16_c), - make_tuple(16, 8, variance16x8_c), - make_tuple(16, 16, variance16x16_c))); + ::testing::Values(make_tuple(2, 2, variance4x4_c), + make_tuple(3, 3, variance8x8_c), + make_tuple(3, 4, variance8x16_c), + make_tuple(4, 3, variance16x8_c), + make_tuple(4, 4, variance16x16_c))); #if HAVE_MMX const vp8_variance_fn_t variance4x4_mmx = vp8_variance4x4_mmx; @@ -126,11 +313,11 @@ const vp8_variance_fn_t variance16x8_mmx = vp8_variance16x8_mmx; const vp8_variance_fn_t variance16x16_mmx = vp8_variance16x16_mmx; INSTANTIATE_TEST_CASE_P( MMX, VP8VarianceTest, - ::testing::Values(make_tuple(4, 4, variance4x4_mmx), - make_tuple(8, 8, variance8x8_mmx), - make_tuple(8, 16, variance8x16_mmx), - make_tuple(16, 8, variance16x8_mmx), - make_tuple(16, 16, variance16x16_mmx))); + ::testing::Values(make_tuple(2, 2, variance4x4_mmx), + make_tuple(3, 3, variance8x8_mmx), + make_tuple(3, 4, variance8x16_mmx), + make_tuple(4, 3, variance16x8_mmx), + make_tuple(4, 4, variance16x16_mmx))); #endif #if HAVE_SSE2 @@ -141,11 +328,11 @@ const vp8_variance_fn_t variance16x8_wmt = vp8_variance16x8_wmt; const vp8_variance_fn_t variance16x16_wmt = vp8_variance16x16_wmt; INSTANTIATE_TEST_CASE_P( SSE2, VP8VarianceTest, - ::testing::Values(make_tuple(4, 4, variance4x4_wmt), - make_tuple(8, 8, variance8x8_wmt), - make_tuple(8, 16, variance8x16_wmt), - make_tuple(16, 8, variance16x8_wmt), - make_tuple(16, 16, variance16x16_wmt))); + ::testing::Values(make_tuple(2, 2, variance4x4_wmt), + make_tuple(3, 3, variance8x8_wmt), + make_tuple(3, 4, variance8x16_wmt), + make_tuple(4, 3, variance16x8_wmt), + make_tuple(4, 4, variance16x16_wmt))); #endif #endif // CONFIG_VP8_ENCODER @@ -158,22 +345,127 @@ namespace vp9 { #if CONFIG_VP9_ENCODER typedef VarianceTest<vp9_variance_fn_t> VP9VarianceTest; +typedef SubpelVarianceTest<vp9_subpixvariance_fn_t> VP9SubpelVarianceTest; +typedef SubpelVarianceTest<vp9_subp_avg_variance_fn_t> VP9SubpelAvgVarianceTest; TEST_P(VP9VarianceTest, Zero) { ZeroTest(); } +TEST_P(VP9VarianceTest, Ref) { RefTest(); } +TEST_P(VP9SubpelVarianceTest, Ref) { RefTest(); } +TEST_P(VP9SubpelAvgVarianceTest, Ref) { RefTest(); } TEST_P(VP9VarianceTest, OneQuarter) { OneQuarterTest(); } const vp9_variance_fn_t variance4x4_c = vp9_variance4x4_c; +const vp9_variance_fn_t variance4x8_c = vp9_variance4x8_c; +const vp9_variance_fn_t variance8x4_c = vp9_variance8x4_c; const vp9_variance_fn_t variance8x8_c = vp9_variance8x8_c; const vp9_variance_fn_t variance8x16_c = vp9_variance8x16_c; const vp9_variance_fn_t variance16x8_c = vp9_variance16x8_c; const vp9_variance_fn_t variance16x16_c = vp9_variance16x16_c; +const vp9_variance_fn_t variance16x32_c = vp9_variance16x32_c; +const vp9_variance_fn_t variance32x16_c = vp9_variance32x16_c; +const vp9_variance_fn_t variance32x32_c = vp9_variance32x32_c; +const vp9_variance_fn_t variance32x64_c = vp9_variance32x64_c; +const vp9_variance_fn_t variance64x32_c = vp9_variance64x32_c; +const vp9_variance_fn_t variance64x64_c = vp9_variance64x64_c; INSTANTIATE_TEST_CASE_P( C, VP9VarianceTest, - ::testing::Values(make_tuple(4, 4, variance4x4_c), - make_tuple(8, 8, variance8x8_c), - make_tuple(8, 16, variance8x16_c), - make_tuple(16, 8, variance16x8_c), - make_tuple(16, 16, variance16x16_c))); + ::testing::Values(make_tuple(2, 2, variance4x4_c), + make_tuple(2, 3, variance4x8_c), + make_tuple(3, 2, variance8x4_c), + make_tuple(3, 3, variance8x8_c), + make_tuple(3, 4, variance8x16_c), + make_tuple(4, 3, variance16x8_c), + make_tuple(4, 4, variance16x16_c), + make_tuple(4, 5, variance16x32_c), + make_tuple(5, 4, variance32x16_c), + make_tuple(5, 5, variance32x32_c), + make_tuple(5, 6, variance32x64_c), + make_tuple(6, 5, variance64x32_c), + make_tuple(6, 6, variance64x64_c))); + +const vp9_subpixvariance_fn_t subpel_variance4x4_c = + vp9_sub_pixel_variance4x4_c; +const vp9_subpixvariance_fn_t subpel_variance4x8_c = + vp9_sub_pixel_variance4x8_c; +const vp9_subpixvariance_fn_t subpel_variance8x4_c = + vp9_sub_pixel_variance8x4_c; +const vp9_subpixvariance_fn_t subpel_variance8x8_c = + vp9_sub_pixel_variance8x8_c; +const vp9_subpixvariance_fn_t subpel_variance8x16_c = + vp9_sub_pixel_variance8x16_c; +const vp9_subpixvariance_fn_t subpel_variance16x8_c = + vp9_sub_pixel_variance16x8_c; +const vp9_subpixvariance_fn_t subpel_variance16x16_c = + vp9_sub_pixel_variance16x16_c; +const vp9_subpixvariance_fn_t subpel_variance16x32_c = + vp9_sub_pixel_variance16x32_c; +const vp9_subpixvariance_fn_t subpel_variance32x16_c = + vp9_sub_pixel_variance32x16_c; +const vp9_subpixvariance_fn_t subpel_variance32x32_c = + vp9_sub_pixel_variance32x32_c; +const vp9_subpixvariance_fn_t subpel_variance32x64_c = + vp9_sub_pixel_variance32x64_c; +const vp9_subpixvariance_fn_t subpel_variance64x32_c = + vp9_sub_pixel_variance64x32_c; +const vp9_subpixvariance_fn_t subpel_variance64x64_c = + vp9_sub_pixel_variance64x64_c; +INSTANTIATE_TEST_CASE_P( + C, VP9SubpelVarianceTest, + ::testing::Values(make_tuple(2, 2, subpel_variance4x4_c), + make_tuple(2, 3, subpel_variance4x8_c), + make_tuple(3, 2, subpel_variance8x4_c), + make_tuple(3, 3, subpel_variance8x8_c), + make_tuple(3, 4, subpel_variance8x16_c), + make_tuple(4, 3, subpel_variance16x8_c), + make_tuple(4, 4, subpel_variance16x16_c), + make_tuple(4, 5, subpel_variance16x32_c), + make_tuple(5, 4, subpel_variance32x16_c), + make_tuple(5, 5, subpel_variance32x32_c), + make_tuple(5, 6, subpel_variance32x64_c), + make_tuple(6, 5, subpel_variance64x32_c), + make_tuple(6, 6, subpel_variance64x64_c))); + +const vp9_subp_avg_variance_fn_t subpel_avg_variance4x4_c = + vp9_sub_pixel_avg_variance4x4_c; +const vp9_subp_avg_variance_fn_t subpel_avg_variance4x8_c = + vp9_sub_pixel_avg_variance4x8_c; +const vp9_subp_avg_variance_fn_t subpel_avg_variance8x4_c = + vp9_sub_pixel_avg_variance8x4_c; +const vp9_subp_avg_variance_fn_t subpel_avg_variance8x8_c = + vp9_sub_pixel_avg_variance8x8_c; +const vp9_subp_avg_variance_fn_t subpel_avg_variance8x16_c = + vp9_sub_pixel_avg_variance8x16_c; +const vp9_subp_avg_variance_fn_t subpel_avg_variance16x8_c = + vp9_sub_pixel_avg_variance16x8_c; +const vp9_subp_avg_variance_fn_t subpel_avg_variance16x16_c = + vp9_sub_pixel_avg_variance16x16_c; +const vp9_subp_avg_variance_fn_t subpel_avg_variance16x32_c = + vp9_sub_pixel_avg_variance16x32_c; +const vp9_subp_avg_variance_fn_t subpel_avg_variance32x16_c = + vp9_sub_pixel_avg_variance32x16_c; +const vp9_subp_avg_variance_fn_t subpel_avg_variance32x32_c = + vp9_sub_pixel_avg_variance32x32_c; +const vp9_subp_avg_variance_fn_t subpel_avg_variance32x64_c = + vp9_sub_pixel_avg_variance32x64_c; +const vp9_subp_avg_variance_fn_t subpel_avg_variance64x32_c = + vp9_sub_pixel_avg_variance64x32_c; +const vp9_subp_avg_variance_fn_t subpel_avg_variance64x64_c = + vp9_sub_pixel_avg_variance64x64_c; +INSTANTIATE_TEST_CASE_P( + C, VP9SubpelAvgVarianceTest, + ::testing::Values(make_tuple(2, 2, subpel_avg_variance4x4_c), + make_tuple(2, 3, subpel_avg_variance4x8_c), + make_tuple(3, 2, subpel_avg_variance8x4_c), + make_tuple(3, 3, subpel_avg_variance8x8_c), + make_tuple(3, 4, subpel_avg_variance8x16_c), + make_tuple(4, 3, subpel_avg_variance16x8_c), + make_tuple(4, 4, subpel_avg_variance16x16_c), + make_tuple(4, 5, subpel_avg_variance16x32_c), + make_tuple(5, 4, subpel_avg_variance32x16_c), + make_tuple(5, 5, subpel_avg_variance32x32_c), + make_tuple(5, 6, subpel_avg_variance32x64_c), + make_tuple(6, 5, subpel_avg_variance64x32_c), + make_tuple(6, 6, subpel_avg_variance64x64_c))); #if HAVE_MMX const vp9_variance_fn_t variance4x4_mmx = vp9_variance4x4_mmx; @@ -183,26 +475,212 @@ const vp9_variance_fn_t variance16x8_mmx = vp9_variance16x8_mmx; const vp9_variance_fn_t variance16x16_mmx = vp9_variance16x16_mmx; INSTANTIATE_TEST_CASE_P( MMX, VP9VarianceTest, - ::testing::Values(make_tuple(4, 4, variance4x4_mmx), - make_tuple(8, 8, variance8x8_mmx), - make_tuple(8, 16, variance8x16_mmx), - make_tuple(16, 8, variance16x8_mmx), - make_tuple(16, 16, variance16x16_mmx))); + ::testing::Values(make_tuple(2, 2, variance4x4_mmx), + make_tuple(3, 3, variance8x8_mmx), + make_tuple(3, 4, variance8x16_mmx), + make_tuple(4, 3, variance16x8_mmx), + make_tuple(4, 4, variance16x16_mmx))); #endif #if HAVE_SSE2 -const vp9_variance_fn_t variance4x4_wmt = vp9_variance4x4_sse2; -const vp9_variance_fn_t variance8x8_wmt = vp9_variance8x8_sse2; -const vp9_variance_fn_t variance8x16_wmt = vp9_variance8x16_sse2; -const vp9_variance_fn_t variance16x8_wmt = vp9_variance16x8_sse2; -const vp9_variance_fn_t variance16x16_wmt = vp9_variance16x16_sse2; +const vp9_variance_fn_t variance4x4_sse2 = vp9_variance4x4_sse2; +const vp9_variance_fn_t variance4x8_sse2 = vp9_variance4x8_sse2; +const vp9_variance_fn_t variance8x4_sse2 = vp9_variance8x4_sse2; +const vp9_variance_fn_t variance8x8_sse2 = vp9_variance8x8_sse2; +const vp9_variance_fn_t variance8x16_sse2 = vp9_variance8x16_sse2; +const vp9_variance_fn_t variance16x8_sse2 = vp9_variance16x8_sse2; +const vp9_variance_fn_t variance16x16_sse2 = vp9_variance16x16_sse2; +const vp9_variance_fn_t variance16x32_sse2 = vp9_variance16x32_sse2; +const vp9_variance_fn_t variance32x16_sse2 = vp9_variance32x16_sse2; +const vp9_variance_fn_t variance32x32_sse2 = vp9_variance32x32_sse2; +const vp9_variance_fn_t variance32x64_sse2 = vp9_variance32x64_sse2; +const vp9_variance_fn_t variance64x32_sse2 = vp9_variance64x32_sse2; +const vp9_variance_fn_t variance64x64_sse2 = vp9_variance64x64_sse2; INSTANTIATE_TEST_CASE_P( SSE2, VP9VarianceTest, - ::testing::Values(make_tuple(4, 4, variance4x4_wmt), - make_tuple(8, 8, variance8x8_wmt), - make_tuple(8, 16, variance8x16_wmt), - make_tuple(16, 8, variance16x8_wmt), - make_tuple(16, 16, variance16x16_wmt))); + ::testing::Values(make_tuple(2, 2, variance4x4_sse2), + make_tuple(2, 3, variance4x8_sse2), + make_tuple(3, 2, variance8x4_sse2), + make_tuple(3, 3, variance8x8_sse2), + make_tuple(3, 4, variance8x16_sse2), + make_tuple(4, 3, variance16x8_sse2), + make_tuple(4, 4, variance16x16_sse2), + make_tuple(4, 5, variance16x32_sse2), + make_tuple(5, 4, variance32x16_sse2), + make_tuple(5, 5, variance32x32_sse2), + make_tuple(5, 6, variance32x64_sse2), + make_tuple(6, 5, variance64x32_sse2), + make_tuple(6, 6, variance64x64_sse2))); + +const vp9_subpixvariance_fn_t subpel_variance4x4_sse = + vp9_sub_pixel_variance4x4_sse; +const vp9_subpixvariance_fn_t subpel_variance4x8_sse = + vp9_sub_pixel_variance4x8_sse; +const vp9_subpixvariance_fn_t subpel_variance8x4_sse2 = + vp9_sub_pixel_variance8x4_sse2; +const vp9_subpixvariance_fn_t subpel_variance8x8_sse2 = + vp9_sub_pixel_variance8x8_sse2; +const vp9_subpixvariance_fn_t subpel_variance8x16_sse2 = + vp9_sub_pixel_variance8x16_sse2; +const vp9_subpixvariance_fn_t subpel_variance16x8_sse2 = + vp9_sub_pixel_variance16x8_sse2; +const vp9_subpixvariance_fn_t subpel_variance16x16_sse2 = + vp9_sub_pixel_variance16x16_sse2; +const vp9_subpixvariance_fn_t subpel_variance16x32_sse2 = + vp9_sub_pixel_variance16x32_sse2; +const vp9_subpixvariance_fn_t subpel_variance32x16_sse2 = + vp9_sub_pixel_variance32x16_sse2; +const vp9_subpixvariance_fn_t subpel_variance32x32_sse2 = + vp9_sub_pixel_variance32x32_sse2; +const vp9_subpixvariance_fn_t subpel_variance32x64_sse2 = + vp9_sub_pixel_variance32x64_sse2; +const vp9_subpixvariance_fn_t subpel_variance64x32_sse2 = + vp9_sub_pixel_variance64x32_sse2; +const vp9_subpixvariance_fn_t subpel_variance64x64_sse2 = + vp9_sub_pixel_variance64x64_sse2; +INSTANTIATE_TEST_CASE_P( + SSE2, VP9SubpelVarianceTest, + ::testing::Values(make_tuple(2, 2, subpel_variance4x4_sse), + make_tuple(2, 3, subpel_variance4x8_sse), + make_tuple(3, 2, subpel_variance8x4_sse2), + make_tuple(3, 3, subpel_variance8x8_sse2), + make_tuple(3, 4, subpel_variance8x16_sse2), + make_tuple(4, 3, subpel_variance16x8_sse2), + make_tuple(4, 4, subpel_variance16x16_sse2), + make_tuple(4, 5, subpel_variance16x32_sse2), + make_tuple(5, 4, subpel_variance32x16_sse2), + make_tuple(5, 5, subpel_variance32x32_sse2), + make_tuple(5, 6, subpel_variance32x64_sse2), + make_tuple(6, 5, subpel_variance64x32_sse2), + make_tuple(6, 6, subpel_variance64x64_sse2))); + +const vp9_subp_avg_variance_fn_t subpel_avg_variance4x4_sse = + vp9_sub_pixel_avg_variance4x4_sse; +const vp9_subp_avg_variance_fn_t subpel_avg_variance4x8_sse = + vp9_sub_pixel_avg_variance4x8_sse; +const vp9_subp_avg_variance_fn_t subpel_avg_variance8x4_sse2 = + vp9_sub_pixel_avg_variance8x4_sse2; +const vp9_subp_avg_variance_fn_t subpel_avg_variance8x8_sse2 = + vp9_sub_pixel_avg_variance8x8_sse2; +const vp9_subp_avg_variance_fn_t subpel_avg_variance8x16_sse2 = + vp9_sub_pixel_avg_variance8x16_sse2; +const vp9_subp_avg_variance_fn_t subpel_avg_variance16x8_sse2 = + vp9_sub_pixel_avg_variance16x8_sse2; +const vp9_subp_avg_variance_fn_t subpel_avg_variance16x16_sse2 = + vp9_sub_pixel_avg_variance16x16_sse2; +const vp9_subp_avg_variance_fn_t subpel_avg_variance16x32_sse2 = + vp9_sub_pixel_avg_variance16x32_sse2; +const vp9_subp_avg_variance_fn_t subpel_avg_variance32x16_sse2 = + vp9_sub_pixel_avg_variance32x16_sse2; +const vp9_subp_avg_variance_fn_t subpel_avg_variance32x32_sse2 = + vp9_sub_pixel_avg_variance32x32_sse2; +const vp9_subp_avg_variance_fn_t subpel_avg_variance32x64_sse2 = + vp9_sub_pixel_avg_variance32x64_sse2; +const vp9_subp_avg_variance_fn_t subpel_avg_variance64x32_sse2 = + vp9_sub_pixel_avg_variance64x32_sse2; +const vp9_subp_avg_variance_fn_t subpel_avg_variance64x64_sse2 = + vp9_sub_pixel_avg_variance64x64_sse2; +INSTANTIATE_TEST_CASE_P( + SSE2, VP9SubpelAvgVarianceTest, + ::testing::Values(make_tuple(2, 2, subpel_avg_variance4x4_sse), + make_tuple(2, 3, subpel_avg_variance4x8_sse), + make_tuple(3, 2, subpel_avg_variance8x4_sse2), + make_tuple(3, 3, subpel_avg_variance8x8_sse2), + make_tuple(3, 4, subpel_avg_variance8x16_sse2), + make_tuple(4, 3, subpel_avg_variance16x8_sse2), + make_tuple(4, 4, subpel_avg_variance16x16_sse2), + make_tuple(4, 5, subpel_avg_variance16x32_sse2), + make_tuple(5, 4, subpel_avg_variance32x16_sse2), + make_tuple(5, 5, subpel_avg_variance32x32_sse2), + make_tuple(5, 6, subpel_avg_variance32x64_sse2), + make_tuple(6, 5, subpel_avg_variance64x32_sse2), + make_tuple(6, 6, subpel_avg_variance64x64_sse2))); +#endif + +#if HAVE_SSSE3 +const vp9_subpixvariance_fn_t subpel_variance4x4_ssse3 = + vp9_sub_pixel_variance4x4_ssse3; +const vp9_subpixvariance_fn_t subpel_variance4x8_ssse3 = + vp9_sub_pixel_variance4x8_ssse3; +const vp9_subpixvariance_fn_t subpel_variance8x4_ssse3 = + vp9_sub_pixel_variance8x4_ssse3; +const vp9_subpixvariance_fn_t subpel_variance8x8_ssse3 = + vp9_sub_pixel_variance8x8_ssse3; +const vp9_subpixvariance_fn_t subpel_variance8x16_ssse3 = + vp9_sub_pixel_variance8x16_ssse3; +const vp9_subpixvariance_fn_t subpel_variance16x8_ssse3 = + vp9_sub_pixel_variance16x8_ssse3; +const vp9_subpixvariance_fn_t subpel_variance16x16_ssse3 = + vp9_sub_pixel_variance16x16_ssse3; +const vp9_subpixvariance_fn_t subpel_variance16x32_ssse3 = + vp9_sub_pixel_variance16x32_ssse3; +const vp9_subpixvariance_fn_t subpel_variance32x16_ssse3 = + vp9_sub_pixel_variance32x16_ssse3; +const vp9_subpixvariance_fn_t subpel_variance32x32_ssse3 = + vp9_sub_pixel_variance32x32_ssse3; +const vp9_subpixvariance_fn_t subpel_variance32x64_ssse3 = + vp9_sub_pixel_variance32x64_ssse3; +const vp9_subpixvariance_fn_t subpel_variance64x32_ssse3 = + vp9_sub_pixel_variance64x32_ssse3; +const vp9_subpixvariance_fn_t subpel_variance64x64_ssse3 = + vp9_sub_pixel_variance64x64_ssse3; +INSTANTIATE_TEST_CASE_P( + SSSE3, VP9SubpelVarianceTest, + ::testing::Values(make_tuple(2, 2, subpel_variance4x4_ssse3), + make_tuple(2, 3, subpel_variance4x8_ssse3), + make_tuple(3, 2, subpel_variance8x4_ssse3), + make_tuple(3, 3, subpel_variance8x8_ssse3), + make_tuple(3, 4, subpel_variance8x16_ssse3), + make_tuple(4, 3, subpel_variance16x8_ssse3), + make_tuple(4, 4, subpel_variance16x16_ssse3), + make_tuple(4, 5, subpel_variance16x32_ssse3), + make_tuple(5, 4, subpel_variance32x16_ssse3), + make_tuple(5, 5, subpel_variance32x32_ssse3), + make_tuple(5, 6, subpel_variance32x64_ssse3), + make_tuple(6, 5, subpel_variance64x32_ssse3), + make_tuple(6, 6, subpel_variance64x64_ssse3))); + +const vp9_subp_avg_variance_fn_t subpel_avg_variance4x4_ssse3 = + vp9_sub_pixel_avg_variance4x4_ssse3; +const vp9_subp_avg_variance_fn_t subpel_avg_variance4x8_ssse3 = + vp9_sub_pixel_avg_variance4x8_ssse3; +const vp9_subp_avg_variance_fn_t subpel_avg_variance8x4_ssse3 = + vp9_sub_pixel_avg_variance8x4_ssse3; +const vp9_subp_avg_variance_fn_t subpel_avg_variance8x8_ssse3 = + vp9_sub_pixel_avg_variance8x8_ssse3; +const vp9_subp_avg_variance_fn_t subpel_avg_variance8x16_ssse3 = + vp9_sub_pixel_avg_variance8x16_ssse3; +const vp9_subp_avg_variance_fn_t subpel_avg_variance16x8_ssse3 = + vp9_sub_pixel_avg_variance16x8_ssse3; +const vp9_subp_avg_variance_fn_t subpel_avg_variance16x16_ssse3 = + vp9_sub_pixel_avg_variance16x16_ssse3; +const vp9_subp_avg_variance_fn_t subpel_avg_variance16x32_ssse3 = + vp9_sub_pixel_avg_variance16x32_ssse3; +const vp9_subp_avg_variance_fn_t subpel_avg_variance32x16_ssse3 = + vp9_sub_pixel_avg_variance32x16_ssse3; +const vp9_subp_avg_variance_fn_t subpel_avg_variance32x32_ssse3 = + vp9_sub_pixel_avg_variance32x32_ssse3; +const vp9_subp_avg_variance_fn_t subpel_avg_variance32x64_ssse3 = + vp9_sub_pixel_avg_variance32x64_ssse3; +const vp9_subp_avg_variance_fn_t subpel_avg_variance64x32_ssse3 = + vp9_sub_pixel_avg_variance64x32_ssse3; +const vp9_subp_avg_variance_fn_t subpel_avg_variance64x64_ssse3 = + vp9_sub_pixel_avg_variance64x64_ssse3; +INSTANTIATE_TEST_CASE_P( + SSSE3, VP9SubpelAvgVarianceTest, + ::testing::Values(make_tuple(2, 2, subpel_avg_variance4x4_ssse3), + make_tuple(2, 3, subpel_avg_variance4x8_ssse3), + make_tuple(3, 2, subpel_avg_variance8x4_ssse3), + make_tuple(3, 3, subpel_avg_variance8x8_ssse3), + make_tuple(3, 4, subpel_avg_variance8x16_ssse3), + make_tuple(4, 3, subpel_avg_variance16x8_ssse3), + make_tuple(4, 4, subpel_avg_variance16x16_ssse3), + make_tuple(4, 5, subpel_avg_variance16x32_ssse3), + make_tuple(5, 4, subpel_avg_variance32x16_ssse3), + make_tuple(5, 5, subpel_avg_variance32x32_ssse3), + make_tuple(5, 6, subpel_avg_variance32x64_ssse3), + make_tuple(6, 5, subpel_avg_variance64x32_ssse3), + make_tuple(6, 6, subpel_avg_variance64x64_ssse3))); #endif #endif // CONFIG_VP9_ENCODER diff --git a/libvpx/test/vp9_lossless_test.cc b/libvpx/test/vp9_lossless_test.cc new file mode 100644 index 0000000..441cc44 --- /dev/null +++ b/libvpx/test/vp9_lossless_test.cc @@ -0,0 +1,75 @@ +/* + Copyright (c) 2012 The WebM project authors. All Rights Reserved. + + Use of this source code is governed by a BSD-style license + that can be found in the LICENSE file in the root of the source + tree. An additional intellectual property rights grant can be found + in the file PATENTS. All contributing project authors may + be found in the AUTHORS file in the root of the source tree. +*/ + +#include "third_party/googletest/src/include/gtest/gtest.h" +#include "test/codec_factory.h" +#include "test/encode_test_driver.h" +#include "test/i420_video_source.h" +#include "test/util.h" + +namespace { + +const int kMaxPsnr = 100; + +class LossLessTest : public ::libvpx_test::EncoderTest, + public ::libvpx_test::CodecTestWithParam<libvpx_test::TestMode> { + protected: + LossLessTest() : EncoderTest(GET_PARAM(0)), + psnr_(kMaxPsnr), + nframes_(0), + encoding_mode_(GET_PARAM(1)) { + } + + virtual ~LossLessTest() {} + + virtual void SetUp() { + InitializeConfig(); + SetMode(encoding_mode_); + } + + virtual void BeginPassHook(unsigned int /*pass*/) { + psnr_ = 0.0; + nframes_ = 0; + } + + virtual void PSNRPktHook(const vpx_codec_cx_pkt_t *pkt) { + if (pkt->data.psnr.psnr[0] < psnr_) + psnr_= pkt->data.psnr.psnr[0]; + } + + double GetMinPsnr() const { + return psnr_; + } + + private: + double psnr_; + unsigned int nframes_; + libvpx_test::TestMode encoding_mode_; +}; + +TEST_P(LossLessTest, TestLossLessEncoding) { + const vpx_rational timebase = { 33333333, 1000000000 }; + cfg_.g_timebase = timebase; + cfg_.rc_target_bitrate = 2000; + cfg_.g_lag_in_frames = 25; + cfg_.rc_min_quantizer = 0; + cfg_.rc_max_quantizer = 0; + + init_flags_ = VPX_CODEC_USE_PSNR; + + // intentionally changed the dimension for better testing coverage + libvpx_test::I420VideoSource video("hantro_collage_w352h288.yuv", 356, 284, + timebase.den, timebase.num, 0, 30); + + const double psnr_lossless = GetMinPsnr(); + EXPECT_GE(psnr_lossless, kMaxPsnr); +} +VP9_INSTANTIATE_TEST_CASE(LossLessTest, ALL_TEST_MODES); +} // namespace diff --git a/libvpx/test/vp9_subtract_test.cc b/libvpx/test/vp9_subtract_test.cc new file mode 100644 index 0000000..3e5fe8d --- /dev/null +++ b/libvpx/test/vp9_subtract_test.cc @@ -0,0 +1,101 @@ +/* + * Copyright (c) 2012 The WebM project authors. All Rights Reserved. + * + * Use of this source code is governed by a BSD-style license + * that can be found in the LICENSE file in the root of the source + * tree. An additional intellectual property rights grant can be found + * in the file PATENTS. All contributing project authors may + * be found in the AUTHORS file in the root of the source tree. + */ + +#include "third_party/googletest/src/include/gtest/gtest.h" +#include "test/acm_random.h" +#include "test/clear_system_state.h" +#include "test/register_state_check.h" +extern "C" { +#include "./vpx_config.h" +#include "./vp9_rtcd.h" +#include "vp9/common/vp9_blockd.h" +#include "vpx_mem/vpx_mem.h" +} + +typedef void (*subtract_fn_t)(int rows, int cols, + int16_t *diff_ptr, ptrdiff_t diff_stride, + const uint8_t *src_ptr, ptrdiff_t src_stride, + const uint8_t *pred_ptr, ptrdiff_t pred_stride); + +namespace vp9 { + +class VP9SubtractBlockTest : public ::testing::TestWithParam<subtract_fn_t> { + public: + virtual void TearDown() { + libvpx_test::ClearSystemState(); + } +}; + +using libvpx_test::ACMRandom; + +TEST_P(VP9SubtractBlockTest, SimpleSubtract) { + ACMRandom rnd(ACMRandom::DeterministicSeed()); + + // FIXME(rbultje) split in its own file + for (BLOCK_SIZE_TYPE bsize = BLOCK_SIZE_AB4X4; bsize < BLOCK_SIZE_TYPES; + bsize = static_cast<BLOCK_SIZE_TYPE>(static_cast<int>(bsize) + 1)) { + const int block_width = 4 << b_width_log2(bsize); + const int block_height = 4 << b_height_log2(bsize); + int16_t *diff = reinterpret_cast<int16_t *>( + vpx_memalign(16, sizeof(*diff) * block_width * block_height * 2)); + uint8_t *pred = reinterpret_cast<uint8_t *>( + vpx_memalign(16, block_width * block_height * 2)); + uint8_t *src = reinterpret_cast<uint8_t *>( + vpx_memalign(16, block_width * block_height * 2)); + + for (int n = 0; n < 100; n++) { + for (int r = 0; r < block_height; ++r) { + for (int c = 0; c < block_width * 2; ++c) { + src[r * block_width * 2 + c] = rnd.Rand8(); + pred[r * block_width * 2 + c] = rnd.Rand8(); + } + } + + GetParam()(block_height, block_width, diff, block_width, + src, block_width, pred, block_width); + + for (int r = 0; r < block_height; ++r) { + for (int c = 0; c < block_width; ++c) { + EXPECT_EQ(diff[r * block_width + c], + (src[r * block_width + c] - + pred[r * block_width + c])) << "r = " << r + << ", c = " << c + << ", bs = " << bsize; + } + } + + GetParam()(block_height, block_width, diff, block_width * 2, + src, block_width * 2, pred, block_width * 2); + + for (int r = 0; r < block_height; ++r) { + for (int c = 0; c < block_width; ++c) { + EXPECT_EQ(diff[r * block_width * 2 + c], + (src[r * block_width * 2 + c] - + pred[r * block_width * 2 + c])) << "r = " << r + << ", c = " << c + << ", bs = " << bsize; + } + } + } + vpx_free(diff); + vpx_free(pred); + vpx_free(src); + } +} + +INSTANTIATE_TEST_CASE_P(C, VP9SubtractBlockTest, + ::testing::Values(vp9_subtract_block_c)); + +#if HAVE_SSE2 +INSTANTIATE_TEST_CASE_P(SSE2, VP9SubtractBlockTest, + ::testing::Values(vp9_subtract_block_sse2)); +#endif + +} // namespace vp9 diff --git a/libvpx/test/webm_video_source.h b/libvpx/test/webm_video_source.h index c7919a9..9fc8545 100644 --- a/libvpx/test/webm_video_source.h +++ b/libvpx/test/webm_video_source.h @@ -99,7 +99,7 @@ class WebMVideoSource : public CompressedVideoSource { virtual void Begin() { input_file_ = OpenTestDataFile(file_name_); - ASSERT_TRUE(input_file_) << "Input file open failed. Filename: " + ASSERT_TRUE(input_file_ != NULL) << "Input file open failed. Filename: " << file_name_; nestegg_io io = {nestegg_read_cb, nestegg_seek_cb, nestegg_tell_cb, @@ -130,6 +130,7 @@ class WebMVideoSource : public CompressedVideoSource { } void FillFrame() { + ASSERT_TRUE(input_file_ != NULL); if (chunk_ >= chunks_) { unsigned int track; |