blob: bc385d88705ab0da0122c4ef196793a9137327b5 [file] [edit]
<html>
<head>
<title>requestVideoFrameCallback with playing webm</title>
<script src="../resources/testharness.js"></script>
<script src="video-test.js"></script>
<script src="utilities.js"></script>
<script>
var lastPresentationTime = -Number.MAX_NUMBER;
var lastDisplayTime = -Number.MAX_NUMBER;
var lastPresentedFrames = -Number.MAX_NUMBER;
var lastMediaTime = -Number.MAX_NUMBER;
var frame;
async function init()
{
if (window.testRunner)
testRunner.waitUntilDone();
findMediaElement();
video.src = "content/test-vp8.webm";
const tooLongTimeout = setTimeout(failTest.bind(null, "timeout"), 5000);
await waitFor(video, 'loadedmetadata');
video.play();
let counter = 0;
while (counter++ < 10) {
frame = await waitForVideoFrame(video);
if (frame[1].presentationTime <= lastPresentationTime) {
testExpected(frame[1].presentationTime, lastPresentationTime, ">");
failTest("presentationTime isn't monotonically increasing");
}
lastPresentationTime = frame[1].presentationTime;
if (frame[1].expectedDisplayTime <= lastDisplayTime) {
testExpected(frame[1].expectedDisplayTime, lastDisplayTime, ">");
failTest("expectedDisplayTime isn't monotonically increasing");
}
lastDisplayTime = frame[1].expectedDisplayTime;
if (frame[1].presentedFrames <= lastPresentedFrames) {
testExpected(frame[1].presentedFrames, lastPresentedFrames, ">");
failTest("mediaTime isn't monotonically increasing");
}
lastPresentedFrames = frame[1].presentedFrames;
if (frame[1].mediaTime <= lastMediaTime) {
testExpected(frame[1].mediaTime, lastMediaTime, ">");
failTest("mediaTime isn't monotonically increasing");
}
lastMediaTime = frame[1].mediaTime;
}
clearTimeout(tooLongTimeout);
if (window.testRunner)
testRunner.notifyDone();
}
</script>
</head>
<body onload="init();">
<video muted/>
</body>
</html>