@gueshbzh-perso/scanner 0.10.0 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -8
- package/dist/native.d.ts +7 -2
- package/dist/native.d.ts.map +1 -1
- package/dist/native.js +12 -5
- package/dist/native.js.map +1 -1
- package/dist/reader.d.ts +7 -4
- package/dist/reader.d.ts.map +1 -1
- package/dist/reader.js +34 -9
- package/dist/reader.js.map +1 -1
- package/dist/types.d.ts +16 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/wasm/scanner_wasm_bg.wasm +0 -0
- package/package.json +1 -1
- package/src/native.ts +11 -4
- package/src/reader.ts +35 -9
- package/src/types.ts +16 -2
package/README.md
CHANGED
|
@@ -51,7 +51,7 @@ await reader.destroy(); // removes the preview, frees the engine
|
|
|
51
51
|
| `camera` | `{ facingMode: 'environment', resolution: 'hd' }` | Also `deviceId`, `rememberDevice` (default `true`), `releaseWhenHidden` (default `true`: the camera is released while the page is hidden and reopened when it is visible again). |
|
|
52
52
|
| `overlay` | all on | `showRegion`, `showDetections`, `showTorchButton`, `showCameraSwitch`, `color`, or `false`. |
|
|
53
53
|
| `feedback` | beep + vibrate | `{ beep, vibrate }` or `false`. |
|
|
54
|
-
| `processing` | `{ maxDimension: 1024, backend: 'auto', nativeDetector: 'auto' }` | Decoder image size; `'webgl'`, `'canvas'` or `'auto'`; `nativeDetector: 'auto'` uses the browser's `BarcodeDetector`
|
|
54
|
+
| `processing` | `{ maxDimension: 1024, backend: 'auto', nativeDetector: 'auto' }` | Decoder image size; `'webgl'`, `'canvas'` or `'auto'`; `nativeDetector: 'auto'` uses the browser's `BarcodeDetector` where it exists, `'off'` always uses the engine alone; `engineFallback: true` (default `false`) adds the engine's fallbacks as a safety net behind it (see [How it works](#how-it-works)). |
|
|
55
55
|
| `worker` | `true` | Decode in Web Workers; falls back to the main thread if unavailable. |
|
|
56
56
|
| `workers` | cores − 1 (1–3) | Number of decoding workers: frames are decoded in parallel. |
|
|
57
57
|
| `wasmUrl`, `workerUrl` | auto | Override asset URLs (CDN, custom bundler setup). |
|
|
@@ -64,7 +64,7 @@ await reader.destroy(); // removes the preview, frees the engine
|
|
|
64
64
|
- `setRegionOfInterest(region)`
|
|
65
65
|
- `setTorch(on)`, `torchAvailable`, `setZoom(zoom)`, `switchCamera(deviceId?)`, `BarcodeReader.listCameras()`
|
|
66
66
|
- `clearCooldown(text)` — allow a code to be reported again immediately
|
|
67
|
-
- `stats` — `{ fps, decodeMs, grabMs, frameWidth, frameHeight, backend, worker, workers, native, nativeMs }`
|
|
67
|
+
- `stats` — `{ fps, decodeMs, grabMs, frameWidth, frameHeight, backend, worker, workers, native, nativeMs, engineFps }`
|
|
68
68
|
- `video` — the underlying `<video>` element
|
|
69
69
|
|
|
70
70
|
Detection points are in video pixels (`video.videoWidth` space).
|
|
@@ -141,13 +141,15 @@ overlay (ROI mask, highlights, torch / camera buttons) · beep · vibration
|
|
|
141
141
|
- The engine is downloaded and compiled once, then shared by every worker.
|
|
142
142
|
- By default (`processing.nativeDetector: 'auto'`), browsers that ship a native
|
|
143
143
|
`BarcodeDetector` (Chrome on Android, macOS and ChromeOS) search each video
|
|
144
|
-
frame with it, straight from the `<video>`: no grab, no worker.
|
|
145
|
-
finds nothing, the workers
|
|
146
|
-
|
|
147
|
-
engraving, shadows…)
|
|
144
|
+
frame with it, straight from the `<video>`: no grab, no worker. With
|
|
145
|
+
`processing.engineFallback: true`, while it finds nothing, the workers
|
|
146
|
+
also decode a frame from time to time (~3 per second) with the fallback
|
|
147
|
+
strategies (laser engraving, shadows, light-on-dark codes…), a safety net
|
|
148
|
+
that costs a little CPU and battery. Off by default. Its codes get the
|
|
148
149
|
same multi-frame confirmation and de-duplication. It is used only when it
|
|
149
|
-
supports every requested format (`micro_qr`, which it lacks, is
|
|
150
|
-
|
|
150
|
+
supports every requested format (`micro_qr`, which it lacks, is read by
|
|
151
|
+
the fallback; without it, listing `micro_qr` in `formats` keeps the
|
|
152
|
+
engine), and dropped for the engine alone if it ever fails.
|
|
151
153
|
Detection is by feature, not by browser: any browser that ships the API
|
|
152
154
|
gets it, but a JavaScript polyfill of `BarcodeDetector` is ignored (it
|
|
153
155
|
would only be a slower engine on the main thread). Safari, Firefox and
|
package/dist/native.d.ts
CHANGED
|
@@ -27,9 +27,14 @@ export declare class NativeDetector {
|
|
|
27
27
|
* A detector for `formats` (default: all), or `undefined` when the native
|
|
28
28
|
* decoder cannot replace the engine's fast path: API absent, or one of the
|
|
29
29
|
* requested formats not supported natively (codes of that format would
|
|
30
|
-
* then
|
|
30
|
+
* then be read by the slow fallbacks at best).
|
|
31
|
+
*
|
|
32
|
+
* `micro_qr`, absent from the native API: with `engineFallback` the
|
|
33
|
+
* fallbacks read it. Without, a list that names it explicitly keeps the
|
|
34
|
+
* engine (the application asked for it, it must not be lost silently),
|
|
35
|
+
* while the default list (every format) accepts not reading it.
|
|
31
36
|
*/
|
|
32
|
-
static create(formats: readonly BarcodeFormat[] | undefined, api?: BarcodeDetectorClass | undefined): Promise<NativeDetector | undefined>;
|
|
37
|
+
static create(formats: readonly BarcodeFormat[] | undefined, api?: BarcodeDetectorClass | undefined, engineFallback?: boolean): Promise<NativeDetector | undefined>;
|
|
33
38
|
/**
|
|
34
39
|
* Codes in `source` whose center lies in `rect` (the region of interest, in
|
|
35
40
|
* source pixels), as detections in source pixels. Throws when the native
|
package/dist/native.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../src/native.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAIlE,kDAAkD;AAClD,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,6EAA6E;IAC7E,YAAY,EAAE,SAAS,KAAK,EAAE,CAAC;CAChC;AAED,UAAU,uBAAuB;IAC/B,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;CAC7D;AAED,yCAAyC;AACzC,MAAM,WAAW,oBAAoB;IACnC,KAAK,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,uBAAuB,CAAC;IAChE,mBAAmB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CAC1C;AAwBD,uDAAuD;AACvD,qBAAa,cAAc;IAEvB,OAAO,CAAC,QAAQ;IAChB,sCAAsC;IACtC,QAAQ,CAAC,OAAO,EAAE,SAAS,aAAa,EAAE;IAH5C,OAAO;IAMP
|
|
1
|
+
{"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../src/native.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAIlE,kDAAkD;AAClD,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,6EAA6E;IAC7E,YAAY,EAAE,SAAS,KAAK,EAAE,CAAC;CAChC;AAED,UAAU,uBAAuB;IAC/B,MAAM,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;CAC7D;AAED,yCAAyC;AACzC,MAAM,WAAW,oBAAoB;IACnC,KAAK,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,uBAAuB,CAAC;IAChE,mBAAmB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CAC1C;AAwBD,uDAAuD;AACvD,qBAAa,cAAc;IAEvB,OAAO,CAAC,QAAQ;IAChB,sCAAsC;IACtC,QAAQ,CAAC,OAAO,EAAE,SAAS,aAAa,EAAE;IAH5C,OAAO;IAMP;;;;;;;;;;OAUG;WACU,MAAM,CACjB,OAAO,EAAE,SAAS,aAAa,EAAE,GAAG,SAAS,EAC7C,GAAG,GAAE,oBAAoB,GAAG,SAAuB,EACnD,cAAc,UAAQ,GACrB,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;IAqBtC;;;;OAIG;IACG,MAAM,CAAC,MAAM,EAAE,iBAAiB,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;CAW1E;AAiBD,2EAA2E;AAC3E,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAE7C"}
|
package/dist/native.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Formats of this SDK, all spelled like the native ones (`qr_code`, `ean_13`…)
|
|
3
|
-
* except `micro_qr`, which the native API does not have
|
|
4
|
-
*
|
|
5
|
-
*
|
|
3
|
+
* except `micro_qr`, which the native API does not have. With the engine
|
|
4
|
+
* fallback it is still read by the fallback strategies (`Hard` decodes the
|
|
5
|
+
* raw frame with every format); without it, see `NativeDetector.create`.
|
|
6
6
|
*/
|
|
7
7
|
const NATIVE_FORMATS = [
|
|
8
8
|
'qr_code',
|
|
@@ -31,11 +31,18 @@ export class NativeDetector {
|
|
|
31
31
|
* A detector for `formats` (default: all), or `undefined` when the native
|
|
32
32
|
* decoder cannot replace the engine's fast path: API absent, or one of the
|
|
33
33
|
* requested formats not supported natively (codes of that format would
|
|
34
|
-
* then
|
|
34
|
+
* then be read by the slow fallbacks at best).
|
|
35
|
+
*
|
|
36
|
+
* `micro_qr`, absent from the native API: with `engineFallback` the
|
|
37
|
+
* fallbacks read it. Without, a list that names it explicitly keeps the
|
|
38
|
+
* engine (the application asked for it, it must not be lost silently),
|
|
39
|
+
* while the default list (every format) accepts not reading it.
|
|
35
40
|
*/
|
|
36
|
-
static async create(formats, api = nativeApi()) {
|
|
41
|
+
static async create(formats, api = nativeApi(), engineFallback = false) {
|
|
37
42
|
if (!api)
|
|
38
43
|
return undefined;
|
|
44
|
+
if (!engineFallback && formats?.includes('micro_qr'))
|
|
45
|
+
return undefined;
|
|
39
46
|
let supported;
|
|
40
47
|
try {
|
|
41
48
|
supported = await api.getSupportedFormats();
|
package/dist/native.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native.js","sourceRoot":"","sources":["../src/native.ts"],"names":[],"mappings":"AAgCA;;;;;GAKG;AACH,MAAM,cAAc,GAA6B;IAC/C,SAAS;IACT,aAAa;IACb,OAAO;IACP,QAAQ;IACR,UAAU;IACV,SAAS;IACT,SAAS;IACT,QAAQ;IACR,OAAO;IACP,OAAO;IACP,OAAO;IACP,KAAK;IACL,SAAS;CACV,CAAC;AAEF,uDAAuD;AACvD,MAAM,OAAO,cAAc;IACzB,YACU,QAAiC;IACzC,sCAAsC;IAC7B,OAAiC;QAFlC,aAAQ,GAAR,QAAQ,CAAyB;QAEhC,YAAO,GAAP,OAAO,CAA0B;IACzC,CAAC;IAEJ
|
|
1
|
+
{"version":3,"file":"native.js","sourceRoot":"","sources":["../src/native.ts"],"names":[],"mappings":"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"}
|
package/dist/reader.d.ts
CHANGED
|
@@ -122,10 +122,13 @@ export declare class BarcodeReader {
|
|
|
122
122
|
* Grab stage. With the native `BarcodeDetector`, the frame is searched
|
|
123
123
|
* natively first, straight from the `<video>` (Chrome reads it outside the
|
|
124
124
|
* page's threads): no grab of our own. Codes it finds are committed right
|
|
125
|
-
* away. When it finds nothing
|
|
126
|
-
* time** (`FALLBACK_INTERVAL_MS`),
|
|
127
|
-
* strategy:
|
|
128
|
-
* preprocessing for (laser engraving,
|
|
125
|
+
* away. When it finds nothing and `processing.engineFallback` is on, the
|
|
126
|
+
* engine gets a frame **from time to time** (`FALLBACK_INTERVAL_MS`),
|
|
127
|
+
* without its fast path, for one fallback strategy: a safety net for what
|
|
128
|
+
* the native decoder has no preprocessing for (laser engraving,
|
|
129
|
+
* light-on-dark codes, `micro_qr`…). Off by default (choice of the project
|
|
130
|
+
* after testing on a Galaxy A14, where the native decoder read codes very
|
|
131
|
+
* well): the net mostly costs CPU and battery.
|
|
129
132
|
* Grabbing and decoding every frame as well would double the reads of the
|
|
130
133
|
* frame and keep the workers busy on frames the native decoder handles,
|
|
131
134
|
* costing battery and CPU it also needs.
|
package/dist/reader.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reader.d.ts","sourceRoot":"","sources":["../src/reader.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAa,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AA4B7G,KAAK,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,IAAI,CAAC;AAExC;;;;;;;;GAQG;AACH,qBAAa,aAAa;
|
|
1
|
+
{"version":3,"file":"reader.d.ts","sourceRoot":"","sources":["../src/reader.ts"],"names":[],"mappings":"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"}
|
package/dist/reader.js
CHANGED
|
@@ -9,7 +9,7 @@ import { NativeDetector } from './native.js';
|
|
|
9
9
|
import { Preview } from './overlay.js';
|
|
10
10
|
const DEFAULT_REGION = { x: 0.1, y: 0.2, width: 0.8, height: 0.6 };
|
|
11
11
|
/**
|
|
12
|
-
* With the native detector
|
|
12
|
+
* With the native detector and `processing.engineFallback`, delay between two engine frames while the
|
|
13
13
|
* native decoder finds nothing (~3 fallbacks per second). A code that only
|
|
14
14
|
* the fallbacks read is still found within a couple of seconds (the
|
|
15
15
|
* strategies share CPU time, the cheap Linear one runs most often), while
|
|
@@ -71,7 +71,18 @@ export class BarcodeReader {
|
|
|
71
71
|
this.torchOn = false;
|
|
72
72
|
this.buffers = [];
|
|
73
73
|
this.frameHandle = 0;
|
|
74
|
-
this.perf = {
|
|
74
|
+
this.perf = {
|
|
75
|
+
frames: 0,
|
|
76
|
+
engineFrames: 0,
|
|
77
|
+
since: 0,
|
|
78
|
+
fps: 0,
|
|
79
|
+
engineFps: 0,
|
|
80
|
+
decodeMs: 0,
|
|
81
|
+
grabMs: 0,
|
|
82
|
+
nativeMs: 0,
|
|
83
|
+
w: 0,
|
|
84
|
+
h: 0,
|
|
85
|
+
};
|
|
75
86
|
this.native = native;
|
|
76
87
|
this.region = clampRegion(options.regionOfInterest ?? DEFAULT_REGION);
|
|
77
88
|
this.engineOptions = pickEngineOptions(options);
|
|
@@ -121,6 +132,7 @@ export class BarcodeReader {
|
|
|
121
132
|
workers: this.engine.concurrency,
|
|
122
133
|
native: this.native !== undefined,
|
|
123
134
|
nativeMs: this.perf.nativeMs,
|
|
135
|
+
engineFps: this.perf.engineFps,
|
|
124
136
|
};
|
|
125
137
|
}
|
|
126
138
|
get engineVersion() {
|
|
@@ -356,10 +368,13 @@ export class BarcodeReader {
|
|
|
356
368
|
* Grab stage. With the native `BarcodeDetector`, the frame is searched
|
|
357
369
|
* natively first, straight from the `<video>` (Chrome reads it outside the
|
|
358
370
|
* page's threads): no grab of our own. Codes it finds are committed right
|
|
359
|
-
* away. When it finds nothing
|
|
360
|
-
* time** (`FALLBACK_INTERVAL_MS`),
|
|
361
|
-
* strategy:
|
|
362
|
-
* preprocessing for (laser engraving,
|
|
371
|
+
* away. When it finds nothing and `processing.engineFallback` is on, the
|
|
372
|
+
* engine gets a frame **from time to time** (`FALLBACK_INTERVAL_MS`),
|
|
373
|
+
* without its fast path, for one fallback strategy: a safety net for what
|
|
374
|
+
* the native decoder has no preprocessing for (laser engraving,
|
|
375
|
+
* light-on-dark codes, `micro_qr`…). Off by default (choice of the project
|
|
376
|
+
* after testing on a Galaxy A14, where the native decoder read codes very
|
|
377
|
+
* well): the net mostly costs CPU and battery.
|
|
363
378
|
* Grabbing and decoding every frame as well would double the reads of the
|
|
364
379
|
* frame and keep the workers busy on frames the native decoder handles,
|
|
365
380
|
* costing battery and CPU it also needs.
|
|
@@ -386,7 +401,7 @@ export class BarcodeReader {
|
|
|
386
401
|
// Replaced by `configure()` meanwhile: results made for the old formats.
|
|
387
402
|
if (generation !== this.nativeGeneration || !this.running || this.paused)
|
|
388
403
|
return;
|
|
389
|
-
if (codes.length === 0 && this.fallbackDue()) {
|
|
404
|
+
if (codes.length === 0 && this.options.processing?.engineFallback === true && this.fallbackDue()) {
|
|
390
405
|
this.fallbackInFlight = true;
|
|
391
406
|
this.updatePerf({ nativeMs, counted: false });
|
|
392
407
|
try {
|
|
@@ -564,14 +579,24 @@ export class BarcodeReader {
|
|
|
564
579
|
p.w = s.grab.width;
|
|
565
580
|
p.h = s.grab.height;
|
|
566
581
|
}
|
|
567
|
-
if (s.decodeMs !== undefined)
|
|
582
|
+
if (s.decodeMs !== undefined) {
|
|
568
583
|
p.decodeMs = ema(p.decodeMs, s.decodeMs);
|
|
584
|
+
p.engineFrames++;
|
|
585
|
+
}
|
|
569
586
|
if (s.nativeMs !== undefined)
|
|
570
587
|
p.nativeMs = ema(p.nativeMs, s.nativeMs);
|
|
571
588
|
const now = performance.now();
|
|
572
589
|
if (now - p.since >= 1000) {
|
|
573
590
|
p.fps = (p.frames * 1000) / (now - p.since);
|
|
591
|
+
p.engineFps = (p.engineFrames * 1000) / (now - p.since);
|
|
592
|
+
// With the native detector the engine may decode nothing for long
|
|
593
|
+
// stretches: its averages would show stale values, as if it were busy.
|
|
594
|
+
if (p.engineFrames === 0) {
|
|
595
|
+
p.decodeMs = 0;
|
|
596
|
+
p.grabMs = 0;
|
|
597
|
+
}
|
|
574
598
|
p.frames = 0;
|
|
599
|
+
p.engineFrames = 0;
|
|
575
600
|
p.since = now;
|
|
576
601
|
}
|
|
577
602
|
}
|
|
@@ -621,7 +646,7 @@ function createNative(options, engineOptions) {
|
|
|
621
646
|
// only reads 1D codes roughly aligned with the image rows.
|
|
622
647
|
if (options.processing?.nativeDetector === 'off')
|
|
623
648
|
return Promise.resolve(undefined);
|
|
624
|
-
return NativeDetector.create(engineOptions.formats);
|
|
649
|
+
return NativeDetector.create(engineOptions.formats, undefined, options.processing?.engineFallback === true);
|
|
625
650
|
}
|
|
626
651
|
function waitForVideo(video) {
|
|
627
652
|
if (video.readyState >= 2 && video.videoWidth > 0)
|
package/dist/reader.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reader.js","sourceRoot":"","sources":["../src/reader.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"reader.js","sourceRoot":"","sources":["../src/reader.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -118,6 +118,15 @@ export interface ProcessingOptions {
|
|
|
118
118
|
* `'off'`: always the engine alone. Default: `'auto'`.
|
|
119
119
|
*/
|
|
120
120
|
nativeDetector?: 'auto' | 'off';
|
|
121
|
+
/**
|
|
122
|
+
* With the native detector: while it finds nothing, also hand a frame to
|
|
123
|
+
* the engine's fallback strategies from time to time (~3 per second), a
|
|
124
|
+
* safety net for codes the native decoder may miss (laser engraving,
|
|
125
|
+
* shadows, light-on-dark codes, `micro_qr`). Costs a little CPU and
|
|
126
|
+
* battery. Without it, `micro_qr` listed in `formats` keeps the engine
|
|
127
|
+
* instead of the native detector. Default: `false`.
|
|
128
|
+
*/
|
|
129
|
+
engineFallback?: boolean;
|
|
121
130
|
}
|
|
122
131
|
export interface ReaderOptions extends EngineOptions, AssetOptions {
|
|
123
132
|
/** Element (or CSS selector) that will host the camera preview. It should have a size. */
|
|
@@ -137,9 +146,9 @@ export interface ReaderOptions extends EngineOptions, AssetOptions {
|
|
|
137
146
|
export interface ReaderStats {
|
|
138
147
|
/** Frames decoded per second. */
|
|
139
148
|
fps: number;
|
|
140
|
-
/** Average decode time in the engine, in ms. */
|
|
149
|
+
/** Average decode time in the engine, in ms (`0` when it decoded nothing in the last second). */
|
|
141
150
|
decodeMs: number;
|
|
142
|
-
/** Average GPU/canvas frame preparation time, in ms. */
|
|
151
|
+
/** Average GPU/canvas frame preparation time, in ms (`0` when nothing was grabbed in the last second). */
|
|
143
152
|
grabMs: number;
|
|
144
153
|
/** Size of the image handed to the decoder. */
|
|
145
154
|
frameWidth: number;
|
|
@@ -154,6 +163,11 @@ export interface ReaderStats {
|
|
|
154
163
|
native: boolean;
|
|
155
164
|
/** Average native detection time, in ms (`0` when not used). */
|
|
156
165
|
nativeMs: number;
|
|
166
|
+
/**
|
|
167
|
+
* Frames decoded by the engine per second. With the native detector: `0`
|
|
168
|
+
* while it reads everything, a few per second with `engineFallback`.
|
|
169
|
+
*/
|
|
170
|
+
engineFps: number;
|
|
157
171
|
}
|
|
158
172
|
export interface ReaderEvents {
|
|
159
173
|
/** New codes (already de-duplicated). */
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE5D,YAAY,EAAE,aAAa,EAAE,CAAC;AAE9B,yBAAyB;AACzB,MAAM,WAAW,KAAK;IACpB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,mEAAmE;AACnE,MAAM,WAAW,MAAM;IACrB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,yBAAyB;AACzB,MAAM,WAAW,SAAS;IACxB,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,MAAM,EAAE,aAAa,CAAC;IACtB;;;;;OAKG;IACH,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,qDAAqD;IACrD,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,mFAAmF;AACnF,MAAM,WAAW,aAAa;IAC5B,oFAAoF;IACpF,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAC1B,8EAA8E;IAC9E,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,0DAA0D;IAC1D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,0FAA0F;IAC1F,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2EAA2E;IAC3E,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,oGAAoG;AACpG,MAAM,WAAW,YAAY;IAC3B,+DAA+D;IAC/D,OAAO,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;IACvB,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;IACzB,sHAAsH;IACtH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,gBAAgB,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC;AAEnD,MAAM,WAAW,aAAa;IAC5B,8CAA8C;IAC9C,UAAU,CAAC,EAAE,aAAa,GAAG,MAAM,CAAC;IACpC,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,4EAA4E;IAC5E,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,cAAc;IAC7B,2FAA2F;IAC3F,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iDAAiD;IACjD,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,6EAA6E;IAC7E,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,uFAAuF;IACvF,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,gDAAgD;IAChD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,8DAA8D;IAC9D,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2FAA2F;IAC3F,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IACtC;;;;;;;;;OASG;IACH,cAAc,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
Binary file
|
package/package.json
CHANGED
package/src/native.ts
CHANGED
|
@@ -32,9 +32,9 @@ export interface BarcodeDetectorClass {
|
|
|
32
32
|
|
|
33
33
|
/**
|
|
34
34
|
* Formats of this SDK, all spelled like the native ones (`qr_code`, `ean_13`…)
|
|
35
|
-
* except `micro_qr`, which the native API does not have
|
|
36
|
-
*
|
|
37
|
-
*
|
|
35
|
+
* except `micro_qr`, which the native API does not have. With the engine
|
|
36
|
+
* fallback it is still read by the fallback strategies (`Hard` decodes the
|
|
37
|
+
* raw frame with every format); without it, see `NativeDetector.create`.
|
|
38
38
|
*/
|
|
39
39
|
const NATIVE_FORMATS: readonly BarcodeFormat[] = [
|
|
40
40
|
'qr_code',
|
|
@@ -64,13 +64,20 @@ export class NativeDetector {
|
|
|
64
64
|
* A detector for `formats` (default: all), or `undefined` when the native
|
|
65
65
|
* decoder cannot replace the engine's fast path: API absent, or one of the
|
|
66
66
|
* requested formats not supported natively (codes of that format would
|
|
67
|
-
* then
|
|
67
|
+
* then be read by the slow fallbacks at best).
|
|
68
|
+
*
|
|
69
|
+
* `micro_qr`, absent from the native API: with `engineFallback` the
|
|
70
|
+
* fallbacks read it. Without, a list that names it explicitly keeps the
|
|
71
|
+
* engine (the application asked for it, it must not be lost silently),
|
|
72
|
+
* while the default list (every format) accepts not reading it.
|
|
68
73
|
*/
|
|
69
74
|
static async create(
|
|
70
75
|
formats: readonly BarcodeFormat[] | undefined,
|
|
71
76
|
api: BarcodeDetectorClass | undefined = nativeApi(),
|
|
77
|
+
engineFallback = false,
|
|
72
78
|
): Promise<NativeDetector | undefined> {
|
|
73
79
|
if (!api) return undefined;
|
|
80
|
+
if (!engineFallback && formats?.includes('micro_qr')) return undefined;
|
|
74
81
|
let supported: string[];
|
|
75
82
|
try {
|
|
76
83
|
supported = await api.getSupportedFormats();
|
package/src/reader.ts
CHANGED
|
@@ -20,7 +20,7 @@ import type { Detection, EngineOptions, ReaderEvents, ReaderOptions, ReaderStats
|
|
|
20
20
|
const DEFAULT_REGION: Region = { x: 0.1, y: 0.2, width: 0.8, height: 0.6 };
|
|
21
21
|
|
|
22
22
|
/**
|
|
23
|
-
* With the native detector
|
|
23
|
+
* With the native detector and `processing.engineFallback`, delay between two engine frames while the
|
|
24
24
|
* native decoder finds nothing (~3 fallbacks per second). A code that only
|
|
25
25
|
* the fallbacks read is still found within a couple of seconds (the
|
|
26
26
|
* strategies share CPU time, the cheap Linear one runs most often), while
|
|
@@ -103,7 +103,18 @@ export class BarcodeReader {
|
|
|
103
103
|
private torchOn = false;
|
|
104
104
|
private buffers: ArrayBuffer[] = [];
|
|
105
105
|
private frameHandle = 0;
|
|
106
|
-
private perf = {
|
|
106
|
+
private perf = {
|
|
107
|
+
frames: 0,
|
|
108
|
+
engineFrames: 0,
|
|
109
|
+
since: 0,
|
|
110
|
+
fps: 0,
|
|
111
|
+
engineFps: 0,
|
|
112
|
+
decodeMs: 0,
|
|
113
|
+
grabMs: 0,
|
|
114
|
+
nativeMs: 0,
|
|
115
|
+
w: 0,
|
|
116
|
+
h: 0,
|
|
117
|
+
};
|
|
107
118
|
|
|
108
119
|
private constructor(
|
|
109
120
|
private engine: Engine,
|
|
@@ -166,6 +177,7 @@ export class BarcodeReader {
|
|
|
166
177
|
workers: this.engine.concurrency,
|
|
167
178
|
native: this.native !== undefined,
|
|
168
179
|
nativeMs: this.perf.nativeMs,
|
|
180
|
+
engineFps: this.perf.engineFps,
|
|
169
181
|
};
|
|
170
182
|
}
|
|
171
183
|
|
|
@@ -407,10 +419,13 @@ export class BarcodeReader {
|
|
|
407
419
|
* Grab stage. With the native `BarcodeDetector`, the frame is searched
|
|
408
420
|
* natively first, straight from the `<video>` (Chrome reads it outside the
|
|
409
421
|
* page's threads): no grab of our own. Codes it finds are committed right
|
|
410
|
-
* away. When it finds nothing
|
|
411
|
-
* time** (`FALLBACK_INTERVAL_MS`),
|
|
412
|
-
* strategy:
|
|
413
|
-
* preprocessing for (laser engraving,
|
|
422
|
+
* away. When it finds nothing and `processing.engineFallback` is on, the
|
|
423
|
+
* engine gets a frame **from time to time** (`FALLBACK_INTERVAL_MS`),
|
|
424
|
+
* without its fast path, for one fallback strategy: a safety net for what
|
|
425
|
+
* the native decoder has no preprocessing for (laser engraving,
|
|
426
|
+
* light-on-dark codes, `micro_qr`…). Off by default (choice of the project
|
|
427
|
+
* after testing on a Galaxy A14, where the native decoder read codes very
|
|
428
|
+
* well): the net mostly costs CPU and battery.
|
|
414
429
|
* Grabbing and decoding every frame as well would double the reads of the
|
|
415
430
|
* frame and keep the workers busy on frames the native decoder handles,
|
|
416
431
|
* costing battery and CPU it also needs.
|
|
@@ -436,7 +451,7 @@ export class BarcodeReader {
|
|
|
436
451
|
// Replaced by `configure()` meanwhile: results made for the old formats.
|
|
437
452
|
if (generation !== this.nativeGeneration || !this.running || this.paused) return;
|
|
438
453
|
|
|
439
|
-
if (codes.length === 0 && this.fallbackDue()) {
|
|
454
|
+
if (codes.length === 0 && this.options.processing?.engineFallback === true && this.fallbackDue()) {
|
|
440
455
|
this.fallbackInFlight = true;
|
|
441
456
|
this.updatePerf({ nativeMs, counted: false });
|
|
442
457
|
try {
|
|
@@ -625,12 +640,23 @@ export class BarcodeReader {
|
|
|
625
640
|
p.w = s.grab.width;
|
|
626
641
|
p.h = s.grab.height;
|
|
627
642
|
}
|
|
628
|
-
if (s.decodeMs !== undefined)
|
|
643
|
+
if (s.decodeMs !== undefined) {
|
|
644
|
+
p.decodeMs = ema(p.decodeMs, s.decodeMs);
|
|
645
|
+
p.engineFrames++;
|
|
646
|
+
}
|
|
629
647
|
if (s.nativeMs !== undefined) p.nativeMs = ema(p.nativeMs, s.nativeMs);
|
|
630
648
|
const now = performance.now();
|
|
631
649
|
if (now - p.since >= 1000) {
|
|
632
650
|
p.fps = (p.frames * 1000) / (now - p.since);
|
|
651
|
+
p.engineFps = (p.engineFrames * 1000) / (now - p.since);
|
|
652
|
+
// With the native detector the engine may decode nothing for long
|
|
653
|
+
// stretches: its averages would show stale values, as if it were busy.
|
|
654
|
+
if (p.engineFrames === 0) {
|
|
655
|
+
p.decodeMs = 0;
|
|
656
|
+
p.grabMs = 0;
|
|
657
|
+
}
|
|
633
658
|
p.frames = 0;
|
|
659
|
+
p.engineFrames = 0;
|
|
634
660
|
p.since = now;
|
|
635
661
|
}
|
|
636
662
|
}
|
|
@@ -686,7 +712,7 @@ function createNative(
|
|
|
686
712
|
// well whatever the orientation of the phone, where the engine's fast pass
|
|
687
713
|
// only reads 1D codes roughly aligned with the image rows.
|
|
688
714
|
if (options.processing?.nativeDetector === 'off') return Promise.resolve(undefined);
|
|
689
|
-
return NativeDetector.create(engineOptions.formats);
|
|
715
|
+
return NativeDetector.create(engineOptions.formats, undefined, options.processing?.engineFallback === true);
|
|
690
716
|
}
|
|
691
717
|
|
|
692
718
|
function waitForVideo(video: HTMLVideoElement): Promise<void> {
|
package/src/types.ts
CHANGED
|
@@ -129,6 +129,15 @@ export interface ProcessingOptions {
|
|
|
129
129
|
* `'off'`: always the engine alone. Default: `'auto'`.
|
|
130
130
|
*/
|
|
131
131
|
nativeDetector?: 'auto' | 'off';
|
|
132
|
+
/**
|
|
133
|
+
* With the native detector: while it finds nothing, also hand a frame to
|
|
134
|
+
* the engine's fallback strategies from time to time (~3 per second), a
|
|
135
|
+
* safety net for codes the native decoder may miss (laser engraving,
|
|
136
|
+
* shadows, light-on-dark codes, `micro_qr`). Costs a little CPU and
|
|
137
|
+
* battery. Without it, `micro_qr` listed in `formats` keeps the engine
|
|
138
|
+
* instead of the native detector. Default: `false`.
|
|
139
|
+
*/
|
|
140
|
+
engineFallback?: boolean;
|
|
132
141
|
}
|
|
133
142
|
|
|
134
143
|
export interface ReaderOptions extends EngineOptions, AssetOptions {
|
|
@@ -150,9 +159,9 @@ export interface ReaderOptions extends EngineOptions, AssetOptions {
|
|
|
150
159
|
export interface ReaderStats {
|
|
151
160
|
/** Frames decoded per second. */
|
|
152
161
|
fps: number;
|
|
153
|
-
/** Average decode time in the engine, in ms. */
|
|
162
|
+
/** Average decode time in the engine, in ms (`0` when it decoded nothing in the last second). */
|
|
154
163
|
decodeMs: number;
|
|
155
|
-
/** Average GPU/canvas frame preparation time, in ms. */
|
|
164
|
+
/** Average GPU/canvas frame preparation time, in ms (`0` when nothing was grabbed in the last second). */
|
|
156
165
|
grabMs: number;
|
|
157
166
|
/** Size of the image handed to the decoder. */
|
|
158
167
|
frameWidth: number;
|
|
@@ -167,6 +176,11 @@ export interface ReaderStats {
|
|
|
167
176
|
native: boolean;
|
|
168
177
|
/** Average native detection time, in ms (`0` when not used). */
|
|
169
178
|
nativeMs: number;
|
|
179
|
+
/**
|
|
180
|
+
* Frames decoded by the engine per second. With the native detector: `0`
|
|
181
|
+
* while it reads everything, a few per second with `engineFallback`.
|
|
182
|
+
*/
|
|
183
|
+
engineFps: number;
|
|
170
184
|
}
|
|
171
185
|
|
|
172
186
|
export interface ReaderEvents {
|