[CSS Regions] Selection dragged from a region paints its background
[WebKit-https.git] / ManualTests / video-statistics.html
1 <html>
2 <head><title>WebKit video playback statistics</title></head>
3 <body>
4 <!-- inspired by --
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>
7 <div id="log">
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>
12 </div>
13 <script>
14
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;
23
24 function Mean() {
25   this.count = 0;
26   this.sum = 0;
27   
28   this.record = function(val) {
29     this.count++;
30     this.sum += val;
31   };
32   
33   this.mean = function() {
34     return this.count ? (this.sum / this.count).toFixed(3) : 0;
35   };
36 }
37
38
39 var decodedMean = new Mean();
40 var audioMean = new Mean();
41 var videoMean = new Mean();
42 var dropMean = new Mean();
43
44 function recalcRates() {
45   var v = document.getElementById("v");
46
47   if (v.readyState <= HTMLMediaElement.HAVE_CURRENT_DATA || v.paused) {
48     return;
49   }
50
51   decodedPerSec = (v.webkitDecodedFrameCount - decodedFrames);
52   decodedFrames = v.webkitDecodedFrameCount;
53
54   audioBytesDecodedPerSec = v.webkitAudioDecodedByteCount - audioBytesDecoded;
55   audioBytesDecoded = v.webkitAudioDecodedByteCount;
56
57   videoBytesDecodedPerSec = v.webkitVideoDecodedByteCount - videoBytesDecoded;
58   videoBytesDecoded = v.webkitVideoDecodedByteCount;
59
60   droppedFramesPerSec = v.webkitDroppedFrameCount - droppedFrames;
61   droppedFrames = v.webkitDroppedFrameCount;
62
63   decodedMean.record(decodedPerSec);
64   audioMean.record(audioBytesDecodedPerSec);
65   videoMean.record(videoBytesDecodedPerSec);
66   dropMean.record(droppedFramesPerSec);
67   
68   var d = document.getElementById("log");
69   d.innerHTML =
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>";
74 }
75
76 setInterval(recalcRates, 1000);
77 </script>
78 </body>
79 </html>