@zappar/zappar-cv 0.4.0-beta.8 → 2.0.0-beta.2

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 (79) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +2 -2
  3. package/lib/additional.d.ts +3 -1
  4. package/lib/additional.js +1 -2
  5. package/lib/camera-source-map.js +16 -24
  6. package/lib/camera-source.js +17 -21
  7. package/lib/cameramodel.js +18 -23
  8. package/lib/compatibility.js +1 -3
  9. package/lib/deserializer.js +1 -5
  10. package/lib/direct.js +12 -16
  11. package/lib/drawcamera.js +26 -31
  12. package/lib/drawface.js +5 -9
  13. package/lib/drawfaceproject.js +5 -9
  14. package/lib/drawplane.js +6 -11
  15. package/lib/event.js +5 -13
  16. package/lib/facelandmark.d.ts +1 -2
  17. package/lib/facelandmark.js +11 -18
  18. package/lib/facelandmarkdata.js +1 -4
  19. package/lib/facelandmarkinterface.js +1 -2
  20. package/lib/facemesh.js +10 -17
  21. package/lib/gen/zappar-client.js +5 -24
  22. package/lib/gen/zappar-cwrap.js +1 -12
  23. package/lib/gen/zappar-native.d.ts +0 -1
  24. package/lib/gen/zappar-native.js +10 -13
  25. package/lib/gen/zappar-server.js +5 -13
  26. package/lib/gen/zappar.d.ts +7 -2
  27. package/lib/gen/zappar.js +5 -13
  28. package/lib/gfx.js +1 -4
  29. package/lib/gl-state-manager.d.ts +9 -0
  30. package/lib/gl-state-manager.js +31 -0
  31. package/lib/html-element-source.js +23 -27
  32. package/lib/image-process-gl.js +73 -32
  33. package/lib/imagebitmap-camera-source.js +30 -34
  34. package/lib/imagetracker.d.ts +28 -0
  35. package/lib/imagetracker.js +115 -0
  36. package/lib/index-standalone.d.ts +3 -0
  37. package/lib/index-standalone.js +5 -0
  38. package/lib/index.d.ts +2 -1
  39. package/lib/index.js +6 -27
  40. package/lib/landmarkdatagenerate.js +25 -30
  41. package/lib/loglevel.js +9 -16
  42. package/lib/messages.js +4 -8
  43. package/lib/mstp-camera-source.js +22 -26
  44. package/lib/native.d.ts +2 -1
  45. package/lib/native.js +194 -132
  46. package/lib/options.d.ts +3 -0
  47. package/lib/options.js +1 -0
  48. package/lib/permission.js +13 -27
  49. package/lib/pipeline.d.ts +1 -2
  50. package/lib/pipeline.js +34 -39
  51. package/lib/profile.js +40 -45
  52. package/lib/riff-reader.d.ts +18 -0
  53. package/lib/riff-reader.js +52 -0
  54. package/lib/sequencerecorder.js +7 -12
  55. package/lib/sequencesource.d.ts +2 -0
  56. package/lib/sequencesource.js +28 -25
  57. package/lib/serializer.js +1 -5
  58. package/lib/shader.js +2 -7
  59. package/lib/source.js +1 -5
  60. package/lib/version.d.ts +1 -1
  61. package/lib/version.js +1 -4
  62. package/lib/worker-client.d.ts +1 -1
  63. package/lib/worker-client.js +9 -21
  64. package/lib/worker-imagebitmap.js +9 -13
  65. package/lib/worker-server.js +33 -37
  66. package/lib/worker.js +6 -10
  67. package/lib/workerinterface.js +1 -2
  68. package/lib/zcv.js +125 -115
  69. package/lib/zcv.wasm +0 -0
  70. package/package.json +14 -16
  71. package/umd/169.zappar-cv.js +1 -0
  72. package/umd/{482727c0e7dd40d73f5aae47f238ad61.zbin → 482727c0e7dd40d73f5a.zbin} +0 -0
  73. package/umd/557cf735d27efb96e262.wasm +0 -0
  74. package/umd/752.zappar-cv.js +1 -0
  75. package/umd/{b4f46e148a3b3b5aef90717d8d60e3fc.zbin → b4f46e148a3b3b5aef90.zbin} +0 -0
  76. package/umd/{f7b62a3a53b5c9b3222ba8dc53cb8b11.zbin → f7b62a3a53b5c9b3222b.zbin} +0 -0
  77. package/umd/zappar-cv.js +1 -1
  78. package/umd/zappar-cv.worker.js +1 -1
  79. package/umd/fbf9061bc2d2826ecf97c8ba2b51e7a5.wasm +0 -0
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
2
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
3
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -8,41 +7,30 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
8
  });
10
9
  };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.launchWorker = exports.messageManager = void 0;
13
- const messages_1 = require("./messages");
14
- exports.messageManager = new messages_1.MsgManager();
15
- let Worker;
16
- if (typeof Z_STANDALONE !== 'undefined' && Z_STANDALONE) {
17
- Worker = require('worker-loader?inline=fallback!./worker');
18
- }
19
- else {
20
- Worker = require('worker-loader!./worker');
21
- }
22
- if (Worker.default)
23
- Worker = Worker.default;
24
- function launchWorker() {
10
+ import { MsgManager } from "./messages";
11
+ export let messageManager = new MsgManager();
12
+ export function launchWorker(worker) {
25
13
  return __awaiter(this, void 0, void 0, function* () {
26
- let worker = new Worker();
14
+ if (!worker)
15
+ worker = new Worker(new URL("./worker", import.meta.url), { type: 'module' });
27
16
  worker.postMessage({
28
17
  t: "wasm",
29
- url: require("./zcv.wasm").default
18
+ url: new URL("./zcv.wasm", import.meta.url).toString()
30
19
  });
31
20
  yield waitForLoad(worker);
32
21
  function sendOutgoing() {
33
- let msgs = exports.messageManager.getOutgoingMessages();
22
+ let msgs = messageManager.getOutgoingMessages();
34
23
  for (let msg of msgs) {
35
24
  worker.postMessage(msg.msg, msg.transferables);
36
25
  }
37
26
  }
38
- exports.messageManager.onOutgoingMessage.bind(sendOutgoing);
27
+ messageManager.onOutgoingMessage.bind(sendOutgoing);
39
28
  sendOutgoing();
40
29
  worker.addEventListener("message", evt => {
41
- exports.messageManager.postIncomingMessage(evt.data);
30
+ messageManager.postIncomingMessage(evt.data);
42
31
  });
43
32
  });
44
33
  }
45
- exports.launchWorker = launchWorker;
46
34
  function waitForLoad(w) {
47
35
  return new Promise(resolve => {
48
36
  let listener = (msg) => {
@@ -1,9 +1,6 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.handleImageBitmap = void 0;
4
- const image_process_gl_1 = require("./image-process-gl");
5
- const profile_1 = require("./profile");
6
- const gl_matrix_1 = require("gl-matrix");
1
+ import { ImageProcessGL } from "./image-process-gl";
2
+ import { profile } from "./profile";
3
+ import { mat4 } from "gl-matrix";
7
4
  let pixels;
8
5
  let texture;
9
6
  let _imageProcessor;
@@ -14,11 +11,11 @@ function getImageProcessor() {
14
11
  _gl = canvas.getContext("webgl");
15
12
  if (!_gl)
16
13
  throw new Error("Unable to get offscreen GL context");
17
- _imageProcessor = new image_process_gl_1.ImageProcessGL(_gl);
14
+ _imageProcessor = new ImageProcessGL(_gl);
18
15
  }
19
16
  return [_imageProcessor, _gl];
20
17
  }
21
- function handleImageBitmap(m, r, server, mgr) {
18
+ export function handleImageBitmap(m, r, server, mgr) {
22
19
  // img: ImageBitmap,
23
20
  // rot: number,
24
21
  // tokenId: number,
@@ -37,9 +34,9 @@ function handleImageBitmap(m, r, server, mgr) {
37
34
  }
38
35
  if (!texture)
39
36
  return;
40
- if (!pixels || pixels.byteLength < profile_1.profile.dataWidth * profile_1.profile.dataHeight) {
41
- console.log("Generating pixel buffer", profile_1.profile.dataWidth * profile_1.profile.dataHeight);
42
- pixels = new ArrayBuffer(profile_1.profile.dataWidth * profile_1.profile.dataHeight);
37
+ if (!pixels || pixels.byteLength < profile.dataWidth * profile.dataHeight) {
38
+ console.log("Generating pixel buffer", profile.dataWidth * profile.dataHeight);
39
+ pixels = new ArrayBuffer(profile.dataWidth * profile.dataHeight);
43
40
  }
44
41
  imageProcessor.uploadFrame(texture, m.i, m.r, m.userFacing);
45
42
  let info = imageProcessor.readFrame(texture, pixels);
@@ -49,7 +46,7 @@ function handleImageBitmap(m, r, server, mgr) {
49
46
  dataHeight: info.dataHeight,
50
47
  frame: m.i,
51
48
  userFacing: info.userFacing,
52
- uvTransform: info.uvTransform || gl_matrix_1.mat4.create(),
49
+ uvTransform: info.uvTransform || mat4.create(),
53
50
  tokenId: m.tokenId, p: m.p
54
51
  };
55
52
  mgr.postOutgoingMessage(msg, [m.i]);
@@ -60,4 +57,3 @@ function handleImageBitmap(m, r, server, mgr) {
60
57
  server.exploreState();
61
58
  }
62
59
  }
63
- exports.handleImageBitmap = handleImageBitmap;
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
2
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
3
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -8,19 +7,17 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
8
  });
10
9
  };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.launchWorkerServer = exports.messageManager = void 0;
13
- const ZNM = require("./zcv");
14
- const zappar_cwrap_1 = require("./gen/zappar-cwrap");
15
- const zappar_server_1 = require("./gen/zappar-server");
16
- const messages_1 = require("./messages");
17
- const gl_matrix_1 = require("gl-matrix");
18
- const zappar_native_1 = require("./gen/zappar-native");
19
- const worker_imagebitmap_1 = require("./worker-imagebitmap");
20
- const profile_1 = require("./profile");
21
- exports.messageManager = new messages_1.MsgManager();
10
+ import * as ZNM from "./zcv";
11
+ import { getRuntimeObject } from "./gen/zappar-cwrap";
12
+ import { zappar_server } from "./gen/zappar-server";
13
+ import { MsgManager } from "./messages";
14
+ import { mat4 } from "gl-matrix";
15
+ import { frame_pixel_format_t } from "./gen/zappar-native";
16
+ import { handleImageBitmap } from "./worker-imagebitmap";
17
+ import { profile } from "./profile";
18
+ export let messageManager = new MsgManager();
22
19
  let latestCameraToScreenRotation = 0;
23
- function launchWorkerServer(wasmUrl) {
20
+ export function launchWorkerServer(wasmUrl) {
24
21
  return __awaiter(this, void 0, void 0, function* () {
25
22
  let mod = ZNM.default({
26
23
  locateFile: (path, prefix) => {
@@ -30,21 +27,21 @@ function launchWorkerServer(wasmUrl) {
30
27
  return prefix + path;
31
28
  },
32
29
  onRuntimeInitialized: () => {
33
- let r = zappar_cwrap_1.getRuntimeObject(mod);
34
- let server = new zappar_server_1.zappar_server(r, (pipelineId, ab) => {
35
- exports.messageManager.postOutgoingMessage({
30
+ let r = getRuntimeObject(mod);
31
+ let server = new zappar_server(r, (pipelineId, ab) => {
32
+ messageManager.postOutgoingMessage({
36
33
  p: pipelineId,
37
34
  t: "zappar",
38
35
  d: ab
39
36
  }, [ab]);
40
37
  });
41
- exports.messageManager.postOutgoingMessage("loaded", []);
42
- exports.messageManager.onIncomingMessage.bind((msg) => {
38
+ messageManager.postOutgoingMessage("loaded", []);
39
+ messageManager.onIncomingMessage.bind((msg) => {
43
40
  var _a;
44
41
  switch (msg.t) {
45
42
  case "zappar":
46
43
  server.processBuffer(msg.d);
47
- exports.messageManager.postOutgoingMessage({ t: "buf", d: msg.d }, [msg.d]);
44
+ messageManager.postOutgoingMessage({ t: "buf", d: msg.d }, [msg.d]);
48
45
  break;
49
46
  case "buf":
50
47
  (_a = server.serializersByPipelineId.get(msg.p)) === null || _a === void 0 ? void 0 : _a.bufferReturn(msg.d);
@@ -66,7 +63,7 @@ function launchWorkerServer(wasmUrl) {
66
63
  t: "cameraFrameRecycleS2C",
67
64
  att
68
65
  };
69
- exports.messageManager.postOutgoingMessage(ret, [msgt.d]);
66
+ messageManager.postOutgoingMessage(ret, [msgt.d]);
70
67
  break;
71
68
  }
72
69
  case "streamC2S": {
@@ -81,7 +78,7 @@ function launchWorkerServer(wasmUrl) {
81
78
  }
82
79
  case "imageBitmapC2S": {
83
80
  let msgt = msg;
84
- worker_imagebitmap_1.handleImageBitmap(msgt, r, server, exports.messageManager);
81
+ handleImageBitmap(msgt, r, server, messageManager);
85
82
  break;
86
83
  }
87
84
  }
@@ -90,12 +87,11 @@ function launchWorkerServer(wasmUrl) {
90
87
  });
91
88
  });
92
89
  }
93
- exports.launchWorkerServer = launchWorkerServer;
94
90
  ;
95
91
  let streamDataBufferPointer = 0;
96
92
  let streamDataBufferLength = 0;
97
93
  let tokenId = 1;
98
- const cameraToDeviceTransform = gl_matrix_1.mat4.create();
94
+ const cameraToDeviceTransform = mat4.create();
99
95
  const cameraModel = new Float32Array([300, 300, 160, 120, 0, 0]);
100
96
  function consumeStream(mod, r, stream, p, userFacing, server, source) {
101
97
  return __awaiter(this, void 0, void 0, function* () {
@@ -142,14 +138,14 @@ function consumeStream(mod, r, stream, p, userFacing, server, source) {
142
138
  }
143
139
  let clone = frame.clone();
144
140
  if (userFacing)
145
- gl_matrix_1.mat4.fromScaling(cameraToDeviceTransform, [-1, 1, -1]);
141
+ mat4.fromScaling(cameraToDeviceTransform, [-1, 1, -1]);
146
142
  else
147
- gl_matrix_1.mat4.identity(cameraToDeviceTransform);
148
- let focalLength = 300.0 * profile_1.profile.dataWidth / 320.0;
143
+ mat4.identity(cameraToDeviceTransform);
144
+ let focalLength = 300.0 * profile.dataWidth / 320.0;
149
145
  cameraModel[0] = focalLength;
150
146
  cameraModel[1] = focalLength;
151
- cameraModel[2] = profile_1.profile.dataWidth * 0.5;
152
- cameraModel[3] = profile_1.profile.dataHeight * 0.5;
147
+ cameraModel[2] = profile.dataWidth * 0.5;
148
+ cameraModel[3] = profile.dataHeight * 0.5;
153
149
  const ret = {
154
150
  token: token,
155
151
  d: clone,
@@ -163,7 +159,7 @@ function consumeStream(mod, r, stream, p, userFacing, server, source) {
163
159
  cameraModel,
164
160
  source
165
161
  };
166
- exports.messageManager.postOutgoingMessage(ret, [ret.d, ret.uvTransform.buffer]);
162
+ messageManager.postOutgoingMessage(ret, [ret.d, ret.uvTransform.buffer]);
167
163
  const pipeline = server._pipeline_by_instance.get(p);
168
164
  if (pipeline) {
169
165
  r.pipeline_camera_frame_submit_raw_pointer(pipeline, streamDataBufferPointer, size, framePixelFormatFromFormat(frame.format), width, height, token, cameraToDeviceTransform, latestCameraToScreenRotation, cameraModel, userFacing);
@@ -176,17 +172,17 @@ function consumeStream(mod, r, stream, p, userFacing, server, source) {
176
172
  }
177
173
  function framePixelFormatFromFormat(f) {
178
174
  switch (f) {
179
- case "I420": return zappar_native_1.frame_pixel_format_t.FRAME_PIXEL_FORMAT_I420;
180
- case "I420A": return zappar_native_1.frame_pixel_format_t.FRAME_PIXEL_FORMAT_I420A;
181
- case "I422": return zappar_native_1.frame_pixel_format_t.FRAME_PIXEL_FORMAT_I422;
182
- case "I444": return zappar_native_1.frame_pixel_format_t.FRAME_PIXEL_FORMAT_I444;
183
- case "NV12": return zappar_native_1.frame_pixel_format_t.FRAME_PIXEL_FORMAT_NV12;
175
+ case "I420": return frame_pixel_format_t.FRAME_PIXEL_FORMAT_I420;
176
+ case "I420A": return frame_pixel_format_t.FRAME_PIXEL_FORMAT_I420A;
177
+ case "I422": return frame_pixel_format_t.FRAME_PIXEL_FORMAT_I422;
178
+ case "I444": return frame_pixel_format_t.FRAME_PIXEL_FORMAT_I444;
179
+ case "NV12": return frame_pixel_format_t.FRAME_PIXEL_FORMAT_NV12;
184
180
  case "RGBA":
185
181
  case "RGBX":
186
- return zappar_native_1.frame_pixel_format_t.FRAME_PIXEL_FORMAT_RGBA;
182
+ return frame_pixel_format_t.FRAME_PIXEL_FORMAT_RGBA;
187
183
  case "BGRA":
188
184
  case "BGRX":
189
- return zappar_native_1.frame_pixel_format_t.FRAME_PIXEL_FORMAT_BGRA;
185
+ return frame_pixel_format_t.FRAME_PIXEL_FORMAT_BGRA;
190
186
  }
191
- return zappar_native_1.frame_pixel_format_t.FRAME_PIXEL_FORMAT_Y;
187
+ return frame_pixel_format_t.FRAME_PIXEL_FORMAT_Y;
192
188
  }
package/lib/worker.js CHANGED
@@ -1,23 +1,19 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const worker_server_1 = require("./worker-server");
1
+ import { launchWorkerServer, messageManager } from "./worker-server";
4
2
  const ctx = self;
5
- worker_server_1.messageManager.onOutgoingMessage.bind(() => {
6
- let msgs = worker_server_1.messageManager.getOutgoingMessages();
3
+ messageManager.onOutgoingMessage.bind(() => {
4
+ let msgs = messageManager.getOutgoingMessages();
7
5
  for (let msg of msgs) {
8
6
  ctx.postMessage(msg.msg, msg.transferables);
9
7
  }
10
8
  });
11
9
  let launchHandler = (evt) => {
12
10
  if (evt && evt.data && evt.data.t === "wasm") {
13
- let url = location.href.startsWith("blob") ? evt.data.url : require("./zcv.wasm");
14
- if (url.default)
15
- url = url.default;
16
- worker_server_1.launchWorkerServer(url);
11
+ let url = location.href.startsWith("blob") ? evt.data.url : new URL("./zcv.wasm", import.meta.url).toString();
12
+ launchWorkerServer(url);
17
13
  ctx.removeEventListener("message", launchHandler);
18
14
  }
19
15
  };
20
16
  ctx.addEventListener("message", launchHandler);
21
17
  ctx.addEventListener("message", evt => {
22
- worker_server_1.messageManager.postIncomingMessage(evt.data);
18
+ messageManager.postIncomingMessage(evt.data);
23
19
  });
@@ -1,2 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ export {};