Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

80 lines (64 sloc) 2.449 kb
<html>
<head><title>WebKit video playback statistics</title></head>
<body>
<!-- inspired by --
-- http://people.mozilla.org/~cpearce/paint-stats-demo.html -->
<video src="http://movies.apple.com/movies/us/apple/ipoditunes/2007/touch/ads/apple_ipodtouch_touch_r640-9cie.mov" id="v" controls autoplay></video>
<div id="log">
Audio bytes decoded: 0 average p/s: 0<br>
Video bytes decoded: 0 average p/s: 0<br>
Decoded frames: 0 average p/s: 0<br>
Dropped frames: 0 average p/s: 0<br>
</div>
<script>
var decodedFrames = 0;
var decodedPerSec = 0;
var audioBytesDecoded = 0;
var audioBytesDecodedPerSec = 0;
var videoBytesDecoded = 0;
var videoBytesDecodedPerSec = 0;
var droppedFrames = 0;
var droppedFramesPerSec = 0;
function Mean() {
this.count = 0;
this.sum = 0;
this.record = function(val) {
this.count++;
this.sum += val;
};
this.mean = function() {
return this.count ? (this.sum / this.count).toFixed(3) : 0;
};
}
var decodedMean = new Mean();
var audioMean = new Mean();
var videoMean = new Mean();
var dropMean = new Mean();
function recalcRates() {
var v = document.getElementById("v");
if (v.readyState <= HTMLMediaElement.HAVE_CURRENT_DATA || v.paused) {
return;
}
decodedPerSec = (v.webkitDecodedFrameCount - decodedFrames);
decodedFrames = v.webkitDecodedFrameCount;
audioBytesDecodedPerSec = v.webkitAudioDecodedByteCount - audioBytesDecoded;
audioBytesDecoded = v.webkitAudioDecodedByteCount;
videoBytesDecodedPerSec = v.webkitVideoDecodedByteCount - videoBytesDecoded;
videoBytesDecoded = v.webkitVideoDecodedByteCount;
droppedFramesPerSec = v.webkitDroppedFrameCount - droppedFrames;
droppedFrames = v.webkitDroppedFrameCount;
decodedMean.record(decodedPerSec);
audioMean.record(audioBytesDecodedPerSec);
videoMean.record(videoBytesDecodedPerSec);
dropMean.record(droppedFramesPerSec);
var d = document.getElementById("log");
d.innerHTML =
"Audio bytes decoded: " + v.webkitAudioDecodedByteCount + " average p/s: " + audioMean.mean() + "<br>" +
"Video bytes decoded: " + v.webkitVideoDecodedByteCount + " average p/s: " + videoMean.mean() + "<br>" +
"Decoded frames: " + v.webkitDecodedFrameCount + " average p/s: " + decodedMean.mean() + "<br>" +
"Dropped frames: " + v.webkitDroppedFrameCount + " average p/s: " + dropMean.mean() + "<br>";
}
setInterval(recalcRates, 1000);
</script>
</body>
</html>
Jump to Line
Something went wrong with that request. Please try again.