Explorar el Código

benchmark mode that, when enabled, tries to decode frames as fast as possible and prints "frame per second" messages to the JavaScript console

Maik Merten hace 12 años
padre
commit
79d4576bc5
Se han modificado 1 ficheros con 16 adiciones y 1 borrados
  1. 16 1
      jsmpg.js

+ 16 - 1
jsmpg.js Ver fichero

@@ -26,6 +26,7 @@ var requestAnimFrame = (function(){
26 26
 		
27 27
 var jsmpeg = window.jsmpeg = function( url, opts ) {
28 28
 	opts = opts || {};
29
+	this.benchmark = !!opts.benchmark;
29 30
 	this.canvas = opts.canvas || document.createElement('canvas');
30 31
 	this.autoplay = !!opts.autoplay;
31 32
 	this.loop = !!opts.loop;
@@ -404,7 +405,21 @@ jsmpeg.prototype.scheduleNextFrame = function() {
404 405
 	var wait = Math.max(0, (1000/this.pictureRate) - this.lateTime);
405 406
 	this.targetTime = Date.now() + wait;
406 407
 
407
-	if( wait < 18 ) {
408
+	if(this.benchmark) {
409
+		var now = Date.now();
410
+		if(!this.benchframe) {
411
+			this.benchstart = now;
412
+			this.benchframe = 0;
413
+		}
414
+		this.benchframe++;
415
+		var timepassed = now - this.benchstart;
416
+		if(this.benchframe >= 100) {
417
+			if(console) console.debug("frames per second: " + (this.benchframe / timepassed) * 1000 );
418
+			this.benchframe = null;
419
+		}
420
+		setTimeout( this.nextFrame.bind(this), 0);
421
+	}
422
+	else if( wait < 18) {
408 423
 		this.scheduleAnimation();
409 424
 	}
410 425
 	else {