@camera.ui/camera-ui-wasm-motion 0.0.11 → 0.0.13

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.
@@ -1,4 +1,4 @@
1
- export declare const DEFAULT_MOTION_AREA = 500;
2
- export declare const DEFAULT_THRESHOLD = 20;
3
- export declare const DEFAULT_BLUR_RADIUS = 3;
4
- export declare const DEFAULT_DILATION_SIZE = 15;
1
+ export declare const DEFAULT_MOTION_AREA = 400;
2
+ export declare const DEFAULT_THRESHOLD = 50;
3
+ export declare const DEFAULT_BLUR_RADIUS = 5;
4
+ export declare const DEFAULT_DILATION_SIZE = 5;
package/dist/defaults.js CHANGED
@@ -1,5 +1,5 @@
1
- export const DEFAULT_MOTION_AREA = 500;
2
- export const DEFAULT_THRESHOLD = 20;
3
- export const DEFAULT_BLUR_RADIUS = 3;
4
- export const DEFAULT_DILATION_SIZE = 15;
1
+ export const DEFAULT_MOTION_AREA = 400;
2
+ export const DEFAULT_THRESHOLD = 50;
3
+ export const DEFAULT_BLUR_RADIUS = 5;
4
+ export const DEFAULT_DILATION_SIZE = 5;
5
5
  //# sourceMappingURL=defaults.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../src/defaults.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AACvC,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AACpC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AACrC,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,CAAC"}
1
+ {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../src/defaults.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AACvC,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AACpC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AACrC,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC"}
@@ -1,31 +1,22 @@
1
- import type { CameraDevice, CameraStorage, LoggerService, PluginAPI } from '@camera.ui/types';
1
+ import type { CameraDevice, CameraStorage, PluginAPI } from '@camera.ui/types';
2
2
  import type { CameraStorageValues } from './types.js';
3
3
  export declare class CameraDetector {
4
4
  cameraStorage: CameraStorage<CameraStorageValues>;
5
5
  private api;
6
6
  private cameraDevice;
7
- private logger;
7
+ private cameraLogger;
8
8
  private started;
9
9
  private closed;
10
10
  private restarting;
11
- private wasmModule?;
12
- private previousFramePtr;
13
- private framePtr;
14
- private boxesPtr;
15
- private tempPtr;
16
- private visitedPtr;
17
- private queuePtr;
18
- private memoryBuffer;
19
- constructor(cameraDevice: CameraDevice, api: PluginAPI, logger: LoggerService);
11
+ private wasmExports?;
12
+ constructor(cameraDevice: CameraDevice, api: PluginAPI);
20
13
  start(): Promise<void>;
21
- private setupMemory;
22
14
  close(): void;
23
- restart(): Promise<void>;
24
- private reset;
15
+ private initiateWASM;
16
+ private setupMemory;
25
17
  private startDetection;
26
- private setupPreviousFrame;
27
- private getMotionData;
18
+ private restart;
19
+ private detect;
20
+ private defaultSettings;
28
21
  private createCameraStorage;
29
- private unpinSafe;
30
- private collectSafe;
31
22
  }
package/dist/detector.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { instantiate } from '@assemblyscript/loader';
2
- import fs from 'node:fs';
2
+ import { readFileSync } from 'node:fs';
3
3
  import { dirname, resolve } from 'node:path';
4
4
  import { fileURLToPath } from 'node:url';
5
5
  import { DEFAULT_BLUR_RADIUS, DEFAULT_DILATION_SIZE, DEFAULT_MOTION_AREA, DEFAULT_THRESHOLD } from './defaults.js';
@@ -9,22 +9,15 @@ export class CameraDetector {
9
9
  cameraStorage;
10
10
  api;
11
11
  cameraDevice;
12
- logger;
12
+ cameraLogger;
13
13
  started = false;
14
14
  closed = false;
15
15
  restarting = false;
16
- wasmModule;
17
- previousFramePtr = null;
18
- framePtr = 0;
19
- boxesPtr = 0;
20
- tempPtr = 0;
21
- visitedPtr = 0;
22
- queuePtr = 0;
23
- memoryBuffer;
24
- constructor(cameraDevice, api, logger) {
16
+ wasmExports;
17
+ constructor(cameraDevice, api) {
25
18
  this.api = api;
26
19
  this.cameraDevice = cameraDevice;
27
- this.logger = logger;
20
+ this.cameraLogger = cameraDevice.logger;
28
21
  this.cameraStorage = this.createCameraStorage();
29
22
  this.cameraDevice.onConnected.subscribe((connected) => {
30
23
  if (connected) {
@@ -39,84 +32,76 @@ export class CameraDetector {
39
32
  if (!this.started) {
40
33
  this.started = true;
41
34
  this.closed = false;
42
- this.logger.log(`Starting motion detection for camera ${this.cameraDevice.name}`);
43
- if (!this.wasmModule) {
44
- const wasmPath = resolve(__dirname, './wasm/build/detector.wasm');
45
- this.wasmModule = await instantiate(fs.readFileSync(wasmPath), {
46
- console: {
47
- log: (messagePtr) => {
48
- this.logger.log(this.wasmModule.exports.__getString(messagePtr));
49
- },
50
- },
51
- env: {
52
- abort: (msg, file, line, column) => {
53
- this.logger.warn(`WASM abort message: ${this.wasmModule.exports.__getString(msg)} at ${this.wasmModule.exports.__getString(file)}:${line}:${column}`);
54
- },
55
- },
56
- });
57
- this.setupMemory();
58
- }
59
- this.startDetection().catch((error) => {
60
- this.logger.error(this.cameraDevice.name, 'Error generating frames', error);
61
- this.restart();
62
- });
63
- }
64
- }
65
- setupMemory() {
66
- if (!this.wasmModule) {
67
- throw new Error('Wasm not initiated');
35
+ this.cameraLogger.log(this.cameraDevice.name, 'Starting motion detection');
36
+ await this.initiateWASM();
37
+ await this.startDetection();
68
38
  }
69
- this.memoryBuffer = new Uint8Array(this.wasmModule.exports.memory.buffer);
70
- const width = this.cameraDevice.frameWorkerSettings.resolution;
71
- const maxFrameLength = width * width;
72
- this.tempPtr = this.wasmModule.exports.__pin(this.wasmModule.exports.__new(maxFrameLength, this.wasmModule.exports.Uint8Array_ID.value));
73
- this.visitedPtr = this.wasmModule.exports.__pin(this.wasmModule.exports.__new(maxFrameLength, this.wasmModule.exports.Uint8Array_ID.value));
74
- this.queuePtr = this.wasmModule.exports.__pin(this.wasmModule.exports.__new(maxFrameLength * 4, this.wasmModule.exports.Uint8Array_ID.value));
75
- // this.boxesPtr = this.wasmModule.exports.__pin(this.wasmModule.exports.__new(maxFrameLength * 4, this.wasmModule.exports.Uint8Array_ID.value));
76
39
  }
77
40
  close() {
78
41
  if (this.started && !this.closed) {
79
42
  this.started = false;
80
43
  this.closed = true;
81
- this.logger.log(`Stopping motion detection for camera ${this.cameraDevice.name}`);
82
- this.cameraDevice.updateState('motion', { state: false, detections: [] });
44
+ this.cameraLogger.log(this.cameraDevice.name, 'Stopping motion detection');
45
+ // reset wasm?
46
+ }
47
+ }
48
+ async initiateWASM() {
49
+ if (this.wasmExports) {
50
+ return;
51
+ }
52
+ const wasmModule = await instantiate(readFileSync(resolve(__dirname, './wasm/build/detector.wasm')), {
53
+ console: {
54
+ log: (messagePtr) => {
55
+ console.log(this.wasmExports.__getString(messagePtr));
56
+ },
57
+ },
58
+ env: {
59
+ abort: (msgPtr, filePtr, line, column) => {
60
+ const msg = this.wasmExports.__getString(msgPtr);
61
+ const file = this.wasmExports.__getString(filePtr);
62
+ console.error(`Abort called at ${file}:${line}:${column}`, msg);
63
+ },
64
+ },
65
+ });
66
+ this.wasmExports = wasmModule.exports;
67
+ this.setupMemory();
68
+ }
69
+ setupMemory() {
70
+ if (!this.wasmExports) {
71
+ throw new Error('Wasm not initiated');
72
+ }
73
+ const [width, height] = this.cameraDevice.frameWorkerSettings.resolution.split('x').map((v) => parseInt(v, 10));
74
+ this.wasmExports.initialize(width, height);
75
+ }
76
+ async startDetection() {
77
+ try {
78
+ await this.detect();
79
+ }
80
+ catch (error) {
81
+ this.cameraLogger.error(this.cameraDevice.name, 'Error generating frames', error);
82
+ await this.restart();
83
83
  }
84
84
  }
85
85
  async restart() {
86
- if (this.restarting) {
86
+ if (this.restarting || this.closed) {
87
87
  return;
88
88
  }
89
89
  this.restarting = true;
90
- this.logger.log(`Restarting motion detection for camera ${this.cameraDevice.name}`);
91
- this.close();
92
- this.reset();
93
- await new Promise((resolve) => setTimeout(resolve, 1500));
94
- this.wasmModule = undefined;
95
- if (this.cameraDevice.connected) {
96
- await this.start();
97
- }
90
+ this.cameraLogger.log(this.cameraDevice.name, 'Restarting motion detection in 2s...');
91
+ await new Promise((resolve) => setTimeout(resolve, 2000));
98
92
  this.restarting = false;
93
+ if (this.cameraDevice.connected && !this.closed) {
94
+ await this.startDetection();
95
+ }
96
+ else {
97
+ this.cameraLogger.log(this.cameraDevice.name, 'Camera not connected, not restarting');
98
+ }
99
99
  }
100
- reset() {
101
- // Stellen Sie sicher, dass alle Pointer freigegeben werden
102
- this.unpinSafe(this.previousFramePtr);
103
- this.unpinSafe(this.tempPtr);
104
- this.unpinSafe(this.visitedPtr);
105
- this.unpinSafe(this.queuePtr);
106
- this.unpinSafe(this.boxesPtr);
107
- this.unpinSafe(this.framePtr);
108
- // Setzen Sie alle Pointer auf null zurück
109
- this.previousFramePtr = null;
110
- this.framePtr = 0;
111
- this.boxesPtr = 0;
112
- this.tempPtr = 0;
113
- this.visitedPtr = 0;
114
- this.queuePtr = 0;
115
- this.collectSafe();
116
- // Setzen Sie den memoryBuffer zurück
117
- this.memoryBuffer = new Uint8Array();
118
- }
119
- async startDetection() {
100
+ async detect() {
101
+ if (!this.wasmExports) {
102
+ throw new Error('Wasm not initiated');
103
+ }
104
+ const { detectMotion, getNumBoxes, __newArray, __getInt32Array, __pin, __unpin, __collect, Uint8Array_ID } = this.wasmExports;
120
105
  for await (const frame of this.cameraDevice.getFrames()) {
121
106
  if (this.closed || this.restarting) {
122
107
  break;
@@ -129,72 +114,51 @@ export class CameraDetector {
129
114
  format: {
130
115
  to: 'gray',
131
116
  },
117
+ resize: {
118
+ width: 640,
119
+ height: 0,
120
+ },
132
121
  });
133
122
  if (this.closed || this.restarting) {
134
123
  break;
135
124
  }
125
+ const inputPtr = __pin(__newArray(Uint8Array_ID.value, frameImage.image));
126
+ const resultPtr = detectMotion(inputPtr, threshold, blurRadius, dilationSize, motionArea);
127
+ const numBoxes = getNumBoxes();
128
+ const boxesArray = __getInt32Array(resultPtr);
136
129
  const detections = [];
137
- const dets = this.getMotionData(frameImage.image, frameImage.info.width, frameImage.info.height, motionArea, threshold, blurRadius, dilationSize);
138
- for (const det of dets) {
130
+ for (let i = 0; i < numBoxes; i++) {
131
+ const x = boxesArray[i * 4];
132
+ const y = boxesArray[i * 4 + 1];
133
+ const w = boxesArray[i * 4 + 2];
134
+ const h = boxesArray[i * 4 + 3];
139
135
  detections.push({
140
136
  label: 'motion',
141
137
  confidence: 1,
142
- boundingBox: [det[0], det[1], det[2], det[3]],
138
+ boundingBox: [x, y, x + w, y + h],
143
139
  inputWidth: frameImage.info.width,
144
140
  inputHeight: frameImage.info.height,
145
141
  origWidth: frame.metadata.origWidth,
146
142
  origHeight: frame.metadata.origHeight,
147
143
  });
148
144
  }
145
+ __unpin(inputPtr);
146
+ __collect();
149
147
  await this.cameraDevice.updateState('motion', { detections: detections }, frame);
150
148
  }
151
149
  }
152
- setupPreviousFrame(frame, width, height, blurRadius) {
153
- if (this.previousFramePtr !== null) {
154
- this.unpinSafe(this.previousFramePtr);
155
- this.collectSafe();
156
- this.previousFramePtr = null;
150
+ defaultSettings() {
151
+ if (this.cameraStorage.values.area !== DEFAULT_MOTION_AREA) {
152
+ this.cameraStorage.setValue('area', DEFAULT_MOTION_AREA);
157
153
  }
158
- const frameLength = width * height;
159
- const framePtr = this.wasmModule.exports.__pin(this.wasmModule.exports.__newArrayBuffer(frame));
160
- this.wasmModule.exports.stackBlur(framePtr, this.tempPtr, width, height, blurRadius);
161
- this.previousFramePtr = this.wasmModule.exports.__pin(this.wasmModule.exports.__newArrayBuffer(new Uint8Array(this.memoryBuffer.buffer, framePtr, frameLength)));
162
- this.unpinSafe(framePtr);
163
- }
164
- getMotionData(frame, width, height, motionArea, threshold, blurRadius, dilationSize) {
165
- if (!this.wasmModule) {
166
- throw new Error('Wasm not initiated');
154
+ if (this.cameraStorage.values.threshold !== DEFAULT_THRESHOLD) {
155
+ this.cameraStorage.setValue('threshold', DEFAULT_THRESHOLD);
167
156
  }
168
- try {
169
- if (this.previousFramePtr === null) {
170
- this.setupPreviousFrame(frame, width, height, blurRadius);
171
- return [];
172
- }
173
- const frameLength = width * height;
174
- this.framePtr = this.wasmModule.exports.__pin(this.wasmModule.exports.__newArrayBuffer(frame));
175
- this.boxesPtr = this.wasmModule.exports.__pin(this.wasmModule.exports.__new(frameLength, this.wasmModule.exports.Uint8Array_ID.value));
176
- this.wasmModule.exports.stackBlur(this.framePtr, this.tempPtr, width, height, blurRadius);
177
- this.wasmModule.exports.createMotionMask(this.previousFramePtr, this.framePtr, width, height, threshold);
178
- this.wasmModule.exports.dilate(this.framePtr, this.tempPtr, width, height, dilationSize);
179
- const numBoxes = this.wasmModule.exports.findBoundingBoxes(this.framePtr, this.visitedPtr, this.queuePtr, this.boxesPtr, width, height, motionArea);
180
- const boxes = [];
181
- const boxesArray = new Int32Array(this.wasmModule.exports.memory.buffer, this.boxesPtr, numBoxes * 4);
182
- for (let i = 0; i < numBoxes; i++) {
183
- const x = boxesArray[i * 4];
184
- const y = boxesArray[i * 4 + 1];
185
- const w = boxesArray[i * 4 + 2];
186
- const h = boxesArray[i * 4 + 3];
187
- boxes.push([x, y, x + w, y + h]);
188
- }
189
- this.unpinSafe(this.framePtr);
190
- this.unpinSafe(this.boxesPtr);
191
- this.collectSafe();
192
- this.setupPreviousFrame(frame, width, height, blurRadius);
193
- return boxes;
157
+ if (this.cameraStorage.values.blurRadius !== DEFAULT_BLUR_RADIUS) {
158
+ this.cameraStorage.setValue('blurRadius', DEFAULT_BLUR_RADIUS);
194
159
  }
195
- catch (error) {
196
- this.logger.error(this.cameraDevice.name, 'Error generating frames', error);
197
- return [];
160
+ if (this.cameraStorage.values.dilationSize !== DEFAULT_DILATION_SIZE) {
161
+ this.cameraStorage.setValue('dilationSize', DEFAULT_DILATION_SIZE);
198
162
  }
199
163
  }
200
164
  createCameraStorage() {
@@ -211,8 +175,7 @@ export class CameraDetector {
211
175
  step: 1,
212
176
  required: true,
213
177
  onSet: async (newValue, oldValue) => {
214
- this.logger.log(this.cameraDevice.name, `Motion area changed from ${oldValue} to ${newValue}`);
215
- this.restart();
178
+ this.cameraLogger.log(this.cameraDevice.name, `Motion area changed from ${oldValue} to ${newValue}`);
216
179
  },
217
180
  },
218
181
  threshold: {
@@ -227,8 +190,7 @@ export class CameraDetector {
227
190
  step: 1,
228
191
  required: true,
229
192
  onSet: async (newValue, oldValue) => {
230
- this.logger.log(this.cameraDevice.name, `Motion threshold changed from ${oldValue} to ${newValue}`);
231
- this.restart();
193
+ this.cameraLogger.log(this.cameraDevice.name, `Motion threshold changed from ${oldValue} to ${newValue}`);
232
194
  },
233
195
  },
234
196
  blurRadius: {
@@ -243,8 +205,7 @@ export class CameraDetector {
243
205
  step: 1,
244
206
  required: true,
245
207
  onSet: async (newValue, oldValue) => {
246
- this.logger.log(this.cameraDevice.name, `Motion blur radius changed from ${oldValue} to ${newValue}`);
247
- this.restart();
208
+ this.cameraLogger.log(this.cameraDevice.name, `Motion blur radius changed from ${oldValue} to ${newValue}`);
248
209
  },
249
210
  },
250
211
  dilationSize: {
@@ -259,30 +220,20 @@ export class CameraDetector {
259
220
  step: 1,
260
221
  required: true,
261
222
  onSet: async (newValue, oldValue) => {
262
- this.logger.log(this.cameraDevice.name, `Motion dilation size changed from ${oldValue} to ${newValue}`);
263
- this.restart();
223
+ this.cameraLogger.log(this.cameraDevice.name, `Motion dilation size changed from ${oldValue} to ${newValue}`);
224
+ },
225
+ },
226
+ reset: {
227
+ type: 'button',
228
+ title: 'Default Settings',
229
+ key: 'default',
230
+ description: 'Reset motion detection settings to default',
231
+ onSet: async () => {
232
+ this.defaultSettings();
264
233
  },
265
234
  },
266
235
  });
267
236
  return cameraStorage;
268
237
  }
269
- unpinSafe(ptr) {
270
- if (ptr !== null) {
271
- try {
272
- this.wasmModule.exports.__unpin(ptr);
273
- }
274
- catch {
275
- //
276
- }
277
- }
278
- }
279
- collectSafe() {
280
- try {
281
- this.wasmModule.exports.__collect();
282
- }
283
- catch {
284
- //
285
- }
286
- }
287
238
  }
288
239
  //# sourceMappingURL=detector.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"detector.js","sourceRoot":"","sources":["../src/detector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"detector.js","sourceRoot":"","sources":["../src/detector.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -46,7 +46,7 @@ export default class WASMMotion {
46
46
  }
47
47
  }
48
48
  createDetector(cameraDevice) {
49
- const detector = new CameraDetector(cameraDevice, this.api, this.logger);
49
+ const detector = new CameraDetector(cameraDevice, this.api);
50
50
  this.detectors.set(cameraDevice.id, detector);
51
51
  }
52
52
  removeDetector(cameraId) {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -13,54 +13,120 @@ declare namespace __AdaptedExports {
13
13
  */
14
14
  export function log(s: string): void;
15
15
  /**
16
- * assembly/index/resetStackPool
16
+ * assembly/index/initialize
17
+ * @param w `i32`
18
+ * @param h `i32`
19
+ */
20
+ export function initialize(w: number, h: number): void;
21
+ /**
22
+ * assembly/index/detectMotion
23
+ * @param inputFrame `~lib/typedarray/Uint8Array`
24
+ * @param threshold `i32`
17
25
  * @param radius `i32`
26
+ * @param dilationSize `i32`
27
+ * @param minArea `i32`
28
+ * @returns `~lib/typedarray/Int32Array`
29
+ */
30
+ export function detectMotion(inputFrame: Uint8Array, threshold: number, radius: number, dilationSize: number, minArea: number): Int32Array;
31
+ /**
32
+ * assembly/index/getNumBoxes
33
+ * @returns `i32`
18
34
  */
19
- export function resetStackPool(radius: number): void;
35
+ export function getNumBoxes(): number;
36
+ /** assembly/index/Uint8Array_ID */
37
+ export const Uint8Array_ID: {
38
+ /** @type `u32` */
39
+ get value(): number
40
+ };
20
41
  /**
21
- * assembly/index/stackBlur
42
+ * assembly/test/blurFrameSIMD
22
43
  * @param framePtr `usize`
23
- * @param tempPtr `usize`
44
+ * @param tempFramePtr `usize`
24
45
  * @param width `i32`
25
46
  * @param height `i32`
26
47
  * @param radius `i32`
27
48
  */
28
- export function stackBlur(framePtr: number, tempPtr: number, width: number, height: number, radius: number): void;
49
+ export function blurFrameSIMD(framePtr: number, tempFramePtr: number, width: number, height: number, radius: number): void;
29
50
  /**
30
- * assembly/index/createMotionMask
31
- * @param frame1Ptr `usize`
32
- * @param frame2Ptr `usize`
51
+ * assembly/test/detectMotionSIMD
52
+ * @param prevFramePtr `usize`
53
+ * @param currentFramePtr `usize`
33
54
  * @param width `i32`
34
55
  * @param height `i32`
35
56
  * @param threshold `i32`
57
+ * @param motionMaskPtr `usize`
36
58
  */
37
- export function createMotionMask(frame1Ptr: number, frame2Ptr: number, width: number, height: number, threshold: number): void;
59
+ export function detectMotionSIMD(prevFramePtr: number, currentFramePtr: number, width: number, height: number, threshold: number, motionMaskPtr: number): void;
38
60
  /**
39
- * assembly/index/dilate
40
- * @param framePtr `usize`
41
- * @param tempPtr `usize`
61
+ * assembly/test/dilateMotionMask
62
+ * @param motionMaskPtr `usize`
63
+ * @param tempMaskPtr `usize`
42
64
  * @param width `i32`
43
65
  * @param height `i32`
44
- * @param size `i32`
66
+ * @param dilationSize `i32`
45
67
  */
46
- export function dilate(framePtr: number, tempPtr: number, width: number, height: number, size: number): void;
68
+ export function dilateMotionMask(motionMaskPtr: number, tempMaskPtr: number, width: number, height: number, dilationSize: number): void;
47
69
  /**
48
- * assembly/index/findBoundingBoxes
49
- * @param framePtr `usize`
70
+ * assembly/test/calculateBoundingBoxes
71
+ * @param motionMaskPtr `usize`
50
72
  * @param visitedPtr `usize`
51
- * @param queuePtr `usize`
52
- * @param boxesPtr `usize`
53
73
  * @param width `i32`
54
74
  * @param height `i32`
55
- * @param minArea `i32`
75
+ * @param motionArea `i32`
76
+ * @param boundingBoxesPtr `usize`
77
+ * @param stackXPtr `usize`
78
+ * @param stackYPtr `usize`
56
79
  * @returns `i32`
57
80
  */
58
- export function findBoundingBoxes(framePtr: number, visitedPtr: number, queuePtr: number, boxesPtr: number, width: number, height: number, minArea: number): number;
81
+ export function calculateBoundingBoxes(motionMaskPtr: number, visitedPtr: number, width: number, height: number, motionArea: number, boundingBoxesPtr: number, stackXPtr: number, stackYPtr: number): number;
59
82
  /**
60
- * assembly/index/detectMotion
83
+ * assembly/test/calculateBoundingBoxesSIMD
84
+ * @param motionMaskPtr `usize`
85
+ * @param visitedPtr `usize`
86
+ * @param width `i32`
87
+ * @param height `i32`
88
+ * @param motionArea `i32`
89
+ * @param boundingBoxesPtr `usize`
90
+ * @param stackXPtr `usize`
91
+ * @param stackYPtr `usize`
92
+ * @returns `i32`
93
+ */
94
+ export function calculateBoundingBoxesSIMD(motionMaskPtr: number, visitedPtr: number, width: number, height: number, motionArea: number, boundingBoxesPtr: number, stackXPtr: number, stackYPtr: number): number;
95
+ /**
96
+ * assembly/test2/detectMotion
97
+ * @param prevFramePtr `usize`
98
+ * @param curFramePtr `usize`
99
+ * @param blurFrame1Ptr `usize`
100
+ * @param blurFrame2Ptr `usize`
101
+ * @param motionMaskPtr `usize`
102
+ * @param dilateMaskPtr `usize`
103
+ * @param boundingBoxesPtr `usize`
104
+ * @param width `i32`
105
+ * @param height `i32`
106
+ * @param blurRadius `i32`
107
+ * @param threshold `i32`
108
+ * @param dilationSize `i32`
109
+ * @param motionArea `i32`
110
+ * @returns `i32`
111
+ */
112
+ export function detectMotion(prevFramePtr: number, curFramePtr: number, blurFrame1Ptr: number, blurFrame2Ptr: number, motionMaskPtr: number, dilateMaskPtr: number, boundingBoxesPtr: number, width: number, height: number, blurRadius: number, threshold: number, dilationSize: number, motionArea: number): number;
113
+ /**
114
+ * assembly/test3/blurFrame
115
+ * @param framePtr `usize`
116
+ * @param blurPtr `usize`
117
+ * @param width `i32`
118
+ * @param height `i32`
119
+ * @param radius `i32`
120
+ */
121
+ export function blurFrame(framePtr: number, blurPtr: number, width: number, height: number, radius: number): void;
122
+ /**
123
+ * assembly/test3/detectMotion
61
124
  * @param frame1Ptr `usize`
62
125
  * @param frame2Ptr `usize`
63
- * @param tempPtr `usize`
126
+ * @param blurredFrame1Ptr `usize`
127
+ * @param blurredFrame2Ptr `usize`
128
+ * @param maskPtr `usize`
129
+ * @param dilatePtr `usize`
64
130
  * @param visitedPtr `usize`
65
131
  * @param queuePtr `usize`
66
132
  * @param boxesPtr `usize`
@@ -72,17 +138,7 @@ declare namespace __AdaptedExports {
72
138
  * @param motionArea `i32`
73
139
  * @returns `i32`
74
140
  */
75
- export function detectMotion(frame1Ptr: number, frame2Ptr: number, tempPtr: number, visitedPtr: number, queuePtr: number, boxesPtr: number, width: number, height: number, blurRadius: number, dilationSize: number, motionThreshold: number, motionArea: number): number;
76
- /** assembly/index/Uint8Array_ID */
77
- export const Uint8Array_ID: {
78
- /** @type `u32` */
79
- get value(): number
80
- };
81
- /** assembly/index/Int32Array_ID */
82
- export const Int32Array_ID: {
83
- /** @type `u32` */
84
- get value(): number
85
- };
141
+ export function detectMotion(frame1Ptr: number, frame2Ptr: number, blurredFrame1Ptr: number, blurredFrame2Ptr: number, maskPtr: number, dilatePtr: number, visitedPtr: number, queuePtr: number, boxesPtr: number, width: number, height: number, blurRadius: number, dilationSize: number, motionThreshold: number, motionArea: number): number;
86
142
  }
87
143
  /** Instantiates the compiled WebAssembly module with the given imports. */
88
144
  export declare function instantiate(module: WebAssembly.Module, imports: {
@@ -30,6 +30,11 @@ export async function instantiate(module, imports = {}) {
30
30
  s = __lowerString(s) || __notnull();
31
31
  exports.log(s);
32
32
  },
33
+ detectMotion(inputFrame, threshold, radius, dilationSize, minArea) {
34
+ // assembly/index/detectMotion(~lib/typedarray/Uint8Array, i32, i32, i32, i32) => ~lib/typedarray/Int32Array
35
+ inputFrame = __lowerTypedArray(Uint8Array, 4, 0, inputFrame) || __notnull();
36
+ return __liftTypedArray(Int32Array, exports.detectMotion(inputFrame, threshold, radius, dilationSize, minArea) >>> 0);
37
+ },
33
38
  Uint8Array_ID: {
34
39
  // assembly/index/Uint8Array_ID: u32
35
40
  valueOf() { return this.value; },
@@ -37,13 +42,6 @@ export async function instantiate(module, imports = {}) {
37
42
  return exports.Uint8Array_ID.value >>> 0;
38
43
  }
39
44
  },
40
- Int32Array_ID: {
41
- // assembly/index/Int32Array_ID: u32
42
- valueOf() { return this.value; },
43
- get value() {
44
- return exports.Int32Array_ID.value >>> 0;
45
- }
46
- },
47
45
  }, exports);
48
46
  function __liftString(pointer) {
49
47
  if (!pointer) return null;
@@ -65,8 +63,46 @@ export async function instantiate(module, imports = {}) {
65
63
  for (let i = 0; i < length; ++i) memoryU16[(pointer >>> 1) + i] = value.charCodeAt(i);
66
64
  return pointer;
67
65
  }
66
+ function __liftTypedArray(constructor, pointer) {
67
+ if (!pointer) return null;
68
+ return new constructor(
69
+ memory.buffer,
70
+ __getU32(pointer + 4),
71
+ __dataview.getUint32(pointer + 8, true) / constructor.BYTES_PER_ELEMENT
72
+ ).slice();
73
+ }
74
+ function __lowerTypedArray(constructor, id, align, values) {
75
+ if (values == null) return 0;
76
+ const
77
+ length = values.length,
78
+ buffer = exports.__pin(exports.__new(length << align, 1)) >>> 0,
79
+ header = exports.__new(12, id) >>> 0;
80
+ __setU32(header + 0, buffer);
81
+ __dataview.setUint32(header + 4, buffer, true);
82
+ __dataview.setUint32(header + 8, length << align, true);
83
+ new constructor(memory.buffer, buffer, length).set(values);
84
+ exports.__unpin(buffer);
85
+ return header;
86
+ }
68
87
  function __notnull() {
69
88
  throw TypeError("value must not be null");
70
89
  }
90
+ let __dataview = new DataView(memory.buffer);
91
+ function __setU32(pointer, value) {
92
+ try {
93
+ __dataview.setUint32(pointer, value, true);
94
+ } catch {
95
+ __dataview = new DataView(memory.buffer);
96
+ __dataview.setUint32(pointer, value, true);
97
+ }
98
+ }
99
+ function __getU32(pointer) {
100
+ try {
101
+ return __dataview.getUint32(pointer, true);
102
+ } catch {
103
+ __dataview = new DataView(memory.buffer);
104
+ return __dataview.getUint32(pointer, true);
105
+ }
106
+ }
71
107
  return adaptedExports;
72
108
  }
Binary file
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "displayName": "WASM Motion",
3
3
  "name": "@camera.ui/camera-ui-wasm-motion",
4
- "version": "0.0.11",
4
+ "version": "0.0.13",
5
5
  "description": "camera.ui wasm motion detection plugin",
6
6
  "author": "seydx (https://github.com/seydx/camera.ui)",
7
7
  "main": "./dist/index.js",
@@ -15,17 +15,21 @@
15
15
  "install-updates": "npm i --save",
16
16
  "prepublishOnly": "npm i --package-lock-only && npm run lint && npm run format && npm run build"
17
17
  },
18
+ "dependencies": {
19
+ "@assemblyscript/loader": "^0.27.30",
20
+ "as-wasi": "^0.6.0"
21
+ },
18
22
  "devDependencies": {
19
- "@camera.ui/types": "^0.0.71",
23
+ "@camera.ui/types": "^0.0.77",
20
24
  "@rushstack/eslint-patch": "^1.10.4",
21
25
  "@types/fs-extra": "^11.0.4",
22
- "@types/node": "^22.5.4",
26
+ "@types/node": "^22.7.6",
23
27
  "@types/ws": "^8.5.12",
24
- "@typescript-eslint/eslint-plugin": "^8.5.0",
25
- "@typescript-eslint/parser": "^8.5.0",
26
- "assemblyscript": "^0.27.29",
28
+ "@typescript-eslint/eslint-plugin": "^8.10.0",
29
+ "@typescript-eslint/parser": "^8.10.0",
30
+ "assemblyscript": "^0.27.30",
27
31
  "assemblyscript-prettier": "^3.0.1",
28
- "concurrently": "^9.0.0",
32
+ "concurrently": "^9.0.1",
29
33
  "copyfiles": "^2.4.1",
30
34
  "eslint": "8.57.0",
31
35
  "eslint-config-prettier": "^9.1.0",
@@ -35,14 +39,14 @@
35
39
  "rimraf": "^6.0.1",
36
40
  "set-interval-async": "^3.0.3",
37
41
  "sharp": "^0.33.5",
38
- "typescript": "^5.6.2",
42
+ "typescript": "^5.6.3",
39
43
  "updates": "^16.4.0"
40
44
  },
41
45
  "bugs": {
42
46
  "url": "https://github.com/seydx/camera.ui/issues"
43
47
  },
44
48
  "engines": {
45
- "camera.ui": ">=0.0.31-alpha.1",
49
+ "camera.ui": ">=0.0.34-alpha.2",
46
50
  "node": ">=20.17.0"
47
51
  },
48
52
  "homepage": "https://github.com/seydx/camera.ui#readme",
@@ -59,10 +63,9 @@
59
63
  },
60
64
  "camera.ui": {
61
65
  "extension": "motionDetection",
62
- "dependencies": []
63
- },
64
- "dependencies": {
65
- "@assemblyscript/loader": "^0.27.29",
66
- "as-wasi": "^0.6.0"
66
+ "dependencies": [],
67
+ "options": {
68
+ "extendedMotionDetection": false
69
+ }
67
70
  }
68
71
  }