| <!DOCTYPE html> |
| <html> |
| <head> |
| <script src="/media-resources/video-test.js"></script> |
| <script src="/media/resources/media-source/webm/segment-info.js"></script> |
| <script src="media-source.js"></script> |
| <script> |
| var segmentHelper = new MediaSourceTest.SegmentHelper(WebMSegmentInfo.testWebM); |
| |
| var doSeek = true; |
| var seekTime; |
| |
| function onSourceOpen(event) |
| { |
| segmentHelper.addSourceBuffer(); |
| segmentHelper.appendInitSegment(); |
| segmentHelper.appendUntilEndOfStream(0); |
| MediaSourceTest.expectSourceState("ended"); |
| } |
| |
| function onTimeUpdate(event) |
| { |
| var videoTag = event.target; |
| if (videoTag.currentTime > 0.5 && doSeek) { |
| consoleWrite("EVENT(timeupdate) : seeking to " + seekTime.toFixed(2)); |
| videoTag.pause(); |
| videoTag.currentTime = seekTime; |
| doSeek = false; |
| } |
| } |
| |
| function onSeeked(event) |
| { |
| consoleWrite("EVENT(seeked)"); |
| var videoTag = event.target; |
| var currentTime = videoTag.currentTime; |
| |
| MediaSourceTest.expectSourceState("ended"); |
| |
| if (Math.abs(currentTime - seekTime) > 0.001 ) { |
| failTest("Seeked to " + currentTime.toFixed(3) + " instead of " + seekTime.toFixed(3)); |
| return; |
| } |
| videoTag.play(); |
| } |
| |
| function start() |
| { |
| findMediaElement(); |
| |
| waitForEventAndFail('error'); |
| waitForEvent('webkitsourceopen', "", false, false, mediaSource); |
| waitForEvent('webkitsourceended', "", false, false, mediaSource); |
| waitForEvent('playing'); |
| waitForEvent('seeking'); |
| waitForEventAndEnd('ended'); |
| |
| mediaSource.addEventListener('webkitsourceopen', onSourceOpen); |
| video.addEventListener('timeupdate', onTimeUpdate); |
| video.addEventListener('seeked', onSeeked); |
| |
| segmentHelper.init(video, function(success) |
| { |
| if (!success) { |
| failTest("Failed to load segment data"); |
| return; |
| } |
| |
| seekTime = segmentHelper.getTimeForMediaSegment(segmentHelper.MediaSegmentsToLoad - 1); |
| MediaSourceTest.setSrcToMediaSourceTestURL(video); |
| }); |
| } |
| </script> |
| </head> |
| <body onload="start()"> |
| <video autoplay controls> </video> |
| <p>Tests seeking with MediaSource API</p> |
| </body> |
| </html> |