@zappar/zappar-cv 3.0.1-alpha.3 → 3.0.1-alpha.5
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 +2 -2
- package/lib/data-download.d.ts +8 -0
- package/lib/data-download.js +8 -0
- package/lib/direct.js +1 -1
- package/lib/gen/zappar-client.js +2 -2
- package/lib/native.js +9 -0
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/lib/worker-client.js +2 -1
- package/lib/worker-server.d.ts +1 -1
- package/lib/worker-server.js +21 -5
- package/lib/worker.js +2 -1
- package/lib/zappar-cv.js +87 -87
- package/lib/zappar-cv.wasm +0 -0
- package/package.json +1 -1
- package/umd/{a5f074b0d01366261164.wasm → 17cb8e68ad2789719d7f.wasm} +0 -0
- package/umd/751.zappar-cv.js +1 -0
- package/umd/867.zappar-cv.js +1 -1
- package/umd/zappar-cv.js +1 -1
- package/umd/zappar-cv.worker.js +1 -1
- package/umd/429.zappar-cv.js +0 -1
package/README.md
CHANGED
|
@@ -18,8 +18,8 @@ npm i @zappar/zappar-cv
|
|
|
18
18
|
|
|
19
19
|
You can use our CDN from within your HTML:
|
|
20
20
|
```
|
|
21
|
-
<script src="https://libs.zappar.com/zappar-cv/3.0.1-alpha.
|
|
21
|
+
<script src="https://libs.zappar.com/zappar-cv/3.0.1-alpha.5/zappar-cv.js"></script>
|
|
22
22
|
```
|
|
23
23
|
|
|
24
24
|
Or you can download and host our standalone JavaScript bundle:
|
|
25
|
-
[https://libs.zappar.com/zappar-cv/3.0.1-alpha.
|
|
25
|
+
[https://libs.zappar.com/zappar-cv/3.0.1-alpha.5/zappar-cv.zip](https://libs.zappar.com/zappar-cv/3.0.1-alpha.5/zappar-cv.zip)
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type * as ZNM from "./zappar-cv";
|
|
2
|
+
export interface DataDownloadAPI {
|
|
3
|
+
data_download_clear: () => void;
|
|
4
|
+
data_download_size: () => number;
|
|
5
|
+
data_download: () => number;
|
|
6
|
+
data_should_record_set: (v: number) => void;
|
|
7
|
+
}
|
|
8
|
+
export declare function getDataDownloadAPI(mod: ZNM.Module): DataDownloadAPI;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export function getDataDownloadAPI(mod) {
|
|
2
|
+
return {
|
|
3
|
+
data_download_clear: mod.cwrap("data_download_clear", null, []),
|
|
4
|
+
data_download_size: mod.cwrap("data_download_size", "number", []),
|
|
5
|
+
data_download: mod.cwrap("data_download", "number", []),
|
|
6
|
+
data_should_record_set: mod.cwrap("data_should_record_set", null, ["number"]),
|
|
7
|
+
};
|
|
8
|
+
}
|
package/lib/direct.js
CHANGED
package/lib/gen/zappar-client.js
CHANGED
|
@@ -607,9 +607,9 @@ export class zappar_client {
|
|
|
607
607
|
enabled: true,
|
|
608
608
|
plane_count: 0,
|
|
609
609
|
plane_pose: [],
|
|
610
|
-
world_anchor_valid:
|
|
610
|
+
world_anchor_valid: false,
|
|
611
611
|
world_anchor_pose: new Float32Array([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]),
|
|
612
|
-
ground_anchor_valid:
|
|
612
|
+
ground_anchor_valid: false,
|
|
613
613
|
ground_anchor_pose: new Float32Array([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]),
|
|
614
614
|
debug_enabled: false,
|
|
615
615
|
debug_tracks_data: new Float32Array([]),
|
package/lib/native.js
CHANGED
|
@@ -89,6 +89,15 @@ export function initialize(opts) {
|
|
|
89
89
|
launchCeresWorker(msg.port);
|
|
90
90
|
break;
|
|
91
91
|
}
|
|
92
|
+
case "_z_datadownload": {
|
|
93
|
+
let blob = new Blob([msg.data], { type: "application/octet-stream" });
|
|
94
|
+
let url = URL.createObjectURL(blob);
|
|
95
|
+
let a = document.createElement("a");
|
|
96
|
+
a.download = "sequencedata.bin";
|
|
97
|
+
a.href = url;
|
|
98
|
+
a.click();
|
|
99
|
+
break;
|
|
100
|
+
}
|
|
92
101
|
case "licerr": {
|
|
93
102
|
let div = document.createElement("div");
|
|
94
103
|
div.innerHTML = "Visit <a href='https://docs.zap.works/universal-ar/licensing/' style='color: white;'>our licensing page</a> to find out about hosting on your own domain.";
|
package/lib/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const VERSION = "3.0.1-alpha.
|
|
1
|
+
export declare const VERSION = "3.0.1-alpha.5";
|
package/lib/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const VERSION = "3.0.1-alpha.
|
|
1
|
+
export const VERSION = "3.0.1-alpha.5";
|
package/lib/worker-client.js
CHANGED
|
@@ -21,7 +21,8 @@ export function launchWorker(worker) {
|
|
|
21
21
|
worker.postMessage({
|
|
22
22
|
t: "wasm",
|
|
23
23
|
url: new URL("./zappar-cv.wasm", import.meta.url).toString(),
|
|
24
|
-
module: yield wasmModule
|
|
24
|
+
module: yield wasmModule,
|
|
25
|
+
shouldRecordData: window.location.href.indexOf("_zrecorddata") >= 0
|
|
25
26
|
});
|
|
26
27
|
yield waitForLoad(worker);
|
|
27
28
|
function sendOutgoing() {
|
package/lib/worker-server.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { MsgManager } from "./messages";
|
|
2
2
|
export declare let messageManager: MsgManager;
|
|
3
|
-
export declare function launchWorkerServer(wasmUrl: string, module: WebAssembly.Module): Promise<void>;
|
|
3
|
+
export declare function launchWorkerServer(wasmUrl: string, module: WebAssembly.Module, shouldRecordData: boolean): Promise<void>;
|
package/lib/worker-server.js
CHANGED
|
@@ -16,12 +16,13 @@ import { frame_pixel_format_t } from "./gen/zappar-native";
|
|
|
16
16
|
import { handleImageBitmap } from "./worker-imagebitmap";
|
|
17
17
|
import { profile } from "./profile";
|
|
18
18
|
import { getWorkerMessageAPI } from "./worker-messages";
|
|
19
|
+
import { getDataDownloadAPI } from "./data-download";
|
|
19
20
|
export let messageManager = new MsgManager();
|
|
20
21
|
let workerMessageChannel;
|
|
21
22
|
let latestCameraToScreenRotation = 0;
|
|
22
23
|
let rawDataAccessEnabled = false;
|
|
23
24
|
const rawCameraFrameBuffersByPipeline = new Map();
|
|
24
|
-
export function launchWorkerServer(wasmUrl, module) {
|
|
25
|
+
export function launchWorkerServer(wasmUrl, module, shouldRecordData) {
|
|
25
26
|
return __awaiter(this, void 0, void 0, function* () {
|
|
26
27
|
let mod = ZNM.default({
|
|
27
28
|
locateFile: (path, prefix) => {
|
|
@@ -38,6 +39,8 @@ export function launchWorkerServer(wasmUrl, module) {
|
|
|
38
39
|
onRuntimeInitialized: () => {
|
|
39
40
|
let r = getRuntimeObject(mod);
|
|
40
41
|
const workerMessageAPI = getWorkerMessageAPI(mod);
|
|
42
|
+
const dataDownloadAPI = shouldRecordData ? getDataDownloadAPI(mod) : undefined;
|
|
43
|
+
dataDownloadAPI === null || dataDownloadAPI === void 0 ? void 0 : dataDownloadAPI.data_should_record_set(1); // Only happens if dataDownloadAPI is defined
|
|
41
44
|
let server = new zappar_server(r, (pipelineId, ab) => {
|
|
42
45
|
messageManager.postOutgoingMessage({
|
|
43
46
|
p: pipelineId,
|
|
@@ -66,6 +69,8 @@ export function launchWorkerServer(wasmUrl, module) {
|
|
|
66
69
|
att = r.pipeline_camera_frame_device_attitude(pipeline);
|
|
67
70
|
server.exploreState();
|
|
68
71
|
handleMessages(mod, workerMessageAPI);
|
|
72
|
+
if (dataDownloadAPI)
|
|
73
|
+
handleDataDownload(mod, dataDownloadAPI);
|
|
69
74
|
}
|
|
70
75
|
let ret = {
|
|
71
76
|
token: msgt.token,
|
|
@@ -96,7 +101,7 @@ export function launchWorkerServer(wasmUrl, module) {
|
|
|
96
101
|
}
|
|
97
102
|
case "streamC2S": {
|
|
98
103
|
let msgt = msg;
|
|
99
|
-
consumeStream(mod, r, msgt.s, msgt.p, msgt.userFacing, server, msgt.source, workerMessageAPI).then(() => {
|
|
104
|
+
consumeStream(mod, r, msgt.s, msgt.p, msgt.userFacing, server, msgt.source, workerMessageAPI, dataDownloadAPI).then(() => {
|
|
100
105
|
let m = { t: "streamEndedS2C", p: msgt.p, source: msgt.source };
|
|
101
106
|
// console.log('Stream ended, requesting new stream');
|
|
102
107
|
messageManager.postOutgoingMessage(m, []);
|
|
@@ -160,7 +165,7 @@ export function launchWorkerServer(wasmUrl, module) {
|
|
|
160
165
|
});
|
|
161
166
|
}
|
|
162
167
|
;
|
|
163
|
-
function consumeStream(mod, r, stream, p, userFacing, server, source, workerMessageAPI) {
|
|
168
|
+
function consumeStream(mod, r, stream, p, userFacing, server, source, workerMessageAPI, dataDownloadAPI) {
|
|
164
169
|
return __awaiter(this, void 0, void 0, function* () {
|
|
165
170
|
while (true) {
|
|
166
171
|
let reader;
|
|
@@ -173,7 +178,7 @@ function consumeStream(mod, r, stream, p, userFacing, server, source, workerMess
|
|
|
173
178
|
continue;
|
|
174
179
|
}
|
|
175
180
|
try {
|
|
176
|
-
yield consumeReader(mod, r, reader, p, userFacing, server, source, workerMessageAPI);
|
|
181
|
+
yield consumeReader(mod, r, reader, p, userFacing, server, source, workerMessageAPI, dataDownloadAPI);
|
|
177
182
|
return;
|
|
178
183
|
}
|
|
179
184
|
catch (err) {
|
|
@@ -201,7 +206,7 @@ function getFrameOrTimeout(reader) {
|
|
|
201
206
|
}
|
|
202
207
|
const cameraToDeviceTransform = mat4.create();
|
|
203
208
|
const cameraModel = new Float32Array([300, 300, 160, 120, 0, 0]);
|
|
204
|
-
function consumeReader(mod, r, reader, p, userFacing, server, source, workerMessageAPI) {
|
|
209
|
+
function consumeReader(mod, r, reader, p, userFacing, server, source, workerMessageAPI, dataDownloadAPI) {
|
|
205
210
|
var _a, _b;
|
|
206
211
|
return __awaiter(this, void 0, void 0, function* () {
|
|
207
212
|
while (true) {
|
|
@@ -274,6 +279,8 @@ function consumeReader(mod, r, reader, p, userFacing, server, source, workerMess
|
|
|
274
279
|
try {
|
|
275
280
|
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);
|
|
276
281
|
handleMessages(mod, workerMessageAPI);
|
|
282
|
+
if (dataDownloadAPI)
|
|
283
|
+
handleDataDownload(mod, dataDownloadAPI);
|
|
277
284
|
}
|
|
278
285
|
catch (err) {
|
|
279
286
|
console.log('Exception during camera processing', err);
|
|
@@ -367,3 +374,12 @@ function handleMessages(mod, m) {
|
|
|
367
374
|
}
|
|
368
375
|
m.worker_message_send_clear();
|
|
369
376
|
}
|
|
377
|
+
function handleDataDownload(mod, d) {
|
|
378
|
+
const size = d.data_download_size();
|
|
379
|
+
if (size === 0)
|
|
380
|
+
return;
|
|
381
|
+
const dataPtr = d.data_download();
|
|
382
|
+
const data = mod.HEAPU8.slice(dataPtr, dataPtr + size);
|
|
383
|
+
messageManager.postOutgoingMessage({ t: '_z_datadownload', data }, [data.buffer]);
|
|
384
|
+
d.data_download_clear();
|
|
385
|
+
}
|
package/lib/worker.js
CHANGED
|
@@ -7,9 +7,10 @@ messageManager.onOutgoingMessage.bind(() => {
|
|
|
7
7
|
}
|
|
8
8
|
});
|
|
9
9
|
let launchHandler = (evt) => {
|
|
10
|
+
var _a;
|
|
10
11
|
if (evt && evt.data && evt.data.t === "wasm") {
|
|
11
12
|
let url = location.href.startsWith("blob") ? evt.data.url : new URL("./zappar-cv.wasm", import.meta.url).toString();
|
|
12
|
-
launchWorkerServer(url, evt.data.module);
|
|
13
|
+
launchWorkerServer(url, evt.data.module, (_a = evt.data.shouldRecordData) !== null && _a !== void 0 ? _a : false);
|
|
13
14
|
ctx.removeEventListener("message", launchHandler);
|
|
14
15
|
}
|
|
15
16
|
};
|