@camera.ui/server 2.1.8 → 2.1.10

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 (480) hide show
  1. package/dist/interface/assets/{404-vRjJVgl4.js → 404-BLNSh-sA.js} +1 -1
  2. package/dist/interface/assets/{About-CO9cx5Gp.js → About-ZakRzon7.js} +1 -1
  3. package/dist/interface/assets/Automation-DoVhkuVY.js +3 -0
  4. package/dist/interface/assets/AutomationImport-DVxK1R1y.js +2 -0
  5. package/dist/interface/assets/{AutomationStore-NyXuw3tI.js → AutomationStore-DaNO9_9S.js} +2 -2
  6. package/dist/interface/assets/{AutomationStoreDetail-Dz9Y8j8g.js → AutomationStoreDetail-CTDCEaIz.js} +2 -2
  7. package/dist/interface/assets/Automations-mdnUitWx.js +2 -0
  8. package/dist/interface/assets/Camera-B3cv5IVC.js +2 -0
  9. package/dist/interface/assets/Camera-LSq1bWmA.css +1 -0
  10. package/dist/interface/assets/{CameraConsole-S9Il0g0K.js → CameraConsole-C32X5I91.js} +2 -2
  11. package/dist/interface/assets/{Cameras-lDMBkoUW.js → Cameras-Drv48-Eb.js} +23 -23
  12. package/dist/interface/assets/Camview-Bvy39jSt.js +1 -0
  13. package/dist/interface/assets/{Camview-CS7PIBMz.css → Camview-Lp3QU0de.css} +1 -1
  14. package/dist/interface/assets/{Config-B0cy1RIU.js → Config-B-LDdaS6.js} +1 -1
  15. package/dist/interface/assets/ConfigActionCameraControl-As2qXvnd.js +1 -0
  16. package/dist/interface/assets/{ConfigActionDelay-DrzMP_7q.js → ConfigActionDelay-Cj3yWfEV.js} +1 -1
  17. package/dist/interface/assets/{ConfigActionHttp-BUANm5zh.js → ConfigActionHttp-PlS5vI0v.js} +1 -1
  18. package/dist/interface/assets/{ConfigActionImageInput-CKvnzs_4.js → ConfigActionImageInput-BHflOA-T.js} +1 -1
  19. package/dist/interface/assets/{ConfigActionMqtt-Cz-fMzXH.js → ConfigActionMqtt-DByOwVPe.js} +1 -1
  20. package/dist/interface/assets/{ConfigActionNotification-exxG4m-k.js → ConfigActionNotification-D_8_lp96.js} +1 -1
  21. package/dist/interface/assets/{ConfigActionNotificationControl-BMFbm9lJ.js → ConfigActionNotificationControl-ClFMom6m.js} +1 -1
  22. package/dist/interface/assets/{ConfigActionOutput-js-UUBci.js → ConfigActionOutput-YTAw-Are.js} +1 -1
  23. package/dist/interface/assets/{ConfigActionPlugin-B5hrC_B6.js → ConfigActionPlugin-lF2IH2Bo.js} +1 -1
  24. package/dist/interface/assets/{ConfigActionSensor-BESCtedA.js → ConfigActionSensor-DQZW_Jxr.js} +1 -1
  25. package/dist/interface/assets/{ConfigActionSnapshot-Uxz9dCqh.js → ConfigActionSnapshot-CHxIQ5J0.js} +1 -1
  26. package/dist/interface/assets/{ConfigActionVariable-CsiC6bgF.js → ConfigActionVariable-0VLGuhwP.js} +1 -1
  27. package/dist/interface/assets/{ConfigConditionIfElse-CiScJB42.js → ConfigConditionIfElse-D-Ibn8QL.js} +1 -1
  28. package/dist/interface/assets/{ConfigConditionSensorState-CbDfsuOl.js → ConfigConditionSensorState-BKSGYRdv.js} +1 -1
  29. package/dist/interface/assets/{ConfigConditionSwitch-B7E5DAoC.js → ConfigConditionSwitch-CzkEyWb1.js} +1 -1
  30. package/dist/interface/assets/{ConfigConditionTime-BmeGYmwH.js → ConfigConditionTime-BFKsDI_t.js} +1 -1
  31. package/dist/interface/assets/{ConfigSensorValueInput-CNTToTaw.js → ConfigSensorValueInput-yTiHhlXG.js} +1 -1
  32. package/dist/interface/assets/ConfigTriggerDetection-DFTgRaE0.js +1 -0
  33. package/dist/interface/assets/ConfigTriggerGeofence-B2Cqi5Id.js +1 -0
  34. package/dist/interface/assets/{ConfigTriggerManual-Z1_1wUUM.js → ConfigTriggerManual-BDK6OYxg.js} +1 -1
  35. package/dist/interface/assets/{ConfigTriggerMqtt-BBvD0ow9.js → ConfigTriggerMqtt-BZO14RrW.js} +1 -1
  36. package/dist/interface/assets/{ConfigTriggerSchedule-B0rMjsZL.js → ConfigTriggerSchedule-sMkzMLgn.js} +1 -1
  37. package/dist/interface/assets/{ConfigTriggerSensor-B1p15KGD.js → ConfigTriggerSensor-D6W_exDW.js} +1 -1
  38. package/dist/interface/assets/{ConfigTriggerSystem-Du-AkCKy.js → ConfigTriggerSystem-D4cx1GqI.js} +1 -1
  39. package/dist/interface/assets/{ConfigTriggerWebhook-Debqt-nw.js → ConfigTriggerWebhook-DxZziGkL.js} +1 -1
  40. package/dist/interface/assets/Console-DjA3ZPU_.js +1 -0
  41. package/dist/interface/assets/CuiAutomationRunsDialog-B4ABK72A.js +1 -0
  42. package/dist/interface/assets/CuiBottomSheet-D1zDWsoK.js +1 -0
  43. package/dist/interface/assets/{CuiBottomSheet-DECWGdrp.js → CuiBottomSheet-N9MHq4yZ.js} +1 -1
  44. package/dist/interface/assets/CuiCameraPipCard-CnWs2fAC.js +1 -0
  45. package/dist/interface/assets/CuiCameraRecordings-CahW-f8_.js +1 -0
  46. package/dist/interface/assets/{CuiCameraShares-D32cM63m.js → CuiCameraShares-B2RdPWWh.js} +1 -1
  47. package/dist/interface/assets/CuiCameraTable-4ikGv8QA.js +1 -0
  48. package/dist/interface/assets/{CuiCameraTable-Bk9N-Oc6.js → CuiCameraTable-BKBvhRDc.js} +2 -2
  49. package/dist/interface/assets/CuiChartTable-CqKo74Tf.css +1 -0
  50. package/dist/interface/assets/CuiChartTable-Lvz9Zq0k.js +1 -0
  51. package/dist/interface/assets/CuiConsole-DUswVhFC.js +5 -0
  52. package/dist/interface/assets/CuiDataTable-CIP95jVF.js +1 -0
  53. package/dist/interface/assets/CuiLightControl-CvfWo8mY.js +1 -0
  54. package/dist/interface/assets/{CuiList-w69dERIq.js → CuiList-CajC6jpE.js} +1 -1
  55. package/dist/interface/assets/CuiPluginCard-CQS8C87-.js +2 -0
  56. package/dist/interface/assets/CuiPluginCategoryChip-DCNG8zl1.js +1 -0
  57. package/dist/interface/assets/{CuiPluginOAuthButton-CNxj7cuf.js → CuiPluginOAuthButton-CvZrOWr8.js} +2 -2
  58. package/dist/interface/assets/{CuiPluginTrustBadge-DYsEz6WI.js → CuiPluginTrustBadge-Bc1dQgX8.js} +1 -1
  59. package/dist/interface/assets/CuiQRCode-CjLcB644.js +1 -0
  60. package/dist/interface/assets/CuiRecordingsGrid-DrpErbux.js +1 -0
  61. package/dist/interface/assets/{CuiRecordingsGrid-Q4C3aeLo.css → CuiRecordingsGrid-EAumRo5E.css} +1 -1
  62. package/dist/interface/assets/CuiSchema-BYYeh269.css +1 -0
  63. package/dist/interface/assets/CuiSchema-DG8peseE.js +1 -0
  64. package/dist/interface/assets/{CuiTopNavbarItem-7yu9c68R.js → CuiTopNavbarItem-Dq3Esl1S.js} +1 -1
  65. package/dist/interface/assets/Faces-D0yRgOMj.js +1 -0
  66. package/dist/interface/assets/FirstSteps-BW8AVmd4.js +1 -0
  67. package/dist/interface/assets/{Instances-Bmb-yWM-.js → Instances-BgXJvs0_.js} +1 -1
  68. package/dist/interface/assets/{Logs-DxHqkMpx.js → Logs-DH3rWnlV.js} +2 -2
  69. package/dist/interface/assets/Menu-D9FVgjwT.js +1 -0
  70. package/dist/interface/assets/Metrics-7bYWyGWU.js +9 -0
  71. package/dist/interface/assets/Metrics-DX59XXDc.css +1 -0
  72. package/dist/interface/assets/{OAuthDeviceFlow-CLi6l8jS.js → OAuthDeviceFlow-BS0FQbZh.js} +1 -1
  73. package/dist/interface/assets/Plugin-ZwkTp6C4.js +1 -0
  74. package/dist/interface/assets/{PluginConsole-xOY_kwz_.js → PluginConsole-Dt39TWaO.js} +2 -2
  75. package/dist/interface/assets/PluginDetail-D7ZtOG9Y.js +2 -0
  76. package/dist/interface/assets/{PluginSchema-DG3ou73v.js → PluginSchema-8T7EBq-Z.js} +1 -1
  77. package/dist/interface/assets/PluginSearch-DN3o0wfs.js +1 -0
  78. package/dist/interface/assets/PluginSearch-eRDCvu_8.js +2 -0
  79. package/dist/interface/assets/{PluginUpdateProgress-Bx0MXwAk.js → PluginUpdateProgress-CxjpzkGa.js} +1 -1
  80. package/dist/interface/assets/Plugins-DVsMpyvr.js +1 -0
  81. package/dist/interface/assets/Recordings-BKxSEiQo.js +1 -0
  82. package/dist/interface/assets/Recordings-cR4_6aGN.css +1 -0
  83. package/dist/interface/assets/SensorEdit-BmaMQKEa.js +1 -0
  84. package/dist/interface/assets/{SensorHistory-CTIUwIWN.js → SensorHistory-CmOAk-tD.js} +1 -1
  85. package/dist/interface/assets/Sensors-x08al7Je.js +2 -0
  86. package/dist/interface/assets/Settings-Cp1lzG1i.js +1 -0
  87. package/dist/interface/assets/SettingsAccount-BwCNddkW.js +1 -0
  88. package/dist/interface/assets/SettingsAccount-DC9AxqHe.js +1 -0
  89. package/dist/interface/assets/SettingsAppearance-CMzzDZCX.js +1 -0
  90. package/dist/interface/assets/{SettingsAppearance-CoTdsIwM.js → SettingsAppearance-Dr8hJloI.js} +1 -1
  91. package/dist/interface/assets/SettingsBackup-Dc8pDM3Y.js +1 -0
  92. package/dist/interface/assets/{SettingsList-W5FvbkXm.js → SettingsList-3peF3gFZ.js} +1 -1
  93. package/dist/interface/assets/SettingsMqtt-k-cHaOoA.js +1 -0
  94. package/dist/interface/assets/SettingsNotifications-BJHYlSKX.js +1 -0
  95. package/dist/interface/assets/SettingsPermissions-CymqvfR9.js +1 -0
  96. package/dist/interface/assets/{SettingsRecordings-COUi9BQg.js → SettingsRecordings-gWTD_djR.js} +1 -1
  97. package/dist/interface/assets/SettingsRemote-BWAhI1Gw.js +2 -0
  98. package/dist/interface/assets/SettingsRemote-CtP6Gz9C.css +1 -0
  99. package/dist/interface/assets/SettingsSystem-BGBUQvjg.js +2 -0
  100. package/dist/interface/assets/SettingsUsers-B_Ri5OrM.js +1 -0
  101. package/dist/interface/assets/Terminal-eYxvgFHE.js +4 -0
  102. package/dist/interface/assets/Updates-CweZekTf.js +2 -0
  103. package/dist/interface/assets/{VariableInput-DhAhhfsm.js → VariableInput-CM6T3pUW.js} +1 -1
  104. package/dist/interface/assets/{VariableSuggestions-q0Jd1DVI.js → VariableSuggestions-BGxZxS6U.js} +1 -1
  105. package/dist/interface/assets/{VersionsHandler-XEn3uFy7.js → VersionsHandler-BWIiBPPa.js} +2 -2
  106. package/dist/interface/assets/{VirtualSensorCreate-_E5E0U7E.js → VirtualSensorCreate-CFQC2-9D.js} +1 -1
  107. package/dist/interface/assets/Workers-B-sp43t3.js +2 -0
  108. package/dist/interface/assets/{Workers-7hKMBU4w.css → Workers-DH59zE1C.css} +1 -1
  109. package/dist/interface/assets/{api-C7Yv5Scr.js → api-CG0j1twy.js} +1 -1
  110. package/dist/interface/assets/api-CVOj5SYs.css +2 -0
  111. package/dist/interface/assets/api-C_bOaXk2.js +2 -0
  112. package/dist/interface/assets/{auth-BixzEnBM.js → auth-BPSOBTDX.js} +1 -1
  113. package/dist/interface/assets/{automations-K8XPcP3U.js → automations-BrtwUIUz.js} +1 -1
  114. package/dist/interface/assets/brain-7IVdhMyV.js +1 -0
  115. package/dist/interface/assets/cameras.schema-CoIOnGzE.js +1 -0
  116. package/dist/interface/assets/cloudHandoff-BiFzJEYx.js +1 -0
  117. package/dist/interface/assets/{config-CURuT8_k.js → config-BjldP5A6.js} +1 -1
  118. package/dist/interface/assets/content-copy-CLkJTA4w.js +1 -0
  119. package/dist/interface/assets/eventLabels-BsPoPWS9.js +1 -0
  120. package/dist/interface/assets/{flowSchema-szT9B0sA.js → flowSchema-B_Otn6RU.js} +1 -1
  121. package/dist/interface/assets/{intercomService-BjB4QQiX.js → intercomService-BpTOoSQi.js} +1 -1
  122. package/dist/interface/assets/lan-BP0NuDr7.js +1 -0
  123. package/dist/interface/assets/main-BG-VCb--.js +3 -0
  124. package/dist/interface/assets/main-CFQGq2Yn.css +1 -0
  125. package/dist/interface/assets/{mqtt-uItF3Vd7.js → mqtt-DSPPQwxJ.js} +1 -1
  126. package/dist/interface/assets/{notifications-CuZPzI4-.js → notifications-DEEM2oP2.js} +1 -1
  127. package/dist/interface/assets/{plugins-QEqfAk0G.js → plugins-DBBFdZKH.js} +1 -1
  128. package/dist/interface/assets/refresh-Ds2EayhZ.js +1 -0
  129. package/dist/interface/assets/sensorIcons-CP5EQZ60.js +1 -0
  130. package/dist/interface/assets/{sensors-BxvL01cB.js → sensors-CKTPsYYH.js} +1 -1
  131. package/dist/interface/assets/{server-CDm6FwHH.js → server-B_MuqJ5z.js} +1 -1
  132. package/dist/interface/assets/{theme-CRw47tnu.js → theme-FztlStyg.js} +1 -1
  133. package/dist/interface/assets/types-BHAzjgi3.js +1 -0
  134. package/dist/interface/assets/types-G1_espGV.js +1 -0
  135. package/dist/interface/assets/{types-DtdpTPfZ.js → types-bCt9IrFD.js} +1 -1
  136. package/dist/interface/assets/updates-CVapvGAI.js +1 -0
  137. package/dist/interface/assets/{useAppVersion-BxTTVLKg.js → useAppVersion-SrF7tGCe.js} +1 -1
  138. package/dist/interface/assets/useBackupRestore-Tc23Huvm.js +1 -0
  139. package/dist/interface/assets/{useCameraOptions-DMC2KjMS.js → useCameraOptions-zsIqf0i9.js} +1 -1
  140. package/dist/interface/assets/{useLogsSocket-CmyalQi8.js → useLogsSocket-DSltWBh4.js} +1 -1
  141. package/dist/interface/assets/{useNavLayout-BacPxpZv.js → useNavLayout-BhlxDHV7.js} +1 -1
  142. package/dist/interface/assets/{usePermissions-C2wQBWmH.js → usePermissions-4HqGU99G.js} +1 -1
  143. package/dist/interface/assets/{usePluginUpdates-CyjxFTTi.js → usePluginUpdates-CKH0Hb87.js} +1 -1
  144. package/dist/interface/assets/{usePushRegistration-BPSfvI_w.js → usePushRegistration-DAE3goyn.js} +1 -1
  145. package/dist/interface/assets/{useServerRestart-x8p2rFqn.js → useServerRestart-DoLrF47t.js} +1 -1
  146. package/dist/interface/assets/{useStreamStatus-PMpl519O.js → useStreamStatus-B3QIWjDE.js} +1 -1
  147. package/dist/interface/assets/useTabSwipe-BYFLQ9EY.js +1 -0
  148. package/dist/interface/assets/{useUpdateChannel-ChscS5KW.js → useUpdateChannel-DWEw-ZyB.js} +1 -1
  149. package/dist/interface/assets/useUpdatesSocket-CoxkS7Hr.js +1 -0
  150. package/dist/interface/assets/{useUserOptions-YiEj2ox6.js → useUserOptions-DCDeuz2p.js} +1 -1
  151. package/dist/interface/assets/vendor-cameraui-4iwjOYwz.js +2326 -0
  152. package/dist/interface/assets/vendor-core-gJradu21.js +1 -0
  153. package/dist/interface/assets/{vendor-primevue-BDu2BpXv.js → vendor-primevue-DMAuiM9b.js} +72 -72
  154. package/dist/interface/index.html +32 -27
  155. package/dist/interface/sw.js +1 -1
  156. package/dist/server/package.json +13 -12
  157. package/dist/server/requirements.txt +2 -2
  158. package/dist/server/src/_camera_ui_tools/camera_ui_rpc/client.py +8 -0
  159. package/dist/server/src/_camera_ui_tools/camera_ui_rpc/types.py +20 -0
  160. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/__init__.py +8 -2
  161. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/__init__.py +10 -2
  162. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/config.py +9 -0
  163. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/detection.py +24 -10
  164. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/enums.py +6 -7
  165. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/notification.py +28 -0
  166. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/plugin/interfaces.py +24 -0
  167. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/__init__.py +4 -0
  168. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/base.py +18 -0
  169. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/detection.py +3 -3
  170. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/object.py +6 -1
  171. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/spec.py +27 -3
  172. package/dist/server/src/api/controllers/auth.controller.js +5 -0
  173. package/dist/server/src/api/controllers/auth.controller.js.map +1 -1
  174. package/dist/server/src/api/controllers/frameWorkers.controller.d.ts +14 -0
  175. package/dist/server/src/api/controllers/frameWorkers.controller.js +96 -0
  176. package/dist/server/src/api/controllers/frameWorkers.controller.js.map +1 -1
  177. package/dist/server/src/api/controllers/remote.controller.d.ts +1 -0
  178. package/dist/server/src/api/controllers/remote.controller.js +16 -12
  179. package/dist/server/src/api/controllers/remote.controller.js.map +1 -1
  180. package/dist/server/src/api/controllers/server.controller.js +6 -2
  181. package/dist/server/src/api/controllers/server.controller.js.map +1 -1
  182. package/dist/server/src/api/controllers/updates.controller.d.ts +8 -0
  183. package/dist/server/src/api/controllers/updates.controller.js +40 -0
  184. package/dist/server/src/api/controllers/updates.controller.js.map +1 -0
  185. package/dist/server/src/api/controllers/workers.controller.js +8 -2
  186. package/dist/server/src/api/controllers/workers.controller.js.map +1 -1
  187. package/dist/server/src/api/database/constants.d.ts +0 -1
  188. package/dist/server/src/api/database/constants.js +0 -1
  189. package/dist/server/src/api/database/constants.js.map +1 -1
  190. package/dist/server/src/api/database/index.d.ts +2 -3
  191. package/dist/server/src/api/database/index.js +3 -6
  192. package/dist/server/src/api/database/index.js.map +1 -1
  193. package/dist/server/src/api/database/migrations/v2-1-10.js +33 -0
  194. package/dist/server/src/api/database/migrations/v2-1-10.js.map +1 -0
  195. package/dist/server/src/api/database/migrations/v2-1-11.js +31 -0
  196. package/dist/server/src/api/database/migrations/v2-1-11.js.map +1 -0
  197. package/dist/server/src/api/database/migrations/v2-1-12.js +25 -0
  198. package/dist/server/src/api/database/migrations/v2-1-12.js.map +1 -0
  199. package/dist/server/src/api/database/migrations/v2-1-13.d.ts +3 -0
  200. package/dist/server/src/api/database/migrations/v2-1-13.js +51 -0
  201. package/dist/server/src/api/database/migrations/v2-1-13.js.map +1 -0
  202. package/dist/server/src/api/database/migrations/v2-1-14.d.ts +3 -0
  203. package/dist/server/src/api/database/migrations/v2-1-14.js +87 -0
  204. package/dist/server/src/api/database/migrations/v2-1-14.js.map +1 -0
  205. package/dist/server/src/api/database/migrations/v2-1-6.js.map +1 -1
  206. package/dist/server/src/api/database/migrations/v2-1-9.d.ts +3 -0
  207. package/dist/server/src/api/database/migrations/v2-1-9.js +38 -0
  208. package/dist/server/src/api/database/migrations/v2-1-9.js.map +1 -0
  209. package/dist/server/src/api/database/record-schemas.d.ts +18 -13
  210. package/dist/server/src/api/database/record-schemas.js +3 -3
  211. package/dist/server/src/api/database/record-schemas.js.map +1 -1
  212. package/dist/server/src/api/database/types.d.ts +3 -11
  213. package/dist/server/src/api/routes/frameWorkers.routes.js +22 -1
  214. package/dist/server/src/api/routes/frameWorkers.routes.js.map +1 -1
  215. package/dist/server/src/api/routes/index.js +3 -1
  216. package/dist/server/src/api/routes/index.js.map +1 -1
  217. package/dist/server/src/api/routes/updates.routes.d.ts +2 -0
  218. package/dist/server/src/api/routes/updates.routes.js +47 -0
  219. package/dist/server/src/api/routes/updates.routes.js.map +1 -0
  220. package/dist/server/src/api/routes/workers.routes.js +3 -2
  221. package/dist/server/src/api/routes/workers.routes.js.map +1 -1
  222. package/dist/server/src/api/schemas/cameras.schema.d.ts +228 -79
  223. package/dist/server/src/api/schemas/cameras.schema.js +58 -9
  224. package/dist/server/src/api/schemas/cameras.schema.js.map +1 -1
  225. package/dist/server/src/api/schemas/frameWorkers.schema.d.ts +6 -0
  226. package/dist/server/src/api/schemas/frameWorkers.schema.js +7 -0
  227. package/dist/server/src/api/schemas/frameWorkers.schema.js.map +1 -1
  228. package/dist/server/src/api/schemas/server.schema.d.ts +1 -0
  229. package/dist/server/src/api/schemas/server.schema.js +4 -0
  230. package/dist/server/src/api/schemas/server.schema.js.map +1 -1
  231. package/dist/server/src/api/schemas/users.schema.d.ts +119 -84
  232. package/dist/server/src/api/schemas/users.schema.js +3 -0
  233. package/dist/server/src/api/schemas/users.schema.js.map +1 -1
  234. package/dist/server/src/api/schemas/workers.schema.d.ts +3 -0
  235. package/dist/server/src/api/schemas/workers.schema.js +5 -0
  236. package/dist/server/src/api/schemas/workers.schema.js.map +1 -1
  237. package/dist/server/src/api/services/plugins.service.d.ts +4 -1
  238. package/dist/server/src/api/services/plugins.service.js +23 -4
  239. package/dist/server/src/api/services/plugins.service.js.map +1 -1
  240. package/dist/server/src/api/services/server.service.d.ts +3 -1
  241. package/dist/server/src/api/services/server.service.js +6 -1
  242. package/dist/server/src/api/services/server.service.js.map +1 -1
  243. package/dist/server/src/api/services/updates.service.d.ts +108 -0
  244. package/dist/server/src/api/services/updates.service.js +476 -0
  245. package/dist/server/src/api/services/updates.service.js.map +1 -0
  246. package/dist/server/src/api/types/index.d.ts +6 -0
  247. package/dist/server/src/api/types/index.js.map +1 -1
  248. package/dist/server/src/api/websocket/index.js +2 -0
  249. package/dist/server/src/api/websocket/index.js.map +1 -1
  250. package/dist/server/src/api/websocket/nsp/metrics.d.ts +3 -1
  251. package/dist/server/src/api/websocket/nsp/metrics.js +90 -37
  252. package/dist/server/src/api/websocket/nsp/metrics.js.map +1 -1
  253. package/dist/server/src/api/websocket/nsp/server.js +45 -9
  254. package/dist/server/src/api/websocket/nsp/server.js.map +1 -1
  255. package/dist/server/src/api/websocket/types.d.ts +23 -17
  256. package/dist/server/src/camera/controller.js +1 -0
  257. package/dist/server/src/camera/controller.js.map +1 -1
  258. package/dist/server/src/camera/decoder/audio-loop.d.ts +0 -1
  259. package/dist/server/src/camera/decoder/audio-loop.js +38 -68
  260. package/dist/server/src/camera/decoder/audio-loop.js.map +1 -1
  261. package/dist/server/src/camera/decoder/child.d.ts +4 -1
  262. package/dist/server/src/camera/decoder/child.js +27 -0
  263. package/dist/server/src/camera/decoder/child.js.map +1 -1
  264. package/dist/server/src/camera/decoder/debug/detection-record.d.ts +6 -0
  265. package/dist/server/src/camera/decoder/debug/detection-record.js +21 -0
  266. package/dist/server/src/camera/decoder/debug/detection-record.js.map +1 -1
  267. package/dist/server/src/camera/decoder/detection-coordinator.d.ts +26 -3
  268. package/dist/server/src/camera/decoder/detection-coordinator.js +525 -207
  269. package/dist/server/src/camera/decoder/detection-coordinator.js.map +1 -1
  270. package/dist/server/src/camera/decoder/detection-pipeline.d.ts +4 -2
  271. package/dist/server/src/camera/decoder/detection-pipeline.js +17 -10
  272. package/dist/server/src/camera/decoder/detection-pipeline.js.map +1 -1
  273. package/dist/server/src/camera/decoder/detection-window.d.ts +17 -0
  274. package/dist/server/src/camera/decoder/detection-window.js +188 -0
  275. package/dist/server/src/camera/decoder/detection-window.js.map +1 -0
  276. package/dist/server/src/camera/decoder/event-manager.d.ts +1 -0
  277. package/dist/server/src/camera/decoder/event-manager.js +12 -0
  278. package/dist/server/src/camera/decoder/event-manager.js.map +1 -1
  279. package/dist/server/src/camera/decoder/event-thumbnailer.d.ts +3 -3
  280. package/dist/server/src/camera/decoder/event-thumbnailer.js +2 -2
  281. package/dist/server/src/camera/decoder/event-thumbnailer.js.map +1 -1
  282. package/dist/server/src/camera/decoder/frame-scaler.d.ts +14 -1
  283. package/dist/server/src/camera/decoder/frame-scaler.js +63 -20
  284. package/dist/server/src/camera/decoder/frame-scaler.js.map +1 -1
  285. package/dist/server/src/camera/decoder/motion-localizer.d.ts +16 -0
  286. package/dist/server/src/camera/decoder/motion-localizer.js +49 -0
  287. package/dist/server/src/camera/decoder/motion-localizer.js.map +1 -0
  288. package/dist/server/src/camera/decoder/perf-tracker.d.ts +29 -8
  289. package/dist/server/src/camera/decoder/perf-tracker.js +76 -50
  290. package/dist/server/src/camera/decoder/perf-tracker.js.map +1 -1
  291. package/dist/server/src/camera/decoder/plugin-registry.d.ts +1 -0
  292. package/dist/server/src/camera/decoder/plugin-registry.js +8 -6
  293. package/dist/server/src/camera/decoder/plugin-registry.js.map +1 -1
  294. package/dist/server/src/camera/decoder/secondary-stage.d.ts +4 -1
  295. package/dist/server/src/camera/decoder/secondary-stage.js +26 -3
  296. package/dist/server/src/camera/decoder/secondary-stage.js.map +1 -1
  297. package/dist/server/src/camera/decoder/sources/analysis-source.d.ts +15 -1
  298. package/dist/server/src/camera/decoder/sources/audio-source.d.ts +7 -3
  299. package/dist/server/src/camera/decoder/sources/audio-source.js +89 -78
  300. package/dist/server/src/camera/decoder/sources/audio-source.js.map +1 -1
  301. package/dist/server/src/camera/decoder/sources/buffered-source.d.ts +27 -9
  302. package/dist/server/src/camera/decoder/sources/buffered-source.js +151 -65
  303. package/dist/server/src/camera/decoder/sources/buffered-source.js.map +1 -1
  304. package/dist/server/src/camera/decoder/sources/frame-handle.d.ts +13 -0
  305. package/dist/server/src/camera/decoder/sources/frame-handle.js +106 -0
  306. package/dist/server/src/camera/decoder/sources/frame-handle.js.map +1 -0
  307. package/dist/server/src/camera/decoder/sources/frame-source.d.ts +25 -26
  308. package/dist/server/src/camera/decoder/sources/frame-source.js +213 -268
  309. package/dist/server/src/camera/decoder/sources/frame-source.js.map +1 -1
  310. package/dist/server/src/camera/decoder/sources/reconnect-loop.d.ts +17 -0
  311. package/dist/server/src/camera/decoder/sources/reconnect-loop.js +59 -0
  312. package/dist/server/src/camera/decoder/sources/reconnect-loop.js.map +1 -0
  313. package/dist/server/src/camera/decoder/sources/snapshot-fetcher.d.ts +15 -0
  314. package/dist/server/src/camera/decoder/sources/snapshot-fetcher.js +58 -0
  315. package/dist/server/src/camera/decoder/sources/snapshot-fetcher.js.map +1 -0
  316. package/dist/server/src/camera/decoder/sources/video-input.d.ts +18 -0
  317. package/dist/server/src/camera/decoder/sources/video-input.js +55 -0
  318. package/dist/server/src/camera/decoder/sources/video-input.js.map +1 -0
  319. package/dist/server/src/camera/decoder/types.d.ts +74 -18
  320. package/dist/server/src/camera/decoder/types.js +2 -0
  321. package/dist/server/src/camera/decoder/types.js.map +1 -1
  322. package/dist/server/src/camera/decoder/worker.d.ts +5 -1
  323. package/dist/server/src/camera/decoder/worker.js +35 -5
  324. package/dist/server/src/camera/decoder/worker.js.map +1 -1
  325. package/dist/server/src/camera/index.d.ts +2 -1
  326. package/dist/server/src/camera/index.js +3 -0
  327. package/dist/server/src/camera/index.js.map +1 -1
  328. package/dist/server/src/camera/streaming/fmp4-session.js +1 -1
  329. package/dist/server/src/camera/streaming/fmp4-session.js.map +1 -1
  330. package/dist/server/src/camera/streaming/rtp-session.js +1 -1
  331. package/dist/server/src/camera/streaming/rtp-session.js.map +1 -1
  332. package/dist/server/src/main.js +22 -2
  333. package/dist/server/src/main.js.map +1 -1
  334. package/dist/server/src/manager/types.d.ts +1 -0
  335. package/dist/server/src/manager/types.js +2 -0
  336. package/dist/server/src/manager/types.js.map +1 -1
  337. package/dist/server/src/mqtt/bridge.d.ts +0 -1
  338. package/dist/server/src/mqtt/bridge.js +0 -33
  339. package/dist/server/src/mqtt/bridge.js.map +1 -1
  340. package/dist/server/src/mqtt/ha-discovery.js +0 -1
  341. package/dist/server/src/mqtt/ha-discovery.js.map +1 -1
  342. package/dist/server/src/plugins/index.js +0 -2
  343. package/dist/server/src/plugins/index.js.map +1 -1
  344. package/dist/server/src/plugins/runtime/node/proxy/cameraDevice.js +9 -0
  345. package/dist/server/src/plugins/runtime/node/proxy/cameraDevice.js.map +1 -1
  346. package/dist/server/src/plugins/runtime/node/proxy/sensorManager.js +8 -0
  347. package/dist/server/src/plugins/runtime/node/proxy/sensorManager.js.map +1 -1
  348. package/dist/server/src/plugins/runtime/python/proxy/camera_device.py +14 -0
  349. package/dist/server/src/plugins/runtime/python/proxy/sensor.py +1 -0
  350. package/dist/server/src/plugins/runtime/python/proxy/sensor_manager.py +13 -0
  351. package/dist/server/src/remote/services/cloudflare-managed.d.ts +2 -0
  352. package/dist/server/src/remote/services/cloudflare-managed.js +9 -2
  353. package/dist/server/src/remote/services/cloudflare-managed.js.map +1 -1
  354. package/dist/server/src/remote/services/cloudflare.d.ts +3 -0
  355. package/dist/server/src/remote/services/cloudflare.js +11 -0
  356. package/dist/server/src/remote/services/cloudflare.js.map +1 -1
  357. package/dist/server/src/remote/services/index.d.ts +2 -0
  358. package/dist/server/src/remote/services/index.js +60 -8
  359. package/dist/server/src/remote/services/index.js.map +1 -1
  360. package/dist/server/src/remote/services/tunnelConnections.d.ts +9 -0
  361. package/dist/server/src/remote/services/tunnelConnections.js +45 -0
  362. package/dist/server/src/remote/services/tunnelConnections.js.map +1 -0
  363. package/dist/server/src/remote/services/urlReadiness.d.ts +2 -0
  364. package/dist/server/src/remote/services/urlReadiness.js +7 -4
  365. package/dist/server/src/remote/services/urlReadiness.js.map +1 -1
  366. package/dist/server/src/remote/types.d.ts +1 -2
  367. package/dist/server/src/rpc/interfaces/frameworker.d.ts +4 -1
  368. package/dist/server/src/rpc/interfaces/sensor.d.ts +1 -0
  369. package/dist/server/src/rpc/leafConnection.d.ts +12 -0
  370. package/dist/server/src/rpc/leafConnection.js +60 -0
  371. package/dist/server/src/rpc/leafConnection.js.map +1 -0
  372. package/dist/server/src/rpc/server.d.ts +2 -0
  373. package/dist/server/src/rpc/server.js +7 -1
  374. package/dist/server/src/rpc/server.js.map +1 -1
  375. package/dist/server/src/sensors/registry.d.ts +2 -0
  376. package/dist/server/src/sensors/registry.js +16 -0
  377. package/dist/server/src/sensors/registry.js.map +1 -1
  378. package/dist/server/src/services/config/index.js +2 -0
  379. package/dist/server/src/services/config/index.js.map +1 -1
  380. package/dist/server/src/types.d.ts +10 -1
  381. package/dist/server/src/utils/ipc.d.ts +9 -0
  382. package/dist/server/src/utils/ipc.js +31 -5
  383. package/dist/server/src/utils/ipc.js.map +1 -1
  384. package/dist/server/src/utils/plugin-registry/index.js +1 -1
  385. package/dist/server/src/utils/plugin-registry/index.js.map +1 -1
  386. package/dist/server/src/utils/system-info.d.ts +9 -0
  387. package/dist/server/src/utils/system-info.js +48 -0
  388. package/dist/server/src/utils/system-info.js.map +1 -0
  389. package/dist/server/src/workers/agent.d.ts +3 -0
  390. package/dist/server/src/workers/agent.js +36 -8
  391. package/dist/server/src/workers/agent.js.map +1 -1
  392. package/dist/server/src/workers/capabilities/frame-decoding.d.ts +2 -2
  393. package/dist/server/src/workers/capabilities/frame-decoding.js +5 -5
  394. package/dist/server/src/workers/capabilities/frame-decoding.js.map +1 -1
  395. package/dist/server/src/workers/capabilities/handler.d.ts +2 -2
  396. package/dist/server/src/workers/capabilities/plugin-host.d.ts +2 -2
  397. package/dist/server/src/workers/capabilities/plugin-host.js +6 -6
  398. package/dist/server/src/workers/capabilities/plugin-host.js.map +1 -1
  399. package/dist/server/src/workers/manager.d.ts +9 -1
  400. package/dist/server/src/workers/manager.js +24 -0
  401. package/dist/server/src/workers/manager.js.map +1 -1
  402. package/dist/server/src/workers/types.d.ts +14 -0
  403. package/dist/server/src/workers/types.js.map +1 -1
  404. package/package.json +13 -12
  405. package/dist/interface/assets/Automation-DDNhcjDg.js +0 -3
  406. package/dist/interface/assets/AutomationImport-DAeFd-SZ.js +0 -2
  407. package/dist/interface/assets/Automations-BeGe7iQE.js +0 -2
  408. package/dist/interface/assets/Camera-C0sNg85L.js +0 -2
  409. package/dist/interface/assets/Camera-C5gF7yVN.css +0 -1
  410. package/dist/interface/assets/Camview-DzMmXQvW.js +0 -1
  411. package/dist/interface/assets/ConfigActionCameraControl-BMlRbdRM.js +0 -1
  412. package/dist/interface/assets/ConfigTriggerDetection-ijTkd_SS.js +0 -1
  413. package/dist/interface/assets/ConfigTriggerGeofence-Q7LQpVoM.js +0 -1
  414. package/dist/interface/assets/Console-Gu1eu82G.js +0 -1
  415. package/dist/interface/assets/CuiAutomationRunsDialog-CxcWpqrI.js +0 -1
  416. package/dist/interface/assets/CuiBottomSheet-BkmkKf1u.js +0 -1
  417. package/dist/interface/assets/CuiCameraPipCard-CuZZZ7Cv.js +0 -1
  418. package/dist/interface/assets/CuiCameraRecordings-BxEA_Vhd.js +0 -1
  419. package/dist/interface/assets/CuiCameraTable-67Itb7my.js +0 -1
  420. package/dist/interface/assets/CuiConsole-De9JpSLz.js +0 -5
  421. package/dist/interface/assets/CuiDataTable-P8bWN0ZK.js +0 -1
  422. package/dist/interface/assets/CuiLightControl-D5Z1AqWH.js +0 -1
  423. package/dist/interface/assets/CuiPluginCard-D3x9FPb6.js +0 -2
  424. package/dist/interface/assets/CuiPluginCategoryChip-CQ2FJafE.js +0 -1
  425. package/dist/interface/assets/CuiQRCode-CZnspFFw.js +0 -1
  426. package/dist/interface/assets/CuiRecordingsGrid-wEaU6-3c.js +0 -1
  427. package/dist/interface/assets/CuiSchema--yMBD996.css +0 -1
  428. package/dist/interface/assets/CuiSchema-DLV1lIiB.js +0 -1
  429. package/dist/interface/assets/Faces-BlPQek1-.js +0 -1
  430. package/dist/interface/assets/FirstSteps-C-DKv_P2.js +0 -1
  431. package/dist/interface/assets/Menu-DceReBlq.js +0 -1
  432. package/dist/interface/assets/Metrics-BstlZavQ.css +0 -1
  433. package/dist/interface/assets/Metrics-Cw_Z_e0C.js +0 -1
  434. package/dist/interface/assets/Plugin-BBVxbQeT.js +0 -1
  435. package/dist/interface/assets/PluginDetail-D2RncxpL.js +0 -2
  436. package/dist/interface/assets/PluginSearch-CBhloRm6.js +0 -1
  437. package/dist/interface/assets/PluginSearch-RGhSeM1T.js +0 -2
  438. package/dist/interface/assets/Plugins-COHwVV0A.js +0 -1
  439. package/dist/interface/assets/Recordings-H5qOm_rD.js +0 -1
  440. package/dist/interface/assets/Recordings-zdTzwv7C.css +0 -1
  441. package/dist/interface/assets/SensorEdit-C-H_3ap8.js +0 -1
  442. package/dist/interface/assets/Sensors-lPcOdHJN.js +0 -2
  443. package/dist/interface/assets/Settings-BUoXoFiH.js +0 -1
  444. package/dist/interface/assets/SettingsAccount-CudWgknL.js +0 -1
  445. package/dist/interface/assets/SettingsAccount-DUy_W02_.js +0 -1
  446. package/dist/interface/assets/SettingsAppearance-eZsdWWp3.js +0 -1
  447. package/dist/interface/assets/SettingsBackup-ibb5I5Jv.js +0 -1
  448. package/dist/interface/assets/SettingsMqtt-Ct42icAW.js +0 -1
  449. package/dist/interface/assets/SettingsNotifications-B4lyMlLR.js +0 -1
  450. package/dist/interface/assets/SettingsPermissions-Bsv293ri.js +0 -1
  451. package/dist/interface/assets/SettingsRemote-DYld6-1F.css +0 -1
  452. package/dist/interface/assets/SettingsRemote-Dq_BD0fk.js +0 -1
  453. package/dist/interface/assets/SettingsSystem-C5xROdA0.js +0 -2
  454. package/dist/interface/assets/SettingsUsers-Cjk6mevW.js +0 -1
  455. package/dist/interface/assets/Terminal-BIdBrL4g.js +0 -4
  456. package/dist/interface/assets/Workers-DVABUc39.js +0 -2
  457. package/dist/interface/assets/api-AVHJeggR.css +0 -2
  458. package/dist/interface/assets/api-CmdQlVDD.js +0 -2
  459. package/dist/interface/assets/cameras.schema-A_6JklLs.js +0 -1
  460. package/dist/interface/assets/cloudHandoff-D0ytFfHK.js +0 -1
  461. package/dist/interface/assets/deployed-code-update-xHE-blDN.js +0 -1
  462. package/dist/interface/assets/main-B1ryIyTr.css +0 -1
  463. package/dist/interface/assets/main-BdIdmDhs.js +0 -3
  464. package/dist/interface/assets/round-restart-alt-B_7HR24a.js +0 -1
  465. package/dist/interface/assets/round-restart-alt-CmrjVFat.css +0 -1
  466. package/dist/interface/assets/sensorIcons-BujySw0j.js +0 -1
  467. package/dist/interface/assets/types-R10eIequ.js +0 -1
  468. package/dist/interface/assets/types-p_uC0rfp.js +0 -1
  469. package/dist/interface/assets/useBackupRestore-DLieDBFC.js +0 -1
  470. package/dist/interface/assets/vendor-cameraui-Cf0XVNQ7.js +0 -2326
  471. package/dist/interface/assets/vendor-core-u4xNQ-aF.js +0 -1
  472. package/dist/server/src/api/database/migrations/v2-0-50.js +0 -45
  473. package/dist/server/src/api/database/migrations/v2-0-50.js.map +0 -1
  474. package/dist/server/src/api/database/migrations/v2-0-51.js +0 -43
  475. package/dist/server/src/api/database/migrations/v2-0-51.js.map +0 -1
  476. package/dist/server/src/api/database/migrations/v2-1-0.js +0 -72
  477. package/dist/server/src/api/database/migrations/v2-1-0.js.map +0 -1
  478. /package/dist/server/src/api/database/migrations/{v2-0-50.d.ts → v2-1-10.d.ts} +0 -0
  479. /package/dist/server/src/api/database/migrations/{v2-0-51.d.ts → v2-1-11.d.ts} +0 -0
  480. /package/dist/server/src/api/database/migrations/{v2-1-0.d.ts → v2-1-12.d.ts} +0 -0
@@ -1,7 +1,9 @@
1
- import { Decoder, Demuxer } from 'node-av/api';
1
+ import { Decoder } from 'node-av/api';
2
2
  import { FrameScaler } from '../frame-scaler.js';
3
- import { createHardwareContext } from '../hardware.js';
4
- import { ReconnectBackoff } from '../reconnect-backoff.js';
3
+ import { FrameHandle } from './frame-handle.js';
4
+ import { ReconnectLoop } from './reconnect-loop.js';
5
+ import { SnapshotFetcher } from './snapshot-fetcher.js';
6
+ import { createFrameFilter, openVideoInput } from './video-input.js';
5
7
  export class BufferedSource {
6
8
  config;
7
9
  logger;
@@ -16,21 +18,29 @@ export class BufferedSource {
16
18
  nextSerial = 0;
17
19
  waitingForKeyframe = true;
18
20
  decoder;
21
+ filter;
19
22
  decodedThrough = -1;
20
23
  cachedFrame;
21
24
  cachedFrameAt = 0;
22
25
  lastPacketAt = 0;
23
26
  lastDecodeAt = 0;
27
+ decodeMs = 0;
28
+ decodedFrames = 0;
24
29
  shouldRun = false;
30
+ paused = false;
25
31
  connected = false;
26
32
  producerPromise;
33
+ producerError;
27
34
  inflightDecode;
28
- backoff = new ReconnectBackoff();
29
- sleepTimer;
30
- sleepResolve;
35
+ resolvedFps;
36
+ _generation = 0;
37
+ reconnect;
38
+ snapshots;
31
39
  constructor(config, logger) {
32
40
  this.config = config;
33
41
  this.logger = logger;
42
+ this.reconnect = new ReconnectLoop(logger, 'Buffered source');
43
+ this.snapshots = config.snapshot ? new SnapshotFetcher(config.snapshot, logger) : undefined;
34
44
  }
35
45
  get isRunning() {
36
46
  return this.shouldRun;
@@ -45,20 +55,34 @@ export class BufferedSource {
45
55
  return this.cachedFrameAt;
46
56
  }
47
57
  get hardwareContext() {
48
- return this.hwContext;
58
+ return this.hwContext ?? null;
49
59
  }
50
- start() {
60
+ get fps() {
61
+ return this.resolvedFps ?? 20;
62
+ }
63
+ get lastError() {
64
+ return this.producerError;
65
+ }
66
+ get generation() {
67
+ return this._generation;
68
+ }
69
+ async start() {
70
+ this.paused = false;
51
71
  if (this.shouldRun)
52
72
  return;
53
73
  this.shouldRun = true;
54
- this.backoff.reset();
55
- this.producerPromise = this.runProducer();
74
+ this.producerError = undefined;
75
+ this.producerPromise = this.reconnect.run(() => this.shouldRun, () => this.runCycle());
76
+ }
77
+ async detach() {
78
+ this.paused = true;
79
+ this.wakePacketWaiters();
56
80
  }
57
81
  async stop() {
58
82
  if (!this.shouldRun && !this.producerPromise)
59
83
  return;
60
84
  this.shouldRun = false;
61
- this.wakeSleep();
85
+ this.reconnect.wake();
62
86
  this.wakePacketWaiters();
63
87
  if (this.inflightDecode) {
64
88
  await this.inflightDecode;
@@ -80,6 +104,12 @@ export class BufferedSource {
80
104
  }
81
105
  }
82
106
  async getFrame(maxAgeMs) {
107
+ const frame = maxAgeMs > 0 ? await this.decodeNewest(maxAgeMs) : null;
108
+ if (frame)
109
+ return FrameHandle.fromClonedFrame(frame);
110
+ return (await this.snapshots?.fetch()) ?? null;
111
+ }
112
+ async decodeNewest(maxAgeMs) {
83
113
  if (!this.hasBuffer || !this.videoStream)
84
114
  return null;
85
115
  if (this.cachedFrame && Date.now() - this.cachedFrameAt <= maxAgeMs) {
@@ -97,9 +127,9 @@ export class BufferedSource {
97
127
  return frame?.clone() ?? null;
98
128
  }
99
129
  async nextFrame(lastId) {
100
- while (this.shouldRun) {
130
+ while (this.shouldRun && !this.paused) {
101
131
  if (this.hasBuffer && this.nextSerial - 1 > lastId) {
102
- const frame = await this.getFrame(0);
132
+ const frame = await this.decodeNewest(0);
103
133
  // decoder delay can leave the cursor behind the newest packet, waiting
104
134
  // for the next one beats handing back a frame the caller already had
105
135
  if (frame && this.decodedThrough > lastId) {
@@ -111,8 +141,46 @@ export class BufferedSource {
111
141
  }
112
142
  return undefined;
113
143
  }
144
+ async decodeOldestKeyframe() {
145
+ if (!this.videoStream || this.buffer.length === 0 || !this.buffer[0].packet.isKeyframe)
146
+ return null;
147
+ const cloned = this.buffer[0].packet.clone();
148
+ if (!cloned)
149
+ return null;
150
+ let decoder;
151
+ let frame;
152
+ try {
153
+ decoder = await Decoder.create(this.videoStream, { hardware: this.hwContext ?? undefined, exitOnError: false });
154
+ await decoder.decode(cloned);
155
+ await decoder.decode(null);
156
+ let received;
157
+ while ((received = await decoder.receive())) {
158
+ frame?.[Symbol.dispose]?.();
159
+ frame = received;
160
+ }
161
+ if (!frame)
162
+ return null;
163
+ const normalized = await this.normalize(frame);
164
+ frame = undefined;
165
+ return normalized;
166
+ }
167
+ catch (error) {
168
+ this.logger.debug('Oldest keyframe decode failed:', error);
169
+ frame?.[Symbol.dispose]?.();
170
+ return null;
171
+ }
172
+ finally {
173
+ try {
174
+ decoder?.[Symbol.dispose]();
175
+ }
176
+ catch {
177
+ // ignore
178
+ }
179
+ cloned.free();
180
+ }
181
+ }
114
182
  async snapshotJpeg(maxWidth, quality, maxAgeMs = 500) {
115
- const frame = await this.getFrame(maxAgeMs);
183
+ const frame = await this.decodeNewest(maxAgeMs);
116
184
  if (!frame)
117
185
  return null;
118
186
  try {
@@ -122,51 +190,51 @@ export class BufferedSource {
122
190
  frame[Symbol.dispose]?.();
123
191
  }
124
192
  }
125
- async runProducer() {
126
- while (this.shouldRun) {
127
- try {
128
- await this.connect();
129
- this.backoff.reset();
130
- for await (const packet of this.input.packets(this.videoStream.index)) {
131
- if (!this.shouldRun) {
132
- packet?.free();
133
- break;
134
- }
135
- if (!packet)
136
- continue;
137
- this.ingest(packet);
138
- }
139
- }
140
- catch (error) {
141
- if (this.shouldRun) {
142
- this.logger.debug(`Buffered source error: ${error.message}`);
193
+ async runCycle() {
194
+ try {
195
+ await this.connect();
196
+ }
197
+ catch (error) {
198
+ await this.teardown();
199
+ throw error;
200
+ }
201
+ this.reconnect.connected();
202
+ this._generation++;
203
+ let delivered = false;
204
+ try {
205
+ for await (const packet of this.input.packets(this.videoStream.index)) {
206
+ if (!this.shouldRun) {
207
+ packet?.free();
208
+ break;
143
209
  }
210
+ if (!packet)
211
+ continue;
212
+ this.ingest(packet);
213
+ delivered = true;
144
214
  }
215
+ }
216
+ catch (error) {
217
+ const failure = error instanceof Error ? error : new Error(String(error));
218
+ this.producerError = failure;
219
+ return { delivered, error: this.shouldRun ? failure : undefined };
220
+ }
221
+ finally {
145
222
  await this.teardown();
146
- if (!this.shouldRun)
147
- break;
148
- const delay = this.backoff.nextDelayMs();
149
- this.logger.debug(`Buffered source disconnected, reconnecting in ${delay / 1000}s...`);
150
- await this.sleep(delay);
151
223
  }
152
- await this.teardown();
224
+ return { delivered };
153
225
  }
154
226
  async connect() {
155
227
  this.logger.debug('Connecting to buffered source:', this.config.url);
156
- this.input = await Demuxer.open(this.config.url, {
157
- options: {
158
- timeout: 15_000_000,
159
- rtsp_transport: 'tcp',
160
- user_agent: 'camera.ui FrameWorker',
161
- avioflags: 'direct',
162
- },
228
+ const { input, videoStream, hardwareContext, fps } = await openVideoInput(this.config.url, this.logger, {
229
+ decoder: this.config.decoder,
230
+ timeoutUs: 15_000_000,
231
+ hardwareContext: this.hwContext,
163
232
  });
164
- const videoStream = this.input.video();
165
- if (!videoStream) {
166
- throw new Error('No video stream found in buffered source');
167
- }
233
+ this.input = input;
168
234
  this.videoStream = videoStream;
169
- this.hwContext ??= createHardwareContext(this.config.decoder, this.logger);
235
+ this.hwContext = hardwareContext;
236
+ this.resolvedFps = fps;
237
+ this.filter = createFrameFilter(this.hwContext ?? null, fps);
170
238
  this.frameScaler ??= new FrameScaler(this.hwContext, this.logger, this.config.privacy);
171
239
  this.waitingForKeyframe = true;
172
240
  this.connected = true;
@@ -218,7 +286,14 @@ export class BufferedSource {
218
286
  for (const resolve of waiters)
219
287
  resolve();
220
288
  }
289
+ takeDecodeStats() {
290
+ const stats = { ms: this.decodeMs, frames: this.decodedFrames };
291
+ this.decodeMs = 0;
292
+ this.decodedFrames = 0;
293
+ return stats;
294
+ }
221
295
  async catchUpDecode() {
296
+ const decodeStart = Date.now();
222
297
  const pending = [];
223
298
  for (const b of this.buffer) {
224
299
  if (b.serial <= this.decodedThrough)
@@ -243,6 +318,7 @@ export class BufferedSource {
243
318
  while ((frame = await this.decoder.receive())) {
244
319
  last?.[Symbol.dispose]?.();
245
320
  last = frame;
321
+ this.decodedFrames++;
246
322
  }
247
323
  this.decodedThrough = p.serial;
248
324
  }
@@ -250,6 +326,7 @@ export class BufferedSource {
250
326
  // decoder delay swallowed the fed packets, the cache stays newest
251
327
  return this.cachedFrame ?? null;
252
328
  }
329
+ last = await this.normalize(last);
253
330
  // ownership moves into the cache, consumers receive clones via getFrame
254
331
  this.cachedFrame?.[Symbol.dispose]?.();
255
332
  this.cachedFrame = last;
@@ -267,11 +344,31 @@ export class BufferedSource {
267
344
  return this.cachedFrame ?? null;
268
345
  }
269
346
  finally {
347
+ this.decodeMs += Date.now() - decodeStart;
270
348
  last?.[Symbol.dispose]?.();
271
349
  for (const p of pending)
272
350
  p.packet.free();
273
351
  }
274
352
  }
353
+ async normalize(frame) {
354
+ if (!this.filter)
355
+ return frame;
356
+ let outputs;
357
+ try {
358
+ outputs = await this.filter.processAll(frame);
359
+ }
360
+ catch (error) {
361
+ this.logger.debug('Buffered source filter failed:', error);
362
+ return frame;
363
+ }
364
+ const newest = outputs.pop();
365
+ for (const extra of outputs)
366
+ extra[Symbol.dispose]?.();
367
+ if (!newest)
368
+ return frame;
369
+ frame[Symbol.dispose]?.();
370
+ return newest;
371
+ }
275
372
  disposeDecoder() {
276
373
  try {
277
374
  this.decoder?.[Symbol.dispose]();
@@ -288,6 +385,10 @@ export class BufferedSource {
288
385
  this.waitingForKeyframe = true;
289
386
  this.disposeDecoder();
290
387
  this.videoStream = undefined;
388
+ if (this.filter) {
389
+ this.filter[Symbol.dispose]();
390
+ this.filter = undefined;
391
+ }
291
392
  this.cachedFrame?.[Symbol.dispose]?.();
292
393
  this.cachedFrame = undefined;
293
394
  this.cachedFrameAt = 0;
@@ -313,20 +414,5 @@ export class BufferedSource {
313
414
  }
314
415
  this.buffer = [];
315
416
  }
316
- sleep(ms) {
317
- return new Promise((resolve) => {
318
- this.sleepResolve = resolve;
319
- this.sleepTimer = setTimeout(() => {
320
- this.sleepResolve = undefined;
321
- resolve();
322
- }, ms);
323
- });
324
- }
325
- wakeSleep() {
326
- clearTimeout(this.sleepTimer);
327
- this.sleepTimer = undefined;
328
- this.sleepResolve?.();
329
- this.sleepResolve = undefined;
330
- }
331
417
  }
332
418
  //# sourceMappingURL=buffered-source.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"buffered-source.js","sourceRoot":"","sources":["../../../../../../src/camera/decoder/sources/buffered-source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAoB3D,MAAM,OAAO,cAAc;IAgCN;IACA;IAhCX,MAAM,CAAU,kBAAkB,GAAG,GAAG,CAAC;IACzC,MAAM,CAAU,eAAe,GAAG,MAAM,CAAC;IAEzC,KAAK,CAAW;IAChB,WAAW,CAAU;IACrB,SAAS,CAA0B;IACnC,WAAW,CAAe;IAC1B,aAAa,GAAmB,EAAE,CAAC;IAEnC,MAAM,GAAqB,EAAE,CAAC;IAC9B,UAAU,GAAG,CAAC,CAAC;IACf,kBAAkB,GAAG,IAAI,CAAC;IAE1B,OAAO,CAAW;IAClB,cAAc,GAAG,CAAC,CAAC,CAAC;IAEpB,WAAW,CAAS;IACpB,aAAa,GAAG,CAAC,CAAC;IAClB,YAAY,GAAG,CAAC,CAAC;IACjB,YAAY,GAAG,CAAC,CAAC;IAEjB,SAAS,GAAG,KAAK,CAAC;IAClB,SAAS,GAAG,KAAK,CAAC;IAClB,eAAe,CAAiB;IAChC,cAAc,CAAyB;IAE9B,OAAO,GAAG,IAAI,gBAAgB,EAAE,CAAC;IAC1C,UAAU,CAAkB;IAC5B,YAAY,CAAc;IAElC,YACmB,MAA4B,EAC5B,MAAc;QADd,WAAM,GAAN,MAAM,CAAsB;QAC5B,WAAM,GAAN,MAAM,CAAQ;IAC9B,CAAC;IAEJ,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IAClD,CAAC;IAED,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,IAAW,WAAW;QACpB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,IAAW,eAAe;QACxB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAEM,KAAK;QACV,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO;QAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAC5C,CAAC;IAEM,KAAK,CAAC,IAAI;QACf,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,eAAe;YAAE,OAAO;QACrD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,MAAM,IAAI,CAAC,cAAc,CAAC;QAC5B,CAAC;QAED,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,eAAe,CAAC;YAC7B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6CAA6C,EAAE,KAAK,CAAC,CAAC;YAC1E,CAAC;YACD,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;QACnC,CAAC;QAED,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAE7B,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC7B,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,QAAgB;QACpC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,OAAO,IAAI,CAAC;QAEtD,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,aAAa,IAAI,QAAQ,EAAE,CAAC;YACpE,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QAClC,CAAC;QAED,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,aAAa,EAAE;aACzC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;YAC3D,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;aACD,OAAO,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;QAClC,CAAC,CAAC,CAAC;QAEL,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC;QACxC,OAAO,KAAK,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC;IAChC,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,MAAc;QACnC,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;YACtB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC;gBACnD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACrC,uEAAuE;gBACvE,qEAAqE;gBACrE,IAAI,KAAK,IAAI,IAAI,CAAC,cAAc,GAAG,MAAM,EAAE,CAAC;oBAC1C,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5C,CAAC;gBACD,KAAK,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;YAC9B,CAAC;YACD,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC7B,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,QAAgB,EAAE,OAAgB,EAAE,QAAQ,GAAG,GAAG;QAC1E,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAExB,IAAI,CAAC;YACH,OAAO,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC;QACjF,CAAC;gBAAS,CAAC;YACT,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;QAC5B,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,WAAW;QACvB,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;YACtB,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;gBACrB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBAErB,IAAI,KAAK,EAAE,MAAM,MAAM,IAAI,IAAI,CAAC,KAAM,CAAC,OAAO,CAAC,IAAI,CAAC,WAAY,CAAC,KAAK,CAAC,EAAE,CAAC;oBACxE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;wBACpB,MAAM,EAAE,IAAI,EAAE,CAAC;wBACf,MAAM;oBACR,CAAC;oBACD,IAAI,CAAC,MAAM;wBAAE,SAAS;oBACtB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACtB,CAAC;YACH,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;oBACnB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC/D,CAAC;YACH,CAAC;YAED,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;YACtB,IAAI,CAAC,IAAI,CAAC,SAAS;gBAAE,MAAM;YAE3B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YACzC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iDAAiD,KAAK,GAAG,IAAI,MAAM,CAAC,CAAC;YACvF,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;QAED,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;IACxB,CAAC;IAEO,KAAK,CAAC,OAAO;QACnB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAErE,IAAI,CAAC,KAAK,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;YAC/C,OAAO,EAAE;gBACP,OAAO,EAAE,UAAU;gBACnB,cAAc,EAAE,KAAK;gBACrB,UAAU,EAAE,uBAAuB;gBACnC,SAAS,EAAE,QAAQ;aACpB;SACF,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACvC,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,CAAC;QACD,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAE/B,IAAI,CAAC,SAAS,KAAK,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3E,IAAI,CAAC,WAAW,KAAK,IAAI,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAEvF,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,WAAW,CAAC,QAAQ,CAAC,KAAK,IAAI,WAAW,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/G,CAAC;IAEO,MAAM,CAAC,MAAc;QAC3B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC/B,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACtB,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;YAChC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YACxD,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,cAAc,CAAC,kBAAkB,EAAE,CAAC;YACvF,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,cAAc,CAAC,kBAAkB,EAAE,CAAC;gBAC5D,IAAI,CAAC,WAAW,EAAE,CAAC;gBACnB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;YACjC,CAAC;YACD,MAAM,CAAC,IAAI,EAAE,CAAC;YACd,OAAO;QACT,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAEO,kBAAkB;QACxB,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,cAAc;YAAE,OAAO;QACjD,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,YAAY,GAAG,cAAc,CAAC,eAAe;YAAE,OAAO;QAE5E,4EAA4E;QAC5E,yEAAyE;QACzE,sEAAsE;QACtE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAC/E,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,CAAC;IACjC,CAAC;IAEO,aAAa;QACnB,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YACnC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,iBAAiB;QACvB,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;QACnC,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QACxB,KAAK,MAAM,OAAO,IAAI,OAAO;YAAE,OAAO,EAAE,CAAC;IAC3C,CAAC;IAEO,KAAK,CAAC,aAAa;QACzB,MAAM,OAAO,GAAqB,EAAE,CAAC;QACrC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAC5B,IAAI,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,cAAc;gBAAE,SAAS;YAC9C,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAChC,IAAI,MAAM;gBAAE,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACjE,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAC9C,kEAAkE;YAClE,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC;QAClC,CAAC;QAED,IAAI,IAAuB,CAAC;QAC5B,IAAI,CAAC;YACH,IAAI,CAAC,OAAO,KAAK,MAAM,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE;gBACtD,QAAQ,EAAE,IAAI,CAAC,SAAS,IAAI,SAAS;gBACrC,WAAW,EAAE,KAAK;aACnB,CAAC,CAAC;YAEH,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;gBACxB,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBACpC,IAAI,KAAK,CAAC;gBACV,OAAO,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;oBAC9C,IAAI,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;oBAC3B,IAAI,GAAG,KAAK,CAAC;gBACf,CAAC;gBACD,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;YACjC,CAAC;YAED,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,kEAAkE;gBAClE,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC;YAClC,CAAC;YAED,wEAAwE;YACxE,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;YACvC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACxB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACrD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC/B,MAAM,MAAM,GAAG,IAAI,CAAC;YACpB,IAAI,GAAG,SAAS,CAAC;YACjB,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,qEAAqE;YACrE,6BAA6B;YAC7B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;YAChE,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC;QAClC,CAAC;gBAAS,CAAC;YACT,IAAI,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;YAC3B,KAAK,MAAM,CAAC,IAAI,OAAO;gBAAE,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAC3C,CAAC;IACH,CAAC;IAEO,cAAc;QACpB,IAAI,CAAC;YACH,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QACnC,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QACzB,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;IAC3B,CAAC;IAEO,KAAK,CAAC,QAAQ;QACpB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAC/B,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAE7B,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;QACvC,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAC7B,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QAEtB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;YAC1C,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;YACD,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QACzB,CAAC;IACH,CAAC;IAEO,WAAW;QACjB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACH,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YAClB,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;QACH,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACnB,CAAC;IAEO,KAAK,CAAC,EAAU;QACtB,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YACnC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;YAC5B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE;gBAChC,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;gBAC9B,OAAO,EAAE,CAAC;YACZ,CAAC,EAAE,EAAE,CAAC,CAAC;QACT,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,SAAS;QACf,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC9B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;QACtB,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;IAChC,CAAC"}
1
+ {"version":3,"file":"buffered-source.js","sourceRoot":"","sources":["../../../../../../src/camera/decoder/sources/buffered-source.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { Frame } from 'node-av/lib';
2
+ export declare class FrameHandle implements AsyncDisposable {
3
+ readonly frame: Frame;
4
+ private readonly demuxer?;
5
+ private readonly decoder?;
6
+ private disposed;
7
+ private constructor();
8
+ static fromClonedFrame(frame: Frame): FrameHandle;
9
+ static fromUrl(url: string, timeoutMs: number): Promise<FrameHandle>;
10
+ static fromBuffer(data: Buffer): Promise<FrameHandle>;
11
+ private static decodeFirstFrame;
12
+ [Symbol.asyncDispose](): Promise<void>;
13
+ }
@@ -0,0 +1,106 @@
1
+ import { Decoder, Demuxer } from 'node-av/api';
2
+ export class FrameHandle {
3
+ frame;
4
+ demuxer;
5
+ decoder;
6
+ disposed = false;
7
+ constructor(frame, demuxer, decoder) {
8
+ this.frame = frame;
9
+ this.demuxer = demuxer;
10
+ this.decoder = decoder;
11
+ }
12
+ static fromClonedFrame(frame) {
13
+ return new FrameHandle(frame);
14
+ }
15
+ static async fromUrl(url, timeoutMs) {
16
+ const timeoutUs = Math.max(1, Math.floor(timeoutMs * 1000)); // libavformat expects timeout in microseconds
17
+ const isRTSP = url.startsWith('rtsp://') || url.startsWith('rtsps://');
18
+ const demuxer = await Demuxer.open(url, {
19
+ options: {
20
+ timeout: timeoutUs,
21
+ rtsp_transport: isRTSP ? 'tcp' : undefined,
22
+ user_agent: 'camera.ui Decoder',
23
+ },
24
+ });
25
+ return FrameHandle.decodeFirstFrame(demuxer);
26
+ }
27
+ static async fromBuffer(data) {
28
+ const demuxer = await Demuxer.open(data);
29
+ return FrameHandle.decodeFirstFrame(demuxer);
30
+ }
31
+ static async decodeFirstFrame(demuxer) {
32
+ let decoder;
33
+ let firstFrame;
34
+ try {
35
+ const videoStream = demuxer.video();
36
+ if (!videoStream) {
37
+ throw new Error('No video stream in snapshot source');
38
+ }
39
+ decoder = await Decoder.create(videoStream, { exitOnError: false });
40
+ const packets = demuxer.packets(videoStream.index);
41
+ const frames = decoder.frames(packets);
42
+ for await (const frame of frames) {
43
+ if (!frame)
44
+ continue;
45
+ firstFrame = frame;
46
+ break;
47
+ }
48
+ if (!firstFrame) {
49
+ throw new Error('Snapshot source produced no frame');
50
+ }
51
+ decoder[Symbol.dispose]();
52
+ decoder = undefined;
53
+ await demuxer[Symbol.asyncDispose]();
54
+ return new FrameHandle(firstFrame);
55
+ }
56
+ catch (error) {
57
+ try {
58
+ firstFrame?.[Symbol.dispose]?.();
59
+ }
60
+ catch {
61
+ // ignore
62
+ }
63
+ try {
64
+ decoder?.[Symbol.dispose]();
65
+ }
66
+ catch {
67
+ // ignore
68
+ }
69
+ try {
70
+ await demuxer[Symbol.asyncDispose]();
71
+ }
72
+ catch {
73
+ // ignore
74
+ }
75
+ throw error;
76
+ }
77
+ }
78
+ async [Symbol.asyncDispose]() {
79
+ if (this.disposed)
80
+ return;
81
+ this.disposed = true;
82
+ try {
83
+ this.frame[Symbol.dispose]?.();
84
+ }
85
+ catch {
86
+ // ignore
87
+ }
88
+ if (this.decoder) {
89
+ try {
90
+ this.decoder[Symbol.dispose]();
91
+ }
92
+ catch {
93
+ // ignore
94
+ }
95
+ }
96
+ if (this.demuxer) {
97
+ try {
98
+ await this.demuxer[Symbol.asyncDispose]();
99
+ }
100
+ catch {
101
+ // ignore
102
+ }
103
+ }
104
+ }
105
+ }
106
+ //# sourceMappingURL=frame-handle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frame-handle.js","sourceRoot":"","sources":["../../../../../../src/camera/decoder/sources/frame-handle.ts"],"names":[],"mappings":"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"}
@@ -1,27 +1,14 @@
1
+ import { FrameHandle } from './frame-handle.js';
1
2
  import type { Logger } from '@camera.ui/common/logger';
2
3
  import type { FrameWorkerDecoderSettings } from '@camera.ui/sdk';
3
4
  import type { HardwareContext } from 'node-av/api';
4
- import type { Frame } from 'node-av/lib';
5
5
  import type { AnalysisSource, FrameSnap } from './analysis-source.js';
6
+ import type { SnapshotConfig } from './snapshot-fetcher.js';
7
+ export { FrameHandle };
6
8
  export type { FrameSnap };
7
- export interface FrameSourceConfig {
9
+ export interface FrameSourceConfig extends SnapshotConfig {
8
10
  streamUrl: string;
9
- snapshotUrl: string;
10
11
  decoder?: FrameWorkerDecoderSettings;
11
- snapshotTimeoutMs?: number;
12
- snapshotProvider?: () => Promise<Buffer | null>;
13
- }
14
- export declare class FrameHandle implements AsyncDisposable {
15
- readonly frame: Frame;
16
- private readonly demuxer?;
17
- private readonly decoder?;
18
- private disposed;
19
- private constructor();
20
- static fromClonedFrame(frame: Frame): FrameHandle;
21
- static fromUrl(url: string, timeoutMs: number): Promise<FrameHandle>;
22
- static fromBuffer(data: Buffer): Promise<FrameHandle>;
23
- private static decodeFirstFrame;
24
- [Symbol.asyncDispose](): Promise<void>;
25
12
  }
26
13
  export declare class FrameSource implements AnalysisSource {
27
14
  private readonly config;
@@ -30,30 +17,42 @@ export declare class FrameSource implements AnalysisSource {
30
17
  private decoder?;
31
18
  private filter?;
32
19
  private _hardwareContext?;
33
- private _isStreaming;
20
+ private connected;
34
21
  private _resolvedFps?;
35
22
  private shouldRun;
23
+ private _generation;
36
24
  private latest?;
25
+ private latestAt;
37
26
  private nextId;
38
27
  private waiter?;
39
28
  private ended;
40
29
  private producerPromise?;
41
30
  private producerError?;
42
31
  private startCount;
43
- private inflightFetch?;
44
- private static readonly FETCH_DEFAULT_TIMEOUT_MS;
45
- private static readonly COALESCING_WINDOW_MS;
32
+ private decodeMs;
33
+ private decodedFrames;
34
+ private readonly reconnect;
35
+ private readonly snapshots;
46
36
  constructor(config: FrameSourceConfig, logger: Logger);
47
37
  get hardwareContext(): HardwareContext | null;
48
- get isStreaming(): boolean;
38
+ get isRunning(): boolean;
39
+ get generation(): number;
49
40
  get fps(): number;
50
41
  get lastError(): Error | undefined;
51
42
  start(): Promise<void>;
43
+ detach(): Promise<void>;
52
44
  stop(): Promise<void>;
53
45
  nextFrame(lastId: number): Promise<FrameSnap | undefined>;
54
- peekLatestFrame(): FrameHandle | null;
55
- fetchSnapshotFrame(): Promise<FrameHandle | null>;
56
- private fetchSnapshotHandle;
46
+ getFrame(maxAgeMs: number): Promise<FrameHandle | null>;
57
47
  private wakeWaiter;
58
- private runProducer;
48
+ private runCycle;
49
+ private connect;
50
+ private consume;
51
+ takeDecodeStats(): {
52
+ ms: number;
53
+ frames: number;
54
+ };
55
+ private applyFilter;
56
+ private dropLatest;
57
+ private teardown;
59
58
  }