diff --git a/src/common/cv_utils.js b/src/common/cv_utils.js index 18485fd..96e7040 100644 --- a/src/common/cv_utils.js +++ b/src/common/cv_utils.js @@ -698,32 +698,32 @@ CVUtils.calculatePatchSize = function(patchSize, imgSize) { CVUtils._parseCSSDimensionValues = function(value) { var dimension = { value: parseFloat(value), - unit: value.indexOf("%") === value.length - 1 ? "%" : "%" + unit: value.indexOf("%") === value.length - 1 ? "%" : "px" }; return dimension; }; CVUtils._dimensionsConverters = { - top: function(dimension, context) { - if (dimension.unit === "%") { - return Math.floor(context.height * (dimension.value / 100)); - } + top: function top(dimension, context) { + return Math.floor((dimension.unit === "%") + ? (context.height * (dimension.value / 100)) + : dimension.value); }, - right: function(dimension, context) { - if (dimension.unit === "%") { - return Math.floor(context.width - (context.width * (dimension.value / 100))); - } + right: function right(dimension, context) { + return Math.floor((dimension.unit === "%") + ? (context.width - context.width * (dimension.value / 100)) + : (context.width - dimension.value)); }, - bottom: function(dimension, context) { - if (dimension.unit === "%") { - return Math.floor(context.height - (context.height * (dimension.value / 100))); - } + bottom: function bottom(dimension, context) { + return Math.floor((dimension.unit === "%") + ? (context.height - context.height * (dimension.value / 100)) + : (context.height - dimension.value)); }, - left: function(dimension, context) { - if (dimension.unit === "%") { - return Math.floor(context.width * (dimension.value / 100)); - } + left: function left(dimension, context) { + return Math.floor((dimension.unit === "%") + ? (context.width * (dimension.value / 100)) + : dimension.value); } }; diff --git a/src/quagga.js b/src/quagga.js index ebe5d80..495e5f4 100644 --- a/src/quagga.js +++ b/src/quagga.js @@ -296,16 +296,29 @@ function update() { } } -function start() { +function startContinuousUpdate() { + var next = null, + delay = 1000 / (_config.frequency || 60); + _stopped = false; - ( function frame() { + (function frame(timestamp) { + next = next || timestamp; if (!_stopped) { - update(); - if (_onUIThread && _config.inputStream.type === "LiveStream") { - window.requestAnimFrame(frame); + if (timestamp >= next) { + next += delay; + update(); } + window.requestAnimFrame(frame); } - }()); + }(performance.now())); +} + +function start() { + if (_onUIThread && _config.inputStream.type === "LiveStream") { + startContinuousUpdate(); + } else { + update(); + } } function initWorker(cb) {