diff options
32 files changed, 1412 insertions, 1142 deletions
diff --git a/test/fdct4x4_test.cc b/test/fdct4x4_test.cc index e246491be..261fc1c96 100644 --- a/test/fdct4x4_test.cc +++ b/test/fdct4x4_test.cc @@ -41,12 +41,12 @@ void iht4x4_add(int16_t *in, int16_t *out, uint8_t *dst, class FwdTrans4x4Test : public ::testing::TestWithParam<int> { public: - FwdTrans4x4Test() {SetUpTestTxfm();} + FwdTrans4x4Test() { SetUpTestTxfm(); } ~FwdTrans4x4Test() {} void SetUpTestTxfm() { - tx_type = GetParam(); - if (tx_type == 0) { + tx_type_ = GetParam(); + if (tx_type_ == 0) { fwd_txfm = fdct4x4; inv_txfm = idct4x4_add; } else { @@ -66,7 +66,7 @@ class FwdTrans4x4Test : public ::testing::TestWithParam<int> { (*inv_txfm)(in, out, dst, stride, tx_type); } - int 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, @@ -87,7 +87,7 @@ TEST_P(FwdTrans4x4Test, SignBiasCheck) { for (int j = 0; j < 16; ++j) test_input_block[j] = rnd.Rand8() - rnd.Rand8(); - RunFwdTxfm(test_input_block, test_output_block, NULL, pitch, tx_type); + RunFwdTxfm(test_input_block, test_output_block, NULL, pitch, tx_type_); for (int j = 0; j < 16; ++j) { if (test_output_block[j] < 0) @@ -103,7 +103,7 @@ TEST_P(FwdTrans4x4Test, SignBiasCheck) { EXPECT_TRUE(bias_acceptable) << "Error: 4x4 FDCT/FHT has a sign bias > 1%" << " for input range [-255, 255] at index " << j - << " tx_type " << tx_type; + << " tx_type " << tx_type_; } memset(count_sign_block, 0, sizeof(count_sign_block)); @@ -112,7 +112,7 @@ TEST_P(FwdTrans4x4Test, SignBiasCheck) { for (int j = 0; j < 16; ++j) test_input_block[j] = (rnd.Rand8() >> 4) - (rnd.Rand8() >> 4); - RunFwdTxfm(test_input_block, test_output_block, NULL, pitch, tx_type); + RunFwdTxfm(test_input_block, test_output_block, NULL, pitch, tx_type_); for (int j = 0; j < 16; ++j) { if (test_output_block[j] < 0) @@ -151,7 +151,7 @@ TEST_P(FwdTrans4x4Test, RoundTripErrorCheck) { test_input_block[j] = src[j] - dst[j]; const int pitch = 8; - RunFwdTxfm(test_input_block, test_temp_block, dst, pitch, tx_type); + RunFwdTxfm(test_input_block, test_temp_block, dst, pitch, tx_type_); for (int j = 0; j < 16; ++j) { if(test_temp_block[j] > 0) { @@ -166,7 +166,7 @@ TEST_P(FwdTrans4x4Test, RoundTripErrorCheck) { } // inverse transform and reconstruct the pixel block - RunInvTxfm(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 < 16; ++j) { const int diff = dst[j] - src[j]; diff --git a/test/fdct8x8_test.cc b/test/fdct8x8_test.cc index 90b4ecd64..8b9cff552 100644 --- a/test/fdct8x8_test.cc +++ b/test/fdct8x8_test.cc @@ -25,8 +25,53 @@ 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) { + vp9_short_fht8x8_c(in, out, stride >> 1, tx_type); +} +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: + FwdTrans8x8Test() { SetUpTestTxfm(); } + ~FwdTrans8x8Test() {} + + void SetUpTestTxfm() { + 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]; @@ -41,7 +86,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 +100,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 +115,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,16 +129,16 @@ 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; @@ -112,7 +157,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 +169,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,13 +181,14 @@ 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; @@ -161,8 +207,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 +219,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/test/sad_test.cc b/test/sad_test.cc index 1f5435f2a..bf3e0b819 100644 --- a/test/sad_test.cc +++ b/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/test/test-data.sha1 b/test/test-data.sha1 index ec2a2f9ae..5a42c6a9d 100644 --- a/test/test-data.sha1 +++ b/test/test-data.sha1 @@ -122,351 +122,273 @@ 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 -3e673748bf9dbdade4ac84062eac83daab9464fa vp90-01-size-10x10.webm -e516f5c649b48956c1148207e2aaf7cf1c6d913a vp90-01-size-10x10.webm.md5 -7dfc03f1495c267c71e668da5459d6c1d8eeeb8c vp90-01-size-10x16.webm -d4f13b3f5c61dd41743c847b6b1a32727224448e vp90-01-size-10x16.webm.md5 -e5deec71f46f26122ea94060068f9ffc17013c41 vp90-01-size-10x18.webm -e54a92dfbabcf286ed16f4a3bcdcf3c55d7a6369 vp90-01-size-10x18.webm.md5 -1a9fa81070a1a1e8f50014d6cc223a31f5079f38 vp90-01-size-10x32.webm -f06458df3a673b7646b119019a1abbff5a30148f vp90-01-size-10x32.webm.md5 -ada99286b840cdc84e13e7bcbe75841ac22f5a47 vp90-01-size-10x34.webm -90ff6ec3b3dc738803c2d1a37a91381149438869 vp90-01-size-10x34.webm.md5 -e406a64a0b8bc217ba4a88a96be5915f88254ebc vp90-01-size-10x64.webm -cdcf3863185f05ea09c9d6bfb69785d32c131a4c vp90-01-size-10x64.webm.md5 -b58a1aae42898b3fb5f04b45f1cde00729e4b3ee vp90-01-size-10x66.webm -279f6bc1f4a1674b7860d044e9626da46efb04cb vp90-01-size-10x66.webm.md5 -4804200b4ec26bac88aded43aa78a2bd00ed7f5d vp90-01-size-10x8.webm -613c356100d1134ca40713d605d8b2b5c74818a4 vp90-01-size-10x8.webm.md5 -73836cf5ac47be5316029c05a005e97e641e2651 vp90-01-size-16x10.webm -7c9b66a20fb1333545daafd3f28223f1247b755b vp90-01-size-16x10.webm.md5 -b6c1e654a2e153a524e4875cb5a424bef28c660a vp90-01-size-16x16.webm -4c409ba58cbefe9c7e3bedbf2ba4c2f143a5120a vp90-01-size-16x16.webm.md5 -384b7cc6f348f0d12aa01064dfe1803853792375 vp90-01-size-16x18.webm -a0308450b873b213b9c412d9431f8fd362d98c59 vp90-01-size-16x18.webm.md5 -126c8107da1be975616c410aa2f52e76ccbf6a1c vp90-01-size-16x32.webm -92cf02b7dedb16a013ccb5f0b63e0ec2bc479d55 vp90-01-size-16x32.webm.md5 -d7d97da4b66b875c90e1c6db55df4027caafae96 vp90-01-size-16x34.webm -bffb6d35c56cb036391ed5dd17c03b9a3d88e8b0 vp90-01-size-16x34.webm.md5 -8d427d3f02abbc53c0618557b96cc72824bbaf33 vp90-01-size-16x64.webm -b1051498c12022bf3707aaf616fff355ecfba4d9 vp90-01-size-16x64.webm.md5 -8de0cd25fb452d4ae1689bae25fae13539fe4329 vp90-01-size-16x66.webm -957f2c32cbf144bab01d03f929102b2a618e2c95 vp90-01-size-16x66.webm.md5 -5ac33bb2324ba5b00c826b9c16fc614be342ded2 vp90-01-size-16x8.webm -49fc83909f709eb89bf2cd9327bb08a593eb4d88 vp90-01-size-16x8.webm.md5 -e2fbed04a6d4e841e961b436cec1eec38332a9a5 vp90-01-size-18x10.webm -c5b1216de75978dfb6a9eb9ae61ac29f019ce543 vp90-01-size-18x10.webm.md5 -c5c59bb960e350e604e388af46a4e5efbffba32d vp90-01-size-18x16.webm -7f38d99f25f215743971864ae812d7d8dbc80aa8 vp90-01-size-18x16.webm.md5 -a196ee06c8074729aa801995af5f8964ea3c0063 vp90-01-size-18x18.webm -9d64dadd32079a435b67f9a33998e757d4d91315 vp90-01-size-18x18.webm.md5 -2da253804afb366b7888e15740e0855fb419a7b1 vp90-01-size-18x32.webm -6ba856423d824e1e7854707c435d41624848d938 vp90-01-size-18x32.webm.md5 -7853a0ced5cfbc44f7e0b37979a7718f860aec43 vp90-01-size-18x34.webm -eb62f479c63e58a8fa5feee6a123bef07d3b58a0 vp90-01-size-18x34.webm.md5 -74218d646a5dbdb310feba4fdf1ada2dc8840fe2 vp90-01-size-18x64.webm -22d31000a8f2f6574c7850ee4364d713ffe44600 vp90-01-size-18x64.webm.md5 -4bdfbea97330ede6b2c1038fcbfa88b3010eeef3 vp90-01-size-18x66.webm -f3b5771f57f4cc5826b7cd4383f11b46e7c53ca0 vp90-01-size-18x66.webm.md5 -6ad8483a9afac88e04cf8eae6441db5d98c697f3 vp90-01-size-18x8.webm -7f312c2cf1bbaec71fa069dd012c908e51cc43e6 vp90-01-size-18x8.webm.md5 -4a0dd0b32e9940c85219d2f4f9f8dbcec3da6d9a vp90-01-size-32x10.webm -8546c9edc83fd604ba86c68ef209d6bb0b33735a vp90-01-size-32x10.webm.md5 -84ec0e5745b796cba61869760b09d966a6e4e157 vp90-01-size-32x16.webm -f6783d7f09bd0f9fb7b7b9f9dfbdf7f41783a21e vp90-01-size-32x16.webm.md5 -ca74be800876be136ad8c46c03504b0b9a98662b vp90-01-size-32x18.webm -9feb55eade86b2e77e2c66001aaf099d2a68d15f vp90-01-size-32x18.webm.md5 -ab00e0ef6ef77d36a5dd90f4c4412d6c9cfc9b01 vp90-01-size-32x32.webm -1095be9a96ed7ce25caf6e8be82d90a30817defe vp90-01-size-32x32.webm.md5 -01e51d2a49c7abcfeb857b587c9bcf96c291032f vp90-01-size-32x34.webm -8372a136f6aa4f4721509a617eb3caed7b96325a vp90-01-size-32x34.webm.md5 -58e4218bba942222e4ff2963469bf1c69fce2f3f vp90-01-size-32x64.webm -6d2a7d67b98a7df78a5d6767b8dde41953c3900f vp90-01-size-32x64.webm.md5 -4e41abe8eb0a93933b985bfe6a2472d40d304a70 vp90-01-size-32x66.webm -7c63da0f5276f1af732b43e5271cb539df7e2f0b vp90-01-size-32x66.webm.md5 -b7d1df8df4a07073d0cc787e114f0216b536483b vp90-01-size-32x8.webm -4cb1c7125d42297f5270009aa52756ea554cd04e vp90-01-size-32x8.webm.md5 -b6355182dc0494a90986c352e88b58139759bbc2 vp90-01-size-34x10.webm -b8782093cd6665c1a29e5fb5e770f430953c6b1f vp90-01-size-34x10.webm.md5 -39cc3f78905c680c942b5b86824efa031214c102 vp90-01-size-34x16.webm -da2d337a8a00399ed3b1a951dbba76ed74dc6585 vp90-01-size-34x16.webm.md5 -4730d21f7f65f172b544c660c2659dcb97a122d7 vp90-01-size-34x18.webm -1cfdc814e0d535d21e5157e09c4ded329639e042 vp90-01-size-34x18.webm.md5 -cfc9607870cd6eb572c86280f88d26bd24f7be95 vp90-01-size-34x32.webm -f10d757389a451e210aa0436e879fde75515817f vp90-01-size-34x32.webm.md5 -e9bcb642ad273128d4daa3efb4c809f056f5ebfd vp90-01-size-34x34.webm -b5bb0ff3fcf44d00a1e1593089a11b14f76bc9bd vp90-01-size-34x34.webm.md5 -afa623fea5e1eb8b571325a2233b3dcdfc1200ef vp90-01-size-34x64.webm -f031e13dc76f259d7eb48097a83261ff5844c95b vp90-01-size-34x64.webm.md5 -27c6be7d050aec3b49202eabdc731f8089b4b96b vp90-01-size-34x66.webm -a60243b80719e6066e794467c35499b618134736 vp90-01-size-34x66.webm.md5 -34b03e0dd30609440d7fc05ae2a7057c77749e5e vp90-01-size-34x8.webm -0d7d81a4f0c8a7f572696f506d484fe2c4bfd653 vp90-01-size-34x8.webm.md5 -1d6d10e894f12c8ef2ef0db36284478c3f7226ed vp90-01-size-64x10.webm -9d9ac98dd00821eb05979009aa748cb57340472e vp90-01-size-64x10.webm.md5 -d037a91d9fb4a72da6dc8f026d8d18743e594d05 vp90-01-size-64x16.webm -cbc2d9b92d383496f2f910f97b07acfae6e52b15 vp90-01-size-64x16.webm.md5 -d683291198b50ad85b3dec9fb9346ba1035a9fda vp90-01-size-64x18.webm -e8ea312388053c15b3f3591e3afcb78f7349a8c1 vp90-01-size-64x18.webm.md5 -d8f1c48c6209db4b7550aa7a9466bcd466a0dc90 vp90-01-size-64x32.webm -604aed18ef94994495f0f9e937bc573ddd2ecea8 vp90-01-size-64x32.webm.md5 -cec43ec2315d87fbdc3eefa84fa91a3faf0ad47c vp90-01-size-64x34.webm -c44aa374b116be9a6b73362d103d015e9a3a146c vp90-01-size-64x34.webm.md5 -958f55ab12b5028947faf05f9677742b1a0156f1 vp90-01-size-64x64.webm -79e88b4aeff9b3f26e73edb7cf12c9e18bebe78b vp90-01-size-64x64.webm.md5 -a31f351d3090ec9521b17c14823118c4ca004076 vp90-01-size-64x66.webm -0db579b5d72907462f21ca607e42bb31e4b0cbdb vp90-01-size-64x66.webm.md5 -ad262566f4dcf7556610ab2670345f4c8ea7af17 vp90-01-size-64x8.webm -6748a4afc35da4b32d8b461363d99ea7f3a7632e vp90-01-size-64x8.webm.md5 -7456577331bf80eaaf35df522875bf56806e5923 vp90-01-size-66x10.webm -83fbd7cdd5c17e164163c15143ff71e498ab39f5 vp90-01-size-66x10.webm.md5 -a7c9c4308d2e1eaf0facfdd6a90afc0b653ba55f vp90-01-size-66x16.webm -34b27bd42d3aaf2d55cf4df2ec1a9884263a94da vp90-01-size-66x16.webm.md5 -eab6f2a18a47f19df90bef6720960809bbb6e1eb vp90-01-size-66x18.webm -badaefeb22bf0292de32dc73a1420056b09c616b vp90-01-size-66x18.webm.md5 -3184d80cbd4a06837bcfd31307eafe0cb4d6c3d0 vp90-01-size-66x32.webm -d8e94ec258d5c7461f4c649307d6d0cc42387de6 vp90-01-size-66x32.webm.md5 -08a43ba161e11808c671462d1a31b42f8d0a97e9 vp90-01-size-66x34.webm -f713bff28ee9afb34eca213ac8142f97363c3d83 vp90-01-size-66x34.webm.md5 -90ce0edc691c0b5a33fb796bf023ddca7b2f6bb9 vp90-01-size-66x64.webm -1e99a5c287b9720facbbfe7814d89ff084166e6f vp90-01-size-66x64.webm.md5 -d6b41ec9653aebb5699916f0eb55767e4bc02a15 vp90-01-size-66x66.webm -350585f4369f5936dda2dee7c2587b998d2fd8a9 vp90-01-size-66x66.webm.md5 -78ec3e1902669ca5b0d7e9ccd5dd07927f1b8555 vp90-01-size-66x8.webm -598c17a9db4caca29bfc025d0ea3ddf5757e629b vp90-01-size-66x8.webm.md5 -0a572612618ab6c6e5f4832fae274d695537b721 vp90-01-size-8x10.webm -a848ccd8879f99fe89c4e06298b17bfa5f949a98 vp90-01-size-8x10.webm.md5 -5463d32545714cf0cef245d820655273610e6f46 vp90-01-size-8x16.webm -21ce06249a03af1fe5e26850d089f90d1b2883ff vp90-01-size-8x16.webm.md5 -dea3457073da8e83fc3624c80b5d27e9f4856318 vp90-01-size-8x18.webm -a4b6ff1c5286343022bfd0efa8e41a48d24b4ada vp90-01-size-8x18.webm.md5 -f8ac35568d098e322208674525eabe66818e44e9 vp90-01-size-8x32.webm -28f8d7c0ba16cc2df1145f7e31731b65ff65bafe vp90-01-size-8x32.webm.md5 -9a299188e336137bd0710592a6c15b7712c171e7 vp90-01-size-8x34.webm -d80563b96cd4ab30ed8012474d2c50aea94f772b vp90-01-size-8x34.webm.md5 -9d6ae82ad8a9bf11678c1de6fa93ac9c431df977 vp90-01-size-8x64.webm -c57d126aae70673968be3d2865c15c4052ef8dfc vp90-01-size-8x64.webm.md5 -1ce88e4cb40b0776226d36c733906f6123b27575 vp90-01-size-8x66.webm -1f74b0954187ca6ae537fce937fdb911dedb470e vp90-01-size-8x66.webm.md5 -2270a4eacc5bfe47d020fc1ffff3b28930060a97 vp90-01-size-8x8.webm -7221ff53038cf2666217b63a396a7a380ded6c8d vp90-01-size-8x8.webm.md5 +fdca86b275cad3dac136c4b20dbe5b2c4748d354 vp90-00-quantizer-00.webm +8858e17e1405ef8aec89c9949e151e45492e0ca2 vp90-00-quantizer-00.webm.md5 +49b643d83f2aed443565cf295e4a8e9e97f0f431 vp90-00-quantizer-01.webm +7897ef106babd3f4b4d6bbff3474b98f7a120a03 vp90-00-quantizer-01.webm.md5 +0a04f29491835d60906210b6f639f241d53831b8 vp90-00-quantizer-02.webm +538da4a6795abbf403f326d5279459047cd63d35 vp90-00-quantizer-02.webm.md5 +97a7d11ea629358c2cbff00b02084278895a67cb vp90-00-quantizer-03.webm +40753063c2781fde0c1cd22a6d2dce89fa5472bb vp90-00-quantizer-03.webm.md5 +3dc7865205b0d1645a8814ec2dea364b337a6696 vp90-00-quantizer-04.webm +9e5ada0ecf5fc107dd5b1975266febc401777118 vp90-00-quantizer-04.webm.md5 +217dbcf3b92b9bee9a52ca381df8fd455ddda2c9 vp90-00-quantizer-05.webm +1a41b90e0446001282f137de2034679a7629666a vp90-00-quantizer-05.webm.md5 +42d9e0579a09496ca093c6ef70bc3ad7dcb27947 vp90-00-quantizer-06.webm +141e946f418c465c4312abb621d0734440491129 vp90-00-quantizer-06.webm.md5 +f1f964d1942bc526bc9983a1f68d8962a94cc424 vp90-00-quantizer-07.webm +c230dabb69140dbb18e6c19e223c7a6398152478 vp90-00-quantizer-07.webm.md5 +e9f23cd3479696b1e5b3d6d2d1e2be99fd6ab63a vp90-00-quantizer-08.webm +311b6065d81b497adcec3f1de0a724e42affc4a3 vp90-00-quantizer-08.webm.md5 +c8a1ee08bcb271ca983e11fa79fa2ea887ca772b vp90-00-quantizer-09.webm +855b81c2425df6a0184297bdca364888854f9df1 vp90-00-quantizer-09.webm.md5 +0ae40c84e788bbe96c5397a51c0bde701978a63c vp90-00-quantizer-10.webm +a9cf8782ea218227e926274beb83529e67aa1b15 vp90-00-quantizer-10.webm.md5 +27bd9855a215886236f11a35b8e06790b3d70fbf vp90-00-quantizer-11.webm +bf7fbcd64a2b3e9ebfeac6bff751d548b25bcd9d vp90-00-quantizer-11.webm.md5 +18487544be39cfc5ae13229bb24826d6ece73d97 vp90-00-quantizer-12.webm +e4323bd316642b8bd4e63612d177009cffd0487e vp90-00-quantizer-12.webm.md5 +d6a966e3a6af4ea40e270abf008b79ef0439449a vp90-00-quantizer-13.webm +5c1e2d11d9f04cedfc3b65097352a311883001d9 vp90-00-quantizer-13.webm.md5 +6260f85aba32eecf487212800cc1a9b46ad898ad vp90-00-quantizer-14.webm +1e7d3f9532d5f7dc9face76be01f25769572a4c9 vp90-00-quantizer-14.webm.md5 +2a1978b2f7883e594379483a7c5c20b71805f156 vp90-00-quantizer-15.webm +0c4c006885b93d02992e30ef10a4e1a5247cfa6e vp90-00-quantizer-15.webm.md5 +aa5790e2241364977f9eaed442ee33c3b8d54618 vp90-00-quantizer-16.webm +732e4bd0a67801c0fe801297dfbefc2b75f7af43 vp90-00-quantizer-16.webm.md5 +de0484fb5466ae2254456c32c834f7620a4feaec vp90-00-quantizer-17.webm +9b8c3b07738a0c62bdf924dbe215fee3c6049a1f vp90-00-quantizer-17.webm.md5 +e3d889f9b566e465b01b95730a97cb501da2330f vp90-00-quantizer-18.webm +0878f41021966798a62e7b04c652a21e7782114b vp90-00-quantizer-18.webm.md5 +e142bcfaea1f7b6e66536c7b68d4c87053a5aedf vp90-00-quantizer-19.webm +2fbf2b8944ecca75aa5bc8a0bee0cac4230364e3 vp90-00-quantizer-19.webm.md5 +b1bf701cecc1a0333e62e13a504b6f9711847736 vp90-00-quantizer-20.webm +81093bbd5fb664fddf7013fe2dced12b3dabccec vp90-00-quantizer-20.webm.md5 +99f571b93a1746288bbaf947e92956f1a83f7f98 vp90-00-quantizer-21.webm +fe64145aee1298296b7b7d35651a9308cd28fd25 vp90-00-quantizer-21.webm.md5 +c5537825b3d96c21468ed71d763a500bdd48f67d vp90-00-quantizer-22.webm +bf2ebf34e577173a5d9e9ed5b0eb6612964d065a vp90-00-quantizer-22.webm.md5 +e69d6362a350c250107b8630b57e211840077822 vp90-00-quantizer-23.webm +e19a06aed5eaa745e06dc3423a8d90e416e0a90a vp90-00-quantizer-23.webm.md5 +4282444f14eb9df8a44b873d1e3e204ccfaac556 vp90-00-quantizer-24.webm +69b5220659c1bfb1cf9d615d25a1b6bed0606a1d vp90-00-quantizer-24.webm.md5 +613483118fd27dcb5e4a7e5c263b6038365de092 vp90-00-quantizer-25.webm +7bdee1321c4ff3e47e0489dd1db544c7ea55db22 vp90-00-quantizer-25.webm.md5 +1f6fc36e9b6d23d20d46a8458005a3e6c0bfc068 vp90-00-quantizer-26.webm +adf258d24db3965cd96a0aeb7c523d474e4ae899 vp90-00-quantizer-26.webm.md5 +640ec8d997ae8fc49a954fbc2a6bced675d724b0 vp90-00-quantizer-27.webm +ef2e4d13fd78f20ff53c9845ed04b7e6f4fc6cd2 vp90-00-quantizer-27.webm.md5 +c779d6445389e6fa7eb273a68cac6e511e883cad vp90-00-quantizer-28.webm +f9c3bce3c288f9f9b22d9694b5d32a436d751d77 vp90-00-quantizer-28.webm.md5 +204b44f4145f385edc6caf4752d7d9549c347e1d vp90-00-quantizer-29.webm +ad45f838e0d83eeae58d0041ae8f0f4113ca8c40 vp90-00-quantizer-29.webm.md5 +3755b87931b629e47eb9947ec12cba1b6e9c9677 vp90-00-quantizer-30.webm +03b73c995c2a508332a25b1cdcb370baf5da10d6 vp90-00-quantizer-30.webm.md5 +50f258d6b3312ef24088ea39455105e9d0333f04 vp90-00-quantizer-31.webm +097ba564c32d11c8ba85d4a09a316a8ee54817c0 vp90-00-quantizer-31.webm.md5 +baacfd7b6015f5fcfebf9942be2b104d331fbc4c vp90-00-quantizer-32.webm +0c314447d3ec3c2694bd314ff9e806c6aee08c36 vp90-00-quantizer-32.webm.md5 +2a25f6f742caef79edc7a51a4b2799b20744e05b vp90-00-quantizer-33.webm +c19660adf6d93ec0c1ddda8e9d07608581e542cb vp90-00-quantizer-33.webm.md5 +00ccdd3c8dfb431348363db514b27035b5c9a65f vp90-00-quantizer-34.webm +d5414b884f888b0b946c7792ed57ba279663fb92 vp90-00-quantizer-34.webm.md5 +b6ddd3dfb7cb7f69a5d510f96a7237adbf6552a6 vp90-00-quantizer-35.webm +6a39695f9f3153bed0f64495a5cd2b030e6e5d2b vp90-00-quantizer-35.webm.md5 +663e944d914409dd65297ae922eacde4b77b96f9 vp90-00-quantizer-36.webm +142cf0c01e239e9f0b2a1f409f41967481e8158c vp90-00-quantizer-36.webm.md5 +4a4fc104a17962ee4068af3cf9d6dbc2aefadf97 vp90-00-quantizer-37.webm +61df55a37f844638b35341702cdd9b6b5792b68b vp90-00-quantizer-37.webm.md5 +9c5ccbc2123d7f025f94c1c963f30527bd985479 vp90-00-quantizer-38.webm +b806d5322d7c4c7d9a912733c001945300e35130 vp90-00-quantizer-38.webm.md5 +34bb04e238ef83c9830579d6a2475345aef7cf4a vp90-00-quantizer-39.webm +88e455f436f0ac1beb98f7c2a82b812ce2c747f8 vp90-00-quantizer-39.webm.md5 +44cdfab1975e175ca7c57f58c003fbddd95198f5 vp90-00-quantizer-40.webm +e5f0c38698388792b5368a05eadc9b709a4e7691 vp90-00-quantizer-40.webm.md5 +f61b3a6fa8457fcf8271de97a8175e2b4374db52 vp90-00-quantizer-41.webm +6eb2f1a67822a9e194b86fd4f35e7938145b2e98 vp90-00-quantizer-41.webm.md5 +4dbbf4ec7e3304b41cf6a69247c50182dcff6f55 vp90-00-quantizer-42.webm +05feb589065fe36a23e509817191fa3504056610 vp90-00-quantizer-42.webm.md5 +4d9322eea3ebef585b706a725cf6560131087905 vp90-00-quantizer-43.webm +3bcbb6edef5aa35630ef9102eeeeb0f2d8b613c8 vp90-00-quantizer-43.webm.md5 +3786244353bb69a7f02e43ead440b4ffdc994112 vp90-00-quantizer-44.webm +e5545f9af2454da3f1007d31639f8ddd6617adfd vp90-00-quantizer-44.webm.md5 +1b229f51af45cf7d024a59b4b94ac7ad1361d381 vp90-00-quantizer-45.webm +4816bdc1d72cf779b7fe890abf16310f8fa354c6 vp90-00-quantizer-45.webm.md5 +6da0b0f40344414c3f605d4a775cb91b216c988f vp90-00-quantizer-46.webm +d2d975e5078cb576ed9a9fae2cc67958f67d92df vp90-00-quantizer-46.webm.md5 +b7d12f6836d9bd819c05d767e36cf6673fd47045 vp90-00-quantizer-47.webm +d0c886218df2b6a64532b88b80924524aa383a01 vp90-00-quantizer-47.webm.md5 +66eccb334200676d73bf9317c29acec9fadb6e73 vp90-00-quantizer-48.webm +054522774f6996ecf40c23a95e6c25ffa7b33395 vp90-00-quantizer-48.webm.md5 +aed31ed27a36aa05712fb780ef96f5f75a9d4b8b vp90-00-quantizer-49.webm +06835ab0017bdb63a9284d52c9cf088b49ac206a vp90-00-quantizer-49.webm.md5 +64fb0fd51531e5eb50679ea2506e1545c3516421 vp90-00-quantizer-50.webm +521a43957dab14590ae1f1d55fd9ffe0e92a2346 vp90-00-quantizer-50.webm.md5 +cb25cf91702a9e60db7802eb58db7ea489f87ed8 vp90-00-quantizer-51.webm +bd4231d0c3edd6bca234f09765ef1a0b66453529 vp90-00-quantizer-51.webm.md5 +88ef3b2cb3371d314d2732ebfad40d21394a662c vp90-00-quantizer-52.webm +d136a2f8f980b1a91bb04de2acfd942817b2b20c vp90-00-quantizer-52.webm.md5 +01ff183943bec37548d9f5be2b675431b1629636 vp90-00-quantizer-53.webm +9afe51877dbf80a6669a9cb794f2df7e72d83878 vp90-00-quantizer-53.webm.md5 +c6c55ddbce8881453ab33e51f23e2889fc80b83f vp90-00-quantizer-54.webm +c19a74e162b5250017f26dac1e7d79f83ab7d7cb vp90-00-quantizer-54.webm.md5 +beb657d15e5756eb691bc87206e8d96882b25aad vp90-00-quantizer-55.webm +8ee2d4ecac1b24d9b77012c40378523c259c456c vp90-00-quantizer-55.webm.md5 +8bc51fadaf0900100e2ee21fe16fb2ea15d80948 vp90-00-quantizer-56.webm +847d9eac8f57695dd08f81ef6c4a301cc855fb97 vp90-00-quantizer-56.webm.md5 +0b4dc98a9e35f7c0d9d0d30837a2307d373e4654 vp90-00-quantizer-57.webm +dc38b79ad3263a94bb225e3a180ef417abd049ba vp90-00-quantizer-57.webm.md5 +424b9d8f4f326683f5ae4cf7dd04f257965b5309 vp90-00-quantizer-58.webm +490fde5c3583411337c5ad350dcffe6bf74379b3 vp90-00-quantizer-58.webm.md5 +ba1cd0b85564584f1d4d010471a7bccc153d9a48 vp90-00-quantizer-59.webm +f39e80f9673f1dbf7474ace52ee2437f508e7f45 vp90-00-quantizer-59.webm.md5 +016526002f1423f128968e879a0b1fbbfbbd3326 vp90-00-quantizer-60.webm +7c7510a209d9ff1cc3ea929ebc378e6eb290cb5d vp90-00-quantizer-60.webm.md5 +877918c23ef2e15ba63f611310e3b9355affe9e3 vp90-00-quantizer-61.webm +07ec4055e1f31c5800716aa66baf8c9af63145a4 vp90-00-quantizer-61.webm.md5 +5a2cd6e7766ab587941c5a741f8f38e503e65d30 vp90-00-quantizer-62.webm +fbd3df10f27eb18deec07fe503de06323571031f vp90-00-quantizer-62.webm.md5 +10f96391da7659c3587832324b57061568307b34 vp90-00-quantizer-63.webm +6750172fb0cbd8aebfff39fcef97fd9e6ebcf5ab vp90-00-quantizer-63.webm.md5 +16af16d14d36b326222c50c94d573e67caf0a731 vp90-01-sharpness-1.webm +185d852767d76af17e6bc1ce12c48208a2f08422 vp90-01-sharpness-1.webm.md5 +ba2ba28de5c2c2466a502f114180810fd7599c4a vp90-01-sharpness-2.webm +efae761373e2de274cb906f94234e27266bc871c vp90-01-sharpness-2.webm.md5 +d1c539b55fe2e68ab93b2792d960d8824c8419a8 vp90-01-sharpness-3.webm +17eeabdfcd88c3cb51bcb2f8e14c5401bf06e229 vp90-01-sharpness-3.webm.md5 +bf8a7f79aee7a24ff4042660eba7f0adec528211 vp90-01-sharpness-4.webm +ef82ec4073dfbafaa641155f84d61817f3f31795 vp90-01-sharpness-4.webm.md5 +805fbba9fa4242adf6bb663366543f6842727ca6 vp90-01-sharpness-5.webm +68094b8995c9f6074b56afab99f5bc1c213bd839 vp90-01-sharpness-5.webm.md5 +b28d65e0bebaa9a5deff912096139f3009d87235 vp90-01-sharpness-6.webm +4952da0d2da5d124d335270724806ae0c1caab8d vp90-01-sharpness-6.webm.md5 +ef790d078476dab9443a6842ab0ddfbb76e8de0a vp90-01-sharpness-7.webm +39f29ed88b918c49af4f01158975b9bd0697960e vp90-01-sharpness-7.webm.md5 +a446955a556a93d095ca54369feda4cfb06d7cda vp90-02-size-08x08.webm +b46bc3f92c0be11a5950930c05e59956f18183a6 vp90-02-size-08x08.webm.md5 +000a0ff27973afe1b12f42426c790ab3988d3a6c vp90-02-size-08x10.webm +2d17dc7aea123208ac38dc798f68f34133ee362e vp90-02-size-08x10.webm.md5 +8af4895af50d40d923d1b169efb4820358ce5642 vp90-02-size-08x16.webm +9255b7e263ea06fb243e2da913f4ecca2105a6c5 vp90-02-size-08x16.webm.md5 +ded39f21007a8aba60a48dfd93d3ce84c0c0a1bf vp90-02-size-08x18.webm +8adac9253d47a10a0bdc6e258a3b26fd41062d1c vp90-02-size-08x18.webm.md5 +e33ab3587d4c023db9f2728cd7177c766266a051 vp90-02-size-08x32.webm +6beb1d9f3a9efcb065ed10dc9a1edca9fd02f8e8 vp90-02-size-08x32.webm.md5 +4d42efcb9a3cad37f1951c9a0c4b27e4028de38d vp90-02-size-08x34.webm +55b53ee70e0a3cf350a7d13888df88a516d4182e vp90-02-size-08x34.webm.md5 +fb5ab072f229d7d9c4172c8b4d18e4bd177c638d vp90-02-size-08x64.webm +cd75d87f5b71dbd76df0228ea405740e70c7862c vp90-02-size-08x64.webm.md5 +a7b16d2c1d5c2652b006f7f1bae2c545e228c712 vp90-02-size-08x66.webm +f845f81a7ca99d61234ae6fd4cde87921a589ee7 vp90-02-size-08x66.webm.md5 +653bf95ffff4dd77045f42694da7957226717d3b vp90-02-size-10x08.webm +4909eb2bb809c5bd2ed490cc4d1ae229b3e7e67c vp90-02-size-10x08.webm.md5 +45906222f984d2e65e978b07d68071c8048e3e4b vp90-02-size-10x10.webm +32c6f8d53611f424cbef086671ab4d7ab349eba5 vp90-02-size-10x10.webm.md5 +be33910bd76816df0e10557a17c27e2b8d4a06d8 vp90-02-size-10x16.webm +658f0b88157e75c66f2e79fc9a0ab3ce3a200b20 vp90-02-size-10x16.webm.md5 +127c986fa845a9820f88b9a2cd8a44d651deec14 vp90-02-size-10x18.webm +1ef09e9e5ce7aaafb2b9a7d687da540be3673659 vp90-02-size-10x18.webm.md5 +681c276b6095e43d4bad7abb830d807396b29bfa vp90-02-size-10x32.webm +bf76e6676e1d7a6d7fd4daf2f0ab1c35c8981010 vp90-02-size-10x32.webm.md5 +d701c07c6bf255be562503cffa4d1488024bf097 vp90-02-size-10x34.webm +093c5b2f6f9e88a04fc830086952583c90a870d8 vp90-02-size-10x34.webm.md5 +52f01a3c37e83d58d4b9965ba0fbf0509eb5399b vp90-02-size-10x64.webm +9cc7c4da581b6900ec6842a03ab1e543863c9c1e vp90-02-size-10x64.webm.md5 +5373cb1987ca8bb5c8aab50a09652f05982e47f4 vp90-02-size-10x66.webm +7a974c6f3e40ca26d549e7ac4ff990b5eb33822f vp90-02-size-10x66.webm.md5 +aae0579e76f6c08ce4c340ace8017bb9407b4f7d vp90-02-size-16x08.webm +cc177589e86eee3db2cb842827e03e82557bd88e vp90-02-size-16x08.webm.md5 +859303384c9eefcbcb4aa70af4796e46c2bdb13d vp90-02-size-16x10.webm +229575fe20a442e933c7762d280dd7f73458c71c vp90-02-size-16x10.webm.md5 +387981b87b8ecec4175fe78c0fdba7bfccd26791 vp90-02-size-16x16.webm +73ae92d6d51055970642a1424bed411ecae2ab49 vp90-02-size-16x16.webm.md5 +a84062d5d75bef33fea6cdba63a28a79b6802ab6 vp90-02-size-16x18.webm +02afa1a1b637f5ced8b9a08bdc9ba4a02f7e57f9 vp90-02-size-16x18.webm.md5 +57978a81b3b9d95c3f4b299809f95b706a229446 vp90-02-size-16x32.webm +cab8f4a2bd29ec180b0996438dd1ae74d5d8a7c9 vp90-02-size-16x32.webm.md5 +a9af0526cb8362514b2080f5c6370a07b68ea2e1 vp90-02-size-16x34.webm +f1a7a24764a3e04c7af9b598cf261bc94a21ddba vp90-02-size-16x34.webm.md5 +241c5792442fdf7b499749af94208da6e500f2a4 vp90-02-size-16x64.webm +2892a76bf64f5c0c041321302483e11ac8a1463a vp90-02-size-16x64.webm.md5 +f3db5d94584c41c07aa5098e6d1cfbeddbe53464 vp90-02-size-16x66.webm +65388f683db49e0ae8b81031a356dba538846fea vp90-02-size-16x66.webm.md5 +4c0b97a13e5fda43fd49984d1a8e3a8766491a58 vp90-02-size-18x08.webm +f378c88656bce7631c86d9311fa6dd27b0816be6 vp90-02-size-18x08.webm.md5 +98f1d75e8085eb3f368a2be478e6442ad55dc78d vp90-02-size-18x10.webm +569b6567021c310472e8dbd5686901057424704b vp90-02-size-18x10.webm.md5 +63bdaec9666f17159fe9614c0d0058f3aff1b199 vp90-02-size-18x16.webm +414ecf7d3307cd139a7143cf8862ff8ba912c45c vp90-02-size-18x16.webm.md5 +dc1a8b305693081e2c5ce9f5060e59812ea12a8b vp90-02-size-18x18.webm +3aaf292e761303aa5f54bc5c40a73d898334df50 vp90-02-size-18x18.webm.md5 +e892b41fe839c803c7834b68b6f1580af3692c09 vp90-02-size-18x32.webm +c484a29a303e1d989d0fcb575f14f5d02222e1c1 vp90-02-size-18x32.webm.md5 +548a9214b7e8ea74cf25cb8d4060aa9826dc5378 vp90-02-size-18x34.webm +03559c3ad23d0fd08ca6b7d8a065aef038f3f5c1 vp90-02-size-18x34.webm.md5 +6bfcc96649b3ffcd84db3690695e03ba3ec46452 vp90-02-size-18x64.webm +648aed5408aa2bb92a1d6474f01f9273820b9888 vp90-02-size-18x64.webm.md5 +d0e5de09e53fd0de69d0f0352407bda74c9d83fa vp90-02-size-18x66.webm +a9e17f4dbafb2e815bb35b94654188688cc23f69 vp90-02-size-18x66.webm.md5 +9ce0d7593675590eac9fa08a8c62ea1e617095a0 vp90-02-size-32x08.webm +ba4b97c174062bc6fbd4e0fadaa713a20fbc8a83 vp90-02-size-32x08.webm.md5 +e80c50bbafd99ad3101ca9c2588a9153ca3cd1e3 vp90-02-size-32x10.webm +bffd275eb85116eb13403bf63d2db821fe29090a vp90-02-size-32x10.webm.md5 +b009c4ce95d9c8956cdc2b0567446f6327bfc463 vp90-02-size-32x16.webm +319c9aadf1f366b523dfb6a7ebadb0034da9eab9 vp90-02-size-32x16.webm.md5 +c6e3c56c69c4349ef7f7e9a680b87b968cb2b55d vp90-02-size-32x18.webm +501df67b820f8ec7539a1fbd5a083836197c0989 vp90-02-size-32x18.webm.md5 +69e92a9ebecabea540c12d5d5c433c4ec16175f7 vp90-02-size-32x32.webm +91c798929401c3d495f6f1d06e71fcdcd9bd9a3f vp90-02-size-32x32.webm.md5 +0118af053371d1a756316837493d17effae9002e vp90-02-size-32x34.webm +68f77652e76caa968a860a6fc98838c06f5237a1 vp90-02-size-32x34.webm.md5 +3c0eca5909b92ad7c6e7e366c6a669ef175ccd9d vp90-02-size-32x64.webm +1992669958b7c5259220db1ff52b56f48a39cd95 vp90-02-size-32x64.webm.md5 +daad7f4659f6bf132b8f78b0156ac50893e604be vp90-02-size-32x66.webm +5b57c6c2917f086eec793257fbe47dbb43380a54 vp90-02-size-32x66.webm.md5 +6eaf0d0f9b8fbd7448c5c02ecd603e3cc677c58a vp90-02-size-34x08.webm +90777eb9c538ad7fa946693af3e26a73cd96298b vp90-02-size-34x08.webm.md5 +41d19d50036a1ed17ffc7b91ad6ad472b858c645 vp90-02-size-34x10.webm +eec4c21483a7af511a1aeeccc41ef44349f1a6ed vp90-02-size-34x10.webm.md5 +13c944bd9a7677062784419003c0398afd521fb1 vp90-02-size-34x16.webm +046aa5c68d5326939d9ab29f540269277359f567 vp90-02-size-34x16.webm.md5 +c2328d2f76f7e8441ee67a4a4fab1edaa7838af1 vp90-02-size-34x18.webm +af1d3ffd5c4166e20ffa8b82f1413eb5dedc7f8b vp90-02-size-34x18.webm.md5 +ebb4940d29e17e0e7898b41b5987d78a98a852f2 vp90-02-size-34x32.webm +1328444617584463d999fca10cfe2220a5e73557 vp90-02-size-34x32.webm.md5 +285e7e1124579939bd01f3e39f28543dcbe8f983 vp90-02-size-34x34.webm +12a30bf06997198e733a1009ae5374d8473b7e2b vp90-02-size-34x34.webm.md5 +46498da16ab0f1956a19f91db3a79ad9e6d0fa9b vp90-02-size-34x64.webm +a612ceea3634bf96a39e1d9de2da5175a2856da3 vp90-02-size-34x64.webm.md5 +09e872fa4e7d6ee23c47244bbdd444ef77e1ce59 vp90-02-size-34x66.webm +d41a1f1c9f8f0947d2e131d555abaf63fbfde215 vp90-02-size-34x66.webm.md5 +0ff29398887ae3b4be002d2f4f7727374d4eea84 vp90-02-size-64x08.webm +e8a985f65d733083e41d5b5fb6bf99c6e0143ba7 vp90-02-size-64x08.webm.md5 +384cd410376e1682aba9cb9da50a5b1a8219312b vp90-02-size-64x10.webm +0e89645686d97f39542a9aaacc9e825624f94952 vp90-02-size-64x10.webm.md5 +9e635ea2d61f07e259b7d205aae30ab054c5ea62 vp90-02-size-64x16.webm +2a820a59068fd6ebd8096a6937b8b28a490a474c vp90-02-size-64x16.webm.md5 +e01c1e26fc6f3004c1e99f31f7ac617083dd106e vp90-02-size-64x18.webm +1df48ab47512cfa63581936c0b3df884a69862b8 vp90-02-size-64x18.webm.md5 +b1a153d0916939ece646a1c4cfaee5996000082f vp90-02-size-64x32.webm +927ebc8b3806d161a681b5fe3b0bf36f12710dc9 vp90-02-size-64x32.webm.md5 +d1f7f450035f96b3e314002c9ec9c7e6facc3cbf vp90-02-size-64x34.webm +154fd5b440ad039e2d56b59669a4724e291c127f vp90-02-size-64x34.webm.md5 +264bfe0ff332f4cd0d76a718efdfaa29a1fd87fc vp90-02-size-64x64.webm +c4760732bb5f5f4782e40b6b37608331b4dc43a9 vp90-02-size-64x64.webm.md5 +898f9871a663bcff42a7a835e82e8831718a4c91 vp90-02-size-64x66.webm +a315366b27d582f5c6cd489e80f921c845097eb4 vp90-02-size-64x66.webm.md5 +b53613d9e4d1ac78e5a2c7fe5f879c280ea70e46 vp90-02-size-66x08.webm +fc66f80c49a1396c67de6fe8dfc75e103649327a vp90-02-size-66x08.webm.md5 +072c22e2e98f264a3c0b2433c026278733ba0d09 vp90-02-size-66x10.webm +267694ee0a37f531b1aa6e8237ea05a3d9ca40b1 vp90-02-size-66x10.webm.md5 +cb46cf87b5a5e597daa36628607ac6ec32e28b06 vp90-02-size-66x16.webm +127e6ca3dd29ab8b03e2a6473e286e2f432254d2 vp90-02-size-66x16.webm.md5 +b58d7cae1caf33203272f3d97cd076fd258a4562 vp90-02-size-66x18.webm +dd3571ed0afe6925e1f8abf43fecd394704c49cb vp90-02-size-66x18.webm.md5 +4573386436f26954e48a864d2d0a08ad6ca2be9f vp90-02-size-66x32.webm +148ed8538c4798d133bbf91826eb5638352b79f5 vp90-02-size-66x32.webm.md5 +f56274d534c30ff3f43f50a6f10fa33321225f06 vp90-02-size-66x34.webm +183657e677153d61cde941c34fef8f37e3e31319 vp90-02-size-66x34.webm.md5 +9203bf0a535a312c9e051a3cfaca829f5d7d6bd2 vp90-02-size-66x64.webm +979e5d6de413d6cc9fe271347b7f133c1628d290 vp90-02-size-66x64.webm.md5 +808205307885c4ac5ae9bde02e93542f1fcfd8a6 vp90-02-size-66x66.webm +b1e16f2c721a99b243e94a2b54773245e0b01d1c vp90-02-size-66x66.webm.md5 diff --git a/test/test.mk b/test/test.mk index a183d98bb..3d86623de 100644 --- a/test/test.mk +++ b/test/test.mk @@ -228,351 +228,273 @@ 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-01-size-10x10.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-10x10.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-10x16.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-10x16.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-10x18.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-10x18.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-10x32.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-10x32.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-10x34.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-10x34.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-10x64.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-10x64.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-10x66.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-10x66.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-10x8.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-10x8.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-16x10.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-16x10.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-16x16.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-16x16.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-16x18.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-16x18.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-16x32.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-16x32.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-16x34.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-16x34.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-16x64.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-16x64.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-16x66.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-16x66.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-16x8.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-16x8.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-18x10.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-18x10.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-18x16.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-18x16.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-18x18.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-18x18.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-18x32.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-18x32.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-18x34.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-18x34.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-18x64.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-18x64.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-18x66.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-18x66.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-18x8.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-18x8.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-32x10.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-32x10.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-32x16.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-32x16.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-32x18.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-32x18.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-32x32.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-32x32.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-32x34.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-32x34.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-32x64.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-32x64.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-32x66.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-32x66.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-32x8.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-32x8.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-34x10.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-34x10.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-34x16.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-34x16.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-34x18.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-34x18.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-34x32.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-34x32.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-34x34.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-34x34.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-34x64.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-34x64.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-34x66.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-34x66.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-34x8.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-34x8.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-64x10.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-64x10.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-64x16.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-64x16.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-64x18.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-64x18.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-64x32.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-64x32.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-64x34.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-64x34.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-64x64.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-64x64.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-64x66.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-64x66.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-64x8.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-64x8.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-66x10.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-66x10.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-66x16.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-66x16.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-66x18.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-66x18.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-66x32.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-66x32.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-66x34.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-66x34.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-66x64.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-66x64.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-66x66.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-66x66.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-66x8.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-66x8.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-8x10.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-8x10.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-8x16.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-8x16.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-8x18.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-8x18.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-8x32.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-8x32.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-8x34.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-8x34.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-8x64.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-8x64.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-8x66.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-8x66.webm.md5 -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-8x8.webm -LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-size-8x8.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-00.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-00.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-01.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-01.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-02.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-02.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-03.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-03.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-04.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-04.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-05.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-05.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-06.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-06.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-07.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-07.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-08.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-08.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-09.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-09.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-10.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-10.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-11.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-11.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-12.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-12.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-13.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-13.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-14.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-14.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-15.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-15.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-16.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-16.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-17.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-17.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-18.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-18.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-19.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-19.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-20.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-20.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-21.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-21.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-22.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-22.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-23.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-23.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-24.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-24.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-25.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-25.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-26.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-26.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-27.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-27.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-28.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-28.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-29.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-29.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-30.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-30.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-31.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-31.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-32.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-32.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-33.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-33.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-34.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-34.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-35.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-35.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-36.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-36.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-37.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-37.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-38.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-38.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-39.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-39.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-40.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-40.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-41.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-41.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-42.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-42.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-43.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-43.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-44.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-44.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-45.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-45.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-46.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-46.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-47.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-47.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-48.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-48.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-49.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-49.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-50.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-50.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-51.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-51.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-52.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-52.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-53.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-53.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-54.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-54.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-55.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-55.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-56.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-56.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-57.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-57.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-58.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-58.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-59.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-59.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-60.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-60.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-61.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-61.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-62.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-62.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-63.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-00-quantizer-63.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-sharpness-1.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-sharpness-1.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-sharpness-2.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-sharpness-2.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-sharpness-3.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-sharpness-3.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-sharpness-4.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-sharpness-4.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-sharpness-5.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-sharpness-5.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-sharpness-6.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-sharpness-6.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-sharpness-7.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-01-sharpness-7.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-08x08.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-08x08.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-08x10.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-08x10.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-08x16.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-08x16.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-08x18.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-08x18.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-08x32.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-08x32.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-08x34.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-08x34.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-08x64.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-08x64.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-08x66.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-08x66.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-10x08.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-10x08.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-10x10.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-10x10.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-10x16.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-10x16.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-10x18.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-10x18.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-10x32.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-10x32.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-10x34.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-10x34.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-10x64.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-10x64.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-10x66.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-10x66.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-16x08.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-16x08.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-16x10.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-16x10.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-16x16.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-16x16.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-16x18.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-16x18.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-16x32.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-16x32.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-16x34.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-16x34.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-16x64.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-16x64.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-16x66.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-16x66.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-18x08.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-18x08.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-18x10.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-18x10.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-18x16.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-18x16.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-18x18.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-18x18.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-18x32.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-18x32.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-18x34.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-18x34.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-18x64.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-18x64.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-18x66.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-18x66.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-32x08.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-32x08.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-32x10.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-32x10.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-32x16.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-32x16.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-32x18.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-32x18.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-32x32.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-32x32.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-32x34.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-32x34.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-32x64.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-32x64.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-32x66.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-32x66.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-34x08.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-34x08.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-34x10.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-34x10.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-34x16.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-34x16.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-34x18.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-34x18.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-34x32.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-34x32.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-34x34.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-34x34.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-34x64.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-34x64.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-34x66.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-34x66.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-64x08.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-64x08.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-64x10.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-64x10.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-64x16.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-64x16.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-64x18.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-64x18.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-64x32.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-64x32.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-64x34.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-64x34.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-64x64.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-64x64.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-64x66.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-64x66.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-66x08.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-66x08.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-66x10.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-66x10.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-66x16.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-66x16.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-66x18.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-66x18.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-66x32.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-66x32.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-66x34.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-66x34.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-66x64.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-66x64.webm.md5 +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-66x66.webm +LIBVPX_TEST_DATA-$(CONFIG_VP9_DECODER) += vp90-02-size-66x66.webm.md5 diff --git a/test/test_vector_test.cc b/test/test_vector_test.cc index 6d6cea424..481860e44 100644 --- a/test/test_vector_test.cc +++ b/test/test_vector_test.cc @@ -60,93 +60,74 @@ 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-01-size-10x10.webm", "vp90-01-size-10x16.webm", - "vp90-01-size-10x18.webm", "vp90-01-size-10x32.webm", - "vp90-01-size-10x34.webm", "vp90-01-size-10x64.webm", - "vp90-01-size-10x66.webm", "vp90-01-size-10x8.webm", - "vp90-01-size-16x10.webm", "vp90-01-size-16x16.webm", - "vp90-01-size-16x18.webm", "vp90-01-size-16x32.webm", - "vp90-01-size-16x34.webm", "vp90-01-size-16x64.webm", - "vp90-01-size-16x66.webm", "vp90-01-size-16x8.webm", - "vp90-01-size-18x10.webm", "vp90-01-size-18x16.webm", - "vp90-01-size-18x18.webm", "vp90-01-size-18x32.webm", - "vp90-01-size-18x34.webm", "vp90-01-size-18x64.webm", - "vp90-01-size-18x66.webm", "vp90-01-size-18x8.webm", - "vp90-01-size-32x10.webm", "vp90-01-size-32x16.webm", - "vp90-01-size-32x18.webm", "vp90-01-size-32x32.webm", - "vp90-01-size-32x34.webm", "vp90-01-size-32x64.webm", - "vp90-01-size-32x66.webm", "vp90-01-size-32x8.webm", - "vp90-01-size-34x10.webm", "vp90-01-size-34x16.webm", - "vp90-01-size-34x18.webm", "vp90-01-size-34x32.webm", - "vp90-01-size-34x34.webm", "vp90-01-size-34x64.webm", - "vp90-01-size-34x66.webm", "vp90-01-size-34x8.webm", - "vp90-01-size-64x10.webm", "vp90-01-size-64x16.webm", - "vp90-01-size-64x18.webm", "vp90-01-size-64x32.webm", - "vp90-01-size-64x34.webm", "vp90-01-size-64x64.webm", - "vp90-01-size-64x66.webm", "vp90-01-size-64x8.webm", - "vp90-01-size-66x10.webm", "vp90-01-size-66x16.webm", - "vp90-01-size-66x18.webm", "vp90-01-size-66x32.webm", - "vp90-01-size-66x34.webm", "vp90-01-size-66x64.webm", - "vp90-01-size-66x66.webm", "vp90-01-size-66x8.webm", - "vp90-01-size-8x10.webm", "vp90-01-size-8x16.webm", - "vp90-01-size-8x18.webm", "vp90-01-size-8x32.webm", - "vp90-01-size-8x34.webm", "vp90-01-size-8x64.webm", - "vp90-01-size-8x66.webm", "vp90-01-size-8x8.webm", + "vp90-00-quantizer-00.webm", "vp90-00-quantizer-01.webm", + "vp90-00-quantizer-02.webm", "vp90-00-quantizer-03.webm", + "vp90-00-quantizer-04.webm", "vp90-00-quantizer-05.webm", + "vp90-00-quantizer-06.webm", "vp90-00-quantizer-07.webm", + "vp90-00-quantizer-08.webm", "vp90-00-quantizer-09.webm", + "vp90-00-quantizer-10.webm", "vp90-00-quantizer-11.webm", + "vp90-00-quantizer-12.webm", "vp90-00-quantizer-13.webm", + "vp90-00-quantizer-14.webm", "vp90-00-quantizer-15.webm", + "vp90-00-quantizer-16.webm", "vp90-00-quantizer-17.webm", + "vp90-00-quantizer-18.webm", "vp90-00-quantizer-19.webm", + "vp90-00-quantizer-20.webm", "vp90-00-quantizer-21.webm", + "vp90-00-quantizer-22.webm", "vp90-00-quantizer-23.webm", + "vp90-00-quantizer-24.webm", "vp90-00-quantizer-25.webm", + "vp90-00-quantizer-26.webm", "vp90-00-quantizer-27.webm", + "vp90-00-quantizer-28.webm", "vp90-00-quantizer-29.webm", + "vp90-00-quantizer-30.webm", "vp90-00-quantizer-31.webm", + "vp90-00-quantizer-32.webm", "vp90-00-quantizer-33.webm", + "vp90-00-quantizer-34.webm", "vp90-00-quantizer-35.webm", + "vp90-00-quantizer-36.webm", "vp90-00-quantizer-37.webm", + "vp90-00-quantizer-38.webm", "vp90-00-quantizer-39.webm", + "vp90-00-quantizer-40.webm", "vp90-00-quantizer-41.webm", + "vp90-00-quantizer-42.webm", "vp90-00-quantizer-43.webm", + "vp90-00-quantizer-44.webm", "vp90-00-quantizer-45.webm", + "vp90-00-quantizer-46.webm", "vp90-00-quantizer-47.webm", + "vp90-00-quantizer-48.webm", "vp90-00-quantizer-49.webm", + "vp90-00-quantizer-50.webm", "vp90-00-quantizer-51.webm", + "vp90-00-quantizer-52.webm", "vp90-00-quantizer-53.webm", + "vp90-00-quantizer-54.webm", "vp90-00-quantizer-55.webm", + "vp90-00-quantizer-56.webm", "vp90-00-quantizer-57.webm", + "vp90-00-quantizer-58.webm", "vp90-00-quantizer-59.webm", + "vp90-00-quantizer-60.webm", "vp90-00-quantizer-61.webm", + "vp90-00-quantizer-62.webm", "vp90-00-quantizer-63.webm", + "vp90-01-sharpness-1.webm", "vp90-01-sharpness-2.webm", + "vp90-01-sharpness-3.webm", "vp90-01-sharpness-4.webm", + "vp90-01-sharpness-5.webm", "vp90-01-sharpness-6.webm", + "vp90-01-sharpness-7.webm", "vp90-02-size-08x08.webm", + "vp90-02-size-08x10.webm", "vp90-02-size-08x16.webm", + "vp90-02-size-08x18.webm", "vp90-02-size-08x32.webm", + "vp90-02-size-08x34.webm", "vp90-02-size-08x64.webm", + "vp90-02-size-08x66.webm", "vp90-02-size-10x08.webm", + "vp90-02-size-10x10.webm", "vp90-02-size-10x16.webm", + "vp90-02-size-10x18.webm", "vp90-02-size-10x32.webm", + "vp90-02-size-10x34.webm", "vp90-02-size-10x64.webm", + "vp90-02-size-10x66.webm", "vp90-02-size-16x08.webm", + "vp90-02-size-16x10.webm", "vp90-02-size-16x16.webm", + "vp90-02-size-16x18.webm", "vp90-02-size-16x32.webm", + "vp90-02-size-16x34.webm", "vp90-02-size-16x64.webm", + "vp90-02-size-16x66.webm", "vp90-02-size-18x08.webm", + "vp90-02-size-18x10.webm", "vp90-02-size-18x16.webm", + "vp90-02-size-18x18.webm", "vp90-02-size-18x32.webm", + "vp90-02-size-18x34.webm", "vp90-02-size-18x64.webm", + "vp90-02-size-18x66.webm", "vp90-02-size-32x08.webm", + "vp90-02-size-32x10.webm", "vp90-02-size-32x16.webm", + "vp90-02-size-32x18.webm", "vp90-02-size-32x32.webm", + "vp90-02-size-32x34.webm", "vp90-02-size-32x64.webm", + "vp90-02-size-32x66.webm", "vp90-02-size-34x08.webm", + "vp90-02-size-34x10.webm", "vp90-02-size-34x16.webm", + "vp90-02-size-34x18.webm", "vp90-02-size-34x32.webm", + "vp90-02-size-34x34.webm", "vp90-02-size-34x64.webm", + "vp90-02-size-34x66.webm", "vp90-02-size-64x08.webm", + "vp90-02-size-64x10.webm", "vp90-02-size-64x16.webm", + "vp90-02-size-64x18.webm", "vp90-02-size-64x32.webm", + "vp90-02-size-64x34.webm", "vp90-02-size-64x64.webm", + "vp90-02-size-64x66.webm", "vp90-02-size-66x08.webm", + "vp90-02-size-66x10.webm", "vp90-02-size-66x16.webm", + "vp90-02-size-66x18.webm", "vp90-02-size-66x32.webm", + "vp90-02-size-66x34.webm", "vp90-02-size-66x64.webm", + "vp90-02-size-66x66.webm", }; #endif diff --git a/test/variance_test.cc b/test/variance_test.cc index 5d4eab08c..e65054fd5 100644 --- a/test/variance_test.cc +++ b/test/variance_test.cc @@ -18,6 +18,7 @@ #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" @@ -205,17 +206,18 @@ class SubpelVarianceTest : rnd(ACMRandom::DeterministicSeed()); block_size_ = width_ * height_; - src_ = new uint8_t[block_size_]; - sec_ = new uint8_t[block_size_]; + 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() { - delete[] src_; + vpx_free(src_); delete[] ref_; - delete[] sec_; + vpx_free(sec_); } protected: diff --git a/test/vp9_subtract_test.cc b/test/vp9_subtract_test.cc index 1a62b5731..3e5fe8d6a 100644 --- a/test/vp9_subtract_test.cc +++ b/test/vp9_subtract_test.cc @@ -16,6 +16,7 @@ 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, @@ -42,9 +43,12 @@ TEST_P(VP9SubtractBlockTest, SimpleSubtract) { 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 = new int16_t[block_width * block_height * 2]; - uint8_t *pred = new uint8_t[block_width * block_height * 2]; - uint8_t *src = new uint8_t[block_width * block_height * 2]; + 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) { @@ -80,9 +84,9 @@ TEST_P(VP9SubtractBlockTest, SimpleSubtract) { } } } - delete[] diff; - delete[] pred; - delete[] src; + vpx_free(diff); + vpx_free(pred); + vpx_free(src); } } diff --git a/vp9/common/vp9_blockd.h b/vp9/common/vp9_blockd.h index 37d29af17..a09f33ed9 100644 --- a/vp9/common/vp9_blockd.h +++ b/vp9/common/vp9_blockd.h @@ -214,7 +214,7 @@ typedef struct { int_mv ref_mvs[MAX_REF_FRAMES][MAX_MV_REF_CANDIDATES]; int_mv best_mv, best_second_mv; - int mb_mode_context[MAX_REF_FRAMES]; + uint8_t mb_mode_context[MAX_REF_FRAMES]; unsigned char mb_skip_coeff; /* does this mb has coefficients at all, 1=no coefficients, 0=need decode tokens */ unsigned char segment_id; // Segment id for current frame @@ -237,6 +237,11 @@ typedef struct { union b_mode_info bmi[4]; } MODE_INFO; +enum mv_precision { + MV_PRECISION_Q3, + MV_PRECISION_Q4 +}; + #define VP9_REF_SCALE_SHIFT 14 struct scale_factors { int x_scale_fp; // horizontal fixed point scale factor @@ -249,9 +254,8 @@ struct scale_factors { int (*scale_value_x)(int val, const struct scale_factors *scale); int (*scale_value_y)(int val, const struct scale_factors *scale); void (*set_scaled_offsets)(struct scale_factors *scale, int row, int col); - int_mv32 (*scale_mv_q3_to_q4)(const int_mv *src_mv, - const struct scale_factors *scale); - int32_t (*scale_mv_component_q4)(int mv_q4, int scale_fp, int offset_q4); + MV32 (*scale_mv_q3_to_q4)(const MV *mv, const struct scale_factors *scale); + MV32 (*scale_mv_q4)(const MV *mv, const struct scale_factors *scale); convolve_fn_t predict[2][2][2]; // horiz, vert, avg }; @@ -523,34 +527,30 @@ static TX_TYPE txfm_map(MB_PREDICTION_MODE bmode) { } static TX_TYPE get_tx_type_4x4(const MACROBLOCKD *xd, int ib) { - TX_TYPE tx_type; - MODE_INFO *mi = xd->mode_info_context; + MODE_INFO *const mi = xd->mode_info_context; MB_MODE_INFO *const mbmi = &mi->mbmi; + if (xd->lossless || mbmi->ref_frame[0] != INTRA_FRAME) return DCT_DCT; + if (mbmi->sb_type < BLOCK_SIZE_SB8X8) { - tx_type = txfm_map(mi->bmi[ib].as_mode.first); + return txfm_map(mi->bmi[ib].as_mode.first); } else { assert(mbmi->mode <= TM_PRED); - tx_type = txfm_map(mbmi->mode); + return txfm_map(mbmi->mode); } - return tx_type; } -static TX_TYPE get_tx_type_8x8(const MACROBLOCKD *xd, int ib) { - TX_TYPE tx_type = DCT_DCT; - if (xd->mode_info_context->mbmi.mode <= TM_PRED) { - tx_type = txfm_map(xd->mode_info_context->mbmi.mode); - } - return tx_type; +static TX_TYPE get_tx_type_8x8(const MACROBLOCKD *xd) { + return xd->mode_info_context->mbmi.mode <= TM_PRED + ? txfm_map(xd->mode_info_context->mbmi.mode) + : DCT_DCT; } -static TX_TYPE get_tx_type_16x16(const MACROBLOCKD *xd, int ib) { - TX_TYPE tx_type = DCT_DCT; - if (xd->mode_info_context->mbmi.mode <= TM_PRED) { - tx_type = txfm_map(xd->mode_info_context->mbmi.mode); - } - return tx_type; +static TX_TYPE get_tx_type_16x16(const MACROBLOCKD *xd) { + return xd->mode_info_context->mbmi.mode <= TM_PRED + ? txfm_map(xd->mode_info_context->mbmi.mode) + : DCT_DCT; } void vp9_setup_block_dptrs(MACROBLOCKD *xd, diff --git a/vp9/common/vp9_entropy.c b/vp9/common/vp9_entropy.c index 080867e7a..7ab1114bd 100644 --- a/vp9/common/vp9_entropy.c +++ b/vp9/common/vp9_entropy.c @@ -406,16 +406,6 @@ void vp9_model_to_full_probs(const vp9_prob *model, vp9_prob *full) { extend_model_to_full_distribution(model[PIVOT_NODE], full); } -void vp9_model_to_full_probs_sb( - vp9_prob model[COEF_BANDS][PREV_COEF_CONTEXTS][UNCONSTRAINED_NODES], - vp9_prob full[COEF_BANDS][PREV_COEF_CONTEXTS][ENTROPY_NODES]) { - int c, p; - for (c = 0; c < COEF_BANDS; ++c) - for (p = 0; p < PREV_COEF_CONTEXTS; ++p) { - vp9_model_to_full_probs(model[c][p], full[c][p]); - } -} - static vp9_tree_index cat1[2], cat2[4], cat3[6], cat4[8], cat5[10], cat6[28]; static void init_bit_tree(vp9_tree_index *p, int n) { diff --git a/vp9/common/vp9_entropy.h b/vp9/common/vp9_entropy.h index 7f2bf3d6e..149ed8b42 100644 --- a/vp9/common/vp9_entropy.h +++ b/vp9/common/vp9_entropy.h @@ -181,10 +181,6 @@ extern void vp9_full_to_model_counts( void vp9_model_to_full_probs(const vp9_prob *model, vp9_prob *full); -void vp9_model_to_full_probs_sb( - vp9_prob model[COEF_BANDS][PREV_COEF_CONTEXTS][UNCONSTRAINED_NODES], - vp9_prob full[COEF_BANDS][PREV_COEF_CONTEXTS][ENTROPY_NODES]); - extern const vp9_prob vp9_modelcoefprobs[COEFPROB_MODELS][ENTROPY_NODES - 1]; static INLINE const int* get_scan_4x4(TX_TYPE tx_type) { diff --git a/vp9/common/vp9_loopfilter.c b/vp9/common/vp9_loopfilter.c index 7b3f0be24..867c2cc3a 100644 --- a/vp9/common/vp9_loopfilter.c +++ b/vp9/common/vp9_loopfilter.c @@ -201,11 +201,10 @@ static void filter_selectively_vert(uint8_t *s, int pitch, } else { assert(0); } - - if (mask_4x4_int & 1) - vp9_loop_filter_vertical_edge(s + 4, pitch, lfi->mblim, lfi->lim, - lfi->hev_thr, 1); } + if (mask_4x4_int & 1) + vp9_loop_filter_vertical_edge(s + 4, pitch, lfi->mblim, lfi->lim, + lfi->hev_thr, 1); s += 8; lfi++; mask_16x16 >>= 1; @@ -269,13 +268,14 @@ static void filter_block_plane(VP9_COMMON *cm, MACROBLOCKD *xd, const int col_step = 1 << xd->plane[plane].subsampling_x; struct buf_2d * const dst = &xd->plane[plane].dst; uint8_t* const dst0 = dst->buf; - MODE_INFO* const mi0 = xd->mode_info_context; unsigned int mask_16x16[64 / MI_SIZE] = {0}; unsigned int mask_8x8[64 / MI_SIZE] = {0}; unsigned int mask_4x4[64 / MI_SIZE] = {0}; unsigned int mask_4x4_int[64 / MI_SIZE] = {0}; struct loop_filter_info lfi[64 / MI_SIZE][64 / MI_SIZE]; int r, c; + MODE_INFO *mi = xd->mode_info_context; + int row_step_stride = cm->mode_info_stride * row_step; for (r = 0; r < 64 / MI_SIZE && mi_row + r < cm->mi_rows; r += row_step) { unsigned int mask_16x16_c = 0; @@ -285,7 +285,6 @@ static void filter_block_plane(VP9_COMMON *cm, MACROBLOCKD *xd, // Determine the vertical edges that need filtering for (c = 0; c < 64 / MI_SIZE && mi_col + c < cm->mi_cols; c += col_step) { - const MODE_INFO * const mi = xd->mode_info_context; const int skip_this = mi[c].mbmi.mb_skip_coeff && mi[c].mbmi.ref_frame[0] != INTRA_FRAME; // left edge of current unit is block/partition edge -> no skip @@ -362,12 +361,11 @@ static void filter_block_plane(VP9_COMMON *cm, MACROBLOCKD *xd, mask_4x4_c & border_mask, mask_4x4_int[r], lfi[r]); dst->buf += 8 * dst->stride; - xd->mode_info_context += cm->mode_info_stride * row_step; + mi += row_step_stride; } // Now do horizontal pass dst->buf = dst0; - xd->mode_info_context = mi0; for (r = 0; r < 64 / MI_SIZE && mi_row + r < cm->mi_rows; r += row_step) { const int skip_border_4x4_r = ss_y && mi_row + r == cm->mi_rows - 1; const unsigned int mask_4x4_int_r = skip_border_4x4_r ? 0 : mask_4x4_int[r]; @@ -378,7 +376,6 @@ static void filter_block_plane(VP9_COMMON *cm, MACROBLOCKD *xd, mask_4x4[r], mask_4x4_int_r, mi_row + r == 0, lfi[r]); dst->buf += 8 * dst->stride; - xd->mode_info_context += cm->mode_info_stride * row_step; } } diff --git a/vp9/common/vp9_mv.h b/vp9/common/vp9_mv.h index a1eef4649..b4dc355b2 100644 --- a/vp9/common/vp9_mv.h +++ b/vp9/common/vp9_mv.h @@ -23,14 +23,14 @@ typedef union int_mv { MV as_mv; } int_mv; /* facilitates faster equality tests and copies */ -struct mv32 { +typedef struct { int32_t row; int32_t col; -}; +} MV32; typedef union int_mv32 { - uint64_t as_int; - struct mv32 as_mv; + uint64_t as_int; + MV32 as_mv; } int_mv32; /* facilitates faster equality tests and copies */ #endif // VP9_COMMON_VP9_MV_H_ diff --git a/vp9/common/vp9_pred_common.c b/vp9/common/vp9_pred_common.c index 17da4f215..d921a1197 100644 --- a/vp9/common/vp9_pred_common.c +++ b/vp9/common/vp9_pred_common.c @@ -501,7 +501,7 @@ void vp9_set_pred_flag(MACROBLOCKD *const xd, // Macroblock segment id prediction function int vp9_get_pred_mi_segid(VP9_COMMON *cm, BLOCK_SIZE_TYPE sb_type, - int mi_row, int mi_col) { + uint8_t *segment_ids, int mi_row, int mi_col) { const int mi_index = mi_row * cm->mi_cols + mi_col; const int bw = 1 << mi_width_log2(sb_type); const int bh = 1 << mi_height_log2(sb_type); @@ -513,7 +513,7 @@ int vp9_get_pred_mi_segid(VP9_COMMON *cm, BLOCK_SIZE_TYPE sb_type, for (y = 0; y < ymis; y++) { for (x = 0; x < xmis; x++) { const int index = mi_index + (y * cm->mi_cols + x); - segment_id = MIN(segment_id, cm->last_frame_seg_map[index]); + segment_id = MIN(segment_id, segment_ids[index]); } } return segment_id; diff --git a/vp9/common/vp9_pred_common.h b/vp9/common/vp9_pred_common.h index b728724b7..100102b61 100644 --- a/vp9/common/vp9_pred_common.h +++ b/vp9/common/vp9_pred_common.h @@ -48,6 +48,6 @@ void vp9_set_pred_flag(MACROBLOCKD *const xd, int vp9_get_pred_mi_segid(VP9_COMMON *cm, BLOCK_SIZE_TYPE sb_type, - int mi_row, int mi_col); + uint8_t *segment_ids, int mi_row, int mi_col); #endif // VP9_COMMON_VP9_PRED_COMMON_H_ diff --git a/vp9/common/vp9_reconinter.c b/vp9/common/vp9_reconinter.c index b28d33319..f1d155819 100644 --- a/vp9/common/vp9_reconinter.c +++ b/vp9/common/vp9_reconinter.c @@ -32,45 +32,42 @@ static int unscaled_value(int val, const struct scale_factors *scale) { return val; } -static int_mv32 mv_q3_to_q4_with_scaling(const int_mv *src_mv, - const struct scale_factors *scale) { - // returns mv * scale + offset - int_mv32 result; - const int32_t mv_row_q4 = src_mv->as_mv.row << 1; - const int32_t mv_col_q4 = src_mv->as_mv.col << 1; - - result.as_mv.row = (mv_row_q4 * scale->y_scale_fp >> VP9_REF_SCALE_SHIFT) - + scale->y_offset_q4; - result.as_mv.col = (mv_col_q4 * scale->x_scale_fp >> VP9_REF_SCALE_SHIFT) - + scale->x_offset_q4; - return result; +static MV32 mv_q3_to_q4_with_scaling(const MV *mv, + const struct scale_factors *scale) { + const MV32 res = { + ((mv->row << 1) * scale->y_scale_fp >> VP9_REF_SCALE_SHIFT) + + scale->y_offset_q4, + ((mv->col << 1) * scale->x_scale_fp >> VP9_REF_SCALE_SHIFT) + + scale->x_offset_q4 + }; + return res; } -static int_mv32 mv_q3_to_q4_without_scaling(const int_mv *src_mv, - const struct scale_factors *scale) { - // returns mv * scale + offset - int_mv32 result; - - result.as_mv.row = src_mv->as_mv.row << 1; - result.as_mv.col = src_mv->as_mv.col << 1; - return result; +static MV32 mv_q3_to_q4_without_scaling(const MV *mv, + const struct scale_factors *scale) { + const MV32 res = { + mv->row << 1, + mv->col << 1 + }; + return res; } -static int32_t mv_component_q4_with_scaling(int mv_q4, int scale_fp, - int offset_q4) { - int32_t scaled_mv; - // returns the scaled and offset value of the mv component. - scaled_mv = (mv_q4 * scale_fp >> VP9_REF_SCALE_SHIFT) + offset_q4; - - return scaled_mv; +static MV32 mv_q4_with_scaling(const MV *mv, + const struct scale_factors *scale) { + const MV32 res = { + (mv->row * scale->y_scale_fp >> VP9_REF_SCALE_SHIFT) + scale->y_offset_q4, + (mv->col * scale->x_scale_fp >> VP9_REF_SCALE_SHIFT) + scale->x_offset_q4 + }; + return res; } -static int32_t mv_component_q4_without_scaling(int mv_q4, int scale_fp, - int offset_q4) { - // returns the scaled and offset value of the mv component. - (void)scale_fp; - (void)offset_q4; - return mv_q4; +static MV32 mv_q4_without_scaling(const MV *mv, + const struct scale_factors *scale) { + const MV32 res = { + mv->row, + mv->col + }; + return res; } static void set_offsets_with_scaling(struct scale_factors *scale, @@ -112,13 +109,13 @@ void vp9_setup_scale_factors_for_frame(struct scale_factors *scale, scale->scale_value_y = unscaled_value; scale->set_scaled_offsets = set_offsets_without_scaling; scale->scale_mv_q3_to_q4 = mv_q3_to_q4_without_scaling; - scale->scale_mv_component_q4 = mv_component_q4_without_scaling; + scale->scale_mv_q4 = mv_q4_without_scaling; } else { scale->scale_value_x = scale_value_x_with_scaling; scale->scale_value_y = scale_value_y_with_scaling; scale->set_scaled_offsets = set_offsets_with_scaling; scale->scale_mv_q3_to_q4 = mv_q3_to_q4_with_scaling; - scale->scale_mv_component_q4 = mv_component_q4_with_scaling; + scale->scale_mv_q4 = mv_q4_with_scaling; } // TODO(agrange): Investigate the best choice of functions to use here @@ -288,35 +285,18 @@ void vp9_copy_mem8x4_c(const uint8_t *src, void vp9_build_inter_predictor(const uint8_t *src, int src_stride, uint8_t *dst, int dst_stride, - const int_mv *mv_q3, + const int_mv *src_mv, const struct scale_factors *scale, int w, int h, int weight, - const struct subpix_fn_table *subpix) { - int_mv32 mv = scale->scale_mv_q3_to_q4(mv_q3, scale); - src += (mv.as_mv.row >> 4) * src_stride + (mv.as_mv.col >> 4); - scale->predict[!!(mv.as_mv.col & 15)][!!(mv.as_mv.row & 15)][weight]( - src, src_stride, dst, dst_stride, - subpix->filter_x[mv.as_mv.col & 15], scale->x_step_q4, - subpix->filter_y[mv.as_mv.row & 15], scale->y_step_q4, - w, h); -} - -void vp9_build_inter_predictor_q4(const uint8_t *src, int src_stride, - uint8_t *dst, int dst_stride, - const int_mv *mv_q4, - const struct scale_factors *scale, - int w, int h, int weight, - const struct subpix_fn_table *subpix) { - const int scaled_mv_row_q4 = scale->scale_mv_component_q4(mv_q4->as_mv.row, - scale->y_scale_fp, - scale->y_offset_q4); - const int scaled_mv_col_q4 = scale->scale_mv_component_q4(mv_q4->as_mv.col, - scale->x_scale_fp, - scale->x_offset_q4); - const int subpel_x = scaled_mv_col_q4 & 15; - const int subpel_y = scaled_mv_row_q4 & 15; - - src += (scaled_mv_row_q4 >> 4) * src_stride + (scaled_mv_col_q4 >> 4); + const struct subpix_fn_table *subpix, + enum mv_precision precision) { + const MV32 mv = precision == MV_PRECISION_Q4 + ? scale->scale_mv_q4(&src_mv->as_mv, scale) + : scale->scale_mv_q3_to_q4(&src_mv->as_mv, scale); + const int subpel_x = mv.col & 15; + const int subpel_y = mv.row & 15; + + src += (mv.row >> 4) * src_stride + (mv.col >> 4); scale->predict[!!subpel_x][!!subpel_y][weight]( src, src_stride, dst, dst_stride, subpix->filter_x[subpel_x], scale->x_step_q4, @@ -446,11 +426,11 @@ static void build_inter_predictors(int plane, int block, xd->mb_to_bottom_edge); scale->set_scaled_offsets(scale, arg->y + y, arg->x + x); - vp9_build_inter_predictor_q4(pre, pre_stride, - dst, arg->dst_stride[plane], - &clamped_mv, &xd->scale_factor[which_mv], - 4 << pred_w, 4 << pred_h, which_mv, - &xd->subpix); + vp9_build_inter_predictor(pre, pre_stride, + dst, arg->dst_stride[plane], + &clamped_mv, &xd->scale_factor[which_mv], + 4 << pred_w, 4 << pred_h, which_mv, + &xd->subpix, MV_PRECISION_Q4); } } void vp9_build_inter_predictors_sby(MACROBLOCKD *xd, diff --git a/vp9/common/vp9_reconinter.h b/vp9/common/vp9_reconinter.h index 4e521850d..82dda599a 100644 --- a/vp9/common/vp9_reconinter.h +++ b/vp9/common/vp9_reconinter.h @@ -42,14 +42,8 @@ void vp9_build_inter_predictor(const uint8_t *src, int src_stride, const int_mv *mv_q3, const struct scale_factors *scale, int w, int h, int do_avg, - const struct subpix_fn_table *subpix); - -void vp9_build_inter_predictor_q4(const uint8_t *src, int src_stride, - uint8_t *dst, int dst_stride, - const int_mv *mv_q4, - const struct scale_factors *scale, - int w, int h, int do_avg, - const struct subpix_fn_table *subpix); + const struct subpix_fn_table *subpix, + enum mv_precision precision); static int scaled_buffer_offset(int x_offset, int y_offset, int stride, const struct scale_factors *scale) { diff --git a/vp9/common/vp9_reconintra.c b/vp9/common/vp9_reconintra.c index 85dfe5137..a11c1bae0 100644 --- a/vp9/common/vp9_reconintra.c +++ b/vp9/common/vp9_reconintra.c @@ -295,35 +295,6 @@ void vp9_build_intra_predictors(uint8_t *src, int src_stride, } } -void vp9_build_intra_predictors_sby_s(MACROBLOCKD *xd, - BLOCK_SIZE_TYPE bsize) { - const struct macroblockd_plane* const pd = &xd->plane[0]; - const int bw = plane_block_width(bsize, pd); - const int bh = plane_block_height(bsize, pd); - vp9_build_intra_predictors(pd->dst.buf, pd->dst.stride, - pd->dst.buf, pd->dst.stride, - xd->mode_info_context->mbmi.mode, - bw, bh, xd->up_available, xd->left_available, - 0 /*xd->right_available*/); -} - -void vp9_build_intra_predictors_sbuv_s(MACROBLOCKD *xd, - BLOCK_SIZE_TYPE bsize) { - const int bwl = b_width_log2(bsize), bw = 2 << bwl; - const int bhl = b_height_log2(bsize), bh = 2 << bhl; - - vp9_build_intra_predictors(xd->plane[1].dst.buf, xd->plane[1].dst.stride, - xd->plane[1].dst.buf, xd->plane[1].dst.stride, - xd->mode_info_context->mbmi.uv_mode, - bw, bh, xd->up_available, - xd->left_available, 0 /*xd->right_available*/); - vp9_build_intra_predictors(xd->plane[2].dst.buf, xd->plane[1].dst.stride, - xd->plane[2].dst.buf, xd->plane[1].dst.stride, - xd->mode_info_context->mbmi.uv_mode, - bw, bh, xd->up_available, - xd->left_available, 0 /*xd->right_available*/); -} - void vp9_predict_intra_block(MACROBLOCKD *xd, int block_idx, int bwl_in, diff --git a/vp9/common/vp9_rtcd_defs.sh b/vp9/common/vp9_rtcd_defs.sh index 892ad5615..b956e6af9 100644 --- a/vp9/common/vp9_rtcd_defs.sh +++ b/vp9/common/vp9_rtcd_defs.sh @@ -57,12 +57,6 @@ specialize vp9_copy_mem8x4 mmx prototype void vp9_build_intra_predictors "uint8_t *src, int src_stride, uint8_t *pred, int y_stride, int mode, int bw, int bh, int up_available, int left_available, int right_available" specialize void vp9_build_intra_predictors -prototype void vp9_build_intra_predictors_sby_s "struct macroblockd *x, enum BLOCK_SIZE_TYPE bsize" -specialize vp9_build_intra_predictors_sby_s - -prototype void vp9_build_intra_predictors_sbuv_s "struct macroblockd *x, enum BLOCK_SIZE_TYPE bsize" -specialize vp9_build_intra_predictors_sbuv_s - prototype void vp9_intra4x4_predict "struct macroblockd *xd, int block, enum BLOCK_SIZE_TYPE bsize, int b_mode, uint8_t *predictor, int pre_stride" specialize vp9_intra4x4_predict; @@ -553,7 +547,7 @@ prototype void vp9_short_fht4x4 "int16_t *InputData, int16_t *OutputData, int pi specialize vp9_short_fht4x4 prototype void vp9_short_fht8x8 "int16_t *InputData, int16_t *OutputData, int pitch, int tx_type" -specialize vp9_short_fht8x8 +specialize vp9_short_fht8x8 sse2 prototype void vp9_short_fht16x16 "int16_t *InputData, int16_t *OutputData, int pitch, int tx_type" specialize vp9_short_fht16x16 diff --git a/vp9/decoder/vp9_decodemv.c b/vp9/decoder/vp9_decodemv.c index d8836c962..ac97e5c21 100644 --- a/vp9/decoder/vp9_decodemv.c +++ b/vp9/decoder/vp9_decodemv.c @@ -428,6 +428,7 @@ static int read_mb_segment_id(VP9D_COMP *pbi, int mi_row, int mi_col, // If the value is flagged as correctly predicted // then use the predicted value, otherwise decode it explicitly segment_id = pred_flag ? vp9_get_pred_mi_segid(cm, mbmi->sb_type, + cm->last_frame_seg_map, mi_row, mi_col) : read_mb_segid(r, xd); } else { @@ -437,7 +438,8 @@ static int read_mb_segment_id(VP9D_COMP *pbi, int mi_row, int mi_col, set_segment_id(cm, mbmi, mi_row, mi_col, segment_id); // Side effect return segment_id; } else { - return vp9_get_pred_mi_segid(cm, mbmi->sb_type, mi_row, mi_col); + return vp9_get_pred_mi_segid(cm, mbmi->sb_type, cm->last_frame_seg_map, + mi_row, mi_col); } } diff --git a/vp9/decoder/vp9_decodframe.c b/vp9/decoder/vp9_decodframe.c index 078d09b0d..a87cfd3c5 100644 --- a/vp9/decoder/vp9_decodframe.c +++ b/vp9/decoder/vp9_decodframe.c @@ -218,11 +218,11 @@ static void decode_block(int plane, int block, BLOCK_SIZE_TYPE bsize, vp9_iht_add_c(tx_type, qcoeff, dst, stride, pd->eobs[block]); break; case TX_8X8: - tx_type = plane == 0 ? get_tx_type_8x8(xd, raster_block) : DCT_DCT; + tx_type = plane == 0 ? get_tx_type_8x8(xd) : DCT_DCT; vp9_iht_add_8x8_c(tx_type, qcoeff, dst, stride, pd->eobs[block]); break; case TX_16X16: - tx_type = plane == 0 ? get_tx_type_16x16(xd, raster_block) : DCT_DCT; + tx_type = plane == 0 ? get_tx_type_16x16(xd) : DCT_DCT; vp9_iht_add_16x16_c(tx_type, qcoeff, dst, stride, pd->eobs[block]); break; case TX_32X32: diff --git a/vp9/decoder/vp9_detokenize.c b/vp9/decoder/vp9_detokenize.c index 3bbb212a3..343b4f26d 100644 --- a/vp9/decoder/vp9_detokenize.c +++ b/vp9/decoder/vp9_detokenize.c @@ -113,7 +113,6 @@ static int decode_coefs(FRAME_CONTEXT *fc, const MACROBLOCKD *xd, vp9_prob *prob; vp9_coeff_count_model *coef_counts; const int ref = xd->mode_info_context->mbmi.ref_frame[0] != INTRA_FRAME; - TX_TYPE tx_type = DCT_DCT; const int *scan, *nb; uint8_t token_cache[1024]; const uint8_t * band_translate; @@ -126,8 +125,8 @@ static int decode_coefs(FRAME_CONTEXT *fc, const MACROBLOCKD *xd, switch (txfm_size) { default: case TX_4X4: { - tx_type = (type == PLANE_TYPE_Y_WITH_DC) ? - get_tx_type_4x4(xd, block_idx) : DCT_DCT; + const TX_TYPE tx_type = type == PLANE_TYPE_Y_WITH_DC ? + get_tx_type_4x4(xd, block_idx) : DCT_DCT; scan = get_scan_4x4(tx_type); above_ec = A[0] != 0; left_ec = L[0] != 0; @@ -136,12 +135,8 @@ static int decode_coefs(FRAME_CONTEXT *fc, const MACROBLOCKD *xd, break; } case TX_8X8: { - const BLOCK_SIZE_TYPE sb_type = xd->mode_info_context->mbmi.sb_type; - const int sz = 1 + b_width_log2(sb_type); - const int x = block_idx & ((1 << sz) - 1); - const int y = block_idx - x; - tx_type = (type == PLANE_TYPE_Y_WITH_DC) ? - get_tx_type_8x8(xd, y + (x >> 1)) : DCT_DCT; + const TX_TYPE tx_type = type == PLANE_TYPE_Y_WITH_DC ? + get_tx_type_8x8(xd) : DCT_DCT; scan = get_scan_8x8(tx_type); above_ec = (A[0] + A[1]) != 0; left_ec = (L[0] + L[1]) != 0; @@ -150,12 +145,8 @@ static int decode_coefs(FRAME_CONTEXT *fc, const MACROBLOCKD *xd, break; } case TX_16X16: { - const BLOCK_SIZE_TYPE sb_type = xd->mode_info_context->mbmi.sb_type; - const int sz = 2 + b_width_log2(sb_type); - const int x = block_idx & ((1 << sz) - 1); - const int y = block_idx - x; - tx_type = (type == PLANE_TYPE_Y_WITH_DC) ? - get_tx_type_16x16(xd, y + (x >> 2)) : DCT_DCT; + const TX_TYPE tx_type = type == PLANE_TYPE_Y_WITH_DC ? + get_tx_type_16x16(xd) : DCT_DCT; scan = get_scan_16x16(tx_type); above_ec = (A[0] + A[1] + A[2] + A[3]) != 0; left_ec = (L[0] + L[1] + L[2] + L[3]) != 0; diff --git a/vp9/encoder/vp9_dct.c b/vp9/encoder/vp9_dct.c index a90bcf5df..8be893e85 100644 --- a/vp9/encoder/vp9_dct.c +++ b/vp9/encoder/vp9_dct.c @@ -587,7 +587,7 @@ void vp9_short_fht8x8_c(int16_t *input, int16_t *output, temp_in[j] = out[j + i * 8]; ht.rows(temp_in, temp_out); for (j = 0; j < 8; ++j) - output[j + i * 8] = temp_out[j] >> 1; + output[j + i * 8] = (temp_out[j] + (temp_out[j] < 0)) >> 1; } } diff --git a/vp9/encoder/vp9_encodeframe.c b/vp9/encoder/vp9_encodeframe.c index f655d456b..54629415d 100644 --- a/vp9/encoder/vp9_encodeframe.c +++ b/vp9/encoder/vp9_encodeframe.c @@ -455,25 +455,6 @@ static void update_state(VP9_COMP *cpi, PICK_MODE_CONTEXT *ctx, } } -static unsigned find_seg_id(VP9_COMMON *cm, uint8_t *buf, BLOCK_SIZE_TYPE bsize, - int start_y, int height, int start_x, int width) { - const int bw = 1 << mi_width_log2(bsize), bh = 1 << mi_height_log2(bsize); - const int end_x = MIN(start_x + bw, width); - const int end_y = MIN(start_y + bh, height); - int x, y; - unsigned seg_id = -1; - - buf += width * start_y; - assert(start_y < cm->mi_rows && start_x < cm->cur_tile_mi_col_end); - for (y = start_y; y < end_y; y++, buf += width) { - for (x = start_x; x < end_x; x++) { - seg_id = MIN(seg_id, buf[x]); - } - } - - return seg_id; -} - void vp9_setup_src_planes(MACROBLOCK *x, const YV12_BUFFER_CONFIG *src, int mb_row, int mb_col) { uint8_t *buffers[4] = {src->y_buffer, src->u_buffer, src->v_buffer, src @@ -551,11 +532,9 @@ static void set_offsets(VP9_COMP *cpi, int mi_row, int mi_col, /* segment ID */ if (xd->segmentation_enabled) { - uint8_t *map = - xd->update_mb_segmentation_map ? - cpi->segmentation_map : cm->last_frame_seg_map; - mbmi->segment_id = find_seg_id(cm, map, bsize, mi_row, cm->mi_rows, mi_col, - cm->mi_cols); + uint8_t *map = xd->update_mb_segmentation_map ? cpi->segmentation_map + : cm->last_frame_seg_map; + mbmi->segment_id = vp9_get_pred_mi_segid(cm, bsize, map, mi_row, mi_col); assert(mbmi->segment_id <= (MAX_MB_SEGMENTS-1)); vp9_mb_init_quantizer(cpi, x); @@ -1617,6 +1596,12 @@ static void switch_lossless_mode(VP9_COMP *cpi, int lossless) { } } +static void switch_txfm_mode(VP9_COMP *cpi) { + if (cpi->sf.use_largest_txform && + cpi->common.txfm_mode >= ALLOW_32X32) + cpi->common.txfm_mode = ALLOW_32X32; +} + static void encode_frame_internal(VP9_COMP *cpi) { int mi_row; MACROBLOCK * const x = &cpi->mb; @@ -1661,6 +1646,7 @@ static void encode_frame_internal(VP9_COMP *cpi) { vp9_initialize_rd_consts(cpi, cm->base_qindex + cm->y_dc_delta_q); vp9_initialize_me_consts(cpi, cm->base_qindex); + switch_txfm_mode(cpi); if (cpi->oxcf.tuning == VP8_TUNE_SSIM) { // Initialize encode frame context. diff --git a/vp9/encoder/vp9_encodemb.c b/vp9/encoder/vp9_encodemb.c index 2f133ccbc..ccd84b39c 100644 --- a/vp9/encoder/vp9_encodemb.c +++ b/vp9/encoder/vp9_encodemb.c @@ -164,14 +164,14 @@ static void optimize_b(VP9_COMMON *const cm, MACROBLOCK *mb, break; } case TX_8X8: { - const TX_TYPE tx_type = plane == 0 ? get_tx_type_8x8(xd, ib) : DCT_DCT; + const TX_TYPE tx_type = plane == 0 ? get_tx_type_8x8(xd) : DCT_DCT; scan = get_scan_8x8(tx_type); default_eob = 64; band_translate = vp9_coefband_trans_8x8plus; break; } case TX_16X16: { - const TX_TYPE tx_type = plane == 0 ? get_tx_type_16x16(xd, ib) : DCT_DCT; + const TX_TYPE tx_type = plane == 0 ? get_tx_type_16x16(xd) : DCT_DCT; scan = get_scan_16x16(tx_type); default_eob = 256; band_translate = vp9_coefband_trans_8x8plus; @@ -468,14 +468,14 @@ static void xform_quant(int plane, int block, BLOCK_SIZE_TYPE bsize, vp9_short_fdct32x32(src_diff, coeff, bw * 2); break; case TX_16X16: - tx_type = plane == 0 ? get_tx_type_16x16(xd, raster_block) : DCT_DCT; + tx_type = plane == 0 ? get_tx_type_16x16(xd) : DCT_DCT; if (tx_type != DCT_DCT) vp9_short_fht16x16(src_diff, coeff, bw, tx_type); else x->fwd_txm16x16(src_diff, coeff, bw * 2); break; case TX_8X8: - tx_type = plane == 0 ? get_tx_type_8x8(xd, raster_block) : DCT_DCT; + tx_type = plane == 0 ? get_tx_type_8x8(xd) : DCT_DCT; if (tx_type != DCT_DCT) vp9_short_fht8x8(src_diff, coeff, bw, tx_type); else @@ -519,14 +519,14 @@ static void encode_block(int plane, int block, BLOCK_SIZE_TYPE bsize, vp9_short_idct32x32_add(dqcoeff, dst, pd->dst.stride); break; case TX_16X16: - tx_type = plane == 0 ? get_tx_type_16x16(xd, raster_block) : DCT_DCT; + tx_type = plane == 0 ? get_tx_type_16x16(xd) : DCT_DCT; if (tx_type == DCT_DCT) vp9_short_idct16x16_add(dqcoeff, dst, pd->dst.stride); else vp9_short_iht16x16_add(dqcoeff, dst, pd->dst.stride, tx_type); break; case TX_8X8: - tx_type = plane == 0 ? get_tx_type_8x8(xd, raster_block) : DCT_DCT; + tx_type = plane == 0 ? get_tx_type_8x8(xd) : DCT_DCT; if (tx_type == DCT_DCT) vp9_short_idct8x8_add(dqcoeff, dst, pd->dst.stride); else @@ -659,14 +659,14 @@ static void encode_block_intra(int plane, int block, BLOCK_SIZE_TYPE bsize, vp9_short_idct32x32_add(dqcoeff, dst, pd->dst.stride); break; case TX_16X16: - tx_type = plane == 0 ? get_tx_type_16x16(xd, raster_block) : DCT_DCT; + tx_type = plane == 0 ? get_tx_type_16x16(xd) : DCT_DCT; if (tx_type == DCT_DCT) vp9_short_idct16x16_add(dqcoeff, dst, pd->dst.stride); else vp9_short_iht16x16_add(dqcoeff, dst, pd->dst.stride, tx_type); break; case TX_8X8: - tx_type = plane == 0 ? get_tx_type_8x8(xd, raster_block) : DCT_DCT; + tx_type = plane == 0 ? get_tx_type_8x8(xd) : DCT_DCT; if (tx_type == DCT_DCT) vp9_short_idct8x8_add(dqcoeff, dst, pd->dst.stride); else diff --git a/vp9/encoder/vp9_mcomp.c b/vp9/encoder/vp9_mcomp.c index 0f1062313..53b70adc4 100644 --- a/vp9/encoder/vp9_mcomp.c +++ b/vp9/encoder/vp9_mcomp.c @@ -447,7 +447,7 @@ int vp9_find_best_sub_pixel_comp(MACROBLOCK *x, int offset; int usehp = xd->allow_high_precision_mv; - uint8_t *comp_pred = vpx_memalign(16, w * h * sizeof(uint8_t)); + DECLARE_ALIGNED_ARRAY(16, uint8_t, comp_pred, 64 * 64); uint8_t *y = xd->plane[0].pre[0].buf + (bestmv->as_mv.row) * xd->plane[0].pre[0].stride + bestmv->as_mv.col; @@ -597,8 +597,6 @@ int vp9_find_best_sub_pixel_comp(MACROBLOCK *x, bestmv->as_mv.row = br; bestmv->as_mv.col = bc; - vpx_free(comp_pred); - if ((abs(bestmv->as_mv.col - ref_mv->as_mv.col) > (MAX_FULL_PEL_VAL << 3)) || (abs(bestmv->as_mv.row - ref_mv->as_mv.row) > (MAX_FULL_PEL_VAL << 3))) return INT_MAX; @@ -2356,7 +2354,7 @@ int vp9_refining_search_8p_c(MACROBLOCK *x, int *mvsadcost[2] = {x->nmvsadcost[0], x->nmvsadcost[1]}; /* Compound pred buffer */ - uint8_t *comp_pred = vpx_memalign(16, w * h * sizeof(uint8_t)); + DECLARE_ALIGNED_ARRAY(16, uint8_t, comp_pred, 64 * 64); fcenter_mv.as_mv.row = center_mv->as_mv.row >> 3; fcenter_mv.as_mv.col = center_mv->as_mv.col >> 3; @@ -2420,10 +2418,8 @@ int vp9_refining_search_8p_c(MACROBLOCK *x, (unsigned int *)(&thissad)) + mv_err_cost(&this_mv, center_mv, mvjcost, mvcost, x->errorperbit, xd->allow_high_precision_mv); - vpx_free(comp_pred); return besterr; } else { - vpx_free(comp_pred); return INT_MAX; } } diff --git a/vp9/encoder/vp9_onyx_if.c b/vp9/encoder/vp9_onyx_if.c index e02e73232..48a8b48c6 100644 --- a/vp9/encoder/vp9_onyx_if.c +++ b/vp9/encoder/vp9_onyx_if.c @@ -724,6 +724,9 @@ void vp9_set_speed_features(VP9_COMP *cpi) { sf->first_step = 1; sf->use_avoid_tested_higherror = 1; sf->adjust_thresholds_by_speed = 1; + sf->use_largest_txform = !(cpi->common.frame_type == KEY_FRAME || + cpi->common.intra_only || + cpi->common.show_frame == 0); } if (speed == 2) { sf->comp_inter_joint_search_thresh = BLOCK_SIZE_SB8X8; diff --git a/vp9/encoder/vp9_rdopt.c b/vp9/encoder/vp9_rdopt.c index a48e7dbb3..b2a19c61d 100644 --- a/vp9/encoder/vp9_rdopt.c +++ b/vp9/encoder/vp9_rdopt.c @@ -337,11 +337,8 @@ static INLINE int cost_coeffs(VP9_COMMON *const cm, MACROBLOCK *mb, break; } case TX_8X8: { - const BLOCK_SIZE_TYPE sb_type = xd->mode_info_context->mbmi.sb_type; - const int sz = 1 + b_width_log2(sb_type); - const int x = block & ((1 << sz) - 1), y = block - x; - TX_TYPE tx_type = (type == PLANE_TYPE_Y_WITH_DC) ? - get_tx_type_8x8(xd, y + (x >> 1)) : DCT_DCT; + const TX_TYPE tx_type = type == PLANE_TYPE_Y_WITH_DC ? + get_tx_type_8x8(xd) : DCT_DCT; above_ec = (A[0] + A[1]) != 0; left_ec = (L[0] + L[1]) != 0; scan = get_scan_8x8(tx_type); @@ -350,11 +347,8 @@ static INLINE int cost_coeffs(VP9_COMMON *const cm, MACROBLOCK *mb, break; } case TX_16X16: { - const BLOCK_SIZE_TYPE sb_type = xd->mode_info_context->mbmi.sb_type; - const int sz = 2 + b_width_log2(sb_type); - const int x = block & ((1 << sz) - 1), y = block - x; - TX_TYPE tx_type = (type == PLANE_TYPE_Y_WITH_DC) ? - get_tx_type_16x16(xd, y + (x >> 2)) : DCT_DCT; + const TX_TYPE tx_type = type == PLANE_TYPE_Y_WITH_DC ? + get_tx_type_16x16(xd) : DCT_DCT; scan = get_scan_16x16(tx_type); seg_eob = 256; above_ec = (A[0] + A[1] + A[2] + A[3]) != 0; @@ -370,7 +364,7 @@ static INLINE int cost_coeffs(VP9_COMMON *const cm, MACROBLOCK *mb, band_translate = vp9_coefband_trans_8x8plus; break; default: - abort(); + assert(0); break; } assert(eob <= seg_eob); @@ -1129,7 +1123,8 @@ static int64_t encode_inter_mb_segment(VP9_COMMON *const cm, xd->plane[0].dst.stride, &xd->mode_info_context->bmi[i].as_mv[0], &xd->scale_factor[0], - 4 * bw, 4 * bh, 0 /* no avg */, &xd->subpix); + 4 * bw, 4 * bh, 0 /* no avg */, &xd->subpix, + MV_PRECISION_Q3); // TODO(debargha): Make this work properly with the // implicit-compoundinter-weight experiment when implicit @@ -1143,7 +1138,7 @@ static int64_t encode_inter_mb_segment(VP9_COMMON *const cm, dst, xd->plane[0].dst.stride, &xd->mode_info_context->bmi[i].as_mv[1], &xd->scale_factor[1], 4 * bw, 4 * bh, 1, - &xd->subpix); + &xd->subpix, MV_PRECISION_Q3); } vp9_subtract_block(4 * bh, 4 * bw, src_diff, 8, @@ -1966,6 +1961,7 @@ static void model_rd_for_sb(VP9_COMP *cpi, BLOCK_SIZE_TYPE bsize, int64_t dist; cpi->fn_ptr[bs].vf(p->src.buf, p->src.stride, pd->dst.buf, pd->dst.stride, &sse); + model_rd_from_var_lapndz(sse, bw * bh, pd->dequant[1] >> 3, &rate, &dist); rate_sum += rate; @@ -2151,7 +2147,7 @@ static void joint_motion_search(VP9_COMP *cpi, MACROBLOCK *x, &frame_mv[refs[!id]], &xd->scale_factor[!id], pw, ph, 0, - &xd->subpix); + &xd->subpix, MV_PRECISION_Q3); // Compound motion search on first ref frame. if (id) diff --git a/vp9/encoder/vp9_segmentation.c b/vp9/encoder/vp9_segmentation.c index fe995ad72..af218b7d6 100644 --- a/vp9/encoder/vp9_segmentation.c +++ b/vp9/encoder/vp9_segmentation.c @@ -139,6 +139,7 @@ static void count_segs(VP9_COMP *cpi, if (cm->frame_type != KEY_FRAME) { // Test to see if the segment id matches the predicted value. const int pred_seg_id = vp9_get_pred_mi_segid(cm, mi->mbmi.sb_type, + cm->last_frame_seg_map, mi_row, mi_col); const int seg_predicted = (segment_id == pred_seg_id); diff --git a/vp9/encoder/vp9_temporal_filter.c b/vp9/encoder/vp9_temporal_filter.c index 47792fcc2..872bf267a 100644 --- a/vp9/encoder/vp9_temporal_filter.c +++ b/vp9/encoder/vp9_temporal_filter.c @@ -51,25 +51,25 @@ static void temporal_filter_predictors_mb_c(MACROBLOCKD *xd, &xd->scale_factor[which_mv], 16, 16, which_mv, - &xd->subpix); + &xd->subpix, MV_PRECISION_Q3); stride = (stride + 1) >> 1; - vp9_build_inter_predictor_q4(u_mb_ptr, stride, - &pred[256], 8, - &mv, - &xd->scale_factor_uv[which_mv], - 8, 8, - which_mv, - &xd->subpix); - - vp9_build_inter_predictor_q4(v_mb_ptr, stride, - &pred[320], 8, - &mv, - &xd->scale_factor_uv[which_mv], - 8, 8, - which_mv, - &xd->subpix); + vp9_build_inter_predictor(u_mb_ptr, stride, + &pred[256], 8, + &mv, + &xd->scale_factor_uv[which_mv], + 8, 8, + which_mv, + &xd->subpix, MV_PRECISION_Q4); + + vp9_build_inter_predictor(v_mb_ptr, stride, + &pred[320], 8, + &mv, + &xd->scale_factor_uv[which_mv], + 8, 8, + which_mv, + &xd->subpix, MV_PRECISION_Q4); } void vp9_temporal_filter_apply_c(uint8_t *frame1, diff --git a/vp9/encoder/vp9_tokenize.c b/vp9/encoder/vp9_tokenize.c index 0a290e124..885079dc1 100644 --- a/vp9/encoder/vp9_tokenize.c +++ b/vp9/encoder/vp9_tokenize.c @@ -133,8 +133,7 @@ static void tokenize_b(int plane, int block, BLOCK_SIZE_TYPE bsize, const int ref = mbmi->ref_frame[0] != INTRA_FRAME; ENTROPY_CONTEXT above_ec, left_ec; uint8_t token_cache[1024]; - TX_TYPE tx_type = DCT_DCT; - const uint8_t * band_translate; + const uint8_t *band_translate; assert((!type && !plane) || (type && plane)); counts = cpi->coef_counts[tx_size]; @@ -142,8 +141,8 @@ static void tokenize_b(int plane, int block, BLOCK_SIZE_TYPE bsize, switch (tx_size) { default: case TX_4X4: { - tx_type = (type == PLANE_TYPE_Y_WITH_DC) ? - get_tx_type_4x4(xd, block) : DCT_DCT; + const TX_TYPE tx_type = type == PLANE_TYPE_Y_WITH_DC ? + get_tx_type_4x4(xd, block) : DCT_DCT; above_ec = A[0] != 0; left_ec = L[0] != 0; seg_eob = 16; @@ -152,10 +151,8 @@ static void tokenize_b(int plane, int block, BLOCK_SIZE_TYPE bsize, break; } case TX_8X8: { - const int sz = 1 + b_width_log2(sb_type); - const int x = block & ((1 << sz) - 1), y = block - x; - tx_type = (type == PLANE_TYPE_Y_WITH_DC) ? - get_tx_type_8x8(xd, y + (x >> 1)) : DCT_DCT; + const TX_TYPE tx_type = type == PLANE_TYPE_Y_WITH_DC ? + get_tx_type_8x8(xd) : DCT_DCT; above_ec = (A[0] + A[1]) != 0; left_ec = (L[0] + L[1]) != 0; seg_eob = 64; @@ -164,10 +161,8 @@ static void tokenize_b(int plane, int block, BLOCK_SIZE_TYPE bsize, break; } case TX_16X16: { - const int sz = 2 + b_width_log2(sb_type); - const int x = block & ((1 << sz) - 1), y = block - x; - tx_type = (type == PLANE_TYPE_Y_WITH_DC) ? - get_tx_type_16x16(xd, y + (x >> 2)) : DCT_DCT; + const TX_TYPE tx_type = type == PLANE_TYPE_Y_WITH_DC ? + get_tx_type_16x16(xd) : DCT_DCT; above_ec = (A[0] + A[1] + A[2] + A[3]) != 0; left_ec = (L[0] + L[1] + L[2] + L[3]) != 0; seg_eob = 256; @@ -263,8 +258,7 @@ int vp9_sb_is_skippable(MACROBLOCKD *xd, BLOCK_SIZE_TYPE bsize) { int vp9_sby_is_skippable(MACROBLOCKD *xd, BLOCK_SIZE_TYPE bsize) { int result = 1; struct is_skippable_args args = {xd, &result}; - foreach_transformed_block_in_plane(xd, bsize, 0, - is_skippable, &args); + foreach_transformed_block_in_plane(xd, bsize, 0, is_skippable, &args); return result; } diff --git a/vp9/encoder/x86/vp9_dct_sse2.c b/vp9/encoder/x86/vp9_dct_sse2.c index aaacebee2..f11200f62 100644 --- a/vp9/encoder/x86/vp9_dct_sse2.c +++ b/vp9/encoder/x86/vp9_dct_sse2.c @@ -10,6 +10,7 @@ #include <emmintrin.h> // SSE2 #include "vp9/common/vp9_idct.h" // for cospi constants +#include "vpx_ports/mem.h" void vp9_short_fdct4x4_sse2(int16_t *input, int16_t *output, int pitch) { // The 2D transform is done with two passes which are actually pretty @@ -133,14 +134,14 @@ void vp9_short_fdct8x8_sse2(int16_t *input, int16_t *output, int pitch) { const __m128i k__cospi_m20_p12 = pair_set_epi16(-cospi_20_64, cospi_12_64); const __m128i k__DCT_CONST_ROUNDING = _mm_set1_epi32(DCT_CONST_ROUNDING); // Load input - __m128i in0 = _mm_loadu_si128((const __m128i *)(input + 0 * stride)); - __m128i in1 = _mm_loadu_si128((const __m128i *)(input + 1 * stride)); - __m128i in2 = _mm_loadu_si128((const __m128i *)(input + 2 * stride)); - __m128i in3 = _mm_loadu_si128((const __m128i *)(input + 3 * stride)); - __m128i in4 = _mm_loadu_si128((const __m128i *)(input + 4 * stride)); - __m128i in5 = _mm_loadu_si128((const __m128i *)(input + 5 * stride)); - __m128i in6 = _mm_loadu_si128((const __m128i *)(input + 6 * stride)); - __m128i in7 = _mm_loadu_si128((const __m128i *)(input + 7 * stride)); + __m128i in0 = _mm_load_si128((const __m128i *)(input + 0 * stride)); + __m128i in1 = _mm_load_si128((const __m128i *)(input + 1 * stride)); + __m128i in2 = _mm_load_si128((const __m128i *)(input + 2 * stride)); + __m128i in3 = _mm_load_si128((const __m128i *)(input + 3 * stride)); + __m128i in4 = _mm_load_si128((const __m128i *)(input + 4 * stride)); + __m128i in5 = _mm_load_si128((const __m128i *)(input + 5 * stride)); + __m128i in6 = _mm_load_si128((const __m128i *)(input + 6 * stride)); + __m128i in7 = _mm_load_si128((const __m128i *)(input + 7 * stride)); // Pre-condition input (shift by two) in0 = _mm_slli_epi16(in0, 2); in1 = _mm_slli_epi16(in1, 2); @@ -362,17 +363,509 @@ void vp9_short_fdct8x8_sse2(int16_t *input, int16_t *output, int pitch) { in6 = _mm_srai_epi16(in6, 1); in7 = _mm_srai_epi16(in7, 1); // store results - _mm_storeu_si128((__m128i *)(output + 0 * 8), in0); - _mm_storeu_si128((__m128i *)(output + 1 * 8), in1); - _mm_storeu_si128((__m128i *)(output + 2 * 8), in2); - _mm_storeu_si128((__m128i *)(output + 3 * 8), in3); - _mm_storeu_si128((__m128i *)(output + 4 * 8), in4); - _mm_storeu_si128((__m128i *)(output + 5 * 8), in5); - _mm_storeu_si128((__m128i *)(output + 6 * 8), in6); - _mm_storeu_si128((__m128i *)(output + 7 * 8), in7); + _mm_store_si128((__m128i *)(output + 0 * 8), in0); + _mm_store_si128((__m128i *)(output + 1 * 8), in1); + _mm_store_si128((__m128i *)(output + 2 * 8), in2); + _mm_store_si128((__m128i *)(output + 3 * 8), in3); + _mm_store_si128((__m128i *)(output + 4 * 8), in4); + _mm_store_si128((__m128i *)(output + 5 * 8), in5); + _mm_store_si128((__m128i *)(output + 6 * 8), in6); + _mm_store_si128((__m128i *)(output + 7 * 8), in7); } } +// load 8x8 array +static INLINE void load_buffer_8x8(int16_t *input, __m128i in[8], int stride) { + in[0] = _mm_load_si128((__m128i *)(input + 0 * stride)); + in[1] = _mm_load_si128((__m128i *)(input + 1 * stride)); + in[2] = _mm_load_si128((__m128i *)(input + 2 * stride)); + in[3] = _mm_load_si128((__m128i *)(input + 3 * stride)); + in[4] = _mm_load_si128((__m128i *)(input + 4 * stride)); + in[5] = _mm_load_si128((__m128i *)(input + 5 * stride)); + in[6] = _mm_load_si128((__m128i *)(input + 6 * stride)); + in[7] = _mm_load_si128((__m128i *)(input + 7 * stride)); + + in[0] = _mm_slli_epi16(in[0], 2); + in[1] = _mm_slli_epi16(in[1], 2); + in[2] = _mm_slli_epi16(in[2], 2); + in[3] = _mm_slli_epi16(in[3], 2); + in[4] = _mm_slli_epi16(in[4], 2); + in[5] = _mm_slli_epi16(in[5], 2); + in[6] = _mm_slli_epi16(in[6], 2); + in[7] = _mm_slli_epi16(in[7], 2); +} + +// write 8x8 array +static INLINE void write_buffer_8x8(int16_t *output, __m128i res[8]) { + res[0] = _mm_srai_epi16(res[0], 1); + res[1] = _mm_srai_epi16(res[1], 1); + res[2] = _mm_srai_epi16(res[2], 1); + res[3] = _mm_srai_epi16(res[3], 1); + res[4] = _mm_srai_epi16(res[4], 1); + res[5] = _mm_srai_epi16(res[5], 1); + res[6] = _mm_srai_epi16(res[6], 1); + res[7] = _mm_srai_epi16(res[7], 1); + + _mm_store_si128((__m128i *)(output + 0 * 8), res[0]); + _mm_store_si128((__m128i *)(output + 1 * 8), res[1]); + _mm_store_si128((__m128i *)(output + 2 * 8), res[2]); + _mm_store_si128((__m128i *)(output + 3 * 8), res[3]); + _mm_store_si128((__m128i *)(output + 4 * 8), res[4]); + _mm_store_si128((__m128i *)(output + 5 * 8), res[5]); + _mm_store_si128((__m128i *)(output + 6 * 8), res[6]); + _mm_store_si128((__m128i *)(output + 7 * 8), res[7]); +} + +// perform in-place transpose +static INLINE void array_transpose_8x8(__m128i res[8]) { + const __m128i tr0_0 = _mm_unpacklo_epi16(res[0], res[1]); + const __m128i tr0_1 = _mm_unpacklo_epi16(res[2], res[3]); + const __m128i tr0_2 = _mm_unpackhi_epi16(res[0], res[1]); + const __m128i tr0_3 = _mm_unpackhi_epi16(res[2], res[3]); + const __m128i tr0_4 = _mm_unpacklo_epi16(res[4], res[5]); + const __m128i tr0_5 = _mm_unpacklo_epi16(res[6], res[7]); + const __m128i tr0_6 = _mm_unpackhi_epi16(res[4], res[5]); + const __m128i tr0_7 = _mm_unpackhi_epi16(res[6], res[7]); + // 00 10 01 11 02 12 03 13 + // 20 30 21 31 22 32 23 33 + // 04 14 05 15 06 16 07 17 + // 24 34 25 35 26 36 27 37 + // 40 50 41 51 42 52 43 53 + // 60 70 61 71 62 72 63 73 + // 44 54 45 55 46 56 47 57 + // 64 74 65 75 66 76 67 77 + const __m128i tr1_0 = _mm_unpacklo_epi32(tr0_0, tr0_1); + const __m128i tr1_1 = _mm_unpacklo_epi32(tr0_4, tr0_5); + const __m128i tr1_2 = _mm_unpackhi_epi32(tr0_0, tr0_1); + const __m128i tr1_3 = _mm_unpackhi_epi32(tr0_4, tr0_5); + const __m128i tr1_4 = _mm_unpacklo_epi32(tr0_2, tr0_3); + const __m128i tr1_5 = _mm_unpacklo_epi32(tr0_6, tr0_7); + const __m128i tr1_6 = _mm_unpackhi_epi32(tr0_2, tr0_3); + const __m128i tr1_7 = _mm_unpackhi_epi32(tr0_6, tr0_7); + // 00 10 20 30 01 11 21 31 + // 40 50 60 70 41 51 61 71 + // 02 12 22 32 03 13 23 33 + // 42 52 62 72 43 53 63 73 + // 04 14 24 34 05 15 25 35 + // 44 54 64 74 45 55 65 75 + // 06 16 26 36 07 17 27 37 + // 46 56 66 76 47 57 67 77 + res[0] = _mm_unpacklo_epi64(tr1_0, tr1_1); + res[1] = _mm_unpackhi_epi64(tr1_0, tr1_1); + res[2] = _mm_unpacklo_epi64(tr1_2, tr1_3); + res[3] = _mm_unpackhi_epi64(tr1_2, tr1_3); + res[4] = _mm_unpacklo_epi64(tr1_4, tr1_5); + res[5] = _mm_unpackhi_epi64(tr1_4, tr1_5); + res[6] = _mm_unpacklo_epi64(tr1_6, tr1_7); + res[7] = _mm_unpackhi_epi64(tr1_6, tr1_7); + // 00 10 20 30 40 50 60 70 + // 01 11 21 31 41 51 61 71 + // 02 12 22 32 42 52 62 72 + // 03 13 23 33 43 53 63 73 + // 04 14 24 34 44 54 64 74 + // 05 15 25 35 45 55 65 75 + // 06 16 26 36 46 56 66 76 + // 07 17 27 37 47 57 67 77 +} + +void fdct8_1d_sse2(__m128i in[8]) { + // constants + const __m128i k__cospi_p16_p16 = _mm_set1_epi16(cospi_16_64); + const __m128i k__cospi_p16_m16 = pair_set_epi16(cospi_16_64, -cospi_16_64); + const __m128i k__cospi_p24_p08 = pair_set_epi16(cospi_24_64, cospi_8_64); + const __m128i k__cospi_m08_p24 = pair_set_epi16(-cospi_8_64, cospi_24_64); + const __m128i k__cospi_p28_p04 = pair_set_epi16(cospi_28_64, cospi_4_64); + const __m128i k__cospi_m04_p28 = pair_set_epi16(-cospi_4_64, cospi_28_64); + const __m128i k__cospi_p12_p20 = pair_set_epi16(cospi_12_64, cospi_20_64); + const __m128i k__cospi_m20_p12 = pair_set_epi16(-cospi_20_64, cospi_12_64); + const __m128i k__DCT_CONST_ROUNDING = _mm_set1_epi32(DCT_CONST_ROUNDING); + __m128i u0, u1, u2, u3, u4, u5, u6, u7; + __m128i v0, v1, v2, v3, v4, v5, v6, v7; + __m128i s0, s1, s2, s3, s4, s5, s6, s7; + + // stage 1 + s0 = _mm_add_epi16(in[0], in[7]); + s1 = _mm_add_epi16(in[1], in[6]); + s2 = _mm_add_epi16(in[2], in[5]); + s3 = _mm_add_epi16(in[3], in[4]); + s4 = _mm_sub_epi16(in[3], in[4]); + s5 = _mm_sub_epi16(in[2], in[5]); + s6 = _mm_sub_epi16(in[1], in[6]); + s7 = _mm_sub_epi16(in[0], in[7]); + + u0 = _mm_add_epi16(s0, s3); + u1 = _mm_add_epi16(s1, s2); + u2 = _mm_sub_epi16(s1, s2); + u3 = _mm_sub_epi16(s0, s3); + // interleave and perform butterfly multiplication/addition + v0 = _mm_unpacklo_epi16(u0, u1); + v1 = _mm_unpackhi_epi16(u0, u1); + v2 = _mm_unpacklo_epi16(u2, u3); + v3 = _mm_unpackhi_epi16(u2, u3); + + u0 = _mm_madd_epi16(v0, k__cospi_p16_p16); + u1 = _mm_madd_epi16(v1, k__cospi_p16_p16); + u2 = _mm_madd_epi16(v0, k__cospi_p16_m16); + u3 = _mm_madd_epi16(v1, k__cospi_p16_m16); + u4 = _mm_madd_epi16(v2, k__cospi_p24_p08); + u5 = _mm_madd_epi16(v3, k__cospi_p24_p08); + u6 = _mm_madd_epi16(v2, k__cospi_m08_p24); + u7 = _mm_madd_epi16(v3, k__cospi_m08_p24); + + // shift and rounding + v0 = _mm_add_epi32(u0, k__DCT_CONST_ROUNDING); + v1 = _mm_add_epi32(u1, k__DCT_CONST_ROUNDING); + v2 = _mm_add_epi32(u2, k__DCT_CONST_ROUNDING); + v3 = _mm_add_epi32(u3, k__DCT_CONST_ROUNDING); + v4 = _mm_add_epi32(u4, k__DCT_CONST_ROUNDING); + v5 = _mm_add_epi32(u5, k__DCT_CONST_ROUNDING); + v6 = _mm_add_epi32(u6, k__DCT_CONST_ROUNDING); + v7 = _mm_add_epi32(u7, k__DCT_CONST_ROUNDING); + + u0 = _mm_srai_epi32(v0, DCT_CONST_BITS); + u1 = _mm_srai_epi32(v1, DCT_CONST_BITS); + u2 = _mm_srai_epi32(v2, DCT_CONST_BITS); + u3 = _mm_srai_epi32(v3, DCT_CONST_BITS); + u4 = _mm_srai_epi32(v4, DCT_CONST_BITS); + u5 = _mm_srai_epi32(v5, DCT_CONST_BITS); + u6 = _mm_srai_epi32(v6, DCT_CONST_BITS); + u7 = _mm_srai_epi32(v7, DCT_CONST_BITS); + + in[0] = _mm_packs_epi32(u0, u1); + in[2] = _mm_packs_epi32(u4, u5); + in[4] = _mm_packs_epi32(u2, u3); + in[6] = _mm_packs_epi32(u6, u7); + + // stage 2 + // interleave and perform butterfly multiplication/addition + u0 = _mm_unpacklo_epi16(s6, s5); + u1 = _mm_unpackhi_epi16(s6, s5); + v0 = _mm_madd_epi16(u0, k__cospi_p16_m16); + v1 = _mm_madd_epi16(u1, k__cospi_p16_m16); + v2 = _mm_madd_epi16(u0, k__cospi_p16_p16); + v3 = _mm_madd_epi16(u1, k__cospi_p16_p16); + + // shift and rounding + u0 = _mm_add_epi32(v0, k__DCT_CONST_ROUNDING); + u1 = _mm_add_epi32(v1, k__DCT_CONST_ROUNDING); + u2 = _mm_add_epi32(v2, k__DCT_CONST_ROUNDING); + u3 = _mm_add_epi32(v3, k__DCT_CONST_ROUNDING); + + v0 = _mm_srai_epi32(u0, DCT_CONST_BITS); + v1 = _mm_srai_epi32(u1, DCT_CONST_BITS); + v2 = _mm_srai_epi32(u2, DCT_CONST_BITS); + v3 = _mm_srai_epi32(u3, DCT_CONST_BITS); + + u0 = _mm_packs_epi32(v0, v1); + u1 = _mm_packs_epi32(v2, v3); + + // stage 3 + s0 = _mm_add_epi16(s4, u0); + s1 = _mm_sub_epi16(s4, u0); + s2 = _mm_sub_epi16(s7, u1); + s3 = _mm_add_epi16(s7, u1); + + // stage 4 + u0 = _mm_unpacklo_epi16(s0, s3); + u1 = _mm_unpackhi_epi16(s0, s3); + u2 = _mm_unpacklo_epi16(s1, s2); + u3 = _mm_unpackhi_epi16(s1, s2); + + v0 = _mm_madd_epi16(u0, k__cospi_p28_p04); + v1 = _mm_madd_epi16(u1, k__cospi_p28_p04); + v2 = _mm_madd_epi16(u2, k__cospi_p12_p20); + v3 = _mm_madd_epi16(u3, k__cospi_p12_p20); + v4 = _mm_madd_epi16(u2, k__cospi_m20_p12); + v5 = _mm_madd_epi16(u3, k__cospi_m20_p12); + v6 = _mm_madd_epi16(u0, k__cospi_m04_p28); + v7 = _mm_madd_epi16(u1, k__cospi_m04_p28); + + // shift and rounding + u0 = _mm_add_epi32(v0, k__DCT_CONST_ROUNDING); + u1 = _mm_add_epi32(v1, k__DCT_CONST_ROUNDING); + u2 = _mm_add_epi32(v2, k__DCT_CONST_ROUNDING); + u3 = _mm_add_epi32(v3, k__DCT_CONST_ROUNDING); + u4 = _mm_add_epi32(v4, k__DCT_CONST_ROUNDING); + u5 = _mm_add_epi32(v5, k__DCT_CONST_ROUNDING); + u6 = _mm_add_epi32(v6, k__DCT_CONST_ROUNDING); + u7 = _mm_add_epi32(v7, k__DCT_CONST_ROUNDING); + + v0 = _mm_srai_epi32(u0, DCT_CONST_BITS); + v1 = _mm_srai_epi32(u1, DCT_CONST_BITS); + v2 = _mm_srai_epi32(u2, DCT_CONST_BITS); + v3 = _mm_srai_epi32(u3, DCT_CONST_BITS); + v4 = _mm_srai_epi32(u4, DCT_CONST_BITS); + v5 = _mm_srai_epi32(u5, DCT_CONST_BITS); + v6 = _mm_srai_epi32(u6, DCT_CONST_BITS); + v7 = _mm_srai_epi32(u7, DCT_CONST_BITS); + + in[1] = _mm_packs_epi32(v0, v1); + in[3] = _mm_packs_epi32(v4, v5); + in[5] = _mm_packs_epi32(v2, v3); + in[7] = _mm_packs_epi32(v6, v7); + + // transpose + array_transpose_8x8(in); +} + +void fadst8_1d_sse2(__m128i in[8]) { + // Constants + const __m128i k__cospi_p02_p30 = pair_set_epi16(cospi_2_64, cospi_30_64); + const __m128i k__cospi_p30_m02 = pair_set_epi16(cospi_30_64, -cospi_2_64); + const __m128i k__cospi_p10_p22 = pair_set_epi16(cospi_10_64, cospi_22_64); + const __m128i k__cospi_p22_m10 = pair_set_epi16(cospi_22_64, -cospi_10_64); + const __m128i k__cospi_p18_p14 = pair_set_epi16(cospi_18_64, cospi_14_64); + const __m128i k__cospi_p14_m18 = pair_set_epi16(cospi_14_64, -cospi_18_64); + const __m128i k__cospi_p26_p06 = pair_set_epi16(cospi_26_64, cospi_6_64); + const __m128i k__cospi_p06_m26 = pair_set_epi16(cospi_6_64, -cospi_26_64); + const __m128i k__cospi_p08_p24 = pair_set_epi16(cospi_8_64, cospi_24_64); + const __m128i k__cospi_p24_m08 = pair_set_epi16(cospi_24_64, -cospi_8_64); + const __m128i k__cospi_m24_p08 = pair_set_epi16(-cospi_24_64, cospi_8_64); + const __m128i k__cospi_p16_m16 = pair_set_epi16(cospi_16_64, -cospi_16_64); + const __m128i k__cospi_p16_p16 = _mm_set1_epi16(cospi_16_64); + const __m128i k__const_0 = _mm_set1_epi16(0); + const __m128i k__DCT_CONST_ROUNDING = _mm_set1_epi32(DCT_CONST_ROUNDING); + + __m128i u0, u1, u2, u3, u4, u5, u6, u7, u8, u9, u10, u11, u12, u13, u14, u15; + __m128i v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15; + __m128i w0, w1, w2, w3, w4, w5, w6, w7, w8, w9, w10, w11, w12, w13, w14, w15; + __m128i s0, s1, s2, s3, s4, s5, s6, s7; + __m128i in0, in1, in2, in3, in4, in5, in6, in7; + + // properly aligned for butterfly input + in0 = in[7]; + in1 = in[0]; + in2 = in[5]; + in3 = in[2]; + in4 = in[3]; + in5 = in[4]; + in6 = in[1]; + in7 = in[6]; + + // column transformation + // stage 1 + // interleave and multiply/add into 32-bit integer + s0 = _mm_unpacklo_epi16(in0, in1); + s1 = _mm_unpackhi_epi16(in0, in1); + s2 = _mm_unpacklo_epi16(in2, in3); + s3 = _mm_unpackhi_epi16(in2, in3); + s4 = _mm_unpacklo_epi16(in4, in5); + s5 = _mm_unpackhi_epi16(in4, in5); + s6 = _mm_unpacklo_epi16(in6, in7); + s7 = _mm_unpackhi_epi16(in6, in7); + + u0 = _mm_madd_epi16(s0, k__cospi_p02_p30); + u1 = _mm_madd_epi16(s1, k__cospi_p02_p30); + u2 = _mm_madd_epi16(s0, k__cospi_p30_m02); + u3 = _mm_madd_epi16(s1, k__cospi_p30_m02); + u4 = _mm_madd_epi16(s2, k__cospi_p10_p22); + u5 = _mm_madd_epi16(s3, k__cospi_p10_p22); + u6 = _mm_madd_epi16(s2, k__cospi_p22_m10); + u7 = _mm_madd_epi16(s3, k__cospi_p22_m10); + u8 = _mm_madd_epi16(s4, k__cospi_p18_p14); + u9 = _mm_madd_epi16(s5, k__cospi_p18_p14); + u10 = _mm_madd_epi16(s4, k__cospi_p14_m18); + u11 = _mm_madd_epi16(s5, k__cospi_p14_m18); + u12 = _mm_madd_epi16(s6, k__cospi_p26_p06); + u13 = _mm_madd_epi16(s7, k__cospi_p26_p06); + u14 = _mm_madd_epi16(s6, k__cospi_p06_m26); + u15 = _mm_madd_epi16(s7, k__cospi_p06_m26); + + // addition + w0 = _mm_add_epi32(u0, u8); + w1 = _mm_add_epi32(u1, u9); + w2 = _mm_add_epi32(u2, u10); + w3 = _mm_add_epi32(u3, u11); + w4 = _mm_add_epi32(u4, u12); + w5 = _mm_add_epi32(u5, u13); + w6 = _mm_add_epi32(u6, u14); + w7 = _mm_add_epi32(u7, u15); + w8 = _mm_sub_epi32(u0, u8); + w9 = _mm_sub_epi32(u1, u9); + w10 = _mm_sub_epi32(u2, u10); + w11 = _mm_sub_epi32(u3, u11); + w12 = _mm_sub_epi32(u4, u12); + w13 = _mm_sub_epi32(u5, u13); + w14 = _mm_sub_epi32(u6, u14); + w15 = _mm_sub_epi32(u7, u15); + + // shift and rounding + v0 = _mm_add_epi32(w0, k__DCT_CONST_ROUNDING); + v1 = _mm_add_epi32(w1, k__DCT_CONST_ROUNDING); + v2 = _mm_add_epi32(w2, k__DCT_CONST_ROUNDING); + v3 = _mm_add_epi32(w3, k__DCT_CONST_ROUNDING); + v4 = _mm_add_epi32(w4, k__DCT_CONST_ROUNDING); + v5 = _mm_add_epi32(w5, k__DCT_CONST_ROUNDING); + v6 = _mm_add_epi32(w6, k__DCT_CONST_ROUNDING); + v7 = _mm_add_epi32(w7, k__DCT_CONST_ROUNDING); + v8 = _mm_add_epi32(w8, k__DCT_CONST_ROUNDING); + v9 = _mm_add_epi32(w9, k__DCT_CONST_ROUNDING); + v10 = _mm_add_epi32(w10, k__DCT_CONST_ROUNDING); + v11 = _mm_add_epi32(w11, k__DCT_CONST_ROUNDING); + v12 = _mm_add_epi32(w12, k__DCT_CONST_ROUNDING); + v13 = _mm_add_epi32(w13, k__DCT_CONST_ROUNDING); + v14 = _mm_add_epi32(w14, k__DCT_CONST_ROUNDING); + v15 = _mm_add_epi32(w15, k__DCT_CONST_ROUNDING); + + u0 = _mm_srai_epi32(v0, DCT_CONST_BITS); + u1 = _mm_srai_epi32(v1, DCT_CONST_BITS); + u2 = _mm_srai_epi32(v2, DCT_CONST_BITS); + u3 = _mm_srai_epi32(v3, DCT_CONST_BITS); + u4 = _mm_srai_epi32(v4, DCT_CONST_BITS); + u5 = _mm_srai_epi32(v5, DCT_CONST_BITS); + u6 = _mm_srai_epi32(v6, DCT_CONST_BITS); + u7 = _mm_srai_epi32(v7, DCT_CONST_BITS); + u8 = _mm_srai_epi32(v8, DCT_CONST_BITS); + u9 = _mm_srai_epi32(v9, DCT_CONST_BITS); + u10 = _mm_srai_epi32(v10, DCT_CONST_BITS); + u11 = _mm_srai_epi32(v11, DCT_CONST_BITS); + u12 = _mm_srai_epi32(v12, DCT_CONST_BITS); + u13 = _mm_srai_epi32(v13, DCT_CONST_BITS); + u14 = _mm_srai_epi32(v14, DCT_CONST_BITS); + u15 = _mm_srai_epi32(v15, DCT_CONST_BITS); + + // back to 16-bit and pack 8 integers into __m128i + in[0] = _mm_packs_epi32(u0, u1); + in[1] = _mm_packs_epi32(u2, u3); + in[2] = _mm_packs_epi32(u4, u5); + in[3] = _mm_packs_epi32(u6, u7); + in[4] = _mm_packs_epi32(u8, u9); + in[5] = _mm_packs_epi32(u10, u11); + in[6] = _mm_packs_epi32(u12, u13); + in[7] = _mm_packs_epi32(u14, u15); + + // stage 2 + s0 = _mm_add_epi16(in[0], in[2]); + s1 = _mm_add_epi16(in[1], in[3]); + s2 = _mm_sub_epi16(in[0], in[2]); + s3 = _mm_sub_epi16(in[1], in[3]); + u0 = _mm_unpacklo_epi16(in[4], in[5]); + u1 = _mm_unpackhi_epi16(in[4], in[5]); + u2 = _mm_unpacklo_epi16(in[6], in[7]); + u3 = _mm_unpackhi_epi16(in[6], in[7]); + + v0 = _mm_madd_epi16(u0, k__cospi_p08_p24); + v1 = _mm_madd_epi16(u1, k__cospi_p08_p24); + v2 = _mm_madd_epi16(u0, k__cospi_p24_m08); + v3 = _mm_madd_epi16(u1, k__cospi_p24_m08); + v4 = _mm_madd_epi16(u2, k__cospi_m24_p08); + v5 = _mm_madd_epi16(u3, k__cospi_m24_p08); + v6 = _mm_madd_epi16(u2, k__cospi_p08_p24); + v7 = _mm_madd_epi16(u3, k__cospi_p08_p24); + + w0 = _mm_add_epi32(v0, v4); + w1 = _mm_add_epi32(v1, v5); + w2 = _mm_add_epi32(v2, v6); + w3 = _mm_add_epi32(v3, v7); + w4 = _mm_sub_epi32(v0, v4); + w5 = _mm_sub_epi32(v1, v5); + w6 = _mm_sub_epi32(v2, v6); + w7 = _mm_sub_epi32(v3, v7); + + v0 = _mm_add_epi32(w0, k__DCT_CONST_ROUNDING); + v1 = _mm_add_epi32(w1, k__DCT_CONST_ROUNDING); + v2 = _mm_add_epi32(w2, k__DCT_CONST_ROUNDING); + v3 = _mm_add_epi32(w3, k__DCT_CONST_ROUNDING); + v4 = _mm_add_epi32(w4, k__DCT_CONST_ROUNDING); + v5 = _mm_add_epi32(w5, k__DCT_CONST_ROUNDING); + v6 = _mm_add_epi32(w6, k__DCT_CONST_ROUNDING); + v7 = _mm_add_epi32(w7, k__DCT_CONST_ROUNDING); + + u0 = _mm_srai_epi32(v0, DCT_CONST_BITS); + u1 = _mm_srai_epi32(v1, DCT_CONST_BITS); + u2 = _mm_srai_epi32(v2, DCT_CONST_BITS); + u3 = _mm_srai_epi32(v3, DCT_CONST_BITS); + u4 = _mm_srai_epi32(v4, DCT_CONST_BITS); + u5 = _mm_srai_epi32(v5, DCT_CONST_BITS); + u6 = _mm_srai_epi32(v6, DCT_CONST_BITS); + u7 = _mm_srai_epi32(v7, DCT_CONST_BITS); + + // back to 16-bit intergers + s4 = _mm_packs_epi32(u0, u1); + s5 = _mm_packs_epi32(u2, u3); + s6 = _mm_packs_epi32(u4, u5); + s7 = _mm_packs_epi32(u6, u7); + + // stage 3 + u0 = _mm_unpacklo_epi16(s2, s3); + u1 = _mm_unpackhi_epi16(s2, s3); + u2 = _mm_unpacklo_epi16(s6, s7); + u3 = _mm_unpackhi_epi16(s6, s7); + + v0 = _mm_madd_epi16(u0, k__cospi_p16_p16); + v1 = _mm_madd_epi16(u1, k__cospi_p16_p16); + v2 = _mm_madd_epi16(u0, k__cospi_p16_m16); + v3 = _mm_madd_epi16(u1, k__cospi_p16_m16); + v4 = _mm_madd_epi16(u2, k__cospi_p16_p16); + v5 = _mm_madd_epi16(u3, k__cospi_p16_p16); + v6 = _mm_madd_epi16(u2, k__cospi_p16_m16); + v7 = _mm_madd_epi16(u3, k__cospi_p16_m16); + + u0 = _mm_add_epi32(v0, k__DCT_CONST_ROUNDING); + u1 = _mm_add_epi32(v1, k__DCT_CONST_ROUNDING); + u2 = _mm_add_epi32(v2, k__DCT_CONST_ROUNDING); + u3 = _mm_add_epi32(v3, k__DCT_CONST_ROUNDING); + u4 = _mm_add_epi32(v4, k__DCT_CONST_ROUNDING); + u5 = _mm_add_epi32(v5, k__DCT_CONST_ROUNDING); + u6 = _mm_add_epi32(v6, k__DCT_CONST_ROUNDING); + u7 = _mm_add_epi32(v7, k__DCT_CONST_ROUNDING); + + v0 = _mm_srai_epi32(u0, DCT_CONST_BITS); + v1 = _mm_srai_epi32(u1, DCT_CONST_BITS); + v2 = _mm_srai_epi32(u2, DCT_CONST_BITS); + v3 = _mm_srai_epi32(u3, DCT_CONST_BITS); + v4 = _mm_srai_epi32(u4, DCT_CONST_BITS); + v5 = _mm_srai_epi32(u5, DCT_CONST_BITS); + v6 = _mm_srai_epi32(u6, DCT_CONST_BITS); + v7 = _mm_srai_epi32(u7, DCT_CONST_BITS); + + s2 = _mm_packs_epi32(v0, v1); + s3 = _mm_packs_epi32(v2, v3); + s6 = _mm_packs_epi32(v4, v5); + s7 = _mm_packs_epi32(v6, v7); + + // FIXME(jingning): do subtract using bit inversion? + in[0] = s0; + in[1] = _mm_sub_epi16(k__const_0, s4); + in[2] = s6; + in[3] = _mm_sub_epi16(k__const_0, s2); + in[4] = s3; + in[5] = _mm_sub_epi16(k__const_0, s7); + in[6] = s5; + in[7] = _mm_sub_epi16(k__const_0, s1); + + // transpose + array_transpose_8x8(in); +} + +void vp9_short_fht8x8_sse2(int16_t *input, int16_t *output, + int stride, int tx_type) { + __m128i in[8]; + load_buffer_8x8(input, in, stride); + switch (tx_type) { + case 0: // DCT_DCT + fdct8_1d_sse2(in); + fadst8_1d_sse2(in); + break; + case 1: // ADST_DCT + fadst8_1d_sse2(in); + fdct8_1d_sse2(in); + break; + case 2: // DCT_ADST + fdct8_1d_sse2(in); + fadst8_1d_sse2(in); + break; + case 3: // ADST_ADST + fadst8_1d_sse2(in); + fadst8_1d_sse2(in); + break; + default: + assert(0); + break; + } + write_buffer_8x8(output, in); +} + void vp9_short_fdct16x16_sse2(int16_t *input, int16_t *output, int pitch) { // The 2D transform is done with two passes which are actually pretty // similar. In the first one, we transform the columns and transpose @@ -383,7 +876,7 @@ void vp9_short_fdct16x16_sse2(int16_t *input, int16_t *output, int pitch) { const int stride = pitch >> 1; int pass; // We need an intermediate buffer between passes. - int16_t intermediate[256]; + DECLARE_ALIGNED_ARRAY(16, int16_t, intermediate, 256); int16_t *in = input; int16_t *out = intermediate; // Constants @@ -426,22 +919,22 @@ void vp9_short_fdct16x16_sse2(int16_t *input, int16_t *output, int pitch) { __m128i res08, res09, res10, res11, res12, res13, res14, res15; // Load and pre-condition input. if (0 == pass) { - in00 = _mm_loadu_si128((const __m128i *)(in + 0 * stride)); - in01 = _mm_loadu_si128((const __m128i *)(in + 1 * stride)); - in02 = _mm_loadu_si128((const __m128i *)(in + 2 * stride)); - in03 = _mm_loadu_si128((const __m128i *)(in + 3 * stride)); - in04 = _mm_loadu_si128((const __m128i *)(in + 4 * stride)); - in05 = _mm_loadu_si128((const __m128i *)(in + 5 * stride)); - in06 = _mm_loadu_si128((const __m128i *)(in + 6 * stride)); - in07 = _mm_loadu_si128((const __m128i *)(in + 7 * stride)); - in08 = _mm_loadu_si128((const __m128i *)(in + 8 * stride)); - in09 = _mm_loadu_si128((const __m128i *)(in + 9 * stride)); - in10 = _mm_loadu_si128((const __m128i *)(in + 10 * stride)); - in11 = _mm_loadu_si128((const __m128i *)(in + 11 * stride)); - in12 = _mm_loadu_si128((const __m128i *)(in + 12 * stride)); - in13 = _mm_loadu_si128((const __m128i *)(in + 13 * stride)); - in14 = _mm_loadu_si128((const __m128i *)(in + 14 * stride)); - in15 = _mm_loadu_si128((const __m128i *)(in + 15 * stride)); + in00 = _mm_load_si128((const __m128i *)(in + 0 * stride)); + in01 = _mm_load_si128((const __m128i *)(in + 1 * stride)); + in02 = _mm_load_si128((const __m128i *)(in + 2 * stride)); + in03 = _mm_load_si128((const __m128i *)(in + 3 * stride)); + in04 = _mm_load_si128((const __m128i *)(in + 4 * stride)); + in05 = _mm_load_si128((const __m128i *)(in + 5 * stride)); + in06 = _mm_load_si128((const __m128i *)(in + 6 * stride)); + in07 = _mm_load_si128((const __m128i *)(in + 7 * stride)); + in08 = _mm_load_si128((const __m128i *)(in + 8 * stride)); + in09 = _mm_load_si128((const __m128i *)(in + 9 * stride)); + in10 = _mm_load_si128((const __m128i *)(in + 10 * stride)); + in11 = _mm_load_si128((const __m128i *)(in + 11 * stride)); + in12 = _mm_load_si128((const __m128i *)(in + 12 * stride)); + in13 = _mm_load_si128((const __m128i *)(in + 13 * stride)); + in14 = _mm_load_si128((const __m128i *)(in + 14 * stride)); + in15 = _mm_load_si128((const __m128i *)(in + 15 * stride)); // x = x << 2 in00 = _mm_slli_epi16(in00, 2); in01 = _mm_slli_epi16(in01, 2); @@ -460,22 +953,22 @@ void vp9_short_fdct16x16_sse2(int16_t *input, int16_t *output, int pitch) { in14 = _mm_slli_epi16(in14, 2); in15 = _mm_slli_epi16(in15, 2); } else { - in00 = _mm_loadu_si128((const __m128i *)(in + 0 * 16)); - in01 = _mm_loadu_si128((const __m128i *)(in + 1 * 16)); - in02 = _mm_loadu_si128((const __m128i *)(in + 2 * 16)); - in03 = _mm_loadu_si128((const __m128i *)(in + 3 * 16)); - in04 = _mm_loadu_si128((const __m128i *)(in + 4 * 16)); - in05 = _mm_loadu_si128((const __m128i *)(in + 5 * 16)); - in06 = _mm_loadu_si128((const __m128i *)(in + 6 * 16)); - in07 = _mm_loadu_si128((const __m128i *)(in + 7 * 16)); - in08 = _mm_loadu_si128((const __m128i *)(in + 8 * 16)); - in09 = _mm_loadu_si128((const __m128i *)(in + 9 * 16)); - in10 = _mm_loadu_si128((const __m128i *)(in + 10 * 16)); - in11 = _mm_loadu_si128((const __m128i *)(in + 11 * 16)); - in12 = _mm_loadu_si128((const __m128i *)(in + 12 * 16)); - in13 = _mm_loadu_si128((const __m128i *)(in + 13 * 16)); - in14 = _mm_loadu_si128((const __m128i *)(in + 14 * 16)); - in15 = _mm_loadu_si128((const __m128i *)(in + 15 * 16)); + in00 = _mm_load_si128((const __m128i *)(in + 0 * 16)); + in01 = _mm_load_si128((const __m128i *)(in + 1 * 16)); + in02 = _mm_load_si128((const __m128i *)(in + 2 * 16)); + in03 = _mm_load_si128((const __m128i *)(in + 3 * 16)); + in04 = _mm_load_si128((const __m128i *)(in + 4 * 16)); + in05 = _mm_load_si128((const __m128i *)(in + 5 * 16)); + in06 = _mm_load_si128((const __m128i *)(in + 6 * 16)); + in07 = _mm_load_si128((const __m128i *)(in + 7 * 16)); + in08 = _mm_load_si128((const __m128i *)(in + 8 * 16)); + in09 = _mm_load_si128((const __m128i *)(in + 9 * 16)); + in10 = _mm_load_si128((const __m128i *)(in + 10 * 16)); + in11 = _mm_load_si128((const __m128i *)(in + 11 * 16)); + in12 = _mm_load_si128((const __m128i *)(in + 12 * 16)); + in13 = _mm_load_si128((const __m128i *)(in + 13 * 16)); + in14 = _mm_load_si128((const __m128i *)(in + 14 * 16)); + in15 = _mm_load_si128((const __m128i *)(in + 15 * 16)); // x = (x + 1) >> 2 in00 = _mm_add_epi16(in00, kOne); in01 = _mm_add_epi16(in01, kOne); @@ -982,14 +1475,14 @@ void vp9_short_fdct16x16_sse2(int16_t *input, int16_t *output, int pitch) { // 06 16 26 36 46 56 66 76 // 07 17 27 37 47 57 67 77 // Store results - _mm_storeu_si128((__m128i *)(out + 8 + 0 * 16), tr2_0); - _mm_storeu_si128((__m128i *)(out + 8 + 1 * 16), tr2_1); - _mm_storeu_si128((__m128i *)(out + 8 + 2 * 16), tr2_2); - _mm_storeu_si128((__m128i *)(out + 8 + 3 * 16), tr2_3); - _mm_storeu_si128((__m128i *)(out + 8 + 4 * 16), tr2_4); - _mm_storeu_si128((__m128i *)(out + 8 + 5 * 16), tr2_5); - _mm_storeu_si128((__m128i *)(out + 8 + 6 * 16), tr2_6); - _mm_storeu_si128((__m128i *)(out + 8 + 7 * 16), tr2_7); + _mm_store_si128((__m128i *)(out + 8 + 0 * 16), tr2_0); + _mm_store_si128((__m128i *)(out + 8 + 1 * 16), tr2_1); + _mm_store_si128((__m128i *)(out + 8 + 2 * 16), tr2_2); + _mm_store_si128((__m128i *)(out + 8 + 3 * 16), tr2_3); + _mm_store_si128((__m128i *)(out + 8 + 4 * 16), tr2_4); + _mm_store_si128((__m128i *)(out + 8 + 5 * 16), tr2_5); + _mm_store_si128((__m128i *)(out + 8 + 6 * 16), tr2_6); + _mm_store_si128((__m128i *)(out + 8 + 7 * 16), tr2_7); } out += 8*16; } |