@zappar/zappar-cv 3.3.0-beta.1 → 3.4.0-beta.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 (146) hide show
  1. package/README.md +2 -2
  2. package/lib/bridged-camera-source.d.ts +2 -0
  3. package/lib/bridged-camera-source.js +13 -0
  4. package/lib/bridged-message.d.ts +1 -0
  5. package/lib/bridged-world-tracker.js +8 -6
  6. package/lib/camera-frame-data.d.ts +1 -2
  7. package/lib/ceres-worker.d.ts +1 -1
  8. package/lib/ceres-worker.js +5 -5
  9. package/lib/gen/zappar-bridge.d.ts +3 -1
  10. package/lib/gen/zappar-client.js +100 -71
  11. package/lib/gen/zappar-cwrap.js +27 -6
  12. package/lib/gen/zappar-native.d.ts +6 -3
  13. package/lib/gen/zappar-native.js +1 -0
  14. package/lib/gen/zappar-server.js +80 -68
  15. package/lib/gen/zappar.d.ts +3 -1
  16. package/lib/html-element-source.js +3 -4
  17. package/lib/index-standalone.js +1 -1
  18. package/lib/mstp-camera-source.d.ts +3 -0
  19. package/lib/mstp-camera-source.js +21 -0
  20. package/lib/native.js +20 -14
  21. package/lib/options.d.ts +2 -1
  22. package/lib/pipeline.d.ts +1 -0
  23. package/lib/pipeline.js +13 -0
  24. package/lib/profile.js +1 -2
  25. package/lib/src/additional.d.ts +49 -0
  26. package/lib/src/android-bridge-message-handler.d.ts +15 -0
  27. package/lib/src/array-from-string.d.ts +2 -0
  28. package/lib/src/bridged-camera-source.d.ts +53 -0
  29. package/lib/src/bridged-d3-tracker.d.ts +18 -0
  30. package/lib/src/bridged-message-parser.d.ts +12 -0
  31. package/lib/src/bridged-message.d.ts +79 -0
  32. package/lib/src/bridged-world-tracker.d.ts +21 -0
  33. package/lib/src/camera-frame-data.d.ts +10 -0
  34. package/lib/src/camera-source-map.d.ts +11 -0
  35. package/lib/src/camera-source.d.ts +28 -0
  36. package/lib/src/cameramodel.d.ts +2 -0
  37. package/lib/src/ceres-worker.d.ts +1 -0
  38. package/lib/src/compatibility.d.ts +5 -0
  39. package/lib/src/data-download.d.ts +8 -0
  40. package/lib/src/deserializer.d.ts +41 -0
  41. package/lib/src/direct.d.ts +3 -0
  42. package/lib/src/drawaxis.d.ts +2 -0
  43. package/lib/src/drawcamera.d.ts +12 -0
  44. package/lib/src/drawface.d.ts +16 -0
  45. package/lib/src/drawfaceproject.d.ts +15 -0
  46. package/lib/src/drawgrid.d.ts +2 -0
  47. package/lib/src/drawmesh.d.ts +14 -0
  48. package/lib/src/drawplane.d.ts +2 -0
  49. package/lib/src/drawpoints.d.ts +11 -0
  50. package/lib/src/drawpointswithtype.d.ts +13 -0
  51. package/lib/src/drawpolygon.d.ts +5 -0
  52. package/lib/src/drawpreviewmesh.d.ts +16 -0
  53. package/lib/src/drawquad.d.ts +2 -0
  54. package/lib/src/event.d.ts +30 -0
  55. package/lib/src/facelandmark.d.ts +11 -0
  56. package/lib/src/facelandmarkdata.d.ts +4 -0
  57. package/lib/src/facelandmarkinterface.d.ts +5 -0
  58. package/lib/src/facemesh.d.ts +27 -0
  59. package/lib/src/gen/zappar-bridge.d.ts +182 -0
  60. package/lib/src/gen/zappar-client.d.ts +26 -0
  61. package/lib/src/gen/zappar-cwrap.d.ts +12 -0
  62. package/lib/src/gen/zappar-native.d.ts +256 -0
  63. package/lib/src/gen/zappar-server.d.ts +50 -0
  64. package/lib/src/gen/zappar.d.ts +311 -0
  65. package/lib/src/gfx.d.ts +1 -0
  66. package/lib/src/gl-state-manager.d.ts +9 -0
  67. package/lib/src/html-element-source.d.ts +42 -0
  68. package/lib/src/image-process-gl.d.ts +40 -0
  69. package/lib/src/imagebitmap-camera-source.d.ts +39 -0
  70. package/lib/src/imagetracker-previewmesh.d.ts +2 -0
  71. package/lib/src/imagetracker.d.ts +43 -0
  72. package/lib/src/index-standalone.d.ts +3 -0
  73. package/lib/src/index.d.ts +7 -0
  74. package/lib/src/landmarkdatagenerate.d.ts +2 -0
  75. package/lib/src/loglevel.d.ts +5 -0
  76. package/lib/src/messages.d.ts +13 -0
  77. package/lib/src/mstp-camera-source.d.ts +44 -0
  78. package/lib/src/native.d.ts +3 -0
  79. package/lib/src/options.d.ts +5 -0
  80. package/lib/src/permission.d.ts +12 -0
  81. package/lib/src/pipeline.d.ts +88 -0
  82. package/lib/src/profile.d.ts +24 -0
  83. package/lib/src/riff-reader.d.ts +18 -0
  84. package/lib/src/sequencerecorder.d.ts +99 -0
  85. package/lib/src/sequencesource.d.ts +25 -0
  86. package/lib/src/serializer.d.ts +60 -0
  87. package/lib/src/shader.d.ts +2 -0
  88. package/lib/src/source.d.ts +22 -0
  89. package/lib/src/tr.d.ts +6 -0
  90. package/lib/src/tracing/jsontracer.d.ts +14 -0
  91. package/lib/src/tracing/performancetracer.d.ts +11 -0
  92. package/lib/src/tracing/sharedtracer.d.ts +2 -0
  93. package/lib/src/tracing/usertimingtracer.d.ts +10 -0
  94. package/lib/src/version.d.ts +1 -0
  95. package/lib/src/worker-client.d.ts +4 -0
  96. package/lib/src/worker-imagebitmap.d.ts +5 -0
  97. package/lib/src/worker-messages.d.ts +11 -0
  98. package/lib/src/worker-server.d.ts +3 -0
  99. package/lib/src/worker.d.ts +1 -0
  100. package/lib/src/workerinterface.d.ts +110 -0
  101. package/lib/src/yuv-conversion-gl.d.ts +44 -0
  102. package/lib/tests/barcode-finder.d.ts +1 -0
  103. package/lib/tests/camera-data-raw.d.ts +1 -0
  104. package/lib/tests/camera-data-rgb.d.ts +1 -0
  105. package/lib/tests/camera-far-near.d.ts +1 -0
  106. package/lib/tests/camera-only.d.ts +1 -0
  107. package/lib/tests/common.d.ts +15 -0
  108. package/lib/tests/d3-tracking.d.ts +1 -0
  109. package/lib/tests/drawanchor.d.ts +3 -0
  110. package/lib/tests/face-landmarks.d.ts +1 -0
  111. package/lib/tests/face-tracking.d.ts +1 -0
  112. package/lib/tests/image-tracking-cylinder.d.ts +1 -0
  113. package/lib/tests/image-tracking-preview-mesh.d.ts +1 -0
  114. package/lib/tests/image-tracking.d.ts +1 -0
  115. package/lib/tests/instant-tracking.d.ts +1 -0
  116. package/lib/tests/no-rendering.d.ts +1 -0
  117. package/lib/tests/sequence-preview.d.ts +1 -0
  118. package/lib/tests/two-pipelines.d.ts +1 -0
  119. package/lib/tests/video-face-tracking.d.ts +1 -0
  120. package/lib/tests/world-tracking-camera-offset-anchor.d.ts +1 -0
  121. package/lib/tests/world-tracking-meshes.d.ts +1 -0
  122. package/lib/tests/world-tracking-plane-offset-anchor.d.ts +1 -0
  123. package/lib/tests/world-tracking.d.ts +1 -0
  124. package/lib/tests/zapcode-tracking.d.ts +1 -0
  125. package/lib/version.d.ts +1 -1
  126. package/lib/version.js +1 -1
  127. package/lib/worker-client.d.ts +1 -1
  128. package/lib/worker-client.js +23 -9
  129. package/lib/worker-messages.d.ts +2 -1
  130. package/lib/worker-messages.js +2 -1
  131. package/lib/worker-server.js +27 -10
  132. package/lib/workerinterface.d.ts +2 -1
  133. package/lib/zappar-cv.js +1 -1
  134. package/lib/zappar-cv.wasm +0 -0
  135. package/package.json +2 -4
  136. package/umd/169.zappar-cv.js +0 -1
  137. package/umd/25.zappar-cv.js +0 -1
  138. package/umd/287.zappar-cv.js +0 -1
  139. package/umd/482727c0e7dd40d73f5a.zbin +0 -0
  140. package/umd/670905e7f3a8925b89cb.wasm +0 -0
  141. package/umd/867.zappar-cv.js +0 -1
  142. package/umd/b4f46e148a3b3b5aef90.zbin +0 -0
  143. package/umd/f7b62a3a53b5c9b3222b.zbin +0 -0
  144. package/umd/zappar-cv-ceres.worker.js +0 -1
  145. package/umd/zappar-cv.js +0 -1
  146. package/umd/zappar-cv.worker.js +0 -1
@@ -0,0 +1,2 @@
1
+ export declare function compileShader(gl: WebGLRenderingContext, type: number, src: string): WebGLShader;
2
+ export declare function linkProgram(gl: WebGLRenderingContext, prog: WebGLProgram): void;
@@ -0,0 +1,22 @@
1
+ /// <reference types="dom-webcodecs" />
2
+ export interface CameraFrameInfo {
3
+ rgbFrame?: ImageBitmap | VideoFrame | ImageData;
4
+ data?: ArrayBuffer;
5
+ texture: WebGLTexture | undefined;
6
+ dataWidth: number;
7
+ dataHeight: number;
8
+ cameraModel: Float32Array;
9
+ cameraToDevice: Float32Array;
10
+ cameraSource: Source;
11
+ cameraSourceData?: any;
12
+ uvTransform?: Float32Array;
13
+ userFacing: boolean;
14
+ remoteToken?: number;
15
+ frame?: VideoFrame | ImageBitmap;
16
+ }
17
+ export declare abstract class Source {
18
+ abstract getFrame(currentlyProcessing: boolean): void;
19
+ abstract pause(): void;
20
+ abstract uploadGL(info: CameraFrameInfo): void;
21
+ recycle?(info: CameraFrameInfo): void;
22
+ }
@@ -0,0 +1,6 @@
1
+ export declare enum STRINGS {
2
+ PermissionTitle = 0,
3
+ PermissionDescription = 1,
4
+ PermissionButton = 2
5
+ }
6
+ export declare function tr(str: STRINGS): string;
@@ -0,0 +1,14 @@
1
+ import { PerformanceTracer } from "./performancetracer";
2
+ export declare class JSONTracer implements PerformanceTracer {
3
+ private stackDepth;
4
+ private events;
5
+ private static beginTemplate;
6
+ private static endTemplate;
7
+ private static namingEvents;
8
+ constructor();
9
+ clear(): void;
10
+ toJSON(): string;
11
+ postJSON(url: string): void;
12
+ start(name: string): void;
13
+ end(): void;
14
+ }
@@ -0,0 +1,11 @@
1
+ export interface PerformanceTracer {
2
+ clear: () => void;
3
+ start: (name: string) => void;
4
+ end: () => void;
5
+ }
6
+ export declare class PerformanceTracerManager implements PerformanceTracer {
7
+ tracers: PerformanceTracer[];
8
+ clear(): void;
9
+ start(name: string): void;
10
+ end(): void;
11
+ }
@@ -0,0 +1,2 @@
1
+ import { PerformanceTracerManager } from "./performancetracer";
2
+ export declare function getSharedTracer(): PerformanceTracerManager;
@@ -0,0 +1,10 @@
1
+ import { PerformanceTracer } from "./performancetracer";
2
+ export declare class UserTimingTracer implements PerformanceTracer {
3
+ private useFixedName;
4
+ private markCount;
5
+ private traceStack;
6
+ constructor(useFixedName?: boolean);
7
+ clear(): void;
8
+ start(name: string): void;
9
+ end(): void;
10
+ }
@@ -0,0 +1 @@
1
+ export declare const VERSION = "3.4.0-beta.0";
@@ -0,0 +1,4 @@
1
+ import { MsgManager } from "./messages";
2
+ export declare let messageManager: MsgManager;
3
+ export declare function launchWorker(worker?: Worker): Promise<void>;
4
+ export declare function launchCeresWorkers(port0: MessagePort, port1: MessagePort, worker0?: Worker, worker1?: Worker): Promise<void>;
@@ -0,0 +1,5 @@
1
+ import { zappar_cwrap } from "./gen/zappar-native";
2
+ import { zappar_server } from "./gen/zappar-server";
3
+ import { MsgManager } from "./messages";
4
+ import { ImageBitmapC2S } from "./workerinterface";
5
+ export declare function handleImageBitmap(m: ImageBitmapC2S, r: zappar_cwrap, server: zappar_server, mgr: MsgManager): void;
@@ -0,0 +1,11 @@
1
+ import type * as ZNM from "./zappar-cv";
2
+ export interface WorkerMessageAPI {
3
+ worker_message_send_count: () => number;
4
+ worker_message_send_clear: () => void;
5
+ worker_message_send_data_size: (index: number) => number;
6
+ worker_message_send_data: (index: number) => number;
7
+ worker_message_send_reference: (index: number) => number;
8
+ worker_message_send_instance: (index: number) => number;
9
+ worker_message_receive: (ref: number, size: number, data: number, instance: number) => void;
10
+ }
11
+ export declare function getWorkerMessageAPI(mod: ZNM.Module): WorkerMessageAPI;
@@ -0,0 +1,3 @@
1
+ import { MsgManager } from "./messages";
2
+ export declare let messageManager: MsgManager;
3
+ export declare function launchWorkerServer(wasmUrl: string, module: WebAssembly.Module, shouldRecordData: number): Promise<void>;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,110 @@
1
+ /// <reference types="dom-webcodecs" />
2
+ import { CameraFrameData } from "./camera-frame-data";
3
+ import { camera_profile_t, zappar_camera_source_t, zappar_pipeline_t } from "./gen/zappar-native";
4
+ export interface CameraFrameC2S {
5
+ t: "cameraFrameC2S";
6
+ d: ArrayBuffer;
7
+ p: zappar_pipeline_t;
8
+ userFacing: boolean;
9
+ c2d: Float32Array;
10
+ cm: Float32Array;
11
+ token: number;
12
+ width: number;
13
+ height: number;
14
+ captureTime: number;
15
+ }
16
+ export interface CameraFrameReturnS2C {
17
+ t: "cameraFrameRecycleS2C";
18
+ token: number;
19
+ d: ArrayBuffer;
20
+ p: zappar_pipeline_t;
21
+ att?: Float32Array;
22
+ }
23
+ export interface VideoFrameS2C {
24
+ t: "videoFrameS2C";
25
+ token: number;
26
+ d: VideoFrame;
27
+ p: zappar_pipeline_t;
28
+ source: zappar_camera_source_t;
29
+ userFacing: boolean;
30
+ uvTransform: Float32Array;
31
+ w: number;
32
+ h: number;
33
+ cameraModel: Float32Array;
34
+ cameraToDevice: Float32Array;
35
+ }
36
+ export interface StreamC2S {
37
+ t: "streamC2S";
38
+ p: zappar_pipeline_t;
39
+ s: ReadableStream<VideoFrame>;
40
+ userFacing: boolean;
41
+ source: zappar_camera_source_t;
42
+ }
43
+ export interface CameraProfileC2S {
44
+ t: "cameraProfileC2S";
45
+ p: zappar_pipeline_t;
46
+ source: zappar_camera_source_t;
47
+ profile: camera_profile_t;
48
+ }
49
+ export interface CameraToScreenRotationC2S {
50
+ t: "cameraToScreenC2S";
51
+ p: zappar_pipeline_t;
52
+ r: number;
53
+ }
54
+ export interface ImageBitmapC2S {
55
+ t: "imageBitmapC2S";
56
+ p: zappar_pipeline_t;
57
+ i: ImageBitmap;
58
+ r: number;
59
+ userFacing: boolean;
60
+ tokenId: number;
61
+ cameraModel: Float32Array;
62
+ cameraToDevice: Float32Array;
63
+ cp: camera_profile_t;
64
+ }
65
+ export interface ImageBitmapS2C {
66
+ t: "imageBitmapS2C";
67
+ p: zappar_pipeline_t;
68
+ dataWidth: number;
69
+ dataHeight: number;
70
+ uvTransform: Float32Array;
71
+ userFacing: boolean;
72
+ frame: ImageBitmap;
73
+ tokenId: number;
74
+ }
75
+ export interface StreamEndedS2C {
76
+ t: "streamEndedS2C";
77
+ p: zappar_pipeline_t;
78
+ source: zappar_camera_source_t;
79
+ }
80
+ export interface SensorDataC2S {
81
+ t: "sensorDataC2S";
82
+ sensor: "accel" | "accel_wo_gravity_int" | "accel_w_gravity_int" | "rotation_rate_int" | "attitude_int" | "rotation_rate" | "attitude" | "relative_orientation";
83
+ p: zappar_pipeline_t;
84
+ x: number;
85
+ y: number;
86
+ z: number;
87
+ w?: number;
88
+ timestamp: number;
89
+ interval: number;
90
+ }
91
+ export interface AttitudeMatrixC2S {
92
+ t: "attitudeMatrixC2S";
93
+ p: zappar_pipeline_t;
94
+ m: Float32Array;
95
+ }
96
+ export interface CameraDataRawEnabledC2S {
97
+ t: "rawenabled";
98
+ v: boolean;
99
+ }
100
+ export interface CameraDataRawRequestC2S {
101
+ t: "rawrequest";
102
+ p: zappar_pipeline_t;
103
+ token: number;
104
+ }
105
+ export interface CameraDataRawS2C {
106
+ t: "raw";
107
+ token: number;
108
+ p: zappar_pipeline_t;
109
+ data: CameraFrameData | null;
110
+ }
@@ -0,0 +1,44 @@
1
+ export interface PlaneData {
2
+ width: number;
3
+ height: number;
4
+ data: Uint8Array;
5
+ }
6
+ export interface UvPlaneData {
7
+ width: number;
8
+ height: number;
9
+ data: Uint8Array;
10
+ dataVPlane?: Uint8Array;
11
+ }
12
+ export declare enum UvLayout {
13
+ INTERLEAVED_UV = 0,
14
+ INTERLEAVED_VU = 1,
15
+ PLANAR_UV = 2
16
+ }
17
+ export declare class YUVConversionGL {
18
+ private _gl;
19
+ private _yTexture;
20
+ private _uvTexture;
21
+ private _uvTextureSinglePlane;
22
+ private _vTexture;
23
+ private _framebufferId;
24
+ private _vao;
25
+ private _vertexBuffer;
26
+ private _conversionShaders;
27
+ private _isWebGL2;
28
+ private _useVao;
29
+ private _oneComponentInternalFormat;
30
+ private _oneComponentFormat;
31
+ private _twoComponentInternalFormat;
32
+ private _twoComponentFormat;
33
+ private _vaoExtension;
34
+ private _instancedArraysExtension;
35
+ constructor(_gl: WebGL2RenderingContext | WebGLRenderingContext);
36
+ resetGLContext(): void;
37
+ destroy(): void;
38
+ yuvToTexture(y: PlaneData, uv: UvPlaneData, uvLayout: UvLayout, destination: WebGLTexture): void;
39
+ private _getVertexAttribState;
40
+ private _prepareContext;
41
+ private _prepareConversionShader;
42
+ private _prepareTextures;
43
+ private _createSizedTexture;
44
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,15 @@
1
+ import { Zappar, zappar_pipeline_t } from "../src";
2
+ import { zappar_sequence_source_t } from "../src/gen/zappar";
3
+ import { Event1 } from "../src/event";
4
+ export declare let canvas: HTMLCanvasElement;
5
+ export declare let mirrorPoses: boolean;
6
+ export declare let pipeline: zappar_pipeline_t;
7
+ export declare let onSequenceLoaded: Event1<zappar_sequence_source_t>;
8
+ export declare function setup(webgl2?: boolean): Zappar;
9
+ export declare function currentPoseSetting(): PoseSetting;
10
+ export declare enum PoseSetting {
11
+ default = 0,
12
+ attitude = 1,
13
+ target = 2
14
+ }
15
+ export declare function getGLContext(): WebGLRenderingContext | undefined;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,3 @@
1
+ export declare function drawCylinderMVP(gl: WebGLRenderingContext, segments: number, mvpMatrix: Float32Array, color: number[]): void;
2
+ export declare function drawCylinder(gl: WebGLRenderingContext, segments: number, projectionMatrix: Float32Array, cameraMatrix: Float32Array, targetMatrix: Float32Array, color: number[]): void;
3
+ export declare function drawAnchor(gl: WebGLRenderingContext, segments: number, length: number, diameter: number, projectionMatrix: Float32Array, cameraMatrix: Float32Array, targetMatrix: Float32Array): void;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
package/lib/version.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const VERSION = "3.3.0-beta.1";
1
+ export declare const VERSION = "3.4.0-beta.0";
package/lib/version.js CHANGED
@@ -1 +1 @@
1
- export const VERSION = "3.3.0-beta.1";
1
+ export const VERSION = "3.4.0-beta.0";
@@ -1,4 +1,4 @@
1
1
  import { MsgManager } from "./messages";
2
2
  export declare let messageManager: MsgManager;
3
3
  export declare function launchWorker(worker?: Worker): Promise<void>;
4
- export declare function launchCeresWorker(port: MessagePort, worker?: Worker): Promise<void>;
4
+ export declare function launchCeresWorkers(port0: MessagePort, port1: MessagePort, worker0?: Worker, worker1?: Worker): Promise<void>;
@@ -41,16 +41,30 @@ export function launchWorker(worker) {
41
41
  });
42
42
  });
43
43
  }
44
- export function launchCeresWorker(port, worker) {
44
+ export function launchCeresWorkers(port0, port1, worker0, worker1) {
45
45
  return __awaiter(this, void 0, void 0, function* () {
46
- if (!worker)
47
- worker = new Worker(new URL("./ceres-worker", import.meta.url), { type: 'module' });
48
- worker.postMessage({
49
- t: "wasm",
50
- url: new URL("./zappar-cv.wasm", import.meta.url).toString(),
51
- module: yield wasmModule,
52
- port
53
- }, [port]);
46
+ {
47
+ if (!worker0)
48
+ worker0 = new Worker(new URL("./ceres-worker", import.meta.url), { type: 'module' });
49
+ worker0.postMessage({
50
+ t: "wasm",
51
+ url: new URL("./zappar-cv.wasm", import.meta.url).toString(),
52
+ module: yield wasmModule,
53
+ port: port0,
54
+ instance: 0,
55
+ }, [port0]);
56
+ }
57
+ {
58
+ if (!worker1)
59
+ worker1 = new Worker(new URL("./ceres-worker", import.meta.url), { type: 'module' });
60
+ worker1.postMessage({
61
+ t: "wasm",
62
+ url: new URL("./zappar-cv.wasm", import.meta.url).toString(),
63
+ module: yield wasmModule,
64
+ port: port1,
65
+ instance: 1,
66
+ }, [port1]);
67
+ }
54
68
  });
55
69
  }
56
70
  function waitForLoad(w) {
@@ -5,6 +5,7 @@ export interface WorkerMessageAPI {
5
5
  worker_message_send_data_size: (index: number) => number;
6
6
  worker_message_send_data: (index: number) => number;
7
7
  worker_message_send_reference: (index: number) => number;
8
- worker_message_receive: (ref: number, size: number, data: number) => void;
8
+ worker_message_send_instance: (index: number) => number;
9
+ worker_message_receive: (ref: number, size: number, data: number, instance: number) => void;
9
10
  }
10
11
  export declare function getWorkerMessageAPI(mod: ZNM.Module): WorkerMessageAPI;
@@ -5,6 +5,7 @@ export function getWorkerMessageAPI(mod) {
5
5
  worker_message_send_data_size: mod.cwrap("worker_message_send_data_size", "number", ["number"]),
6
6
  worker_message_send_data: mod.cwrap("worker_message_send_data", "number", ["number"]),
7
7
  worker_message_send_reference: mod.cwrap("worker_message_send_reference", "number", ["number"]),
8
- worker_message_receive: mod.cwrap("worker_message_receive", null, ["number", "number", "number"]),
8
+ worker_message_send_instance: mod.cwrap("worker_message_send_instance", "number", ["number"]),
9
+ worker_message_receive: mod.cwrap("worker_message_receive", null, ["number", "number", "number", "number"]),
9
10
  };
10
11
  }
@@ -17,7 +17,8 @@ import { handleImageBitmap } from "./worker-imagebitmap";
17
17
  import { getWorkerMessageAPI } from "./worker-messages";
18
18
  import { getDataDownloadAPI } from "./data-download";
19
19
  export let messageManager = new MsgManager();
20
- let workerMessageChannel;
20
+ let workerMessageChannel0;
21
+ let workerMessageChannel1;
21
22
  let latestCameraToScreenRotation = 0;
22
23
  let rawDataAccessEnabled = false;
23
24
  const rawCameraFrameBuffersByPipeline = new Map();
@@ -152,6 +153,9 @@ export function launchWorkerServer(wasmUrl, module, shouldRecordData) {
152
153
  case "rotation_rate":
153
154
  r.pipeline_motion_rotation_rate_submit(pipeline, msgt.timestamp, msgt.x, msgt.y, msgt.z);
154
155
  break;
156
+ case "relative_orientation":
157
+ r.pipeline_motion_relative_orientation_submit_int(pipeline, msgt.timestamp, msgt.interval, msgt.x, msgt.y, msgt.z, msgt.w);
158
+ break;
155
159
  }
156
160
  break;
157
161
  }
@@ -288,7 +292,7 @@ function consumeReader(mod, r, reader, p, userFacing, server, source, workerMess
288
292
  const pipeline = server._pipeline_by_instance.get(p);
289
293
  if (pipeline) {
290
294
  try {
291
- r.pipeline_camera_frame_submit_raw_pointer(pipeline, streamDataBufferPointer, size, framePixelFormatFromFormat(frame.format), width, height, token, cameraToDeviceTransform, latestCameraToScreenRotation, cameraModel, userFacing, ((_b = frame.timestamp) !== null && _b !== void 0 ? _b : -1) * 1e-6, downSample);
295
+ r.pipeline_camera_frame_submit_raw_pointer(pipeline, streamDataBufferPointer, size, framePixelFormatFromFormat(frame.format), width, height, token, cameraToDeviceTransform, latestCameraToScreenRotation, cameraModel, userFacing, (_b = frame.timestamp) !== null && _b !== void 0 ? _b : -1, downSample);
292
296
  handleMessages(mod, workerMessageAPI);
293
297
  if (dataDownloadAPI)
294
298
  handleDataDownload(mod, dataDownloadAPI);
@@ -358,29 +362,42 @@ function handleMessages(mod, m) {
358
362
  const toSend = m.worker_message_send_count();
359
363
  if (toSend === 0)
360
364
  return;
361
- if (!workerMessageChannel) {
362
- workerMessageChannel = new MessageChannel();
363
- workerMessageChannel.port1.start();
364
- workerMessageChannel.port1.addEventListener('message', evt => {
365
+ if (!workerMessageChannel0 || !workerMessageChannel1) {
366
+ workerMessageChannel0 = new MessageChannel();
367
+ workerMessageChannel0.port1.start();
368
+ workerMessageChannel0.port1.addEventListener('message', evt => {
369
+ if (evt.data.t !== 'msgrec')
370
+ return;
371
+ const data = evt.data.data;
372
+ const ptr = mod._malloc(data.byteLength);
373
+ mod.HEAPU8.set(data, ptr);
374
+ m.worker_message_receive(evt.data.reference, data.byteLength, ptr, 0);
375
+ mod._free(ptr);
376
+ });
377
+ workerMessageChannel1 = new MessageChannel();
378
+ workerMessageChannel1.port1.start();
379
+ workerMessageChannel1.port1.addEventListener('message', evt => {
365
380
  if (evt.data.t !== 'msgrec')
366
381
  return;
367
382
  const data = evt.data.data;
368
383
  const ptr = mod._malloc(data.byteLength);
369
384
  mod.HEAPU8.set(data, ptr);
370
- m.worker_message_receive(evt.data.reference, data.byteLength, ptr);
385
+ m.worker_message_receive(evt.data.reference, data.byteLength, ptr, 1);
371
386
  mod._free(ptr);
372
387
  });
373
- messageManager.postOutgoingMessage({ t: 'setupCeresWorker', port: workerMessageChannel.port2 }, [workerMessageChannel.port2]);
388
+ messageManager.postOutgoingMessage({ t: 'setupCeresWorker', port0: workerMessageChannel0.port2, port1: workerMessageChannel1.port2 }, [workerMessageChannel0.port2, workerMessageChannel1.port2]);
374
389
  }
375
390
  for (let i = 0; i < toSend; i++) {
376
391
  const reference = m.worker_message_send_reference(i);
377
392
  const dataSize = m.worker_message_send_data_size(i);
393
+ const instance = m.worker_message_send_instance(i);
378
394
  const dataPtr = m.worker_message_send_data(i);
379
395
  const data = mod.HEAPU8.slice(dataPtr, dataPtr + dataSize);
380
- workerMessageChannel.port1.postMessage({
396
+ (instance === 0 ? workerMessageChannel0 : workerMessageChannel1).port1.postMessage({
381
397
  t: 'msgsend',
382
398
  data,
383
- reference
399
+ reference,
400
+ instance
384
401
  }, [data.buffer]);
385
402
  }
386
403
  m.worker_message_send_clear();
@@ -79,11 +79,12 @@ export interface StreamEndedS2C {
79
79
  }
80
80
  export interface SensorDataC2S {
81
81
  t: "sensorDataC2S";
82
- sensor: "accel" | "accel_wo_gravity_int" | "accel_w_gravity_int" | "rotation_rate_int" | "attitude_int" | "rotation_rate" | "attitude";
82
+ sensor: "accel" | "accel_wo_gravity_int" | "accel_w_gravity_int" | "rotation_rate_int" | "attitude_int" | "rotation_rate" | "attitude" | "relative_orientation";
83
83
  p: zappar_pipeline_t;
84
84
  x: number;
85
85
  y: number;
86
86
  z: number;
87
+ w?: number;
87
88
  timestamp: number;
88
89
  interval: number;
89
90
  }