2 <head><title>WebKit video playback statistics
</title></head>
5 -- http://people.mozilla.org/~cpearce/paint-stats-demo.html -->
6 <video src=
"http://movies.apple.com/movies/us/apple/ipoditunes/2007/touch/ads/apple_ipodtouch_touch_r640-9cie.mov" id=
"v" controls autoplay
></video>
8 Audio bytes decoded:
0 average p/s:
0<br>
9 Video bytes decoded:
0 average p/s:
0<br>
10 Decoded frames:
0 average p/s:
0<br>
11 Dropped frames:
0 average p/s:
0<br>
15 var decodedFrames
= 0;
16 var decodedPerSec
= 0;
17 var audioBytesDecoded
= 0;
18 var audioBytesDecodedPerSec
= 0;
19 var videoBytesDecoded
= 0;
20 var videoBytesDecodedPerSec
= 0;
21 var droppedFrames
= 0;
22 var droppedFramesPerSec
= 0;
28 this.record = function(val
) {
33 this.mean = function() {
34 return this.count
? (this.sum
/ this.count
).toFixed(3) : 0;
39 var decodedMean
= new Mean();
40 var audioMean
= new Mean();
41 var videoMean
= new Mean();
42 var dropMean
= new Mean();
44 function recalcRates() {
45 var v
= document
.getElementById("v");
47 if (v
.readyState
<= HTMLMediaElement
.HAVE_CURRENT_DATA
|| v
.paused
) {
51 decodedPerSec
= (v
.webkitDecodedFrameCount
- decodedFrames
);
52 decodedFrames
= v
.webkitDecodedFrameCount
;
54 audioBytesDecodedPerSec
= v
.webkitAudioDecodedByteCount
- audioBytesDecoded
;
55 audioBytesDecoded
= v
.webkitAudioDecodedByteCount
;
57 videoBytesDecodedPerSec
= v
.webkitVideoDecodedByteCount
- videoBytesDecoded
;
58 videoBytesDecoded
= v
.webkitVideoDecodedByteCount
;
60 droppedFramesPerSec
= v
.webkitDroppedFrameCount
- droppedFrames
;
61 droppedFrames
= v
.webkitDroppedFrameCount
;
63 decodedMean
.record(decodedPerSec
);
64 audioMean
.record(audioBytesDecodedPerSec
);
65 videoMean
.record(videoBytesDecodedPerSec
);
66 dropMean
.record(droppedFramesPerSec
);
68 var d
= document
.getElementById("log");
70 "Audio bytes decoded: " + v
.webkitAudioDecodedByteCount
+ " average p/s: " + audioMean
.mean() + "<br>" +
71 "Video bytes decoded: " + v
.webkitVideoDecodedByteCount
+ " average p/s: " + videoMean
.mean() + "<br>" +
72 "Decoded frames: " + v
.webkitDecodedFrameCount
+ " average p/s: " + decodedMean
.mean() + "<br>" +
73 "Dropped frames: " + v
.webkitDroppedFrameCount
+ " average p/s: " + dropMean
.mean() + "<br>";
76 setInterval(recalcRates
, 1000);