summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test/test-data.sha1220
-rw-r--r--test/test.mk231
-rw-r--r--test/test_vector_test.cc83
-rw-r--r--test/webm_video_source.h184
-rw-r--r--vpxenc.c1
5 files changed, 711 insertions, 8 deletions
diff --git a/test/test-data.sha1 b/test/test-data.sha1
index 98cdda0a2..1036d7c54 100644
--- a/test/test-data.sha1
+++ b/test/test-data.sha1
@@ -122,3 +122,223 @@ 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
diff --git a/test/test.mk b/test/test.mk
index 1e0b2172e..fe5255d3c 100644
--- a/test/test.mk
+++ b/test/test.mk
@@ -30,8 +30,17 @@ LIBVPX_TEST_SRCS-yes += decode_test_driver.cc
LIBVPX_TEST_SRCS-yes += decode_test_driver.h
LIBVPX_TEST_SRCS-$(CONFIG_DECODERS) += ivf_video_source.h
+## WebM Parsing
+NESTEGG_SRCS += ../nestegg/halloc/halloc.h
+NESTEGG_SRCS += ../nestegg/halloc/src/align.h
+NESTEGG_SRCS += ../nestegg/halloc/src/halloc.c
+NESTEGG_SRCS += ../nestegg/halloc/src/hlist.h
+NESTEGG_SRCS += ../nestegg/include/nestegg/nestegg.h
+NESTEGG_SRCS += ../nestegg/src/nestegg.c
+LIBVPX_TEST_SRCS-$(CONFIG_DECODERS) += $(NESTEGG_SRCS)
+LIBVPX_TEST_SRCS-$(CONFIG_DECODERS) += webm_video_source.h
-LIBVPX_TEST_SRCS-$(CONFIG_VP8_DECODER) += test_vector_test.cc
+LIBVPX_TEST_SRCS-$(CONFIG_DECODERS) += test_vector_test.cc
##
## WHITE BOX TESTS
@@ -217,3 +226,223 @@ 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
diff --git a/test/test_vector_test.cc b/test/test_vector_test.cc
index e0d99b5dd..d7bd1845a 100644
--- a/test/test_vector_test.cc
+++ b/test/test_vector_test.cc
@@ -15,6 +15,7 @@
#include "test/codec_factory.h"
#include "test/decode_test_driver.h"
#include "test/ivf_video_source.h"
+#include "test/webm_video_source.h"
#include "test/util.h"
#include "test/md5_helper.h"
extern "C" {
@@ -22,8 +23,8 @@ extern "C" {
}
namespace {
-// There are 61 test vectors in total.
-const char *kTestVectors[] = {
+#if CONFIG_VP8_DECODER
+const char *kVP8TestVectors[] = {
"vp80-00-comprehensive-001.ivf",
"vp80-00-comprehensive-002.ivf", "vp80-00-comprehensive-003.ivf",
"vp80-00-comprehensive-004.ivf", "vp80-00-comprehensive-005.ivf",
@@ -56,6 +57,66 @@ const char *kTestVectors[] = {
"vp80-05-sharpness-1438.ivf", "vp80-05-sharpness-1439.ivf",
"vp80-05-sharpness-1440.ivf", "vp80-05-sharpness-1443.ivf"
};
+#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",
+};
+#endif
class TestVectorTest : public ::libvpx_test::DecoderTest,
public ::libvpx_test::CodecTestWithParam<const char*> {
@@ -102,20 +163,28 @@ class TestVectorTest : public ::libvpx_test::DecoderTest,
// the test failed.
TEST_P(TestVectorTest, MD5Match) {
const std::string filename = GET_PARAM(1);
- // Open compressed video file.
- libvpx_test::IVFVideoSource video(filename);
+ libvpx_test::CompressedVideoSource *video = NULL;
- video.Init();
+ // Open compressed video file.
+ if (filename.substr(filename.length() - 3, 3) == "ivf") {
+ video = new libvpx_test::IVFVideoSource(filename);
+ } else if (filename.substr(filename.length() - 4, 4) == "webm") {
+ video = new libvpx_test::WebMVideoSource(filename);
+ }
+ video->Init();
// Construct md5 file name.
const std::string md5_filename = filename + ".md5";
OpenMD5File(md5_filename);
// Decode frame, and check the md5 matching.
- ASSERT_NO_FATAL_FAILURE(RunLoop(&video));
+ ASSERT_NO_FATAL_FAILURE(RunLoop(video));
+ delete video;
}
VP8_INSTANTIATE_TEST_CASE(TestVectorTest,
- ::testing::ValuesIn(kTestVectors));
+ ::testing::ValuesIn(kVP8TestVectors));
+VP9_INSTANTIATE_TEST_CASE(TestVectorTest,
+ ::testing::ValuesIn(kVP9TestVectors));
} // namespace
diff --git a/test/webm_video_source.h b/test/webm_video_source.h
new file mode 100644
index 000000000..c7919a979
--- /dev/null
+++ b/test/webm_video_source.h
@@ -0,0 +1,184 @@
+/*
+ * Copyright (c) 2012 The WebM project authors. All Rights Reserved.
+ *
+ * Use of this source code is governed by a BSD-style license
+ * that can be found in the LICENSE file in the root of the source
+ * tree. An additional intellectual property rights grant can be found
+ * in the file PATENTS. All contributing project authors may
+ * be found in the AUTHORS file in the root of the source tree.
+ */
+#ifndef TEST_WEBM_VIDEO_SOURCE_H_
+#define TEST_WEBM_VIDEO_SOURCE_H_
+#include <cstdarg>
+#include <cstdio>
+#include <cstdlib>
+#include <new>
+#include <string>
+#include "nestegg/include/nestegg/nestegg.h"
+#include "test/video_source.h"
+
+namespace libvpx_test {
+
+static int
+nestegg_read_cb(void *buffer, size_t length, void *userdata) {
+ FILE *f = reinterpret_cast<FILE *>(userdata);
+
+ if (fread(buffer, 1, length, f) < length) {
+ if (ferror(f))
+ return -1;
+ if (feof(f))
+ return 0;
+ }
+ return 1;
+}
+
+
+static int
+nestegg_seek_cb(int64_t offset, int whence, void *userdata) {
+ FILE *f = reinterpret_cast<FILE *>(userdata);
+ switch (whence) {
+ case NESTEGG_SEEK_SET:
+ whence = SEEK_SET;
+ break;
+ case NESTEGG_SEEK_CUR:
+ whence = SEEK_CUR;
+ break;
+ case NESTEGG_SEEK_END:
+ whence = SEEK_END;
+ break;
+ };
+ return fseek(f, (long)offset, whence) ? -1 : 0;
+}
+
+
+static int64_t
+nestegg_tell_cb(void *userdata) {
+ FILE *f = reinterpret_cast<FILE *>(userdata);
+ return ftell(f);
+}
+
+
+static void
+nestegg_log_cb(nestegg *context, unsigned int severity, char const *format,
+ ...) {
+ va_list ap;
+
+ va_start(ap, format);
+ vfprintf(stderr, format, ap);
+ fprintf(stderr, "\n");
+ va_end(ap);
+}
+
+// This class extends VideoSource to allow parsing of WebM files,
+// so that we can do actual file decodes.
+class WebMVideoSource : public CompressedVideoSource {
+ public:
+ explicit WebMVideoSource(const std::string &file_name)
+ : file_name_(file_name),
+ input_file_(NULL),
+ nestegg_ctx_(NULL),
+ pkt_(NULL),
+ video_track_(0),
+ chunk_(0),
+ chunks_(0),
+ buf_(NULL),
+ buf_sz_(0),
+ frame_(0),
+ end_of_file_(false) {
+ }
+
+ virtual ~WebMVideoSource() {
+ if (input_file_)
+ fclose(input_file_);
+ if (nestegg_ctx_)
+ nestegg_destroy(nestegg_ctx_);
+ }
+
+ virtual void Init() {
+ }
+
+ virtual void Begin() {
+ input_file_ = OpenTestDataFile(file_name_);
+ ASSERT_TRUE(input_file_) << "Input file open failed. Filename: "
+ << file_name_;
+
+ nestegg_io io = {nestegg_read_cb, nestegg_seek_cb, nestegg_tell_cb,
+ input_file_};
+ ASSERT_FALSE(nestegg_init(&nestegg_ctx_, io, NULL))
+ << "nestegg_init failed";
+
+ unsigned int n;
+ ASSERT_FALSE(nestegg_track_count(nestegg_ctx_, &n))
+ << "failed to get track count";
+
+ for (unsigned int i = 0; i < n; i++) {
+ int track_type = nestegg_track_type(nestegg_ctx_, i);
+ ASSERT_GE(track_type, 0) << "failed to get track type";
+
+ if (track_type == NESTEGG_TRACK_VIDEO) {
+ video_track_ = i;
+ break;
+ }
+ }
+
+ FillFrame();
+ }
+
+ virtual void Next() {
+ ++frame_;
+ FillFrame();
+ }
+
+ void FillFrame() {
+ if (chunk_ >= chunks_) {
+ unsigned int track;
+
+ do {
+ /* End of this packet, get another. */
+ if (pkt_)
+ nestegg_free_packet(pkt_);
+
+ int again = nestegg_read_packet(nestegg_ctx_, &pkt_);
+ ASSERT_GE(again, 0) << "nestegg_read_packet failed";
+ if (!again) {
+ end_of_file_ = true;
+ return;
+ }
+
+ ASSERT_FALSE(nestegg_packet_track(pkt_, &track))
+ << "nestegg_packet_track failed";
+ } while (track != video_track_);
+
+ ASSERT_FALSE(nestegg_packet_count(pkt_, &chunks_))
+ << "nestegg_packet_count failed";
+ chunk_ = 0;
+ }
+
+ ASSERT_FALSE(nestegg_packet_data(pkt_, chunk_, &buf_, &buf_sz_))
+ << "nestegg_packet_data failed";
+ chunk_++;
+ }
+
+ virtual const uint8_t *cxdata() const {
+ return end_of_file_ ? NULL : buf_;
+ }
+ virtual const unsigned int frame_size() const { return buf_sz_; }
+ virtual const unsigned int frame_number() const { return frame_; }
+
+ protected:
+ std::string file_name_;
+ FILE *input_file_;
+ nestegg *nestegg_ctx_;
+ nestegg_packet *pkt_;
+ unsigned int video_track_;
+ unsigned int chunk_;
+ unsigned int chunks_;
+ uint8_t *buf_;
+ size_t buf_sz_;
+ unsigned int frame_;
+ bool end_of_file_;
+};
+
+} // namespace libvpx_test
+
+#endif // TEST_WEBM_VIDEO_SOURCE_H_
diff --git a/vpxenc.c b/vpxenc.c
index a60b84d6e..f4adb19cb 100644
--- a/vpxenc.c
+++ b/vpxenc.c
@@ -1759,6 +1759,7 @@ static void parse_global_config(struct global_config *global, char **argv) {
else
argj++;
}
+global->limit = 50;
/* Validate global config */