@gueshbzh-perso/scanner 0.5.1 → 0.7.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.
Files changed (54) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +38 -14
  3. package/dist/camera.d.ts.map +1 -1
  4. package/dist/camera.js +5 -2
  5. package/dist/camera.js.map +1 -1
  6. package/dist/core.d.ts +28 -10
  7. package/dist/core.d.ts.map +1 -1
  8. package/dist/core.js +92 -42
  9. package/dist/core.js.map +1 -1
  10. package/dist/engine.d.ts +26 -3
  11. package/dist/engine.d.ts.map +1 -1
  12. package/dist/engine.js +159 -51
  13. package/dist/engine.js.map +1 -1
  14. package/dist/grabber.d.ts +28 -0
  15. package/dist/grabber.d.ts.map +1 -1
  16. package/dist/grabber.js +81 -3
  17. package/dist/grabber.js.map +1 -1
  18. package/dist/index.d.ts +0 -1
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +0 -1
  21. package/dist/index.js.map +1 -1
  22. package/dist/overlay.d.ts.map +1 -1
  23. package/dist/overlay.js +12 -11
  24. package/dist/overlay.js.map +1 -1
  25. package/dist/protocol.d.ts +9 -13
  26. package/dist/protocol.d.ts.map +1 -1
  27. package/dist/reader.d.ts +33 -3
  28. package/dist/reader.d.ts.map +1 -1
  29. package/dist/reader.js +113 -25
  30. package/dist/reader.js.map +1 -1
  31. package/dist/types.d.ts +11 -5
  32. package/dist/types.d.ts.map +1 -1
  33. package/dist/wasm/THIRD_PARTY_LICENSES.md +3879 -0
  34. package/dist/wasm/scanner_wasm.d.ts +52 -0
  35. package/dist/wasm/scanner_wasm.js +87 -0
  36. package/dist/wasm/scanner_wasm_bg.wasm +0 -0
  37. package/dist/wasm/scanner_wasm_bg.wasm.d.ts +6 -0
  38. package/dist/worker.js +15 -17
  39. package/dist/worker.js.map +1 -1
  40. package/package.json +6 -3
  41. package/src/camera.ts +107 -0
  42. package/src/core.ts +189 -0
  43. package/src/engine.ts +348 -0
  44. package/src/feedback.ts +50 -0
  45. package/src/geometry.ts +55 -0
  46. package/src/grabber.ts +385 -0
  47. package/src/index.ts +20 -0
  48. package/src/overlay.ts +225 -0
  49. package/src/protocol.ts +38 -0
  50. package/src/reader.ts +474 -0
  51. package/src/scan-image.ts +88 -0
  52. package/src/types.ts +155 -0
  53. package/src/worker.ts +57 -0
  54. package/dist/wasm/scanner_wasm_simd_bg.wasm +0 -0
package/dist/engine.js CHANGED
@@ -1,12 +1,36 @@
1
- // Decoding engine facade: same API whether decoding runs in a Web Worker or inline.
2
- import { EngineCore, defaultWasmUrl, simdSupported } from './core.js';
3
- class WorkerEngine {
4
- constructor(spawn, wasmUrl, simd) {
1
+ // Decoding engine facade: same API whether decoding runs in Web Workers or inline.
2
+ //
3
+ // With workers, frames are decoded **in parallel** by a pool of stateless
4
+ // decoders (one WebAssembly instance per worker), while the scan session
5
+ // (strategy scheduling, multi-frame confirmation, de-duplication) runs on the
6
+ // main thread: its calls take microseconds, and a single instance of the
7
+ // state is what keeps confirmations and de-duplication correct across
8
+ // workers. Decoding is CPU-bound and single-threaded per frame, so on phones
9
+ // with many slow cores (Galaxy A14: decode ~125 ms) the pool multiplies the
10
+ // frame rate.
11
+ import { DecoderCore, SessionCore, compileWasm, defaultWasmUrl, loadWasm } from './core.js';
12
+ /**
13
+ * Default pool size: one worker per core, minus one for the main thread
14
+ * (camera, GPU, UI), capped at 3. Beyond 3 the frame rate is limited by the
15
+ * frame grab (~55 ms on a Galaxy A14, so ~18 fps) and more workers only cost
16
+ * memory (one WebAssembly instance each).
17
+ */
18
+ export function defaultWorkerCount() {
19
+ const cores = typeof navigator !== 'undefined' ? navigator.hardwareConcurrency || 2 : 2;
20
+ return Math.min(3, Math.max(1, cores - 1));
21
+ }
22
+ /** One decoding worker, restarted if the engine crashes. */
23
+ class DecoderWorker {
24
+ /** `false` once the worker failed for good (script error, crash outside a request). */
25
+ get alive() {
26
+ return this.dead === null;
27
+ }
28
+ constructor(spawn, module) {
5
29
  this.spawn = spawn;
6
- this.wasmUrl = wasmUrl;
7
- this.simd = simd;
8
- this.inWorker = true;
30
+ this.module = module;
9
31
  this.version = '';
32
+ /** Requests sent and not answered yet. */
33
+ this.busy = 0;
10
34
  this.nextId = 1;
11
35
  this.pending = new Map();
12
36
  this.dead = null;
@@ -45,15 +69,21 @@ class WorkerEngine {
45
69
  }
46
70
  /** Send a request; on a fatal engine crash, restart the worker before throwing. */
47
71
  async ok(req, transfer) {
48
- if (this.restarting)
49
- await this.restarting;
50
- const res = await this.call(req, transfer);
51
- if (!res.ok) {
52
- if (res.fatal)
53
- await this.restart();
54
- throw Object.assign(new Error(res.error), { buffer: res.buffer });
72
+ this.busy++;
73
+ try {
74
+ if (this.restarting)
75
+ await this.restarting;
76
+ const res = await this.call(req, transfer);
77
+ if (!res.ok) {
78
+ if (res.fatal)
79
+ await this.restart();
80
+ throw Object.assign(new Error(res.error), { buffer: res.buffer });
81
+ }
82
+ return res;
83
+ }
84
+ finally {
85
+ this.busy--;
55
86
  }
56
- return res;
57
87
  }
58
88
  restart() {
59
89
  this.restarting ?? (this.restarting = (async () => {
@@ -62,12 +92,12 @@ class WorkerEngine {
62
92
  this.attach(this.spawn());
63
93
  await this.init();
64
94
  if (this.options)
65
- await this.ok({ type: 'configure', options: this.options });
95
+ await this.call({ type: 'configure', options: this.options });
66
96
  })().finally(() => (this.restarting = null)));
67
97
  return this.restarting;
68
98
  }
69
99
  async init() {
70
- const res = await this.call({ type: 'init', wasmUrl: this.wasmUrl });
100
+ const res = await this.call({ type: 'init', module: this.module });
71
101
  if (!res.ok)
72
102
  throw new Error(res.error);
73
103
  this.version = res.version ?? '';
@@ -76,82 +106,160 @@ class WorkerEngine {
76
106
  this.options = options;
77
107
  await this.ok({ type: 'configure', options });
78
108
  }
109
+ destroy() {
110
+ this.fail(new Error('Engine destroyed'));
111
+ this.worker.terminate();
112
+ }
113
+ }
114
+ /** A pool of decoding workers serving one scan session on the main thread. */
115
+ class WorkerPoolEngine {
116
+ constructor(workers) {
117
+ this.workers = workers;
118
+ this.inWorker = true;
119
+ this.session = new SessionCore();
120
+ this.configured = false;
121
+ /** Bumped by `configure`: reports planned with an older configuration are dropped. */
122
+ this.generation = 0;
123
+ this.version = workers[0]?.version ?? '';
124
+ }
125
+ get concurrency() {
126
+ return this.workers.length;
127
+ }
128
+ async configure(options) {
129
+ // Session and decoders must share the configuration: a plan is an index
130
+ // in the decoder's list of fallback strategies.
131
+ this.generation++;
132
+ this.session.configure(options);
133
+ this.configured = true;
134
+ await Promise.all(this.workers.map((w) => w.configure(options)));
135
+ }
79
136
  async processFrame(buffer, width, height, format) {
80
- const res = await this.ok({ type: 'frame', buffer, width, height, format }, [buffer]);
81
- return {
82
- results: (res.ok && res.results) || null,
83
- live: (res.ok && res.live) || [],
84
- decodeMs: (res.ok && res.decodeMs) || 0,
85
- buffer: res.buffer ?? new ArrayBuffer(width * height),
86
- };
137
+ if (!this.configured)
138
+ throw new Error('Engine not configured');
139
+ const generation = this.generation;
140
+ const plan = this.session.plan();
141
+ let res;
142
+ try {
143
+ res = await this.idleWorker().ok({ type: 'decode', buffer, width, height, format, plan }, [buffer]);
144
+ }
145
+ catch (err) {
146
+ // Every plan must be committed, or the scheduler keeps counting it as in flight.
147
+ this.session.commit(emptyReport(plan));
148
+ throw err;
149
+ }
150
+ const returned = res.buffer ?? new ArrayBuffer(width * height);
151
+ if (generation !== this.generation || !res.report) {
152
+ return { results: null, live: [], decodeMs: 0, buffer: returned };
153
+ }
154
+ return { ...this.session.commit(res.report), buffer: returned };
87
155
  }
88
156
  async scanImage(buffer, width, height, format, options) {
89
- const res = await this.ok({ type: 'scan', buffer, width, height, format, options }, [buffer]);
90
- return (res.ok && res.results) || [];
157
+ const res = await this.idleWorker().ok({ type: 'scan', buffer, width, height, format, options }, [
158
+ buffer,
159
+ ]);
160
+ return res.results ?? [];
91
161
  }
92
162
  async reset() {
93
- await this.ok({ type: 'reset' });
163
+ this.session.reset();
94
164
  }
95
165
  async clearCooldown(text) {
96
- await this.ok({ type: 'clearCooldown', text });
166
+ this.session.clearCooldown(text);
97
167
  }
98
168
  destroy() {
99
- this.fail(new Error('Engine destroyed'));
100
- this.worker.terminate();
169
+ for (const w of this.workers)
170
+ w.destroy();
171
+ this.session.destroy();
172
+ }
173
+ idleWorker() {
174
+ const worker = pickWorker(this.workers);
175
+ if (!worker)
176
+ throw new Error('Scanner engine unavailable: every decoding worker failed');
177
+ return worker;
101
178
  }
102
179
  }
180
+ /**
181
+ * The live worker with the fewest requests in progress. Dead workers are
182
+ * skipped: they reject instantly, so they always look the least busy and
183
+ * would otherwise receive most frames.
184
+ */
185
+ export function pickWorker(workers) {
186
+ let best;
187
+ for (const w of workers) {
188
+ if (w.alive && (!best || w.busy < best.busy))
189
+ best = w;
190
+ }
191
+ return best;
192
+ }
193
+ function emptyReport(plan) {
194
+ return { plan, results: [], fallbackRan: false, fallbackRead: false, elapsedMs: 0 };
195
+ }
196
+ /** Everything on the main thread (no Worker support). */
103
197
  class InlineEngine {
104
- constructor(core, simd) {
105
- this.core = core;
106
- this.simd = simd;
198
+ constructor(version) {
199
+ this.version = version;
107
200
  this.inWorker = false;
108
- this.version = core.version;
201
+ this.concurrency = 1;
202
+ this.session = new SessionCore();
203
+ this.decoder = new DecoderCore();
109
204
  }
110
205
  async configure(options) {
111
- this.core.configure(options);
206
+ this.session.configure(options);
112
207
  }
113
208
  async processFrame(buffer, width, height, format) {
114
- return { ...this.core.process(new Uint8Array(buffer), width, height, format), buffer };
209
+ return { ...this.session.process(new Uint8Array(buffer), width, height, format), buffer };
115
210
  }
116
211
  async scanImage(buffer, width, height, format, options) {
117
- return this.core.scan(new Uint8Array(buffer), width, height, format, options);
212
+ return this.decoder.scan(new Uint8Array(buffer), width, height, format, options);
118
213
  }
119
214
  async reset() {
120
- this.core.reset();
215
+ this.session.reset();
121
216
  }
122
217
  async clearCooldown(text) {
123
- this.core.clearCooldown(text);
218
+ this.session.clearCooldown(text);
124
219
  }
125
220
  destroy() {
126
- this.core.destroy();
221
+ this.session.destroy();
222
+ this.decoder.destroy();
127
223
  }
128
224
  }
129
- /** Load the engine, in a Web Worker when possible. */
225
+ /**
226
+ * Load the engine: a pool of Web Workers when possible, else the main thread.
227
+ *
228
+ * Low-level API, for custom pipelines (frames you already have as pixels).
229
+ * Most applications should use `BarcodeReader` or `scanImage`. The `Engine`
230
+ * interface may gain members in minor versions.
231
+ */
130
232
  export async function createEngine(options = {}) {
131
- const simd = simdSupported();
132
- const wasmUrl = new URL(String(options.wasmUrl ?? defaultWasmUrl(simd)), location.href).href;
233
+ const wasmUrl = new URL(String(options.wasmUrl ?? defaultWasmUrl()), location.href).href;
234
+ // Compiled once here: the main thread needs the engine for the session,
235
+ // and the workers instantiate the same module without compiling it again.
236
+ const module = await compileWasm(wasmUrl);
237
+ const version = await loadWasm(module);
133
238
  if (options.worker !== false && typeof Worker !== 'undefined') {
134
239
  const workerUrl = options.workerUrl;
135
240
  const spawn = () => workerUrl
136
241
  ? new Worker(workerUrl, { type: 'module' })
137
242
  : new Worker(new URL('./worker.js', import.meta.url), { type: 'module' });
138
- let engine = null;
243
+ const count = Math.max(1, Math.floor(options.workers ?? defaultWorkerCount()));
244
+ const workers = [];
139
245
  try {
140
- engine = new WorkerEngine(spawn, wasmUrl, simd);
141
- await engine.init();
142
- return engine;
246
+ for (let i = 0; i < count; i++)
247
+ workers.push(new DecoderWorker(spawn, module));
248
+ await Promise.all(workers.map((w) => w.init()));
249
+ return new WorkerPoolEngine(workers);
143
250
  }
144
251
  catch (err) {
145
- engine?.destroy();
252
+ for (const w of workers)
253
+ w.destroy();
146
254
  console.warn('[scanner] Web Worker unavailable, decoding on the main thread:', err);
147
255
  }
148
256
  }
149
- return new InlineEngine(await EngineCore.create(wasmUrl), simd);
257
+ return new InlineEngine(version);
150
258
  }
151
259
  let shared = null;
152
- /** Engine shared by `scanImage` calls. */
260
+ /** Engine shared by `scanImage` calls (one worker is enough for still images). */
153
261
  export function sharedEngine(options) {
154
- shared ?? (shared = createEngine(options).catch((err) => {
262
+ shared ?? (shared = createEngine({ ...options, workers: 1 }).catch((err) => {
155
263
  shared = null;
156
264
  throw err;
157
265
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
package/dist/grabber.d.ts CHANGED
@@ -40,6 +40,34 @@ export declare class CanvasGrabber implements FrameGrabber {
40
40
  destroy(): void;
41
41
  }
42
42
  export declare function createGrabber(backend?: 'auto' | 'webgl' | 'canvas'): FrameGrabber;
43
+ /**
44
+ * `'auto'` backend: WebGL2, unless Canvas 2D is measured to be much faster on
45
+ * this device.
46
+ *
47
+ * WebGL does the crop / luma / downscale on the GPU and reads back 4× less
48
+ * data, asynchronously, so it is the right default. But on some GPUs the
49
+ * readback itself is slow (the fence takes tens of ms to signal), and then
50
+ * the grab limits the frame rate now that decoding runs in parallel. So when
51
+ * the median WebGL grab exceeds `SLOW_GRAB_MS`, Canvas 2D is timed on the
52
+ * next `PROBE_FRAMES` frames and kept only if clearly faster (`drawImage` +
53
+ * `getImageData` run on the main thread, while WebGL waits asynchronously).
54
+ * The decision is made once, from measurements: no device list.
55
+ */
56
+ export declare class AdaptiveGrabber implements FrameGrabber {
57
+ private webgl;
58
+ private makeCanvas;
59
+ private now;
60
+ private active;
61
+ private other;
62
+ private samples;
63
+ private webglMedian;
64
+ private state;
65
+ constructor(webgl: FrameGrabber, makeCanvas: () => FrameGrabber, now?: () => number);
66
+ get kind(): 'webgl' | 'canvas';
67
+ grab(source: TexImageSource, rect: Rect, width: number, height: number, out: Uint8Array): Promise<void>;
68
+ private record;
69
+ destroy(): void;
70
+ }
43
71
  /** BT.601 luma with integer arithmetic (same weights as the GPU path and the engine). */
44
72
  export declare function rgbaToLuma(rgba: Uint8ClampedArray | Uint8Array, out: Uint8Array): void;
45
73
  export declare function sourceSize(source: TexImageSource): [number, number];
@@ -1 +1 @@
1
- {"version":3,"file":"grabber.d.ts","sourceRoot":"","sources":["../src/grabber.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,IAAI;IACnB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAC;IAClC;;;OAGG;IACH,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxG,OAAO,IAAI,IAAI,CAAC;CACjB;AAuCD,qBAAa,YAAa,YAAW,YAAY;IAC/C,QAAQ,CAAC,IAAI,WAAW;IACxB,OAAO,CAAC,EAAE,CAAyB;IACnC,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,GAAG,CAAmB;IAC9B,OAAO,CAAC,GAAG,CAAc;IACzB,OAAO,CAAC,QAAQ,CAA8D;IAC9E,OAAO,CAAC,IAAI,CAAkB;IAC9B,OAAO,CAAC,IAAI,CAAS;IAErB,mDAAmD;IACnD,MAAM,CAAC,MAAM,IAAI,YAAY,GAAG,IAAI;IAkBpC,OAAO;IAiCD,IAAI,CACR,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,UAAU,GACd,OAAO,CAAC,IAAI,CAAC;IA6ChB,OAAO;CASR;AAED,6EAA6E;AAC7E,qBAAa,aAAc,YAAW,YAAY;IAChD,QAAQ,CAAC,IAAI,YAAY;IACzB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,GAAG,CAA+D;;IAOpE,IAAI,CACR,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,UAAU,GACd,OAAO,CAAC,IAAI,CAAC;IAahB,OAAO;CAGR;AAED,wBAAgB,aAAa,CAAC,OAAO,GAAE,MAAM,GAAG,OAAO,GAAG,QAAiB,GAAG,YAAY,CAOzF;AAED,yFAAyF;AACzF,wBAAgB,UAAU,CAAC,IAAI,EAAE,iBAAiB,GAAG,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,IAAI,CAKtF;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAYnE"}
1
+ {"version":3,"file":"grabber.d.ts","sourceRoot":"","sources":["../src/grabber.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,IAAI;IACnB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAC;IAClC;;;OAGG;IACH,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxG,OAAO,IAAI,IAAI,CAAC;CACjB;AAuCD,qBAAa,YAAa,YAAW,YAAY;IAC/C,QAAQ,CAAC,IAAI,WAAW;IACxB,OAAO,CAAC,EAAE,CAAyB;IACnC,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,GAAG,CAAmB;IAC9B,OAAO,CAAC,GAAG,CAAc;IACzB,OAAO,CAAC,QAAQ,CAA8D;IAC9E,OAAO,CAAC,IAAI,CAAkB;IAC9B,OAAO,CAAC,IAAI,CAAS;IAErB,mDAAmD;IACnD,MAAM,CAAC,MAAM,IAAI,YAAY,GAAG,IAAI;IAkBpC,OAAO;IAiCD,IAAI,CACR,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,UAAU,GACd,OAAO,CAAC,IAAI,CAAC;IA6ChB,OAAO;CASR;AAED,6EAA6E;AAC7E,qBAAa,aAAc,YAAW,YAAY;IAChD,QAAQ,CAAC,IAAI,YAAY;IACzB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,GAAG,CAA+D;;IAOpE,IAAI,CACR,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,UAAU,GACd,OAAO,CAAC,IAAI,CAAC;IAahB,OAAO;CAGR;AAED,wBAAgB,aAAa,CAAC,OAAO,GAAE,MAAM,GAAG,OAAO,GAAG,QAAiB,GAAG,YAAY,CAOzF;AASD;;;;;;;;;;;;GAYG;AACH,qBAAa,eAAgB,YAAW,YAAY;IAQhD,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,GAAG;IATb,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,KAAK,CAA6B;IAC1C,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,KAAK,CAA4C;gBAG/C,KAAK,EAAE,YAAY,EACnB,UAAU,EAAE,MAAM,YAAY,EAC9B,GAAG,GAAE,MAAM,MAAgC;IAKrD,IAAI,IAAI,IAAI,OAAO,GAAG,QAAQ,CAE7B;IAEK,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU;IAO7F,OAAO,CAAC,MAAM;IA2Bd,OAAO,IAAI,IAAI;CAIhB;AAOD,yFAAyF;AACzF,wBAAgB,UAAU,CAAC,IAAI,EAAE,iBAAiB,GAAG,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,IAAI,CAMtF;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAYnE"}
package/dist/grabber.js CHANGED
@@ -168,17 +168,95 @@ export function createGrabber(backend = 'auto') {
168
168
  if (backend !== 'canvas') {
169
169
  const gl = WebGLGrabber.create();
170
170
  if (gl)
171
- return gl;
171
+ return backend === 'auto' ? new AdaptiveGrabber(gl, () => new CanvasGrabber()) : gl;
172
172
  if (backend === 'webgl')
173
173
  throw new Error('WebGL2 is not available');
174
174
  }
175
175
  return new CanvasGrabber();
176
176
  }
177
+ /** Frames timed per backend before deciding. */
178
+ const PROBE_FRAMES = 15;
179
+ /** WebGL is kept without probing when its median grab is below this (ms). */
180
+ const SLOW_GRAB_MS = 20;
181
+ /** Canvas 2D must be this much faster to be kept: it blocks the main thread. */
182
+ const CANVAS_WIN_RATIO = 0.6;
183
+ /**
184
+ * `'auto'` backend: WebGL2, unless Canvas 2D is measured to be much faster on
185
+ * this device.
186
+ *
187
+ * WebGL does the crop / luma / downscale on the GPU and reads back 4× less
188
+ * data, asynchronously, so it is the right default. But on some GPUs the
189
+ * readback itself is slow (the fence takes tens of ms to signal), and then
190
+ * the grab limits the frame rate now that decoding runs in parallel. So when
191
+ * the median WebGL grab exceeds `SLOW_GRAB_MS`, Canvas 2D is timed on the
192
+ * next `PROBE_FRAMES` frames and kept only if clearly faster (`drawImage` +
193
+ * `getImageData` run on the main thread, while WebGL waits asynchronously).
194
+ * The decision is made once, from measurements: no device list.
195
+ */
196
+ export class AdaptiveGrabber {
197
+ constructor(webgl, makeCanvas, now = () => performance.now()) {
198
+ this.webgl = webgl;
199
+ this.makeCanvas = makeCanvas;
200
+ this.now = now;
201
+ this.other = null;
202
+ this.samples = [];
203
+ this.webglMedian = 0;
204
+ this.state = 'webgl';
205
+ this.active = webgl;
206
+ }
207
+ get kind() {
208
+ return this.active.kind;
209
+ }
210
+ async grab(source, rect, width, height, out) {
211
+ const grabber = this.active;
212
+ const t0 = this.now();
213
+ await grabber.grab(source, rect, width, height, out);
214
+ if (this.state !== 'decided' && grabber === this.active)
215
+ this.record(this.now() - t0);
216
+ }
217
+ record(ms) {
218
+ this.samples.push(ms);
219
+ if (this.samples.length < PROBE_FRAMES)
220
+ return;
221
+ const median = medianOf(this.samples);
222
+ this.samples = [];
223
+ if (this.state === 'webgl') {
224
+ if (median < SLOW_GRAB_MS) {
225
+ this.state = 'decided';
226
+ return;
227
+ }
228
+ this.webglMedian = median;
229
+ this.other = this.webgl;
230
+ this.active = this.makeCanvas();
231
+ this.state = 'probing';
232
+ return;
233
+ }
234
+ // Probing Canvas 2D: keep it, or go back to WebGL.
235
+ this.state = 'decided';
236
+ if (median < this.webglMedian * CANVAS_WIN_RATIO) {
237
+ this.other?.destroy();
238
+ }
239
+ else {
240
+ this.active.destroy();
241
+ this.active = this.webgl;
242
+ }
243
+ this.other = null;
244
+ }
245
+ destroy() {
246
+ this.active.destroy();
247
+ this.other?.destroy();
248
+ }
249
+ }
250
+ function medianOf(values) {
251
+ const sorted = [...values].sort((a, b) => a - b);
252
+ return sorted[sorted.length >> 1] ?? 0;
253
+ }
177
254
  /** BT.601 luma with integer arithmetic (same weights as the GPU path and the engine). */
178
255
  export function rgbaToLuma(rgba, out) {
179
- const n = out.length;
256
+ const n = Math.min(out.length, rgba.length >> 2);
180
257
  for (let i = 0, j = 0; i < n; i++, j += 4) {
181
- out[i] = (19595 * rgba[j] + 38470 * rgba[j + 1] + 7471 * rgba[j + 2]) >> 16;
258
+ // In bounds by construction (`n`): `?? 0` only satisfies the type checker.
259
+ out[i] = (19595 * (rgba[j] ?? 0) + 38470 * (rgba[j + 1] ?? 0) + 7471 * (rgba[j + 2] ?? 0)) >> 16;
182
260
  }
183
261
  }
184
262
  export function sourceSize(source) {
@@ -1 +1 @@
1
- {"version":3,"file":"grabber.js","sourceRoot":"","sources":["../src/grabber.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"grabber.js","sourceRoot":"","sources":["../src/grabber.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,7 +1,6 @@
1
1
  export { BarcodeReader } from './reader.js';
2
2
  export { scanImage, type ImageInput, type ScanImageOptions } from './scan-image.js';
3
3
  export { createEngine, type Engine, type FrameReply } from './engine.js';
4
- export { simdSupported } from './core.js';
5
4
  export { listCameras } from './camera.js';
6
5
  export type { AssetOptions, BarcodeFormat, CameraOptions, CameraResolution, Detection, EngineOptions, FeedbackOptions, OverlayOptions, Point, ProcessingOptions, ReaderEvents, ReaderOptions, ReaderStats, Region, } from './types.js';
7
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,KAAK,UAAU,EAAE,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACpF,OAAO,EAAE,YAAY,EAAE,KAAK,MAAM,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,YAAY,EACV,YAAY,EACZ,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,eAAe,EACf,cAAc,EACd,KAAK,EACL,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,WAAW,EACX,MAAM,GACP,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,KAAK,UAAU,EAAE,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACpF,OAAO,EAAE,YAAY,EAAE,KAAK,MAAM,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,YAAY,EACV,YAAY,EACZ,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,eAAe,EACf,cAAc,EACd,KAAK,EACL,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,WAAW,EACX,MAAM,GACP,MAAM,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -1,6 +1,5 @@
1
1
  export { BarcodeReader } from './reader.js';
2
2
  export { scanImage } from './scan-image.js';
3
3
  export { createEngine } from './engine.js';
4
- export { simdSupported } from './core.js';
5
4
  export { listCameras } from './camera.js';
6
5
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,SAAS,EAA0C,MAAM,iBAAiB,CAAC;AACpF,OAAO,EAAE,YAAY,EAAgC,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,SAAS,EAA0C,MAAM,iBAAiB,CAAC;AACpF,OAAO,EAAE,YAAY,EAAgC,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"overlay.d.ts","sourceRoot":"","sources":["../src/overlay.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAShE,qBAAa,OAAO;IAgBhB,OAAO,CAAC,IAAI;IAfd,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC;IACjC,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,GAAG,CAAkC;IAC7C,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,QAAQ,CAAoB;IACpC,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,MAAM,CAA+C;IAC7D,OAAO,CAAC,UAAU,CAAgE;IAClF,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,IAAI,CAAkC;IAC9C,OAAO,CAAC,mBAAmB,CAAuB;gBAGxC,IAAI,EAAE,WAAW,EACzB,OAAO,EAAE,cAAc,GAAG,KAAK,GAAG,SAAS;IA8C7C,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAK/B,mDAAmD;IACnD,aAAa,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI;IAOxC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI;IAOxE,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI;IAK5D,iEAAiE;IACjE,MAAM,IAAI,IAAI;IA8Dd,OAAO,IAAI,IAAI;CAMhB"}
1
+ {"version":3,"file":"overlay.d.ts","sourceRoot":"","sources":["../src/overlay.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAShE,qBAAa,OAAO;IAgBhB,OAAO,CAAC,IAAI;IAfd,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC;IACjC,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,GAAG,CAAkC;IAC7C,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,QAAQ,CAAoB;IACpC,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,MAAM,CAA+C;IAC7D,OAAO,CAAC,UAAU,CAAgE;IAClF,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,IAAI,CAAkC;IAC9C,OAAO,CAAC,mBAAmB,CAAuB;gBAGxC,IAAI,EAAE,WAAW,EACzB,OAAO,EAAE,cAAc,GAAG,KAAK,GAAG,SAAS;IA8C7C,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAK/B,mDAAmD;IACnD,aAAa,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI;IAOxC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI;IAOxE,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI;IAK5D,iEAAiE;IACjE,MAAM,IAAI,IAAI;IA+Dd,OAAO,IAAI,IAAI;CAMhB"}
package/dist/overlay.js CHANGED
@@ -112,12 +112,13 @@ export class Preview {
112
112
  ctx.lineWidth = 3;
113
113
  ctx.lineCap = 'round';
114
114
  ctx.beginPath();
115
- for (const [x, y, dx, dy] of [
115
+ const corners = [
116
116
  [rx, ry, 1, 1],
117
117
  [rx + rw, ry, -1, 1],
118
118
  [rx, ry + rh, 1, -1],
119
119
  [rx + rw, ry + rh, -1, -1],
120
- ]) {
120
+ ];
121
+ for (const [x, y, dx, dy] of corners) {
121
122
  ctx.moveTo(x + dx * c, y);
122
123
  ctx.lineTo(x, y);
123
124
  ctx.lineTo(x, y + dy * c);
@@ -144,22 +145,22 @@ export class Preview {
144
145
  }
145
146
  }
146
147
  function drawPolygon(ctx, pts) {
147
- if (pts.length === 0)
148
+ const [first, second] = pts;
149
+ if (!first)
148
150
  return;
149
151
  ctx.beginPath();
150
- if (pts.length === 2) {
152
+ if (pts.length === 2 && second) {
151
153
  // 1D codes report the two ends of the scan line: draw a thick bar.
152
- const [a, b] = pts;
153
154
  ctx.save();
154
155
  ctx.lineWidth = 10;
155
156
  ctx.globalAlpha *= 0.6;
156
- ctx.moveTo(a.x, a.y);
157
- ctx.lineTo(b.x, b.y);
157
+ ctx.moveTo(first.x, first.y);
158
+ ctx.lineTo(second.x, second.y);
158
159
  ctx.stroke();
159
160
  ctx.restore();
160
161
  return;
161
162
  }
162
- ctx.moveTo(pts[0].x, pts[0].y);
163
+ ctx.moveTo(first.x, first.y);
163
164
  for (const p of pts.slice(1))
164
165
  ctx.lineTo(p.x, p.y);
165
166
  ctx.closePath();
@@ -167,10 +168,10 @@ function drawPolygon(ctx, pts) {
167
168
  ctx.stroke();
168
169
  }
169
170
  function withAlpha(color, alpha) {
170
- const m = /^#([0-9a-f]{6})$/i.exec(color);
171
- if (!m)
171
+ const hex = /^#([0-9a-f]{6})$/i.exec(color)?.[1];
172
+ if (!hex)
172
173
  return color;
173
- const n = parseInt(m[1], 16);
174
+ const n = parseInt(hex, 16);
174
175
  return `rgba(${n >> 16},${(n >> 8) & 255},${n & 255},${alpha})`;
175
176
  }
176
177
  function el(tag, css) {