summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test/fdct4x4_test.cc18
-rw-r--r--test/fdct8x8_test.cc83
-rw-r--r--test/sad_test.cc12
-rw-r--r--test/test-data.sha1618
-rw-r--r--test/test.mk618
-rw-r--r--test/test_vector_test.cc155
-rw-r--r--test/variance_test.cc10
-rw-r--r--test/vp9_subtract_test.cc16
-rw-r--r--vp9/common/vp9_blockd.h42
-rw-r--r--vp9/common/vp9_entropy.c10
-rw-r--r--vp9/common/vp9_entropy.h4
-rw-r--r--vp9/common/vp9_loopfilter.c15
-rw-r--r--vp9/common/vp9_mv.h8
-rw-r--r--vp9/common/vp9_pred_common.c4
-rw-r--r--vp9/common/vp9_pred_common.h2
-rw-r--r--vp9/common/vp9_reconinter.c114
-rw-r--r--vp9/common/vp9_reconinter.h10
-rw-r--r--vp9/common/vp9_reconintra.c29
-rw-r--r--vp9/common/vp9_rtcd_defs.sh8
-rw-r--r--vp9/decoder/vp9_decodemv.c4
-rw-r--r--vp9/decoder/vp9_decodframe.c4
-rw-r--r--vp9/decoder/vp9_detokenize.c21
-rw-r--r--vp9/encoder/vp9_dct.c2
-rw-r--r--vp9/encoder/vp9_encodeframe.c34
-rw-r--r--vp9/encoder/vp9_encodemb.c16
-rw-r--r--vp9/encoder/vp9_mcomp.c8
-rw-r--r--vp9/encoder/vp9_onyx_if.c3
-rw-r--r--vp9/encoder/vp9_rdopt.c24
-rw-r--r--vp9/encoder/vp9_segmentation.c1
-rw-r--r--vp9/encoder/vp9_temporal_filter.c32
-rw-r--r--vp9/encoder/vp9_tokenize.c22
-rw-r--r--vp9/encoder/x86/vp9_dct_sse2.c607
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;
}