@luxonis/depthai-viewer-common 3.7.4 → 3.7.6

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 (524) hide show
  1. package/LICENSE +202 -0
  2. package/LICENSE.MPL-2.0 +373 -0
  3. package/NOTICE +15 -0
  4. package/REFACTOR_HANDOFF.md +969 -0
  5. package/REFACTOR_PLAN.md +265 -0
  6. package/THIRD_PARTY_NOTICES.md +3624 -0
  7. package/build-utils.sh +45 -0
  8. package/dist/components/DepthAIContext.d.ts +1 -1
  9. package/dist/components/DepthAIContext.d.ts.map +1 -1
  10. package/dist/components/DepthAIContext.js.map +1 -1
  11. package/dist/components/Streams.d.ts.map +1 -1
  12. package/dist/components/Streams.js +10 -3
  13. package/dist/components/Streams.js.map +1 -1
  14. package/dist/dai-connection/connection.d.ts +5 -3
  15. package/dist/dai-connection/connection.d.ts.map +1 -1
  16. package/dist/dai-connection/connection.js +3 -3
  17. package/dist/dai-connection/connection.js.map +1 -1
  18. package/dist/hooks/benchmark-automation.d.ts.map +1 -1
  19. package/dist/hooks/benchmark-automation.js +1 -1
  20. package/dist/hooks/benchmark-automation.js.map +1 -1
  21. package/dist/hooks/connection.d.ts +1 -1
  22. package/dist/hooks/connection.d.ts.map +1 -1
  23. package/dist/hooks/connection.js +21 -0
  24. package/dist/hooks/connection.js.map +1 -1
  25. package/dist/index.css +160 -0
  26. package/dist/models/device-configuration.d.ts +1 -1
  27. package/dist/providers/ConnectionProvider.d.ts.map +1 -1
  28. package/dist/providers/ConnectionProvider.js +1 -1
  29. package/dist/providers/ConnectionProvider.js.map +1 -1
  30. package/dist/providers/VisualizerRuntimeConfigProvider.d.ts +2 -1
  31. package/dist/providers/VisualizerRuntimeConfigProvider.d.ts.map +1 -1
  32. package/dist/providers/VisualizerRuntimeConfigProvider.js +6 -2
  33. package/dist/providers/VisualizerRuntimeConfigProvider.js.map +1 -1
  34. package/dist/utils/vite-dev-fix.js +1 -1
  35. package/dist/utils/vite-dev-fix.js.map +1 -1
  36. package/dist/visualizer/browser-decoder-fixtures-entry.d.ts +2 -0
  37. package/dist/visualizer/browser-decoder-fixtures-entry.d.ts.map +1 -0
  38. package/dist/visualizer/browser-decoder-fixtures-entry.js +28 -0
  39. package/dist/visualizer/browser-decoder-fixtures-entry.js.map +1 -0
  40. package/dist/visualizer/components/CssBaseline.d.ts +5 -0
  41. package/dist/visualizer/components/CssBaseline.d.ts.map +1 -0
  42. package/dist/visualizer/components/CssBaseline.js +5 -0
  43. package/dist/visualizer/components/CssBaseline.js.map +1 -0
  44. package/dist/visualizer/components/EmptyState.d.ts +7 -0
  45. package/dist/visualizer/components/EmptyState.d.ts.map +1 -0
  46. package/dist/visualizer/components/EmptyState.js +5 -0
  47. package/dist/visualizer/components/EmptyState.js.map +1 -0
  48. package/dist/visualizer/components/ErrorBoundary.d.ts +16 -0
  49. package/dist/visualizer/components/ErrorBoundary.d.ts.map +1 -0
  50. package/dist/visualizer/components/ErrorBoundary.js +27 -0
  51. package/dist/visualizer/components/ErrorBoundary.js.map +1 -0
  52. package/dist/visualizer/components/GlobalCss.d.ts +2 -0
  53. package/dist/visualizer/components/GlobalCss.d.ts.map +1 -0
  54. package/dist/visualizer/components/GlobalCss.js +4 -0
  55. package/dist/visualizer/components/GlobalCss.js.map +1 -0
  56. package/dist/visualizer/components/Panel.d.ts +37 -0
  57. package/dist/visualizer/components/Panel.d.ts.map +1 -0
  58. package/dist/visualizer/components/Panel.js +129 -0
  59. package/dist/visualizer/components/Panel.js.map +1 -0
  60. package/dist/visualizer/components/PanelLayout.d.ts +3 -0
  61. package/dist/visualizer/components/PanelLayout.d.ts.map +1 -0
  62. package/dist/visualizer/components/PanelLayout.js +5 -0
  63. package/dist/visualizer/components/PanelLayout.js.map +1 -0
  64. package/dist/visualizer/components/PanelToolbar.d.ts +24 -0
  65. package/dist/visualizer/components/PanelToolbar.d.ts.map +1 -0
  66. package/dist/visualizer/components/PanelToolbar.js +69 -0
  67. package/dist/visualizer/components/PanelToolbar.js.map +1 -0
  68. package/dist/visualizer/components/RemountOnValueChange.d.ts +7 -0
  69. package/dist/visualizer/components/RemountOnValueChange.d.ts.map +1 -0
  70. package/dist/visualizer/components/RemountOnValueChange.js +20 -0
  71. package/dist/visualizer/components/RemountOnValueChange.js.map +1 -0
  72. package/dist/visualizer/components/measure-event-loop-delay.d.ts +2 -0
  73. package/dist/visualizer/components/measure-event-loop-delay.d.ts.map +1 -0
  74. package/dist/visualizer/components/measure-event-loop-delay.js +18 -0
  75. package/dist/visualizer/components/measure-event-loop-delay.js.map +1 -0
  76. package/dist/visualizer/components/shared-interval.d.ts +2 -0
  77. package/dist/visualizer/components/shared-interval.d.ts.map +1 -0
  78. package/dist/visualizer/components/shared-interval.js +50 -0
  79. package/dist/visualizer/components/shared-interval.js.map +1 -0
  80. package/dist/visualizer/components/use-element-width.d.ts +3 -0
  81. package/dist/visualizer/components/use-element-width.d.ts.map +1 -0
  82. package/dist/visualizer/components/use-element-width.js +23 -0
  83. package/dist/visualizer/components/use-element-width.js.map +1 -0
  84. package/dist/visualizer/connection/adapter.d.ts +43 -0
  85. package/dist/visualizer/connection/adapter.d.ts.map +1 -0
  86. package/dist/visualizer/connection/adapter.js +196 -0
  87. package/dist/visualizer/connection/adapter.js.map +1 -0
  88. package/dist/visualizer/connection/communicator.d.ts +94 -0
  89. package/dist/visualizer/connection/communicator.d.ts.map +1 -0
  90. package/dist/visualizer/connection/communicator.js +134 -0
  91. package/dist/visualizer/connection/communicator.js.map +1 -0
  92. package/dist/visualizer/connection/connection.d.ts +54 -0
  93. package/dist/visualizer/connection/connection.d.ts.map +1 -0
  94. package/dist/visualizer/connection/connection.js +155 -0
  95. package/dist/visualizer/connection/connection.js.map +1 -0
  96. package/dist/visualizer/connection/foxglove-client-adapter.d.ts +31 -0
  97. package/dist/visualizer/connection/foxglove-client-adapter.d.ts.map +1 -0
  98. package/dist/visualizer/connection/foxglove-client-adapter.js +125 -0
  99. package/dist/visualizer/connection/foxglove-client-adapter.js.map +1 -0
  100. package/dist/visualizer/connection/foxglove-connection.d.ts +86 -0
  101. package/dist/visualizer/connection/foxglove-connection.d.ts.map +1 -0
  102. package/dist/visualizer/connection/foxglove-connection.js +329 -0
  103. package/dist/visualizer/connection/foxglove-connection.js.map +1 -0
  104. package/dist/visualizer/connection/foxglove-protocol.d.ts +6 -0
  105. package/dist/visualizer/connection/foxglove-protocol.d.ts.map +1 -0
  106. package/dist/visualizer/connection/foxglove-protocol.js +63 -0
  107. package/dist/visualizer/connection/foxglove-protocol.js.map +1 -0
  108. package/dist/visualizer/connection/foxglove-ws-types.d.ts +80 -0
  109. package/dist/visualizer/connection/foxglove-ws-types.d.ts.map +1 -0
  110. package/dist/visualizer/connection/foxglove-ws-types.js +13 -0
  111. package/dist/visualizer/connection/foxglove-ws-types.js.map +1 -0
  112. package/dist/visualizer/connection/webrtc/bridge.d.ts +11 -0
  113. package/dist/visualizer/connection/webrtc/bridge.d.ts.map +1 -0
  114. package/dist/visualizer/connection/webrtc/bridge.js +453 -0
  115. package/dist/visualizer/connection/webrtc/bridge.js.map +1 -0
  116. package/dist/visualizer/connection/webrtc/comms-proxy.d.ts +9 -0
  117. package/dist/visualizer/connection/webrtc/comms-proxy.d.ts.map +1 -0
  118. package/dist/visualizer/connection/webrtc/comms-proxy.js +90 -0
  119. package/dist/visualizer/connection/webrtc/comms-proxy.js.map +1 -0
  120. package/dist/visualizer/connection/webrtc/handler.d.ts +97 -0
  121. package/dist/visualizer/connection/webrtc/handler.d.ts.map +1 -0
  122. package/dist/visualizer/connection/webrtc/handler.js +149 -0
  123. package/dist/visualizer/connection/webrtc/handler.js.map +1 -0
  124. package/dist/visualizer/connection/webrtc/worker.d.ts +2 -0
  125. package/dist/visualizer/connection/webrtc/worker.d.ts.map +1 -0
  126. package/dist/visualizer/connection/webrtc/worker.js +32 -0
  127. package/dist/visualizer/connection/webrtc/worker.js.map +1 -0
  128. package/dist/visualizer/connection/ws/worker.d.ts +17 -0
  129. package/dist/visualizer/connection/ws/worker.d.ts.map +1 -0
  130. package/dist/visualizer/connection/ws/worker.js +161 -0
  131. package/dist/visualizer/connection/ws/worker.js.map +1 -0
  132. package/dist/visualizer/context/AppConfigurationContext.d.ts +9 -0
  133. package/dist/visualizer/context/AppConfigurationContext.d.ts.map +1 -0
  134. package/dist/visualizer/context/AppConfigurationContext.js +4 -0
  135. package/dist/visualizer/context/AppConfigurationContext.js.map +1 -0
  136. package/dist/visualizer/context/ConnectionsProvider.d.ts +5 -0
  137. package/dist/visualizer/context/ConnectionsProvider.d.ts.map +1 -0
  138. package/dist/visualizer/context/ConnectionsProvider.js +8 -0
  139. package/dist/visualizer/context/ConnectionsProvider.js.map +1 -0
  140. package/dist/visualizer/context/CurrentLayoutContext.d.ts +63 -0
  141. package/dist/visualizer/context/CurrentLayoutContext.d.ts.map +1 -0
  142. package/dist/visualizer/context/CurrentLayoutContext.js +4 -0
  143. package/dist/visualizer/context/CurrentLayoutContext.js.map +1 -0
  144. package/dist/visualizer/context/MessagePipelineInternalContext.d.ts +3 -0
  145. package/dist/visualizer/context/MessagePipelineInternalContext.d.ts.map +1 -0
  146. package/dist/visualizer/context/MessagePipelineInternalContext.js +3 -0
  147. package/dist/visualizer/context/MessagePipelineInternalContext.js.map +1 -0
  148. package/dist/visualizer/context/MessagePipelineProvider.d.ts +17 -0
  149. package/dist/visualizer/context/MessagePipelineProvider.d.ts.map +1 -0
  150. package/dist/visualizer/context/MessagePipelineProvider.js +224 -0
  151. package/dist/visualizer/context/MessagePipelineProvider.js.map +1 -0
  152. package/dist/visualizer/context/MinimalCurrentLayoutProvider.d.ts +5 -0
  153. package/dist/visualizer/context/MinimalCurrentLayoutProvider.d.ts.map +1 -0
  154. package/dist/visualizer/context/MinimalCurrentLayoutProvider.js +198 -0
  155. package/dist/visualizer/context/MinimalCurrentLayoutProvider.js.map +1 -0
  156. package/dist/visualizer/context/PanelCatalogContext.d.ts +11 -0
  157. package/dist/visualizer/context/PanelCatalogContext.d.ts.map +1 -0
  158. package/dist/visualizer/context/PanelCatalogContext.js +4 -0
  159. package/dist/visualizer/context/PanelCatalogContext.js.map +1 -0
  160. package/dist/visualizer/context/PanelStateContextProvider.d.ts +5 -0
  161. package/dist/visualizer/context/PanelStateContextProvider.d.ts.map +1 -0
  162. package/dist/visualizer/context/PanelStateContextProvider.js +5 -0
  163. package/dist/visualizer/context/PanelStateContextProvider.js.map +1 -0
  164. package/dist/visualizer/context/TimelineInteractionStateProvider.d.ts +5 -0
  165. package/dist/visualizer/context/TimelineInteractionStateProvider.d.ts.map +1 -0
  166. package/dist/visualizer/context/TimelineInteractionStateProvider.js +5 -0
  167. package/dist/visualizer/context/TimelineInteractionStateProvider.js.map +1 -0
  168. package/dist/visualizer/context/VisualizerContext.d.ts +13 -0
  169. package/dist/visualizer/context/VisualizerContext.d.ts.map +1 -0
  170. package/dist/visualizer/context/VisualizerContext.js +81 -0
  171. package/dist/visualizer/context/VisualizerContext.js.map +1 -0
  172. package/dist/visualizer/context/VisualizerFlatContext.d.ts +10 -0
  173. package/dist/visualizer/context/VisualizerFlatContext.d.ts.map +1 -0
  174. package/dist/visualizer/context/VisualizerFlatContext.js +13 -0
  175. package/dist/visualizer/context/VisualizerFlatContext.js.map +1 -0
  176. package/dist/visualizer/context/message-pipeline-store.d.ts +35 -0
  177. package/dist/visualizer/context/message-pipeline-store.d.ts.map +1 -0
  178. package/dist/visualizer/context/message-pipeline-store.js +275 -0
  179. package/dist/visualizer/context/message-pipeline-store.js.map +1 -0
  180. package/dist/visualizer/context/message-pipeline-types.d.ts +52 -0
  181. package/dist/visualizer/context/message-pipeline-types.d.ts.map +1 -0
  182. package/dist/visualizer/context/message-pipeline-types.js +5 -0
  183. package/dist/visualizer/context/message-pipeline-types.js.map +1 -0
  184. package/dist/visualizer/context/pause-frame.d.ts +4 -0
  185. package/dist/visualizer/context/pause-frame.d.ts.map +1 -0
  186. package/dist/visualizer/context/pause-frame.js +21 -0
  187. package/dist/visualizer/context/pause-frame.js.map +1 -0
  188. package/dist/visualizer/fonts/fonts.css +6 -0
  189. package/dist/visualizer/fonts/ubuntu-mono.ttf +0 -0
  190. package/dist/visualizer/i18n-stubs/i18next-browser-languagedetector.d.ts +7 -0
  191. package/dist/visualizer/i18n-stubs/i18next-browser-languagedetector.d.ts.map +1 -0
  192. package/dist/visualizer/i18n-stubs/i18next-browser-languagedetector.js +12 -0
  193. package/dist/visualizer/i18n-stubs/i18next-browser-languagedetector.js.map +1 -0
  194. package/dist/visualizer/i18n-stubs/i18next.d.ts +24 -0
  195. package/dist/visualizer/i18n-stubs/i18next.d.ts.map +1 -0
  196. package/dist/visualizer/i18n-stubs/i18next.js +46 -0
  197. package/dist/visualizer/i18n-stubs/i18next.js.map +1 -0
  198. package/dist/visualizer/i18n-stubs/react-i18next.d.ts +10 -0
  199. package/dist/visualizer/i18n-stubs/react-i18next.d.ts.map +1 -0
  200. package/dist/visualizer/i18n-stubs/react-i18next.js +15 -0
  201. package/dist/visualizer/i18n-stubs/react-i18next.js.map +1 -0
  202. package/dist/visualizer/index.d.ts +14 -0
  203. package/dist/visualizer/index.d.ts.map +1 -0
  204. package/dist/visualizer/index.js +16 -0
  205. package/dist/visualizer/index.js.map +1 -0
  206. package/dist/visualizer/messaging/browser-decoder-fixtures.d.ts +15 -0
  207. package/dist/visualizer/messaging/browser-decoder-fixtures.d.ts.map +1 -0
  208. package/dist/visualizer/messaging/browser-decoder-fixtures.js +205 -0
  209. package/dist/visualizer/messaging/browser-decoder-fixtures.js.map +1 -0
  210. package/dist/visualizer/messaging/decode-core.d.ts +75 -0
  211. package/dist/visualizer/messaging/decode-core.d.ts.map +1 -0
  212. package/dist/visualizer/messaging/decode-core.js +244 -0
  213. package/dist/visualizer/messaging/decode-core.js.map +1 -0
  214. package/dist/visualizer/messaging/decoder-fixtures.d.ts +14 -0
  215. package/dist/visualizer/messaging/decoder-fixtures.d.ts.map +1 -0
  216. package/dist/visualizer/messaging/decoder-fixtures.js +743 -0
  217. package/dist/visualizer/messaging/decoder-fixtures.js.map +1 -0
  218. package/dist/visualizer/messaging/decoder-harness.d.ts +24 -0
  219. package/dist/visualizer/messaging/decoder-harness.d.ts.map +1 -0
  220. package/dist/visualizer/messaging/decoder-harness.js +24 -0
  221. package/dist/visualizer/messaging/decoder-harness.js.map +1 -0
  222. package/dist/visualizer/messaging/deserialization/detections/constants.d.ts +16 -0
  223. package/dist/visualizer/messaging/deserialization/detections/constants.d.ts.map +1 -0
  224. package/dist/visualizer/messaging/deserialization/detections/constants.js +106 -0
  225. package/dist/visualizer/messaging/deserialization/detections/constants.js.map +1 -0
  226. package/dist/visualizer/messaging/deserialization/detections/custom.d.ts +11 -0
  227. package/dist/visualizer/messaging/deserialization/detections/custom.d.ts.map +1 -0
  228. package/dist/visualizer/messaging/deserialization/detections/custom.js +62 -0
  229. package/dist/visualizer/messaging/deserialization/detections/custom.js.map +1 -0
  230. package/dist/visualizer/messaging/deserialization/detections/detection.d.ts +14 -0
  231. package/dist/visualizer/messaging/deserialization/detections/detection.d.ts.map +1 -0
  232. package/dist/visualizer/messaging/deserialization/detections/detection.js +296 -0
  233. package/dist/visualizer/messaging/deserialization/detections/detection.js.map +1 -0
  234. package/dist/visualizer/messaging/deserialization/detections/utils.d.ts +9 -0
  235. package/dist/visualizer/messaging/deserialization/detections/utils.d.ts.map +1 -0
  236. package/dist/visualizer/messaging/deserialization/detections/utils.js +22 -0
  237. package/dist/visualizer/messaging/deserialization/detections/utils.js.map +1 -0
  238. package/dist/visualizer/messaging/deserialization/imu/imu.d.ts +5 -0
  239. package/dist/visualizer/messaging/deserialization/imu/imu.d.ts.map +1 -0
  240. package/dist/visualizer/messaging/deserialization/imu/imu.js +27 -0
  241. package/dist/visualizer/messaging/deserialization/imu/imu.js.map +1 -0
  242. package/dist/visualizer/messaging/deserialization/pointcloud/i420ToRgbaToPoitcloud.worker.d.ts +2 -0
  243. package/dist/visualizer/messaging/deserialization/pointcloud/i420ToRgbaToPoitcloud.worker.d.ts.map +1 -0
  244. package/dist/visualizer/messaging/deserialization/pointcloud/i420ToRgbaToPoitcloud.worker.js +45 -0
  245. package/dist/visualizer/messaging/deserialization/pointcloud/i420ToRgbaToPoitcloud.worker.js.map +1 -0
  246. package/dist/visualizer/messaging/deserialization/pointcloud/point-cloud.d.ts +9 -0
  247. package/dist/visualizer/messaging/deserialization/pointcloud/point-cloud.d.ts.map +1 -0
  248. package/dist/visualizer/messaging/deserialization/pointcloud/point-cloud.js +46 -0
  249. package/dist/visualizer/messaging/deserialization/pointcloud/point-cloud.js.map +1 -0
  250. package/dist/visualizer/messaging/deserialization/pointcloud/pointcloudFromDepth.worker.d.ts +2 -0
  251. package/dist/visualizer/messaging/deserialization/pointcloud/pointcloudFromDepth.worker.d.ts.map +1 -0
  252. package/dist/visualizer/messaging/deserialization/pointcloud/pointcloudFromDepth.worker.js +477 -0
  253. package/dist/visualizer/messaging/deserialization/pointcloud/pointcloudFromDepth.worker.js.map +1 -0
  254. package/dist/visualizer/messaging/deserialization/pointcloud/poitcloudPoolManager.d.ts +35 -0
  255. package/dist/visualizer/messaging/deserialization/pointcloud/poitcloudPoolManager.d.ts.map +1 -0
  256. package/dist/visualizer/messaging/deserialization/pointcloud/poitcloudPoolManager.js +344 -0
  257. package/dist/visualizer/messaging/deserialization/pointcloud/poitcloudPoolManager.js.map +1 -0
  258. package/dist/visualizer/messaging/deserialization/pointcloud/utils.d.ts +18 -0
  259. package/dist/visualizer/messaging/deserialization/pointcloud/utils.d.ts.map +1 -0
  260. package/dist/visualizer/messaging/deserialization/pointcloud/utils.js +58 -0
  261. package/dist/visualizer/messaging/deserialization/pointcloud/utils.js.map +1 -0
  262. package/dist/visualizer/messaging/deserialization/segmentation/segmentation-mask.d.ts +9 -0
  263. package/dist/visualizer/messaging/deserialization/segmentation/segmentation-mask.d.ts.map +1 -0
  264. package/dist/visualizer/messaging/deserialization/segmentation/segmentation-mask.js +39 -0
  265. package/dist/visualizer/messaging/deserialization/segmentation/segmentation-mask.js.map +1 -0
  266. package/dist/visualizer/messaging/deserialization/video/color.d.ts +9 -0
  267. package/dist/visualizer/messaging/deserialization/video/color.d.ts.map +1 -0
  268. package/dist/visualizer/messaging/deserialization/video/color.js +27 -0
  269. package/dist/visualizer/messaging/deserialization/video/color.js.map +1 -0
  270. package/dist/visualizer/messaging/deserialization/video/depth-coloring.worker.d.ts +5 -0
  271. package/dist/visualizer/messaging/deserialization/video/depth-coloring.worker.d.ts.map +1 -0
  272. package/dist/visualizer/messaging/deserialization/video/depth-coloring.worker.js +124 -0
  273. package/dist/visualizer/messaging/deserialization/video/depth-coloring.worker.js.map +1 -0
  274. package/dist/visualizer/messaging/deserialization/video/depth-to-pointcloud.d.ts +13 -0
  275. package/dist/visualizer/messaging/deserialization/video/depth-to-pointcloud.d.ts.map +1 -0
  276. package/dist/visualizer/messaging/deserialization/video/depth-to-pointcloud.js +37 -0
  277. package/dist/visualizer/messaging/deserialization/video/depth-to-pointcloud.js.map +1 -0
  278. package/dist/visualizer/messaging/deserialization/video/depth.d.ts +15 -0
  279. package/dist/visualizer/messaging/deserialization/video/depth.d.ts.map +1 -0
  280. package/dist/visualizer/messaging/deserialization/video/depth.js +126 -0
  281. package/dist/visualizer/messaging/deserialization/video/depth.js.map +1 -0
  282. package/dist/visualizer/messaging/deserialization/video/h264.d.ts +81 -0
  283. package/dist/visualizer/messaging/deserialization/video/h264.d.ts.map +1 -0
  284. package/dist/visualizer/messaging/deserialization/video/h264.js +634 -0
  285. package/dist/visualizer/messaging/deserialization/video/h264.js.map +1 -0
  286. package/dist/visualizer/messaging/deserialization/video/h265.d.ts +16 -0
  287. package/dist/visualizer/messaging/deserialization/video/h265.d.ts.map +1 -0
  288. package/dist/visualizer/messaging/deserialization/video/h265.js +448 -0
  289. package/dist/visualizer/messaging/deserialization/video/h265.js.map +1 -0
  290. package/dist/visualizer/messaging/deserialization/video/mjpeg.d.ts +11 -0
  291. package/dist/visualizer/messaging/deserialization/video/mjpeg.d.ts.map +1 -0
  292. package/dist/visualizer/messaging/deserialization/video/mjpeg.js +89 -0
  293. package/dist/visualizer/messaging/deserialization/video/mjpeg.js.map +1 -0
  294. package/dist/visualizer/messaging/deserialization/video/mono.d.ts +8 -0
  295. package/dist/visualizer/messaging/deserialization/video/mono.d.ts.map +1 -0
  296. package/dist/visualizer/messaging/deserialization/video/mono.js +27 -0
  297. package/dist/visualizer/messaging/deserialization/video/mono.js.map +1 -0
  298. package/dist/visualizer/messaging/deserialization/video/rgbd-to-pointcloud.d.ts +18 -0
  299. package/dist/visualizer/messaging/deserialization/video/rgbd-to-pointcloud.d.ts.map +1 -0
  300. package/dist/visualizer/messaging/deserialization/video/rgbd-to-pointcloud.js +651 -0
  301. package/dist/visualizer/messaging/deserialization/video/rgbd-to-pointcloud.js.map +1 -0
  302. package/dist/visualizer/messaging/deserialization.worker.d.ts +15 -0
  303. package/dist/visualizer/messaging/deserialization.worker.d.ts.map +1 -0
  304. package/dist/visualizer/messaging/deserialization.worker.js +96 -0
  305. package/dist/visualizer/messaging/deserialization.worker.js.map +1 -0
  306. package/dist/visualizer/messaging/message-event.d.ts +114 -0
  307. package/dist/visualizer/messaging/message-event.d.ts.map +1 -0
  308. package/dist/visualizer/messaging/message-event.js +80 -0
  309. package/dist/visualizer/messaging/message-event.js.map +1 -0
  310. package/dist/visualizer/messaging/message-handler.d.ts +10 -0
  311. package/dist/visualizer/messaging/message-handler.d.ts.map +1 -0
  312. package/dist/visualizer/messaging/message-handler.js +436 -0
  313. package/dist/visualizer/messaging/message-handler.js.map +1 -0
  314. package/dist/visualizer/messaging/message.d.ts +32 -0
  315. package/dist/visualizer/messaging/message.d.ts.map +1 -0
  316. package/dist/visualizer/messaging/message.js +5 -0
  317. package/dist/visualizer/messaging/message.js.map +1 -0
  318. package/dist/visualizer/messaging/parse-utils.d.ts +23 -0
  319. package/dist/visualizer/messaging/parse-utils.d.ts.map +1 -0
  320. package/dist/visualizer/messaging/parse-utils.js +76 -0
  321. package/dist/visualizer/messaging/parse-utils.js.map +1 -0
  322. package/dist/visualizer/messaging/protobuf.d.ts +109 -0
  323. package/dist/visualizer/messaging/protobuf.d.ts.map +1 -0
  324. package/dist/visualizer/messaging/protobuf.js +81 -0
  325. package/dist/visualizer/messaging/protobuf.js.map +1 -0
  326. package/dist/visualizer/messaging/schema-constants.d.ts +21 -0
  327. package/dist/visualizer/messaging/schema-constants.d.ts.map +1 -0
  328. package/dist/visualizer/messaging/schema-constants.js +24 -0
  329. package/dist/visualizer/messaging/schema-constants.js.map +1 -0
  330. package/dist/visualizer/messaging/stream-diagnostics.d.ts +40 -0
  331. package/dist/visualizer/messaging/stream-diagnostics.d.ts.map +1 -0
  332. package/dist/visualizer/messaging/stream-diagnostics.js +257 -0
  333. package/dist/visualizer/messaging/stream-diagnostics.js.map +1 -0
  334. package/dist/visualizer/messaging/utils.d.ts +14 -0
  335. package/dist/visualizer/messaging/utils.d.ts.map +1 -0
  336. package/dist/visualizer/messaging/utils.js +109 -0
  337. package/dist/visualizer/messaging/utils.js.map +1 -0
  338. package/dist/visualizer/output.css +4337 -0
  339. package/dist/visualizer/panels/ImagePanel.d.ts +35 -0
  340. package/dist/visualizer/panels/ImagePanel.d.ts.map +1 -0
  341. package/dist/visualizer/panels/ImagePanel.js +26 -0
  342. package/dist/visualizer/panels/ImagePanel.js.map +1 -0
  343. package/dist/visualizer/panels/PointCloudPanel.d.ts +32 -0
  344. package/dist/visualizer/panels/PointCloudPanel.d.ts.map +1 -0
  345. package/dist/visualizer/panels/PointCloudPanel.js +62 -0
  346. package/dist/visualizer/panels/PointCloudPanel.js.map +1 -0
  347. package/dist/visualizer/panels/image/ImageCanvasRenderer.d.ts +27 -0
  348. package/dist/visualizer/panels/image/ImageCanvasRenderer.d.ts.map +1 -0
  349. package/dist/visualizer/panels/image/ImageCanvasRenderer.js +715 -0
  350. package/dist/visualizer/panels/image/ImageCanvasRenderer.js.map +1 -0
  351. package/dist/visualizer/panels/image/annotation-overlay.d.ts +10 -0
  352. package/dist/visualizer/panels/image/annotation-overlay.d.ts.map +1 -0
  353. package/dist/visualizer/panels/image/annotation-overlay.js +113 -0
  354. package/dist/visualizer/panels/image/annotation-overlay.js.map +1 -0
  355. package/dist/visualizer/panels/image/raw-image-decoder.d.ts +11 -0
  356. package/dist/visualizer/panels/image/raw-image-decoder.d.ts.map +1 -0
  357. package/dist/visualizer/panels/image/raw-image-decoder.js +184 -0
  358. package/dist/visualizer/panels/image/raw-image-decoder.js.map +1 -0
  359. package/dist/visualizer/panels/image/raw-image-decoder.worker.d.ts +2 -0
  360. package/dist/visualizer/panels/image/raw-image-decoder.worker.d.ts.map +1 -0
  361. package/dist/visualizer/panels/image/raw-image-decoder.worker.js +40 -0
  362. package/dist/visualizer/panels/image/raw-image-decoder.worker.js.map +1 -0
  363. package/dist/visualizer/panels/image/raw-image-pixel-decoders.d.ts +35 -0
  364. package/dist/visualizer/panels/image/raw-image-pixel-decoders.d.ts.map +1 -0
  365. package/dist/visualizer/panels/image/raw-image-pixel-decoders.js +352 -0
  366. package/dist/visualizer/panels/image/raw-image-pixel-decoders.js.map +1 -0
  367. package/dist/visualizer/panels/image/segmentation-mask-overlay.d.ts +10 -0
  368. package/dist/visualizer/panels/image/segmentation-mask-overlay.d.ts.map +1 -0
  369. package/dist/visualizer/panels/image/segmentation-mask-overlay.js +56 -0
  370. package/dist/visualizer/panels/image/segmentation-mask-overlay.js.map +1 -0
  371. package/dist/visualizer/panels/image/webgl-image-renderer.d.ts +48 -0
  372. package/dist/visualizer/panels/image/webgl-image-renderer.d.ts.map +1 -0
  373. package/dist/visualizer/panels/image/webgl-image-renderer.js +726 -0
  374. package/dist/visualizer/panels/image/webgl-image-renderer.js.map +1 -0
  375. package/dist/visualizer/panels/image/worker-image-decoder.d.ts +20 -0
  376. package/dist/visualizer/panels/image/worker-image-decoder.d.ts.map +1 -0
  377. package/dist/visualizer/panels/image/worker-image-decoder.js +134 -0
  378. package/dist/visualizer/panels/image/worker-image-decoder.js.map +1 -0
  379. package/dist/visualizer/panels/panel-renderer.d.ts +2 -0
  380. package/dist/visualizer/panels/panel-renderer.d.ts.map +1 -0
  381. package/dist/visualizer/panels/panel-renderer.js +5 -0
  382. package/dist/visualizer/panels/panel-renderer.js.map +1 -0
  383. package/dist/visualizer/panels/pointcloud/PointCloudCanvasRenderer.d.ts +35 -0
  384. package/dist/visualizer/panels/pointcloud/PointCloudCanvasRenderer.d.ts.map +1 -0
  385. package/dist/visualizer/panels/pointcloud/PointCloudCanvasRenderer.js +882 -0
  386. package/dist/visualizer/panels/pointcloud/PointCloudCanvasRenderer.js.map +1 -0
  387. package/dist/visualizer/panels/pointcloud-camera.d.ts +14 -0
  388. package/dist/visualizer/panels/pointcloud-camera.d.ts.map +1 -0
  389. package/dist/visualizer/panels/pointcloud-camera.js +16 -0
  390. package/dist/visualizer/panels/pointcloud-camera.js.map +1 -0
  391. package/dist/visualizer/protobuf.generated/EncodedFrame.d.ts +76 -0
  392. package/dist/visualizer/protobuf.generated/EncodedFrame.d.ts.map +1 -0
  393. package/dist/visualizer/protobuf.generated/EncodedFrame.js +448 -0
  394. package/dist/visualizer/protobuf.generated/EncodedFrame.js.map +1 -0
  395. package/dist/visualizer/protobuf.generated/Event.d.ts +171 -0
  396. package/dist/visualizer/protobuf.generated/Event.d.ts.map +1 -0
  397. package/dist/visualizer/protobuf.generated/Event.js +1805 -0
  398. package/dist/visualizer/protobuf.generated/Event.js.map +1 -0
  399. package/dist/visualizer/protobuf.generated/IMUData.d.ts +84 -0
  400. package/dist/visualizer/protobuf.generated/IMUData.d.ts.map +1 -0
  401. package/dist/visualizer/protobuf.generated/IMUData.js +745 -0
  402. package/dist/visualizer/protobuf.generated/IMUData.js.map +1 -0
  403. package/dist/visualizer/protobuf.generated/ImageAnnotations.d.ts +74 -0
  404. package/dist/visualizer/protobuf.generated/ImageAnnotations.d.ts.map +1 -0
  405. package/dist/visualizer/protobuf.generated/ImageAnnotations.js +675 -0
  406. package/dist/visualizer/protobuf.generated/ImageAnnotations.js.map +1 -0
  407. package/dist/visualizer/protobuf.generated/ImgDetections.d.ts +48 -0
  408. package/dist/visualizer/protobuf.generated/ImgDetections.d.ts.map +1 -0
  409. package/dist/visualizer/protobuf.generated/ImgDetections.js +429 -0
  410. package/dist/visualizer/protobuf.generated/ImgDetections.js.map +1 -0
  411. package/dist/visualizer/protobuf.generated/ImgFrame.d.ts +117 -0
  412. package/dist/visualizer/protobuf.generated/ImgFrame.d.ts.map +1 -0
  413. package/dist/visualizer/protobuf.generated/ImgFrame.js +699 -0
  414. package/dist/visualizer/protobuf.generated/ImgFrame.js.map +1 -0
  415. package/dist/visualizer/protobuf.generated/PointCloudData.d.ts +43 -0
  416. package/dist/visualizer/protobuf.generated/PointCloudData.d.ts.map +1 -0
  417. package/dist/visualizer/protobuf.generated/PointCloudData.js +348 -0
  418. package/dist/visualizer/protobuf.generated/PointCloudData.js.map +1 -0
  419. package/dist/visualizer/protobuf.generated/RGBDData.d.ts +37 -0
  420. package/dist/visualizer/protobuf.generated/RGBDData.d.ts.map +1 -0
  421. package/dist/visualizer/protobuf.generated/RGBDData.js +205 -0
  422. package/dist/visualizer/protobuf.generated/RGBDData.js.map +1 -0
  423. package/dist/visualizer/protobuf.generated/SegmentationMask.d.ts +36 -0
  424. package/dist/visualizer/protobuf.generated/SegmentationMask.d.ts.map +1 -0
  425. package/dist/visualizer/protobuf.generated/SegmentationMask.js +238 -0
  426. package/dist/visualizer/protobuf.generated/SegmentationMask.js.map +1 -0
  427. package/dist/visualizer/protobuf.generated/SpatialImgDetections.d.ts +88 -0
  428. package/dist/visualizer/protobuf.generated/SpatialImgDetections.d.ts.map +1 -0
  429. package/dist/visualizer/protobuf.generated/SpatialImgDetections.js +775 -0
  430. package/dist/visualizer/protobuf.generated/SpatialImgDetections.js.map +1 -0
  431. package/dist/visualizer/protobuf.generated/common.d.ts +175 -0
  432. package/dist/visualizer/protobuf.generated/common.d.ts.map +1 -0
  433. package/dist/visualizer/protobuf.generated/common.js +1796 -0
  434. package/dist/visualizer/protobuf.generated/common.js.map +1 -0
  435. package/dist/visualizer/runtime-config.d.ts +2 -0
  436. package/dist/visualizer/runtime-config.d.ts.map +1 -0
  437. package/dist/visualizer/runtime-config.js +5 -0
  438. package/dist/visualizer/runtime-config.js.map +1 -0
  439. package/dist/visualizer/utils/artificial-worker.d.ts +10 -0
  440. package/dist/visualizer/utils/artificial-worker.d.ts.map +1 -0
  441. package/dist/visualizer/utils/artificial-worker.js +31 -0
  442. package/dist/visualizer/utils/artificial-worker.js.map +1 -0
  443. package/dist/visualizer/utils/async.d.ts +3 -0
  444. package/dist/visualizer/utils/async.d.ts.map +1 -0
  445. package/dist/visualizer/utils/async.js +35 -0
  446. package/dist/visualizer/utils/async.js.map +1 -0
  447. package/dist/visualizer/utils/browser-storage.d.ts +3 -0
  448. package/dist/visualizer/utils/browser-storage.d.ts.map +1 -0
  449. package/dist/visualizer/utils/browser-storage.js +16 -0
  450. package/dist/visualizer/utils/browser-storage.js.map +1 -0
  451. package/dist/visualizer/utils/callback-manager.d.ts +7 -0
  452. package/dist/visualizer/utils/callback-manager.d.ts.map +1 -0
  453. package/dist/visualizer/utils/callback-manager.js +21 -0
  454. package/dist/visualizer/utils/callback-manager.js.map +1 -0
  455. package/dist/visualizer/utils/comlink-wrap.d.ts +7 -0
  456. package/dist/visualizer/utils/comlink-wrap.d.ts.map +1 -0
  457. package/dist/visualizer/utils/comlink-wrap.js +15 -0
  458. package/dist/visualizer/utils/comlink-wrap.js.map +1 -0
  459. package/dist/visualizer/utils/compatibility.d.ts +2 -0
  460. package/dist/visualizer/utils/compatibility.d.ts.map +1 -0
  461. package/dist/visualizer/utils/compatibility.js +19 -0
  462. package/dist/visualizer/utils/compatibility.js.map +1 -0
  463. package/dist/visualizer/utils/config-store.d.ts +10 -0
  464. package/dist/visualizer/utils/config-store.d.ts.map +1 -0
  465. package/dist/visualizer/utils/config-store.js +22 -0
  466. package/dist/visualizer/utils/config-store.js.map +1 -0
  467. package/dist/visualizer/utils/encoding.d.ts +4 -0
  468. package/dist/visualizer/utils/encoding.d.ts.map +1 -0
  469. package/dist/visualizer/utils/encoding.js +23 -0
  470. package/dist/visualizer/utils/encoding.js.map +1 -0
  471. package/dist/visualizer/utils/error.d.ts +20 -0
  472. package/dist/visualizer/utils/error.d.ts.map +1 -0
  473. package/dist/visualizer/utils/error.js +79 -0
  474. package/dist/visualizer/utils/error.js.map +1 -0
  475. package/dist/visualizer/utils/estimate-object-size.d.ts +2 -0
  476. package/dist/visualizer/utils/estimate-object-size.d.ts.map +1 -0
  477. package/dist/visualizer/utils/estimate-object-size.js +60 -0
  478. package/dist/visualizer/utils/estimate-object-size.js.map +1 -0
  479. package/dist/visualizer/utils/frame-store.d.ts +13 -0
  480. package/dist/visualizer/utils/frame-store.d.ts.map +1 -0
  481. package/dist/visualizer/utils/frame-store.js +43 -0
  482. package/dist/visualizer/utils/frame-store.js.map +1 -0
  483. package/dist/visualizer/utils/imu-manager.d.ts +13 -0
  484. package/dist/visualizer/utils/imu-manager.d.ts.map +1 -0
  485. package/dist/visualizer/utils/imu-manager.js +36 -0
  486. package/dist/visualizer/utils/imu-manager.js.map +1 -0
  487. package/dist/visualizer/utils/logger.d.ts +13 -0
  488. package/dist/visualizer/utils/logger.d.ts.map +1 -0
  489. package/dist/visualizer/utils/logger.js +47 -0
  490. package/dist/visualizer/utils/logger.js.map +1 -0
  491. package/dist/visualizer/utils/metrics-manager.d.ts +33 -0
  492. package/dist/visualizer/utils/metrics-manager.d.ts.map +1 -0
  493. package/dist/visualizer/utils/metrics-manager.js +113 -0
  494. package/dist/visualizer/utils/metrics-manager.js.map +1 -0
  495. package/dist/visualizer/utils/player-types.d.ts +65 -0
  496. package/dist/visualizer/utils/player-types.d.ts.map +1 -0
  497. package/dist/visualizer/utils/player-types.js +22 -0
  498. package/dist/visualizer/utils/player-types.js.map +1 -0
  499. package/dist/visualizer/utils/poitcloud-sync.d.ts +13 -0
  500. package/dist/visualizer/utils/poitcloud-sync.d.ts.map +1 -0
  501. package/dist/visualizer/utils/poitcloud-sync.js +95 -0
  502. package/dist/visualizer/utils/poitcloud-sync.js.map +1 -0
  503. package/dist/visualizer/utils/runtime-config.d.ts +23 -0
  504. package/dist/visualizer/utils/runtime-config.d.ts.map +1 -0
  505. package/dist/visualizer/utils/runtime-config.js +76 -0
  506. package/dist/visualizer/utils/runtime-config.js.map +1 -0
  507. package/dist/visualizer/utils/segmentation-colors.d.ts +9 -0
  508. package/dist/visualizer/utils/segmentation-colors.d.ts.map +1 -0
  509. package/dist/visualizer/utils/segmentation-colors.js +42 -0
  510. package/dist/visualizer/utils/segmentation-colors.js.map +1 -0
  511. package/dist/visualizer/utils/time.d.ts +7 -0
  512. package/dist/visualizer/utils/time.d.ts.map +1 -0
  513. package/dist/visualizer/utils/time.js +24 -0
  514. package/dist/visualizer/utils/time.js.map +1 -0
  515. package/dist/visualizer/utils/use-theme-mode.d.ts +3 -0
  516. package/dist/visualizer/utils/use-theme-mode.d.ts.map +1 -0
  517. package/dist/visualizer/utils/use-theme-mode.js +71 -0
  518. package/dist/visualizer/utils/use-theme-mode.js.map +1 -0
  519. package/package.json +33 -8
  520. package/protobuf-gen.sh +87 -0
  521. package/protobuf-gen.win.ps1 +130 -0
  522. package/scripts/browser-decoder-fixtures.html +54 -0
  523. package/scripts/fixtures.vite.config.mjs +30 -0
  524. package/scripts/run-decoder-fixtures.mjs +45 -0
@@ -0,0 +1,344 @@
1
+ // This Source Code Form is subject to the terms of the Mozilla Public
2
+ // License, v2.0. If a copy of the MPL was not distributed with this
3
+ // file, You can obtain one at http://mozilla.org/MPL/2.0/
4
+ import { transfer } from "comlink";
5
+ import { createComlinkWorker } from "../../../utils/comlink-wrap.js";
6
+ import { Logger } from "../../../utils/logger.js";
7
+ import { globalInputEventMetricsManager, } from "../../../utils/metrics-manager.js";
8
+ import { getStereoDepthMaxValue } from "../../../utils/runtime-config.js";
9
+ import { uint8ArrayToUint16Array } from "./utils.js";
10
+ const logger = Logger.getLogger();
11
+ const WORKER_COUNT = 4;
12
+ const DEFAULT_TARGET_FPS = 9;
13
+ const DEFAULT_MAX_PROCESSED_QUEUE_SIZE = 25;
14
+ const MAX_BATCH_SIZE = 3;
15
+ const MIN_DISPATCH_INTERVAL_MS = 16;
16
+ const MAX_DISPATCH_INTERVAL_MS = 250;
17
+ const HIGH_QUEUE_PRESSURE_RATIO = 0.8;
18
+ const MEDIUM_QUEUE_PRESSURE_RATIO = 0.5;
19
+ function collectArrayBuffers(arrays) {
20
+ const buffers = [];
21
+ for (let index = 0; index < arrays.length; index++) {
22
+ const array = arrays[index];
23
+ if (array) {
24
+ buffers.push(array.buffer);
25
+ }
26
+ }
27
+ return buffers;
28
+ }
29
+ function normalizeFrameIntrinsics(frame) {
30
+ let fx = frame.fx;
31
+ let fy = frame.fy;
32
+ let cx = frame.cx;
33
+ let cy = frame.cy;
34
+ if (cx > 0 && cx <= 1 && cy > 0 && cy <= 1) {
35
+ cx *= frame.width;
36
+ cy *= frame.height;
37
+ if (fx > 0 && fx <= 1) {
38
+ fx *= frame.width;
39
+ }
40
+ if (fy > 0 && fy <= 1) {
41
+ fy *= frame.height;
42
+ }
43
+ }
44
+ else if (cx > frame.width * 0.75 || cy > frame.height * 0.75) {
45
+ const scaleX = frame.width / (cx * 2);
46
+ const scaleY = frame.height / (cy * 2);
47
+ fx *= scaleX;
48
+ fy *= scaleY;
49
+ cx *= scaleX;
50
+ cy *= scaleY;
51
+ }
52
+ return { fx, fy, cx, cy };
53
+ }
54
+ export class DepthToPointcloudWorkerPool {
55
+ lastUsedWorkerIndex = 0;
56
+ workerApis;
57
+ #frameQueue = [];
58
+ #processedFrameQueue = [];
59
+ #isWebGpuSupported = false;
60
+ #metrics;
61
+ #maximumStorageBufferSize;
62
+ #FRAME_BATCH_SIZE;
63
+ #maxProcessedQueueSize;
64
+ #prevColorFrameWidth;
65
+ #prevDepthFrameWidth;
66
+ #dispatchCallback;
67
+ #targetDispatchIntervalMs;
68
+ #dispatchTimeoutId = undefined;
69
+ #processedFrameQueueStartIndex = 0;
70
+ #activeWorkerIndices = new Set();
71
+ #targetFps;
72
+ constructor(callback, batchSize = MAX_BATCH_SIZE, targetFps = DEFAULT_TARGET_FPS, maxProcessedQueueSize = DEFAULT_MAX_PROCESSED_QUEUE_SIZE) {
73
+ if (typeof navigator.gpu !== "undefined") {
74
+ void navigator.gpu
75
+ .requestAdapter()
76
+ .then((gpuAdapter) => {
77
+ if (!gpuAdapter) {
78
+ this.#isWebGpuSupported = false;
79
+ logger.warn("WebGPU adapter not found. Falling back to CPU for all frames.");
80
+ }
81
+ else {
82
+ this.#isWebGpuSupported = true;
83
+ this.#maximumStorageBufferSize = gpuAdapter.limits.maxStorageBufferBindingSize / 16;
84
+ logger.info("WebGPU potentially supported. Will attempt GPU processing.");
85
+ }
86
+ })
87
+ .catch((err) => {
88
+ logger.warn("Error requesting WebGPU adapter. Falling back to CPU.", err);
89
+ this.#isWebGpuSupported = false;
90
+ });
91
+ }
92
+ else {
93
+ logger.warn("navigator.gpu is undefined. WebGPU not supported. Falling back to CPU for all frames.");
94
+ this.#isWebGpuSupported = false;
95
+ }
96
+ this.#maximumStorageBufferSize = -1;
97
+ this.#prevDepthFrameWidth = 0;
98
+ this.#prevColorFrameWidth = 0;
99
+ this.#dispatchCallback = callback;
100
+ this.#FRAME_BATCH_SIZE = Math.max(1, batchSize);
101
+ this.#targetFps = Math.max(1, targetFps);
102
+ this.#maxProcessedQueueSize = Math.max(1, maxProcessedQueueSize);
103
+ this.#targetDispatchIntervalMs = this.#computeDispatchIntervalMs();
104
+ this.workerApis = new Array(WORKER_COUNT).fill(undefined).map(() => {
105
+ const worker = new Worker(new URL("../pointcloud/pointcloudFromDepth.worker.js", import.meta.url), {
106
+ type: "module",
107
+ });
108
+ return createComlinkWorker(worker);
109
+ });
110
+ this.#metrics = globalInputEventMetricsManager;
111
+ this.#metrics.registerEvent("pcl-pool.frameInput");
112
+ }
113
+ #getStereoDepthMaxValue() {
114
+ return getStereoDepthMaxValue();
115
+ }
116
+ #compactProcessedFrameQueue() {
117
+ if (this.#processedFrameQueueStartIndex === 0) {
118
+ return;
119
+ }
120
+ this.#processedFrameQueue = this.#processedFrameQueue.slice(this.#processedFrameQueueStartIndex);
121
+ this.#processedFrameQueueStartIndex = 0;
122
+ }
123
+ #getProcessedFrameQueueLength() {
124
+ return this.#processedFrameQueue.length - this.#processedFrameQueueStartIndex;
125
+ }
126
+ async queueDepthFrame(data) {
127
+ if (!(data.colorFrameData instanceof Uint8Array)) {
128
+ logger.warn("Skipping frame: color frame data is not a Uint8Array", data.colorFrame);
129
+ return;
130
+ }
131
+ if (data.width !== this.#prevDepthFrameWidth || data.i420Width !== this.#prevColorFrameWidth) {
132
+ this.setMaxGpuQueueSize(data.width, data.height);
133
+ this.#prevDepthFrameWidth = data.width;
134
+ this.#prevColorFrameWidth = data.i420Width;
135
+ this.#frameQueue = [];
136
+ }
137
+ if (data.width === data.i420Width && data.height === data.i420Height) {
138
+ this.#frameQueue.push(data);
139
+ this.tryProcessBatch();
140
+ }
141
+ }
142
+ setMaxGpuQueueSize(width, height) {
143
+ if (!this.#isWebGpuSupported) {
144
+ return;
145
+ }
146
+ const numPixelsPerFrame = width * height;
147
+ const currentOutSize = numPixelsPerFrame * 16 * this.#FRAME_BATCH_SIZE;
148
+ if (currentOutSize > this.#maximumStorageBufferSize) {
149
+ logger.warn(`GPU queue size ${currentOutSize} exceeds maximum storage buffer size ${this.#maximumStorageBufferSize}. Reducing batch size.`);
150
+ const frameBatchSize = Math.floor(this.#maximumStorageBufferSize / (numPixelsPerFrame * 16));
151
+ this.#FRAME_BATCH_SIZE = Math.min(Math.max(1, frameBatchSize), MAX_BATCH_SIZE);
152
+ if (frameBatchSize < 1) {
153
+ logger.warn("Output buffer size is too small to process. Falling back to CPU.");
154
+ this.#isWebGpuSupported = false;
155
+ }
156
+ }
157
+ }
158
+ tryProcessBatch(force = false) {
159
+ while (true) {
160
+ const workerIndex = this.#acquireAvailableWorkerIndex();
161
+ if (workerIndex == undefined) {
162
+ return;
163
+ }
164
+ const batchSize = force
165
+ ? Math.min(this.#FRAME_BATCH_SIZE, this.#frameQueue.length)
166
+ : this.#FRAME_BATCH_SIZE;
167
+ if (batchSize <= 0 || this.#frameQueue.length < batchSize) {
168
+ this.#activeWorkerIndices.delete(workerIndex);
169
+ return;
170
+ }
171
+ const batchToProcess = this.#frameQueue.splice(0, batchSize);
172
+ if (batchToProcess.length === 0) {
173
+ this.#activeWorkerIndices.delete(workerIndex);
174
+ return;
175
+ }
176
+ this.#metrics?.registerEvent("pcl-pool.batchSent");
177
+ this.#dispatchBatchToWorker(workerIndex, batchToProcess);
178
+ }
179
+ }
180
+ #calculateDispatchMultiplier() {
181
+ const processedQueueLength = this.#getProcessedFrameQueueLength();
182
+ if (processedQueueLength >= this.#maxProcessedQueueSize * HIGH_QUEUE_PRESSURE_RATIO) {
183
+ return 0.5;
184
+ }
185
+ if (processedQueueLength >= this.#maxProcessedQueueSize * MEDIUM_QUEUE_PRESSURE_RATIO) {
186
+ return 0.75;
187
+ }
188
+ if (processedQueueLength === 0) {
189
+ return 1.1;
190
+ }
191
+ return 1;
192
+ }
193
+ #addToProcessedQueue(processedFrame) {
194
+ if (this.#getProcessedFrameQueueLength() >= this.#maxProcessedQueueSize) {
195
+ this.#processedFrameQueueStartIndex += 1;
196
+ if (this.#processedFrameQueueStartIndex > this.#maxProcessedQueueSize / 2) {
197
+ this.#compactProcessedFrameQueue();
198
+ }
199
+ logger.warn(`Processed frame queue full (>= ${this.#maxProcessedQueueSize}). Dropping oldest frame.`);
200
+ }
201
+ this.#processedFrameQueue.push(processedFrame);
202
+ if (this.#dispatchTimeoutId === undefined) {
203
+ this.#scheduleNextDispatch();
204
+ }
205
+ }
206
+ #scheduleNextDispatch() {
207
+ if (this.#getProcessedFrameQueueLength() <= 0) {
208
+ this.#dispatchTimeoutId = undefined;
209
+ return;
210
+ }
211
+ if (this.#dispatchTimeoutId !== undefined) {
212
+ clearTimeout(this.#dispatchTimeoutId);
213
+ }
214
+ this.#targetDispatchIntervalMs = this.#computeDispatchIntervalMs();
215
+ this.#dispatchTimeoutId = setTimeout(this.#dispatchNextFrame, this.#targetDispatchIntervalMs);
216
+ }
217
+ #dispatchNextFrame = () => {
218
+ this.#dispatchTimeoutId = undefined;
219
+ const frameToDispatch = this.#processedFrameQueue[this.#processedFrameQueueStartIndex];
220
+ if (frameToDispatch) {
221
+ this.#processedFrameQueueStartIndex += 1;
222
+ if (this.#processedFrameQueueStartIndex > this.#maxProcessedQueueSize / 2) {
223
+ this.#compactProcessedFrameQueue();
224
+ }
225
+ }
226
+ if (frameToDispatch) {
227
+ try {
228
+ this.#dispatchCallback(frameToDispatch.originalColorEvent, frameToDispatch.originalDepthFrame, frameToDispatch.processedPointCloud);
229
+ }
230
+ catch (error) {
231
+ logger.error("Error in dispatchCallback:", error);
232
+ }
233
+ }
234
+ if (this.#getProcessedFrameQueueLength() > 0) {
235
+ this.#scheduleNextDispatch();
236
+ }
237
+ };
238
+ #acquireAvailableWorkerIndex() {
239
+ for (let offset = 0; offset < this.workerApis.length; offset += 1) {
240
+ const workerIndex = (this.lastUsedWorkerIndex + offset) % this.workerApis.length;
241
+ if (this.#activeWorkerIndices.has(workerIndex)) {
242
+ continue;
243
+ }
244
+ this.#activeWorkerIndices.add(workerIndex);
245
+ this.lastUsedWorkerIndex = (workerIndex + 1) % this.workerApis.length;
246
+ return workerIndex;
247
+ }
248
+ return undefined;
249
+ }
250
+ #computeDispatchIntervalMs() {
251
+ const measuredFps = this.#metrics?.calculate("pcl-pool.batchSent");
252
+ const referenceFps = measuredFps && measuredFps > 0 ? measuredFps : this.#targetFps;
253
+ const baseIntervalMs = 1000 / Math.max(1, referenceFps);
254
+ const intervalMs = baseIntervalMs * this.#calculateDispatchMultiplier();
255
+ return Math.max(MIN_DISPATCH_INTERVAL_MS, Math.min(MAX_DISPATCH_INTERVAL_MS, Math.round(intervalMs)));
256
+ }
257
+ #dispatchBatchToWorker(workerIndex, batchToProcess) {
258
+ const firstFrame = batchToProcess[0];
259
+ const width = firstFrame.width;
260
+ const height = firstFrame.height;
261
+ const { fx, fy, cx, cy } = normalizeFrameIntrinsics(firstFrame);
262
+ const i420Width = firstFrame.i420Width;
263
+ const i420Height = firstFrame.i420Height;
264
+ try {
265
+ const depthDataArray = batchToProcess.map((f) => uint8ArrayToUint16Array(f.depthFrame.data));
266
+ const i420DataArray = batchToProcess.map((f) => f.colorFrameData);
267
+ this.workerApis[workerIndex].remote.depthToPointcloudGPU(transfer(depthDataArray, collectArrayBuffers(depthDataArray)), width, height, fx, fy, cx, cy, transfer(i420DataArray, collectArrayBuffers(i420DataArray)), i420Width, i420Height, this.#getStereoDepthMaxValue(), { hasGPU: this.#isWebGpuSupported })
268
+ .then((results) => {
269
+ if (results.length === batchToProcess.length) {
270
+ for (let i = 0; i < results.length; i++) {
271
+ const originalFrame = batchToProcess[i];
272
+ const pointCloudResult = results[i];
273
+ if (!pointCloudResult) {
274
+ logger.warn(`Worker ${workerIndex}: Result ${i} is null or undefined. Passing null to callback.`);
275
+ this.#addToProcessedQueue({
276
+ originalColorEvent: originalFrame.colorFrame,
277
+ originalDepthFrame: originalFrame.depthFrame,
278
+ processedPointCloud: null,
279
+ });
280
+ }
281
+ else {
282
+ this.#addToProcessedQueue({
283
+ originalColorEvent: originalFrame.colorFrame,
284
+ originalDepthFrame: originalFrame.depthFrame,
285
+ processedPointCloud: pointCloudResult,
286
+ });
287
+ }
288
+ }
289
+ }
290
+ else {
291
+ logger.error(`Worker ${workerIndex}: Mismatch in result count (${results.length}) and batch size (${batchToProcess.length}). Discarding results for this batch.`);
292
+ for (const originalFrame of batchToProcess) {
293
+ this.#addToProcessedQueue({
294
+ originalColorEvent: originalFrame.colorFrame,
295
+ originalDepthFrame: originalFrame.depthFrame,
296
+ processedPointCloud: null,
297
+ });
298
+ }
299
+ }
300
+ })
301
+ .catch((error) => {
302
+ logger.error(`Worker ${workerIndex}: Error processing batch:`, error);
303
+ for (const originalFrame of batchToProcess) {
304
+ this.#addToProcessedQueue({
305
+ originalColorEvent: originalFrame.colorFrame,
306
+ originalDepthFrame: originalFrame.depthFrame,
307
+ processedPointCloud: null,
308
+ });
309
+ }
310
+ })
311
+ .finally(() => {
312
+ this.#activeWorkerIndices.delete(workerIndex);
313
+ this.tryProcessBatch();
314
+ });
315
+ }
316
+ catch (error) {
317
+ logger.error("Error preparing data for worker:", error);
318
+ for (const originalFrame of batchToProcess) {
319
+ this.#addToProcessedQueue({
320
+ originalColorEvent: originalFrame.colorFrame,
321
+ originalDepthFrame: originalFrame.depthFrame,
322
+ processedPointCloud: null,
323
+ });
324
+ }
325
+ this.#activeWorkerIndices.delete(workerIndex);
326
+ this.tryProcessBatch();
327
+ }
328
+ }
329
+ destroy() {
330
+ if (this.#dispatchTimeoutId !== undefined) {
331
+ clearTimeout(this.#dispatchTimeoutId);
332
+ this.#dispatchTimeoutId = undefined;
333
+ }
334
+ this.#frameQueue = [];
335
+ this.#processedFrameQueue = [];
336
+ this.#processedFrameQueueStartIndex = 0;
337
+ this.#activeWorkerIndices.clear();
338
+ for (const workerWrapper of this.workerApis) {
339
+ workerWrapper.dispose();
340
+ }
341
+ this.workerApis = [];
342
+ }
343
+ }
344
+ //# sourceMappingURL=poitcloudPoolManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"poitcloudPoolManager.js","sourceRoot":"","sources":["../../../../../src/visualizer/messaging/deserialization/pointcloud/poitcloudPoolManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ export declare function uint8ArrayToUint16Array(uint8Array: Uint8Array): Uint16Array;
2
+ export declare function i420ToRgbaToPointcloud(i420Data: Uint8Array, i420Width: number, i420Height: number, depthWidth: number, depthHeight: number, data: Uint8Array): Uint8Array;
3
+ type NeuralCameraIntrinsic = {
4
+ focalLenght: {
5
+ x: number;
6
+ y: number;
7
+ };
8
+ principalPoint: {
9
+ x: number;
10
+ y: number;
11
+ };
12
+ };
13
+ export type NeuralCameraIntrinsics = {
14
+ left: NeuralCameraIntrinsic;
15
+ right: NeuralCameraIntrinsic;
16
+ };
17
+ export {};
18
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../src/visualizer/messaging/deserialization/pointcloud/utils.ts"],"names":[],"mappings":"AAIA,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,UAAU,GAAG,WAAW,CAiB3E;AAGD,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,UAAU,EACpB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,UAAU,GACf,UAAU,CA8CZ;AAED,KAAK,qBAAqB,GAAG;IAC3B,WAAW,EAAE;QACX,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;KACX,CAAC;IACF,cAAc,EAAE;QACd,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;KACX,CAAC;CACH,CAAC;AACF,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,qBAAqB,CAAC;IAC5B,KAAK,EAAE,qBAAqB,CAAC;CAC9B,CAAC"}
@@ -0,0 +1,58 @@
1
+ // This Source Code Form is subject to the terms of the Mozilla Public
2
+ // License, v2.0. If a copy of the MPL was not distributed with this
3
+ // file, You can obtain one at http://mozilla.org/MPL/2.0/
4
+ export function uint8ArrayToUint16Array(uint8Array) {
5
+ if (uint8Array.length % 2 !== 0) {
6
+ throw new Error("Uint8Array length must be a multiple of 2 for conversion to Uint16Array");
7
+ }
8
+ const uint16Array = new Uint16Array(uint8Array.length / 2);
9
+ for (let i = 0; i < uint16Array.length; i++) {
10
+ const lowByte = uint8Array[i * 2];
11
+ const highByte = uint8Array[i * 2 + 1];
12
+ if (highByte === undefined || lowByte === undefined) {
13
+ throw new Error("Invalid data in uint8Array");
14
+ }
15
+ uint16Array[i] = (highByte << 8) | lowByte;
16
+ }
17
+ return uint16Array;
18
+ }
19
+ /* H264 (i420) to RGBA */
20
+ export function i420ToRgbaToPointcloud(i420Data, i420Width, i420Height, depthWidth, depthHeight, data) {
21
+ const frameSize = i420Width * i420Height;
22
+ const uOffset = frameSize;
23
+ const vOffset = frameSize + frameSize / 4;
24
+ const pointCount = data.byteLength / 16;
25
+ const buffer = new ArrayBuffer(data.byteLength);
26
+ const view = new DataView(buffer);
27
+ const dataView = new DataView(data.buffer);
28
+ for (let i = 0; i < pointCount; i++) {
29
+ const depthX = i % depthWidth;
30
+ const depthY = Math.floor(i / depthWidth);
31
+ const i420X = Math.floor(depthX * (i420Width / depthWidth));
32
+ const i420Y = Math.floor(depthY * (i420Height / depthHeight));
33
+ if (i420X >= i420Width || i420Y >= i420Height) {
34
+ continue;
35
+ }
36
+ const index = i420Y * i420Width + i420X;
37
+ const uvIndex = Math.floor(i420Y / 2) * (i420Width / 2) + Math.floor(i420X / 2);
38
+ const Y = i420Data[index] ?? 0;
39
+ const U = (i420Data[uOffset + uvIndex] ?? 128) - 128;
40
+ const V = (i420Data[vOffset + uvIndex] ?? 128) - 128;
41
+ let R = Y + 1.402 * V;
42
+ let G = Y - 0.344136 * U - 0.714136 * V;
43
+ let B = Y + 1.772 * U;
44
+ R = Math.min(255, Math.max(0, R));
45
+ G = Math.min(255, Math.max(0, G));
46
+ B = Math.min(255, Math.max(0, B));
47
+ const offset = i * 16;
48
+ view.setFloat32(offset, dataView.getFloat32(offset, true), true); // x
49
+ view.setFloat32(offset + 4, dataView.getFloat32(offset + 4, true), true); // y
50
+ view.setFloat32(offset + 8, dataView.getFloat32(offset + 8, true), true); // z
51
+ view.setUint8(offset + 12, R); // Red
52
+ view.setUint8(offset + 13, G); // Green
53
+ view.setUint8(offset + 14, B); // Blue
54
+ view.setUint8(offset + 15, 255); // Alpha (fully opaque)
55
+ }
56
+ return new Uint8Array(buffer);
57
+ }
58
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../src/visualizer/messaging/deserialization/pointcloud/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { SegmentationMask } from "../../../protobuf.generated/SegmentationMask.js";
2
+ import type { VisualizerMessageEvent } from "../../message-event.js";
3
+ export type DeserializeSegmentationMaskArgs = {
4
+ topic: string;
5
+ message: SegmentationMask;
6
+ callback: (event: VisualizerMessageEvent) => void;
7
+ };
8
+ export declare function deserializeSegmentationMask({ topic, message, callback, }: DeserializeSegmentationMaskArgs): void;
9
+ //# sourceMappingURL=segmentation-mask.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"segmentation-mask.d.ts","sourceRoot":"","sources":["../../../../../src/visualizer/messaging/deserialization/segmentation/segmentation-mask.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iDAAiD,CAAC;AAExF,OAAO,KAAK,EAAE,sBAAsB,EAA8B,MAAM,wBAAwB,CAAC;AAGjG,MAAM,MAAM,+BAA+B,GAAG;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,gBAAgB,CAAC;IAC1B,QAAQ,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,IAAI,CAAC;CACnD,CAAC;AAEF,wBAAgB,2BAA2B,CAAC,EAC1C,KAAK,EACL,OAAO,EACP,QAAQ,GACT,EAAE,+BAA+B,GAAG,IAAI,CA4CxC"}
@@ -0,0 +1,39 @@
1
+ // This Source Code Form is subject to the terms of the Mozilla Public
2
+ // License, v2.0. If a copy of the MPL was not distributed with this
3
+ // file, You can obtain one at http://mozilla.org/MPL/2.0/
4
+ import { DecoderRuntimeError } from "../../../utils/error.js";
5
+ import { parseMessage } from "../../parse-utils.js";
6
+ export function deserializeSegmentationMask({ topic, message, callback, }) {
7
+ const { receiveTime } = parseMessage(message);
8
+ const pixelCount = message.width * message.height;
9
+ const expectedInt16ByteLength = pixelCount * Int16Array.BYTES_PER_ELEMENT;
10
+ if (message.width <= 0 || message.height <= 0) {
11
+ throw new DecoderRuntimeError(topic, `Invalid segmentation mask dimensions ${message.width}x${message.height}.`);
12
+ }
13
+ const bytesPerClassId = message.data.byteLength === pixelCount
14
+ ? 1
15
+ : message.data.byteLength === expectedInt16ByteLength
16
+ ? 2
17
+ : undefined;
18
+ if (bytesPerClassId == undefined) {
19
+ throw new DecoderRuntimeError(topic, `Invalid segmentation mask byte length ${message.data.byteLength}; expected ${pixelCount} or ${expectedInt16ByteLength}.`);
20
+ }
21
+ const segmentationMask = {
22
+ timestamp: receiveTime,
23
+ width: message.width,
24
+ height: message.height,
25
+ data: message.data,
26
+ bytesPerClassId,
27
+ labels: [...message.labels],
28
+ };
29
+ callback({
30
+ topic,
31
+ receiveTime,
32
+ publishTime: message.tsDevice ?? receiveTime,
33
+ message: segmentationMask,
34
+ sizeInBytes: message.data.byteLength,
35
+ schemaName: "luxonis.SegmentationMask",
36
+ depthaiTransformation: message.transformation,
37
+ });
38
+ }
39
+ //# sourceMappingURL=segmentation-mask.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"segmentation-mask.js","sourceRoot":"","sources":["../../../../../src/visualizer/messaging/deserialization/segmentation/segmentation-mask.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,oEAAoE;AACpE,0DAA0D;AAG1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAQpD,MAAM,UAAU,2BAA2B,CAAC,EAC1C,KAAK,EACL,OAAO,EACP,QAAQ,GACwB;IAChC,MAAM,EAAE,WAAW,EAAE,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;IAClD,MAAM,uBAAuB,GAAG,UAAU,GAAG,UAAU,CAAC,iBAAiB,CAAC;IAE1E,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,mBAAmB,CAC3B,KAAK,EACL,wCAAwC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,GAAG,CAC3E,CAAC;IACJ,CAAC;IAED,MAAM,eAAe,GACnB,OAAO,CAAC,IAAI,CAAC,UAAU,KAAK,UAAU;QACpC,CAAC,CAAC,CAAC;QACH,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,KAAK,uBAAuB;YACnD,CAAC,CAAC,CAAC;YACH,CAAC,CAAC,SAAS,CAAC;IAElB,IAAI,eAAe,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,IAAI,mBAAmB,CAC3B,KAAK,EACL,yCAAyC,OAAO,CAAC,IAAI,CAAC,UAAU,cAAc,UAAU,OAAO,uBAAuB,GAAG,CAC1H,CAAC;IACJ,CAAC;IAED,MAAM,gBAAgB,GAA+B;QACnD,SAAS,EAAE,WAAW;QACtB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,eAAe;QACf,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;KAC5B,CAAC;IAEF,QAAQ,CAAC;QACP,KAAK;QACL,WAAW;QACX,WAAW,EAAE,OAAO,CAAC,QAAQ,IAAI,WAAW;QAC5C,OAAO,EAAE,gBAAgB;QACzB,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,UAAU;QACpC,UAAU,EAAE,0BAA0B;QACtC,qBAAqB,EAAE,OAAO,CAAC,cAAc;KACpB,CAAC,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { ImgFrame } from "../../../protobuf.generated/ImgFrame.js";
2
+ import type { VisualizerMessageEvent } from "../../message-event.js";
3
+ export type DeserializeVideoColorDataArgs = {
4
+ topic: string;
5
+ message: ImgFrame;
6
+ callback: (event: VisualizerMessageEvent) => void;
7
+ };
8
+ export declare function deserializeColorFrame({ topic, message, callback, }: DeserializeVideoColorDataArgs): void;
9
+ //# sourceMappingURL=color.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"color.d.ts","sourceRoot":"","sources":["../../../../../src/visualizer/messaging/deserialization/video/color.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yCAAyC,CAAC;AACxE,OAAO,KAAK,EAAoB,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAGvF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,QAAQ,CAAC;IAClB,QAAQ,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,IAAI,CAAC;CACnD,CAAC;AAEF,wBAAgB,qBAAqB,CAAC,EACpC,KAAK,EACL,OAAO,EACP,QAAQ,GACT,EAAE,6BAA6B,GAAG,IAAI,CAuBtC"}
@@ -0,0 +1,27 @@
1
+ // This Source Code Form is subject to the terms of the Mozilla Public
2
+ // License, v2.0. If a copy of the MPL was not distributed with this
3
+ // file, You can obtain one at http://mozilla.org/MPL/2.0/
4
+ import { parseMessage } from "../../parse-utils.js";
5
+ export function deserializeColorFrame({ topic, message, callback, }) {
6
+ const { receiveTime, encoding, step, width, height, stride, planeStride } = parseMessage(message);
7
+ const foxgloveMessage = {
8
+ timestamp: receiveTime,
9
+ frame_id: `color-${topic}-frame`,
10
+ width,
11
+ height,
12
+ encoding,
13
+ step: stride ?? width * step,
14
+ data: message.data,
15
+ stride,
16
+ planeStride,
17
+ };
18
+ callback({
19
+ topic,
20
+ receiveTime,
21
+ message: foxgloveMessage,
22
+ sizeInBytes: message.data.byteLength,
23
+ schemaName: "foxglove.RawImage",
24
+ depthaiTransformation: message.transformation,
25
+ });
26
+ }
27
+ //# sourceMappingURL=color.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"color.js","sourceRoot":"","sources":["../../../../../src/visualizer/messaging/deserialization/video/color.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,oEAAoE;AACpE,0DAA0D;AAI1D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAQpD,MAAM,UAAU,qBAAqB,CAAC,EACpC,KAAK,EACL,OAAO,EACP,QAAQ,GACsB;IAC9B,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IAElG,MAAM,eAAe,GAAqB;QACxC,SAAS,EAAE,WAAW;QACtB,QAAQ,EAAE,SAAS,KAAK,QAAQ;QAChC,KAAK;QACL,MAAM;QACN,QAAQ;QACR,IAAI,EAAE,MAAM,IAAI,KAAK,GAAG,IAAI;QAC5B,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,MAAM;QACN,WAAW;KACZ,CAAC;IAEF,QAAQ,CAAC;QACP,KAAK;QACL,WAAW;QACX,OAAO,EAAE,eAAe;QACxB,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,UAAU;QACpC,UAAU,EAAE,mBAAmB;QAC/B,qBAAqB,EAAE,OAAO,CAAC,cAAc;KACpB,CAAC,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare function colorDepht(data: Uint8Array, encoding: string, width: number, height: number, maxSteroDepth: number): Uint8Array;
2
+ export type ColorDepthApi = {
3
+ colorDepht: (data: Uint8Array, encoding: string, width: number, height: number, maxSteroDepth: number) => Uint8Array;
4
+ };
5
+ //# sourceMappingURL=depth-coloring.worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"depth-coloring.worker.d.ts","sourceRoot":"","sources":["../../../../../src/visualizer/messaging/deserialization/video/depth-coloring.worker.ts"],"names":[],"mappings":"AAUA,wBAAgB,UAAU,CACxB,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,GACpB,UAAU,CAiBZ;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,UAAU,EAAE,CACV,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,KAClB,UAAU,CAAC;CACjB,CAAC"}