diff options
Diffstat (limited to 'testing/web-platform/tests/media-source/mediasource-h264-play-starved.html')
-rw-r--r-- | testing/web-platform/tests/media-source/mediasource-h264-play-starved.html | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/testing/web-platform/tests/media-source/mediasource-h264-play-starved.html b/testing/web-platform/tests/media-source/mediasource-h264-play-starved.html new file mode 100644 index 0000000000..a3cdf3cb26 --- /dev/null +++ b/testing/web-platform/tests/media-source/mediasource-h264-play-starved.html @@ -0,0 +1,57 @@ +<!DOCTYPE html> +<html> +<head> + <title>Test MediaSource behavior when the decoder is starved.</title> + <meta content="text/html; charset=UTF-8" http-equiv="Content-Type"> + <meta name="timeout" content="long"> + <link rel="author" title="Alicia Boya GarcĂa" href="mailto:aboya@igalia.com"/> + <script src="/resources/testharness.js"></script> + <script src="/resources/testharnessreport.js"></script> + <script src="mediasource-util.js"></script> +</head> +<body> +<div id="log"></div> +<script> + mediasource_test(function (test, video, mediaSource) { + if (!MediaSource.isTypeSupported('video/mp4; codecs="avc1.4d001e"')) { + // Format not supported, nothing to test in this platform. + test.done(); + return; + } + + let initSegment; + let mediaSegment; + + const videoSB = mediaSource.addSourceBuffer('video/mp4; codecs="avc1.4d001e"'); + + MediaSourceUtil.loadBinaryData(test, "mp4/h264-starvation-init.mp4", initDownloaded); + + function initDownloaded(data) { + initSegment = data; + MediaSourceUtil.loadBinaryData(test, "mp4/h264-starvation-media.mp4", mediaDownloaded); + } + + function mediaDownloaded(data) { + mediaSegment = data; + videoSB.appendBuffer(initSegment); + videoSB.addEventListener("updateend", initSegmentAppended); + } + + function initSegmentAppended() { + videoSB.removeEventListener("updateend", initSegmentAppended); + videoSB.appendBuffer(mediaSegment); + videoSB.addEventListener("updateend", mediaSegmentAppended) + } + + function mediaSegmentAppended() { + video.play(); + + video.addEventListener('timeupdate', function onTimeUpdate() { + if (video.currentTime >= 2) + test.done(); + }); + } + }, "Enough frames are played when the decoder is starved.") +</script> +</body> +</html> |