| <html> |
| <head> |
| <meta name="fuzzy" content="maxDifference=3-17; totalPixels=27387-57600" /> |
| <title>MSE webm file with alternate reference frame</title> |
| <script src="../../resources/testharness.js"></script> |
| <script>window.requirePixelDump = true</script> |
| <script src=../video-test.js></script> |
| <script src="../utilities.js"></script> |
| <script> |
| // VP8 files were generated such that alternative reference frames were used: |
| // $ ffmpeg -i dragon.webm -c:v libvpx -vf scale=320:-1 -auto-alt-ref 1 -arnr-maxframes 5 -arnr-strength 3 -pass 1 test-vp8-hiddenframes.webm |
| // $ ffmpeg -i dragon.webm -c:v libvpx -vf scale=320:-1 -auto-alt-ref 1 -arnr-maxframes 5 -arnr-strength 3 -pass 2 test-vp8-hiddenframes.webm |
| // The command used to extract the last frame in png format was: |
| // $ ffmpeg -sseof -3 -i test-vp8-hiddenframes.webm -pred mixed -pix_fmt rgb24 -sws_flags +accurate_rnd+full_chroma_int -update 1 -q:v 1 test-vp8-hiddenframes.png |
| async function init() |
| { |
| if (window.testRunner) |
| testRunner.waitUntilDone(); |
| |
| let v = document.getElementsByTagName('video')[0]; |
| let ms = new MediaSource(); |
| v.src = URL.createObjectURL(ms); |
| await once(ms, 'sourceopen'); |
| let promise = new Promise(resolve => v.requestVideoFrameCallback(resolve)); |
| let videosb = ms.addSourceBuffer("video/webm; codecs=vp8"); |
| await Promise.all([fetchAndLoad(videosb, '../content/test-vp8-hiddenframes', [''], '.webm') , waitFor(v, 'loadedmetadata', true)]); |
| ms.endOfStream(); |
| // duration of the last frame. |
| v.currentTime = v.duration - 0.038; |
| await waitFor(v, 'seeked', true); |
| v.play(); |
| await waitFor(v, 'ended', true); |
| // FIXME: await promise; // this promise is never resolved due to webkit.org/b/282782 and webkit.org/b/282797 |
| await sleepFor(1000); |
| |
| if (window.testRunner) |
| testRunner.notifyDone(); |
| } |
| </script> |
| </head> |
| <body onload="init();"> |
| <video/> |
| </body> |
| </html> |