blob: 55d7b126daa64ea84c681f43842612f7b62ad7a1 [file] [edit]
<!DOCTYPE html>
<html>
<head>
<title>media-source-real-webm-append-buffer</title>
<script src="webm-generator.js"></script>
<script src="../video-test.js"></script>
<script>
// WebM equivalent of media-source-real-append-buffer.html.
// Exercises the SourceBufferParserWebM pipeline.
var source;
var sourceBuffer;
async function runTest() {
findMediaElement();
if (!MediaSource.isTypeSupported(WebM.VIDEO_TYPE)) {
consoleWrite('SKIPPED: ' + WebM.VIDEO_TYPE + ' is not supported');
return;
}
source = new MediaSource();
video.src = URL.createObjectURL(source);
await waitFor(source, 'sourceopen');
sourceBuffer = source.addSourceBuffer(WebM.VIDEO_TYPE);
var initData = WebM.initSegment({
tracks: [{ id: 1, type: 'video' }]
});
sourceBuffer.appendBuffer(initData);
testExpected('sourceBuffer.updating', true);
await waitFor(sourceBuffer, 'updateend');
testExpected('sourceBuffer.updating', false);
var mediaData = WebM.mediaSegment({
tracks: [{
id: 1, type: 'video', baseDecodeTime: 0,
samples: [
{ duration: 1000, isSync: true },
{ duration: 1000, isSync: false },
{ duration: 1000, isSync: false },
{ duration: 1000, isSync: false },
]
}]
});
sourceBuffer.appendBuffer(mediaData);
testExpected('sourceBuffer.updating', true);
await waitFor(sourceBuffer, 'updateend');
testExpected('sourceBuffer.updating', false);
testExpected('sourceBuffer.buffered.length', 1);
testExpectedEqualWithTolerance('sourceBuffer.buffered.start(0)', 0, 0.01);
testExpectedEqualWithTolerance('sourceBuffer.buffered.end(0)', 4, 0.05);
}
window.addEventListener('load', event => {
runTest().then(endTest).catch(failTest);
});
</script>
</head>
<body>
<video></video>
</body>
</html>