in 2019/media/playbackperfTest.js [59:102]
test.prototype.start = function(runner, video) {
var ms = new MediaSource();
var audioStream = Media.AAC.Audio1MB;
var videoSb;
var audioSb;
var totalDecodedFrames = 0;
var videoPerfMetrics = new VideoPerformanceMetrics(video);
if (!videoPerfMetrics.supportsVideoPerformanceMetrics()) {
runner.fail('UserAgent needs to support ' +
'\'video.getVideoPlaybackQuality\' or the combined ' +
'\'video.webkitDecodedFrameCount\'' +
'and video.webkitDroppedFrameCount to execute this test.');
}
ms.addEventListener('sourceopen', function() {
videoSb = ms.addSourceBuffer(videoStream.mimetype);
audioSb = ms.addSourceBuffer(audioStream.mimetype);
});
video.src = window.URL.createObjectURL(ms);
var videoXhr = runner.XHRManager.createRequest(
videoStream.src, function(e) {
videoSb.appendBuffer(this.getResponseData());
videoSb.addEventListener('updateend', function() {
ms.endOfStream();
video.addEventListener('ended', function() {
runner.checkEq(
totalDecodedFrames, frames, 'playbackQuality.totalVideoFrames');
runner.succeed();
});
});
video.addEventListener('timeupdate', function(e) {
totalDecodedFrames = videoPerfMetrics.getTotalDecodedVideoFrames();
test.prototype.status = '(' + totalDecodedFrames + ')';
runner.updateStatus();
});
video.play();
});
var audioXhr = runner.XHRManager.createRequest(
audioStream.src, function(e) {
audioSb.appendBuffer(this.getResponseData());
videoXhr.send();
}, 0, 131100); // audio is longer than video.
audioXhr.send();
};