blob: 7f98097d6ecec2272a6b266bbd510149b5607849 [file] [edit]
<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>