@luxonis/visualizer-protobuf 2.18.0 → 2.19.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.
- package/dist/{deserialization.worker-DsG76nP8.js → deserialization.worker-BDgy77kA.js} +6 -202
- package/dist/{index-CJRhjhJ0.js → index-B1_cFt58.js} +4 -3
- package/dist/{index-CcP1Qppv.js → index-B6d3C39p.js} +4 -3
- package/dist/{index-BeQ1w8aW.js → index-BF-L7R8k.js} +4 -3
- package/dist/{index-4PQpGzhb.js → index-BRgjaS3P.js} +4 -3
- package/dist/{index-DdKOhCXT.js → index-BXzxh_oS.js} +4 -3
- package/dist/{index-BWittpbR.js → index-C6w97GVV.js} +4 -3
- package/dist/{index-DchGURxJ.js → index-CFKwgCnj.js} +4 -3
- package/dist/{index-DUUnuN10.js → index-CKOuXheK.js} +4 -3
- package/dist/{index-BomoqOv5.js → index-CKUSCjJy.js} +4 -3
- package/dist/{index-Ci0X5xT3.js → index-Cjg9XUXR.js} +4 -3
- package/dist/{index-BT9CBn7l.js → index-Cx171sUA.js} +4 -3
- package/dist/{index-CcIi7pJR.js → index-D9x4CxvS.js} +4 -3
- package/dist/{index-CXThSQcL.js → index-DBd5WrbC.js} +4 -3
- package/dist/{index-BQecGu9I.js → index-DXrTzXm5.js} +4 -3
- package/dist/{index-CXIVXFcJ.js → index-Dhhaoay-.js} +6 -5
- package/dist/{index-CrtBH66u.js → index-DvIT_wMb.js} +4 -3
- package/dist/{index-ByIsztCr.js → index-FQIyjNd9.js} +4 -3
- package/dist/{index-CR6XGTJc.js → index-YYxpyccB.js} +118 -45
- package/dist/{index-BFMXTxLw.js → index-qH54Wded.js} +4 -3
- package/dist/index.js +4 -3
- package/dist/lib/src/components/PanelToolbar.d.ts.map +1 -1
- package/dist/lib/src/components/PanelToolbar.js +2 -4
- package/dist/lib/src/components/PanelToolbar.js.map +1 -1
- package/dist/lib/src/connection/foxglove-connection.d.ts +8 -4
- package/dist/lib/src/connection/foxglove-connection.d.ts.map +1 -1
- package/dist/lib/src/connection/foxglove-connection.js +20 -6
- package/dist/lib/src/connection/foxglove-connection.js.map +1 -1
- package/dist/lib/src/messaging/deserialization/pointcloud/pointcloudFromDepth.worker.d.ts +2 -0
- package/dist/lib/src/messaging/deserialization/pointcloud/pointcloudFromDepth.worker.d.ts.map +1 -0
- package/dist/lib/src/messaging/deserialization/pointcloud/pointcloudFromDepth.worker.js +286 -0
- package/dist/lib/src/messaging/deserialization/pointcloud/pointcloudFromDepth.worker.js.map +1 -0
- package/dist/lib/src/messaging/deserialization/pointcloud/utils.d.ts +9 -2
- package/dist/lib/src/messaging/deserialization/pointcloud/utils.d.ts.map +1 -1
- package/dist/lib/src/messaging/deserialization/pointcloud/utils.js +12 -42
- package/dist/lib/src/messaging/deserialization/pointcloud/utils.js.map +1 -1
- package/dist/lib/src/messaging/deserialization/video/color.js +1 -1
- package/dist/lib/src/messaging/deserialization/video/color.js.map +1 -1
- package/dist/lib/src/messaging/deserialization/video/depth.d.ts +2 -2
- package/dist/lib/src/messaging/deserialization/video/depth.d.ts.map +1 -1
- package/dist/lib/src/messaging/deserialization/video/depth.js +2 -167
- package/dist/lib/src/messaging/deserialization/video/depth.js.map +1 -1
- package/dist/lib/src/messaging/deserialization/video/h264.d.ts.map +1 -1
- package/dist/lib/src/messaging/deserialization/video/h264.js.map +1 -1
- package/dist/lib/src/messaging/deserialization.worker.d.ts +15 -11
- package/dist/lib/src/messaging/deserialization.worker.d.ts.map +1 -1
- package/dist/lib/src/messaging/deserialization.worker.js +3 -2
- package/dist/lib/src/messaging/deserialization.worker.js.map +1 -1
- package/dist/lib/src/messaging/message-handler.d.ts.map +1 -1
- package/dist/lib/src/messaging/message-handler.js +2 -1
- package/dist/lib/src/messaging/message-handler.js.map +1 -1
- package/dist/lib/src/panels/ImagePanel.js +2 -2
- package/dist/lib/src/panels/ImagePanel.js.map +1 -1
- package/dist/lib/src/panels/PointCloudPanel.js +2 -2
- package/dist/lib/src/panels/PointCloudPanel.js.map +1 -1
- package/dist/lib/src/utils/metrics-manager.d.ts +9 -1
- package/dist/lib/src/utils/metrics-manager.d.ts.map +1 -1
- package/dist/lib/src/utils/metrics-manager.js +33 -2
- package/dist/lib/src/utils/metrics-manager.js.map +1 -1
- package/dist/lib/src/utils/poitcloud-sync.d.ts.map +1 -1
- package/dist/lib/src/utils/poitcloud-sync.js +18 -5
- package/dist/lib/src/utils/poitcloud-sync.js.map +1 -1
- package/dist/pointcloudFromDepth.worker-CNKyMUU-.js +326 -0
- package/dist/{tslib.es6-D98N6tjc.js → tslib.es6-C73eoP_E.js} +6 -36
- package/dist/{useMessageReducer-Cg30zaG9.js → useMessageReducer-jNx5e6JW.js} +1 -1
- package/dist/{i420ToRgbaToPoitcloud.worker-CzFC0VI1.js → utils-Cmsz3FxA.js} +37 -5
- package/package.json +1 -1
- package/dist/lib/src/protobuf.generated/IMUData.d.ts +0 -122
- package/dist/lib/src/protobuf.generated/IMUData.d.ts.map +0 -1
- package/dist/lib/src/protobuf.generated/IMUData.js +0 -691
- package/dist/lib/src/protobuf.generated/IMUData.js.map +0 -1
|
@@ -1,178 +1,13 @@
|
|
|
1
1
|
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
2
|
// License, v2.0. If a copy of the MPL was not distributed with this
|
|
3
3
|
// file, You can obtain one at http://mozilla.org/MPL/2.0/
|
|
4
|
-
/* eslint-disable no-underscore-dangle */
|
|
5
4
|
import { NumericType } from "@foxglove/schemas";
|
|
6
5
|
import { estimateObjectSize } from "@foxglove/studio-base/players/messageMemoryEstimation.js";
|
|
7
6
|
import { parseMessage } from "../../utils.js";
|
|
8
|
-
import { uint8ArrayToUint16Array } from "../pointcloud/utils.js";
|
|
9
|
-
const shader = `
|
|
10
|
-
@group(0) @binding(0) var<storage, read> depthBuffer: array<u32>; // Uint16 stored as u32
|
|
11
|
-
@group(0) @binding(1) var<storage, read> intrinsicsBuffer: array<f32>;
|
|
12
|
-
@group(0) @binding(2) var<storage, read_write> xyzColorBuffer: array<u32>; // Stores XYZ + RGBA
|
|
13
|
-
|
|
14
|
-
@compute @workgroup_size(256, 1, 1)
|
|
15
|
-
fn main(@builtin(global_invocation_id) global_id: vec3<u32>) {
|
|
16
|
-
let i = global_id.x;
|
|
17
|
-
let fx = intrinsicsBuffer[0];
|
|
18
|
-
let fy = intrinsicsBuffer[1];
|
|
19
|
-
let cx = intrinsicsBuffer[2];
|
|
20
|
-
let cy = intrinsicsBuffer[3];
|
|
21
|
-
let scale = intrinsicsBuffer[4];
|
|
22
|
-
let width = intrinsicsBuffer[5];
|
|
23
|
-
let height = intrinsicsBuffer[6];
|
|
24
|
-
|
|
25
|
-
if (i >= u32(width * height)) { return; }
|
|
26
|
-
|
|
27
|
-
let u = i % u32(width);
|
|
28
|
-
let v = i / u32(width);
|
|
29
|
-
|
|
30
|
-
// Convert uint16 depth value to float (stored as u32, so we bitwise mask)
|
|
31
|
-
let rawDepth = depthBuffer[i] & 0xFFFFu;
|
|
32
|
-
let z = f32(rawDepth) * scale;
|
|
33
|
-
|
|
34
|
-
let x = (cx - f32(u)) * z / fx;
|
|
35
|
-
let y = (cy - f32(v)) * z / fy;
|
|
36
|
-
|
|
37
|
-
let base = i * 4u; // 4 values per point (X, Y, Z, Color)
|
|
38
|
-
|
|
39
|
-
// Convert floats to u32 representation for storage
|
|
40
|
-
xyzColorBuffer[base] = bitcast<u32>(x);
|
|
41
|
-
xyzColorBuffer[base + 1u] = bitcast<u32>(y);
|
|
42
|
-
xyzColorBuffer[base + 2u] = bitcast<u32>(z);
|
|
43
|
-
|
|
44
|
-
// Example: RGB set based on depth, Alpha is fixed at 255
|
|
45
|
-
let r = u32(clamp(z * 255.0, 0.0, 255.0));
|
|
46
|
-
let g = u32(clamp(y * 255.0, 0.0, 255.0));
|
|
47
|
-
let b = u32(clamp(x * 255.0, 0.0, 255.0));
|
|
48
|
-
xyzColorBuffer[base + 3u] = (r & 0xFFu) | ((g & 0xFFu) << 8) | ((b & 0xFFu) << 16) | (255u << 24);
|
|
49
|
-
}
|
|
50
|
-
`;
|
|
51
|
-
async function depthToPointcloudGPU(depthArray, width, height, fx, fy, cx, cy) {
|
|
52
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
53
|
-
if (!navigator.gpu) {
|
|
54
|
-
console.warn("WebGPU not supported.");
|
|
55
|
-
return depthToPointCloudBuffer(depthArray, width, height, fx, fy, cx, cy);
|
|
56
|
-
}
|
|
57
|
-
const adapter = await navigator.gpu.requestAdapter();
|
|
58
|
-
if (!adapter) {
|
|
59
|
-
console.warn("Couldn't request WebGPU adapter.");
|
|
60
|
-
return depthToPointCloudBuffer(depthArray, width, height, fx, fy, cx, cy);
|
|
61
|
-
}
|
|
62
|
-
const device = await adapter.requestDevice();
|
|
63
|
-
const queue = device.queue;
|
|
64
|
-
const scale = 1.0;
|
|
65
|
-
const numPixels = width * height;
|
|
66
|
-
const outputSize = numPixels * 16;
|
|
67
|
-
const depthData32 = new Uint32Array(depthArray);
|
|
68
|
-
const intrinsics = new Float32Array([fx, fy, cx, cy, scale, width, height]);
|
|
69
|
-
const depthBuffer = device.createBuffer({
|
|
70
|
-
size: depthData32.byteLength,
|
|
71
|
-
usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST,
|
|
72
|
-
});
|
|
73
|
-
const intrinsicsBuffer = device.createBuffer({
|
|
74
|
-
size: intrinsics.byteLength,
|
|
75
|
-
usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST,
|
|
76
|
-
});
|
|
77
|
-
const xyzColorBuffer = device.createBuffer({
|
|
78
|
-
size: outputSize,
|
|
79
|
-
usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC,
|
|
80
|
-
});
|
|
81
|
-
queue.writeBuffer(depthBuffer, 0, depthData32);
|
|
82
|
-
queue.writeBuffer(intrinsicsBuffer, 0, intrinsics);
|
|
83
|
-
const bindGroupLayout = device.createBindGroupLayout({
|
|
84
|
-
entries: [
|
|
85
|
-
{ binding: 0, visibility: GPUShaderStage.COMPUTE, buffer: { type: "read-only-storage" } },
|
|
86
|
-
{ binding: 1, visibility: GPUShaderStage.COMPUTE, buffer: { type: "read-only-storage" } },
|
|
87
|
-
{ binding: 2, visibility: GPUShaderStage.COMPUTE, buffer: { type: "storage" } },
|
|
88
|
-
],
|
|
89
|
-
});
|
|
90
|
-
const bindGroup = device.createBindGroup({
|
|
91
|
-
layout: bindGroupLayout,
|
|
92
|
-
entries: [
|
|
93
|
-
{ binding: 0, resource: { buffer: depthBuffer } },
|
|
94
|
-
{ binding: 1, resource: { buffer: intrinsicsBuffer } },
|
|
95
|
-
{ binding: 2, resource: { buffer: xyzColorBuffer } },
|
|
96
|
-
],
|
|
97
|
-
});
|
|
98
|
-
const shaderModule = device.createShaderModule({
|
|
99
|
-
code: shader
|
|
100
|
-
});
|
|
101
|
-
const pipeline = device.createComputePipeline({
|
|
102
|
-
layout: device.createPipelineLayout({ bindGroupLayouts: [bindGroupLayout] }),
|
|
103
|
-
compute: { module: shaderModule, entryPoint: "main" },
|
|
104
|
-
});
|
|
105
|
-
const commandEncoder = device.createCommandEncoder();
|
|
106
|
-
const passEncoder = commandEncoder.beginComputePass();
|
|
107
|
-
passEncoder.setPipeline(pipeline);
|
|
108
|
-
passEncoder.setBindGroup(0, bindGroup);
|
|
109
|
-
passEncoder.dispatchWorkgroups(Math.ceil(numPixels / 256));
|
|
110
|
-
passEncoder.end();
|
|
111
|
-
device.queue.submit([commandEncoder.finish()]);
|
|
112
|
-
const outputBuffer = device.createBuffer({
|
|
113
|
-
size: xyzColorBuffer.size,
|
|
114
|
-
usage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ,
|
|
115
|
-
});
|
|
116
|
-
const copyEncoder = device.createCommandEncoder();
|
|
117
|
-
copyEncoder.copyBufferToBuffer(xyzColorBuffer, 0, outputBuffer, 0, xyzColorBuffer.size);
|
|
118
|
-
device.queue.submit([copyEncoder.finish()]);
|
|
119
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
|
|
120
|
-
await outputBuffer.mapAsync(GPUMapMode.READ);
|
|
121
|
-
const mappedRange = outputBuffer.getMappedRange();
|
|
122
|
-
const result = new Uint8Array(mappedRange.byteLength);
|
|
123
|
-
result.set(new Uint8Array(mappedRange));
|
|
124
|
-
outputBuffer.unmap();
|
|
125
|
-
return result;
|
|
126
|
-
}
|
|
127
|
-
function depthToPointCloudBuffer(uint16Array, width, height, fx, fy, cx, cy) {
|
|
128
|
-
const depthData = Array.from({ length: height }, () => new Array(width));
|
|
129
|
-
for (let v = 0; v < height; v++) {
|
|
130
|
-
depthData[v] = depthData[v] ?? [];
|
|
131
|
-
for (let u = 0; u < width; u++) {
|
|
132
|
-
const d = uint16Array[v * width + u] ?? -1;
|
|
133
|
-
depthData[v][u] = d > 0 ? d : -1;
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
const points = [];
|
|
137
|
-
// Accumulate the x, y, z values for each pixel.
|
|
138
|
-
for (let v = 0; v < height; v++) {
|
|
139
|
-
const row = depthData[v];
|
|
140
|
-
if (!row) {
|
|
141
|
-
continue;
|
|
142
|
-
}
|
|
143
|
-
for (let u = 0; u < width; u++) {
|
|
144
|
-
const z = row[u] ?? 0;
|
|
145
|
-
const x = (cx - u) * z / fx;
|
|
146
|
-
const y = (cy - v) * z / fy;
|
|
147
|
-
points.push(x, y, z);
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
const pointCount = points.length / 3;
|
|
151
|
-
const buffer = new ArrayBuffer(pointCount * 16);
|
|
152
|
-
const view = new DataView(buffer);
|
|
153
|
-
for (let i = 0; i < pointCount; i++) {
|
|
154
|
-
const offset = i * 16;
|
|
155
|
-
view.setFloat32(offset, points[i * 3] ?? 0, true); //X
|
|
156
|
-
view.setFloat32(offset + 4, points[i * 3 + 1] ?? 0, true); //Y
|
|
157
|
-
view.setFloat32(offset + 8, points[i * 3 + 2] ?? 0, true); //Z
|
|
158
|
-
view.setUint8(offset + 12, 0); // R
|
|
159
|
-
view.setUint8(offset + 13, 0); // G
|
|
160
|
-
view.setUint8(offset + 14, 0); // B
|
|
161
|
-
view.setUint8(offset + 15, 255); // A
|
|
162
|
-
}
|
|
163
|
-
return new Uint8Array(buffer);
|
|
164
|
-
}
|
|
165
7
|
export async function deserializeDepthFrame({ topic, message, callback }) {
|
|
166
8
|
const { receiveTime, width, height } = parseMessage(message);
|
|
167
|
-
const neuralCameraIntrinsics = JSON.parse(localStorage.getItem("neuralCameraIntrinsics") ?? "{}");
|
|
168
|
-
const uint16Array = uint8ArrayToUint16Array(message.data);
|
|
169
|
-
const fx = neuralCameraIntrinsics.right.focalLenght.x;
|
|
170
|
-
const fy = neuralCameraIntrinsics.right.focalLenght.y;
|
|
171
|
-
const cx = neuralCameraIntrinsics.right.principalPoint.x;
|
|
172
|
-
const cy = neuralCameraIntrinsics.right.principalPoint.y;
|
|
173
|
-
const pointCloudBufferGPU = depthToPointcloudGPU(uint16Array, width, height, fx, fy, cx, cy);
|
|
174
9
|
const foxgloveMessage = {
|
|
175
|
-
timestamp: receiveTime,
|
|
10
|
+
timestamp: message.tsDevice ?? receiveTime,
|
|
176
11
|
frame_id: `pointcloud-${topic}-frame`,
|
|
177
12
|
point_stride: 16,
|
|
178
13
|
pose: {
|
|
@@ -190,7 +25,7 @@ export async function deserializeDepthFrame({ topic, message, callback }) {
|
|
|
190
25
|
{ name: "blue", offset: 14, type: NumericType.UINT8 },
|
|
191
26
|
{ name: "alpha", offset: 15, type: NumericType.UINT8 },
|
|
192
27
|
],
|
|
193
|
-
data:
|
|
28
|
+
data: message.data
|
|
194
29
|
};
|
|
195
30
|
callback({
|
|
196
31
|
topic,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"depth.js","sourceRoot":"","sources":["../../../../../../src/messaging/deserialization/video/depth.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,oEAAoE;AACpE,0DAA0D;
|
|
1
|
+
{"version":3,"file":"depth.js","sourceRoot":"","sources":["../../../../../../src/messaging/deserialization/video/depth.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,oEAAoE;AACpE,0DAA0D;AAE1D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0DAA0D,CAAC;AAI9F,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAS9C,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAA6B;IACjG,MAAM,EAAE,WAAW,EAAC,KAAK,EAAC,MAAM,EAAC,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IAI1D,MAAM,eAAe,GAA6B;QAChD,SAAS,EAAE,OAAO,CAAC,QAAQ,IAAI,WAAW;QAC1C,QAAQ,EAAE,cAAc,KAAK,QAAQ;QACrC,YAAY,EAAG,EAAE;QACjB,IAAI,EAAE;YACJ,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;YAC9B,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;SACxC;QACD,KAAK;QACL,MAAM;QACN,MAAM,EAAE;YACN,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,OAAO,EAAE;YACnD,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,OAAO,EAAE;YACnD,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,OAAO,EAAE;YACnD,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,CAAC,KAAK,EAAE;YACpD,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,CAAC,KAAK,EAAE;YACtD,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,CAAC,KAAK,EAAE;YACrD,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,CAAC,KAAK,EAAE;SACvD;QACD,IAAI,EAAE,OAAO,CAAC,IAAI;KACnB,CAAC;IAEF,QAAQ,CAAC;QACP,KAAK;QACL,WAAW;QACX,OAAO,EAAE,eAAe;QACxB,WAAW,EAAE,kBAAkB,CAAC,eAAe,CAAC;QAChD,UAAU,EAAE,qBAAqB;KAClC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"h264.d.ts","sourceRoot":"","sources":["../../../../../../src/messaging/deserialization/video/h264.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAEnE,OAAO,EAAE,YAAY,EAAE,MAAM,6CAA6C,CAAC;AAC3E,OAAO,EAAE,QAAQ,EAAE,MAAM,yCAAyC,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,uCAAuC,CAAC;AAIlE,MAAM,MAAM,aAAa,GAAG,GAAG,CAAC,MAAM,EAAE;IACtC,OAAO,EAAE,YAAY,CAAC;IACtB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CAChC,CAAC,CAAC;AA8CH,KAAK,+BAA+B,GAAG;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,YAAY,GAAG,QAAQ,CAAC;IACjC,aAAa,EAAE,aAAa,CAAC;IAC7B,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;CACzC,CAAC;AAEF,wBAAsB,2BAA2B,CAAC,EAChD,KAAK,EACL,OAAO,EACP,aAAa,EACb,QAAQ,EACT,EAAE,+BAA+B,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"h264.d.ts","sourceRoot":"","sources":["../../../../../../src/messaging/deserialization/video/h264.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAEnE,OAAO,EAAE,YAAY,EAAE,MAAM,6CAA6C,CAAC;AAC3E,OAAO,EAAE,QAAQ,EAAE,MAAM,yCAAyC,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,uCAAuC,CAAC;AAIlE,MAAM,MAAM,aAAa,GAAG,GAAG,CAAC,MAAM,EAAE;IACtC,OAAO,EAAE,YAAY,CAAC;IACtB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CAChC,CAAC,CAAC;AA8CH,KAAK,+BAA+B,GAAG;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,YAAY,GAAG,QAAQ,CAAC;IACjC,aAAa,EAAE,aAAa,CAAC;IAC7B,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;CACzC,CAAC;AAEF,wBAAsB,2BAA2B,CAAC,EAChD,KAAK,EACL,OAAO,EACP,aAAa,EACb,QAAQ,EACT,EAAE,+BAA+B,GAAG,OAAO,CAAC,IAAI,CAAC,CAgDjD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"h264.js","sourceRoot":"","sources":["../../../../../../src/messaging/deserialization/video/h264.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"h264.js","sourceRoot":"","sources":["../../../../../../src/messaging/deserialization/video/h264.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,18 @@
|
|
|
1
|
-
import { MessageEvent } from "@foxglove/studio-base/players/types";
|
|
2
|
-
import { TopicSizes } from "./deserialization/detections/detection.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
1
|
+
import type { MessageEvent } from "@foxglove/studio-base/players/types";
|
|
2
|
+
import { type TopicSizes } from "./deserialization/detections/detection.js";
|
|
3
|
+
import type { NeuralCameraIntrinsics } from "./deserialization/pointcloud/utils.js";
|
|
4
|
+
import { type TopicDecoders } from "./deserialization/video/h264.js";
|
|
5
|
+
import type { FoxgloveMessage } from "../connection/communicator";
|
|
6
|
+
import { type EncodedFrame } from "../protobuf.generated/EncodedFrame.js";
|
|
7
|
+
import type { ImageAnnotations } from "../protobuf.generated/ImageAnnotations.js";
|
|
8
|
+
import type { ImgDetections } from "../protobuf.generated/ImgDetections.js";
|
|
9
|
+
import { type ImgFrame } from "../protobuf.generated/ImgFrame.js";
|
|
10
|
+
import type { PointCloudData } from "../protobuf.generated/PointCloudData.js";
|
|
11
|
+
import type { SpatialImgDetections } from "../protobuf.generated/SpatialImgDetections.js";
|
|
11
12
|
export type DeserializeDepthAiMessageArgs = {
|
|
12
13
|
topic: string;
|
|
13
14
|
topicDecoders: TopicDecoders;
|
|
15
|
+
neuralCameraIntrinsics: NeuralCameraIntrinsics;
|
|
14
16
|
topicSizes: TopicSizes;
|
|
15
17
|
callback: (event: MessageEvent) => void;
|
|
16
18
|
} & ({
|
|
@@ -34,6 +36,8 @@ export type DeserializeDepthAiMessageArgs = {
|
|
|
34
36
|
});
|
|
35
37
|
export type DeserializationWorkerApi = {
|
|
36
38
|
initCallback: (cb: (event: MessageEvent) => void) => void;
|
|
37
|
-
handleMessageToDecode: ({ schema, buffer, topic }: FoxgloveMessage
|
|
39
|
+
handleMessageToDecode: ({ schema, buffer, topic, neuralCameraIntrinsics }: FoxgloveMessage & {
|
|
40
|
+
neuralCameraIntrinsics: NeuralCameraIntrinsics;
|
|
41
|
+
}) => void;
|
|
38
42
|
};
|
|
39
43
|
//# sourceMappingURL=deserialization.worker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deserialization.worker.d.ts","sourceRoot":"","sources":["../../../../src/messaging/deserialization.worker.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"deserialization.worker.d.ts","sourceRoot":"","sources":["../../../../src/messaging/deserialization.worker.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAGxE,OAAO,EAA4B,KAAK,UAAU,EAAE,MAAM,2CAA2C,CAAC;AAEtG,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAGpF,OAAO,EAA+B,KAAK,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAIlG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,KAAK,YAAY,EAAW,MAAM,uCAAuC,CAAC;AACnF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAClF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EAAE,KAAK,QAAQ,EAAQ,MAAM,mCAAmC,CAAC;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+CAA+C,CAAC;AAE1F,MAAM,MAAM,6BAA6B,GAAG;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,aAAa,CAAC;IAC7B,sBAAsB,EAAE,sBAAsB,CAAC;IAC/C,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;CACzC,GAAG,CACE;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,QAAQ,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,YAAY,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,OAAO,EAAE,aAAa,CAAA;CAAE,GACnD;IAAE,IAAI,EAAE,uBAAuB,CAAC;IAAC,OAAO,EAAE,gBAAgB,CAAA;CAAE,GAC5D;IAAE,IAAI,EAAE,wBAAwB,CAAC;IAAC,OAAO,EAAE,oBAAoB,CAAA;CAAE,GACjE;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,cAAc,CAAA;CAAE,CAClD,CAAC;AAmGJ,MAAM,MAAM,wBAAwB,GAAG;IACrC,YAAY,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,KAAK,IAAI,CAAC;IAC1D,qBAAqB,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAC,sBAAsB,EAAG,EAAE,eAAe,GAAG;QAAE,sBAAsB,EAAE,sBAAsB,CAAA;KAAE,KAAK,IAAI,CAAC;CAC1J,CAAA"}
|
|
@@ -9,10 +9,10 @@ import { deserializeColorFrame } from "./deserialization/video/color.js";
|
|
|
9
9
|
import { deserializeDepthFrame } from "./deserialization/video/depth.js";
|
|
10
10
|
import { deserializeEncodedFrameH264 } from "./deserialization/video/h264.js";
|
|
11
11
|
import { deserializeMJPEGFrame } from "./deserialization/video/mjpeg.js";
|
|
12
|
+
import { protobufsBySchema } from "./protobuf";
|
|
12
13
|
import { parseMessage } from "./utils.js";
|
|
13
14
|
import { Profile } from "../protobuf.generated/EncodedFrame.js";
|
|
14
15
|
import { Type } from "../protobuf.generated/ImgFrame.js";
|
|
15
|
-
import { protobufsBySchema } from "./protobuf";
|
|
16
16
|
const topicDecoders = new Map();
|
|
17
17
|
const topicSizes = new Map();
|
|
18
18
|
let callback;
|
|
@@ -33,7 +33,7 @@ function handleMessageToDecode({ schema, buffer, topic }) {
|
|
|
33
33
|
topicDecoders,
|
|
34
34
|
message,
|
|
35
35
|
callback,
|
|
36
|
-
type: protobufSchema.type
|
|
36
|
+
type: protobufSchema.type,
|
|
37
37
|
});
|
|
38
38
|
}
|
|
39
39
|
async function deserializeDepthAiMessage(args) {
|
|
@@ -61,6 +61,7 @@ async function deserializeDepthAiMessage(args) {
|
|
|
61
61
|
break;
|
|
62
62
|
}
|
|
63
63
|
case Type.RAW16: {
|
|
64
|
+
// Used for point cloud
|
|
64
65
|
await deserializeDepthFrame({ topic, message, callback });
|
|
65
66
|
break;
|
|
66
67
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deserialization.worker.js","sourceRoot":"","sources":["../../../../src/messaging/deserialization.worker.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,oEAAoE;AACpE,0DAA0D;AAC1D,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAInC,OAAO,EAAE,8BAA8B,EAAE,MAAM,wCAAwC,CAAC;AACxF,OAAO,EAAE,wBAAwB,
|
|
1
|
+
{"version":3,"file":"deserialization.worker.js","sourceRoot":"","sources":["../../../../src/messaging/deserialization.worker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-handler.d.ts","sourceRoot":"","sources":["../../../../src/messaging/message-handler.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAKnE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"message-handler.d.ts","sourceRoot":"","sources":["../../../../src/messaging/message-handler.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAKnE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAGhE,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;CAC5C,CAAC;AAaF,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GAAG,cAAc,CAgB5F"}
|
|
@@ -7,6 +7,7 @@ function initWorker(callback) {
|
|
|
7
7
|
workerWrap.initCallback(Comlink.proxy(callback));
|
|
8
8
|
return workerWrap;
|
|
9
9
|
}
|
|
10
|
+
const neuralCameraIntrinsics = JSON.parse(localStorage.getItem("neuralCameraIntrinsics") ?? "{}");
|
|
10
11
|
export function createMessageHandler(callback) {
|
|
11
12
|
const workerPool = new Map();
|
|
12
13
|
return {
|
|
@@ -17,7 +18,7 @@ export function createMessageHandler(callback) {
|
|
|
17
18
|
worker = newWorker;
|
|
18
19
|
workerPool.set(topic, newWorker);
|
|
19
20
|
}
|
|
20
|
-
worker.handleMessageToDecode({ schema, buffer, topic });
|
|
21
|
+
worker.handleMessageToDecode({ schema, buffer, topic, neuralCameraIntrinsics });
|
|
21
22
|
}),
|
|
22
23
|
};
|
|
23
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-handler.js","sourceRoot":"","sources":["../../../../src/messaging/message-handler.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,oEAAoE;AACpE,0DAA0D;AAE1D,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"message-handler.js","sourceRoot":"","sources":["../../../../src/messaging/message-handler.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,oEAAoE;AACpE,0DAA0D;AAE1D,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAanC,SAAS,UAAU,CAAC,QAAuC;IACzD,MAAM,UAAU,GAA6B,OAAO,CAAC,IAAI,CACvD,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,0BAA0B,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAC9G,CAAC;IAEF,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEjD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,sBAAsB,GAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,wBAAwB,CAAC,IAAI,IAAI,CAA0B,CAAC;AAC5H,MAAM,UAAU,oBAAoB,CAAC,QAAuC;IAC1E,MAAM,UAAU,GAA0C,IAAI,GAAG,EAAE,CAAC;IAEpE,OAAO;QACL,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;YACrC,IAAI,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAEnC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;gBACvC,MAAM,GAAG,SAAS,CAAC;gBACnB,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YACnC,CAAC;YAED,MAAO,CAAC,qBAAqB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAC,sBAAsB,EAAE,CAAC,CAAC;QAClF,CAAC,CAA6B;KAC/B,CAAC;AACJ,CAAC"}
|
|
@@ -5,7 +5,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
5
5
|
import React from "react";
|
|
6
6
|
import { Panel, useDetections } from "../components/Panel.js";
|
|
7
7
|
import { createRenderDelaySampler } from "../components/measure-render-delay";
|
|
8
|
-
import {
|
|
8
|
+
import { EventMetricsManager } from "../utils/metrics-manager";
|
|
9
9
|
const ImagePanelComponent = React.lazy(async () => await import("@foxglove/studio-base/panels/Image"));
|
|
10
10
|
const ImagePanelBody = ({ topic, frameRenderedEvent }) => {
|
|
11
11
|
const { detections } = useDetections();
|
|
@@ -27,7 +27,7 @@ export const ImagePanel = React.memo(function ImagePanel(props) {
|
|
|
27
27
|
const [renderedFps, setRenderedFps] = React.useState(undefined);
|
|
28
28
|
const { averageFrameDelay, addFrameTime } = createRenderDelaySampler();
|
|
29
29
|
React.useEffect(() => {
|
|
30
|
-
renderedFpsMetricsManagerRef.current = new
|
|
30
|
+
renderedFpsMetricsManagerRef.current = new EventMetricsManager();
|
|
31
31
|
}, []);
|
|
32
32
|
// biome-ignore lint/correctness/useExhaustiveDependencies: <explanation>
|
|
33
33
|
React.useEffect(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImagePanel.js","sourceRoot":"","sources":["../../../../src/panels/ImagePanel.tsx"],"names":[],"mappings":";AAAA,sEAAsE;AACtE,oEAAoE;AACpE,0DAA0D;AAE1D,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,KAAK,EAAmB,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"ImagePanel.js","sourceRoot":"","sources":["../../../../src/panels/ImagePanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
5
5
|
import React from "react";
|
|
6
6
|
import { Panel } from "../components/Panel.js";
|
|
7
7
|
import { createRenderDelaySampler } from "../components/measure-render-delay.js";
|
|
8
|
-
import {
|
|
8
|
+
import { EventMetricsManager } from "../utils/metrics-manager.js";
|
|
9
9
|
const ThreeDeeRenderComponent = React.lazy(async () => await import("@foxglove/studio-base/panels/ThreeDeeRender"));
|
|
10
10
|
const PointCloudPanelBody = ({ topic, frameRenderedEvent }) => {
|
|
11
11
|
const neuralCameraIntrinsics = JSON.parse(localStorage.getItem("neuralCameraIntrinsics") ?? "{}");
|
|
@@ -44,7 +44,7 @@ export const PointCloudPanel = React.memo(function PointCloudPanel({ topic, togg
|
|
|
44
44
|
const [renderedFps, setRenderedFps] = React.useState(undefined);
|
|
45
45
|
const { averageFrameDelay, addFrameTime } = createRenderDelaySampler();
|
|
46
46
|
React.useEffect(() => {
|
|
47
|
-
renderedFpsMetricsManagerRef.current = new
|
|
47
|
+
renderedFpsMetricsManagerRef.current = new EventMetricsManager();
|
|
48
48
|
}, []);
|
|
49
49
|
// biome-ignore lint/correctness/useExhaustiveDependencies: <explanation>
|
|
50
50
|
React.useEffect(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PointCloudPanel.js","sourceRoot":"","sources":["../../../../src/panels/PointCloudPanel.tsx"],"names":[],"mappings":";AAAA,sEAAsE;AACtE,oEAAoE;AACpE,0DAA0D;AAE1D,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAC/C,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AAEjF,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"PointCloudPanel.js","sourceRoot":"","sources":["../../../../src/panels/PointCloudPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,14 @@
|
|
|
1
|
-
export declare class
|
|
1
|
+
export declare class EventMetricsManager {
|
|
2
2
|
metrics: Record<string, number[]>;
|
|
3
3
|
registerEvent(topic: string): void;
|
|
4
4
|
calculate(topic: string): number;
|
|
5
5
|
}
|
|
6
|
+
export declare class ThroughputMetricsManager {
|
|
7
|
+
metrics: Record<string, {
|
|
8
|
+
timestamp: number;
|
|
9
|
+
value: number;
|
|
10
|
+
}[]>;
|
|
11
|
+
registerEvent(topic: string, value: number): void;
|
|
12
|
+
calculate(topic: string): number;
|
|
13
|
+
}
|
|
6
14
|
//# sourceMappingURL=metrics-manager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics-manager.d.ts","sourceRoot":"","sources":["../../../../src/utils/metrics-manager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"metrics-manager.d.ts","sourceRoot":"","sources":["../../../../src/utils/metrics-manager.ts"],"names":[],"mappings":"AAUA,qBAAa,mBAAmB;IACvB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAM;IAEvC,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAQlC,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;CAkBxC;AAED,qBAAa,wBAAwB;IAC5B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC,CAAM;IAErE,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAQjD,SAAS,CAAC,KAAK,EAAE,MAAM;CAwB/B"}
|
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
2
|
// License, v2.0. If a copy of the MPL was not distributed with this
|
|
3
3
|
// file, You can obtain one at http://mozilla.org/MPL/2.0/
|
|
4
|
-
|
|
4
|
+
const MAX_SAMPLE_SIZE = 100;
|
|
5
|
+
function bytesToMegabytes(bytes) {
|
|
6
|
+
return bytes / (1024 * 1024);
|
|
7
|
+
}
|
|
8
|
+
export class EventMetricsManager {
|
|
5
9
|
metrics = {};
|
|
6
10
|
registerEvent(topic) {
|
|
7
11
|
const currentTime = performance.now();
|
|
8
12
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
9
13
|
this.metrics[topic] ??= [];
|
|
10
14
|
this.metrics[topic].unshift(currentTime);
|
|
11
|
-
this.metrics[topic].length =
|
|
15
|
+
this.metrics[topic].length = MAX_SAMPLE_SIZE;
|
|
12
16
|
}
|
|
13
17
|
calculate(topic) {
|
|
14
18
|
const topicMetrics = this.metrics[topic];
|
|
@@ -26,4 +30,31 @@ export class MetricsManager {
|
|
|
26
30
|
return Math.round(fps);
|
|
27
31
|
}
|
|
28
32
|
}
|
|
33
|
+
export class ThroughputMetricsManager {
|
|
34
|
+
metrics = {};
|
|
35
|
+
registerEvent(topic, value) {
|
|
36
|
+
const timestamp = performance.now();
|
|
37
|
+
this.metrics[topic] ??= [];
|
|
38
|
+
this.metrics[topic].unshift({ timestamp, value });
|
|
39
|
+
this.metrics[topic].length = MAX_SAMPLE_SIZE;
|
|
40
|
+
}
|
|
41
|
+
calculate(topic) {
|
|
42
|
+
const topicMetrics = this.metrics[topic];
|
|
43
|
+
if (!topicMetrics || topicMetrics.length < 2) {
|
|
44
|
+
return 0;
|
|
45
|
+
}
|
|
46
|
+
// Get time span in seconds
|
|
47
|
+
const timeSpanMs = topicMetrics[0].timestamp - topicMetrics[topicMetrics.length - 1].timestamp;
|
|
48
|
+
const timeSpanSec = timeSpanMs / 1000;
|
|
49
|
+
if (timeSpanSec === 0) {
|
|
50
|
+
return 0;
|
|
51
|
+
}
|
|
52
|
+
// Sum up all values (bytes)
|
|
53
|
+
const totalBytes = topicMetrics.reduce((sum, metric) => sum + metric.value, 0);
|
|
54
|
+
// Calculate bytes per second
|
|
55
|
+
const bytesPerSecond = totalBytes / timeSpanSec;
|
|
56
|
+
// Return rounded value
|
|
57
|
+
return Number(bytesToMegabytes(bytesPerSecond).toFixed(2));
|
|
58
|
+
}
|
|
59
|
+
}
|
|
29
60
|
//# sourceMappingURL=metrics-manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics-manager.js","sourceRoot":"","sources":["../../../../src/utils/metrics-manager.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,oEAAoE;AACpE,0DAA0D;AAE1D,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"metrics-manager.js","sourceRoot":"","sources":["../../../../src/utils/metrics-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"poitcloud-sync.d.ts","sourceRoot":"","sources":["../../../../src/utils/poitcloud-sync.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AAEzF,qBAAa,sBAAsB;;
|
|
1
|
+
{"version":3,"file":"poitcloud-sync.d.ts","sourceRoot":"","sources":["../../../../src/utils/poitcloud-sync.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AAEzF,qBAAa,sBAAsB;;IAwC1B,YAAY,EAAE,wBAAwB,EAAE,CAAM;IAG9C,QAAQ,CAAC,IAAI,EAAC,MAAM,GAAG,wBAAwB,GAAG,IAAI;IAsBtD,QAAQ,CAAC,KAAK,EAAE,wBAAwB,GAAG,IAAI;CAOvD"}
|
|
@@ -15,7 +15,10 @@ export class PoitCloudSyncFramework {
|
|
|
15
15
|
// biome-ignore lint/style/noNonNullAssertion:
|
|
16
16
|
const midKey = arr[mid].timestamp.nsec;
|
|
17
17
|
if (midKey === targetKey) {
|
|
18
|
-
|
|
18
|
+
if ((Math.abs(midKey - targetKey) / 10 ** 9) < this.#MAX_DELAY_SEC) {
|
|
19
|
+
return { res: bestMatch, index: left };
|
|
20
|
+
}
|
|
21
|
+
return { res: null, index: mid };
|
|
19
22
|
}
|
|
20
23
|
if (midKey < targetKey) {
|
|
21
24
|
bestMatch = arr[mid];
|
|
@@ -25,10 +28,14 @@ export class PoitCloudSyncFramework {
|
|
|
25
28
|
right = mid - 1;
|
|
26
29
|
}
|
|
27
30
|
}
|
|
28
|
-
|
|
31
|
+
if (bestMatch && (Math.abs(bestMatch.timestamp.nsec - targetKey) / 10 ** 9) < this.#MAX_DELAY_SEC) {
|
|
32
|
+
return { res: bestMatch, index: left };
|
|
33
|
+
}
|
|
34
|
+
return { res: null, index: left };
|
|
29
35
|
}
|
|
30
36
|
storedFrames = [];
|
|
31
|
-
#
|
|
37
|
+
#MAX_DELAY_SEC = 0.01;
|
|
38
|
+
#MAX_STORED_FRAMES = 15;
|
|
32
39
|
getFrame(nsec) {
|
|
33
40
|
const { res, index = 0 } = this.#binarySearch(this.storedFrames, nsec);
|
|
34
41
|
// cleans the array
|
|
@@ -38,8 +45,14 @@ export class PoitCloudSyncFramework {
|
|
|
38
45
|
if (res) {
|
|
39
46
|
return res;
|
|
40
47
|
}
|
|
41
|
-
|
|
42
|
-
|
|
48
|
+
const popedFrame = this.storedFrames.pop();
|
|
49
|
+
if (popedFrame) {
|
|
50
|
+
if ((Math.abs(popedFrame.timestamp.nsec - nsec) / 10 ** 9) < this.#MAX_DELAY_SEC) {
|
|
51
|
+
return popedFrame;
|
|
52
|
+
}
|
|
53
|
+
this.storedFrames.push(popedFrame);
|
|
54
|
+
}
|
|
55
|
+
return null;
|
|
43
56
|
}
|
|
44
57
|
addFrame(frame) {
|
|
45
58
|
if (Object.keys(this.storedFrames).length > this.#MAX_STORED_FRAMES) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"poitcloud-sync.js","sourceRoot":"","sources":["../../../../src/utils/poitcloud-sync.ts"],"names":[],"mappings":"AAKA,MAAM,OAAO,sBAAsB;IACjC,aAAa,CAAC,GAA+B,EAAE,SAAiB;QAC9D,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,IAAI,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC;QACvB,IAAI,SAAS,GAAG,IAAI,CAAC;QACrB,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACpC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QACjC,CAAC;QACD,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,EAAE,CAAC;YACvC,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC;QACzD,CAAC;QAED,OAAO,IAAI,IAAI,KAAK,EAAE,CAAC;YACrB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3C,+CAA+C;YAC/C,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAE,CAAC,SAAS,CAAC,IAAI,CAAC;YAExC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"poitcloud-sync.js","sourceRoot":"","sources":["../../../../src/utils/poitcloud-sync.ts"],"names":[],"mappings":"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"}
|