@camera.ui/server 0.0.13 → 0.0.14-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (196) hide show
  1. package/dist/interface/@tanstack.Bg7V9Ueh.0.0.14-alpha.0.js +1 -0
  2. package/dist/interface/{@vee-validate.CMWfUAIL.0.0.13.js → @vee-validate.O1z48GCG.0.0.14-alpha.0.js} +1 -1
  3. package/dist/interface/@vueform.CYGN2w2O.0.0.14-alpha.0.js +1 -0
  4. package/dist/interface/@vueuse.B4DPFK5R.0.0.14-alpha.0.js +1 -0
  5. package/dist/interface/Account.Bi6LjnZQ.0.0.14-alpha.0.js +1 -0
  6. package/dist/interface/Adminpanel.CwrvFV7_.0.0.14-alpha.0.js +2 -0
  7. package/dist/interface/Appearance.CLnKafNI.0.0.14-alpha.0.js +1 -0
  8. package/dist/interface/Backup.DN7C3wLt.0.0.14-alpha.0.js +1 -0
  9. package/dist/interface/Camera.DecaqIKn.0.0.14-alpha.0.js +1 -0
  10. package/dist/interface/Cameras.CgsN9iQS.0.0.14-alpha.0.js +1 -0
  11. package/dist/interface/Camview.rmFoLioe.0.0.14-alpha.0.js +1 -0
  12. package/dist/interface/Config.CKdcFXVp.0.0.14-alpha.0.js +1 -0
  13. package/dist/interface/Console.Ug2VRfrB.0.0.14-alpha.0.js +4 -0
  14. package/dist/interface/FirstSteps.BPMYdNNi.0.0.14-alpha.0.js +1 -0
  15. package/dist/interface/{NewCamera.D3fS-Ayi.0.0.13.js → NewCamera.D8ZRT068.0.0.14-alpha.0.js} +1 -1
  16. package/dist/interface/Plugin.BUr1JsZx.0.0.14-alpha.0.js +1 -0
  17. package/dist/interface/Plugins.T0gOGGTA.0.0.14-alpha.0.js +1 -0
  18. package/dist/interface/Recordings.D-8l4wT0.0.0.14-alpha.0.js +1 -0
  19. package/dist/interface/Recordings.GBJZK78_.0.0.14-alpha.0.js +1 -0
  20. package/dist/interface/Settings.D5AZooIJ.0.0.14-alpha.0.js +1 -0
  21. package/dist/interface/System.o0UHQ_nJ.0.0.14-alpha.0.js +4 -0
  22. package/dist/interface/User.Ba8eEPMI.0.0.14-alpha.0.js +1 -0
  23. package/dist/interface/VConfigEditor.vue_vue_type_script_setup_true_lang.CcHeTCv1.0.0.14-alpha.0.js +2 -0
  24. package/dist/interface/VConsole.fWERDAX7.0.0.14-alpha.0.js +1 -0
  25. package/dist/interface/VPlayer.yFMPlYwP.0.0.14-alpha.0.js +1 -0
  26. package/dist/interface/{VPluginCard.rN1DHn_c.0.0.13.js → VPluginCard.DkmwhDlC.0.0.14-alpha.0.js} +1 -1
  27. package/dist/interface/{ace-builds.DW_mO3FQ.0.0.13.js → ace-builds.Bw4aEC1l.0.0.14-alpha.0.js} +1 -1
  28. package/dist/interface/dnd-core.DXWYMBq_.0.0.14-alpha.0.js +1 -0
  29. package/dist/interface/{draggabilly.9bsDBvd2.0.0.13.js → draggabilly.CuBxPquf.0.0.14-alpha.0.js} +1 -1
  30. package/dist/interface/engine.io-client.BKWHIsv0.0.0.14-alpha.0.js +1 -0
  31. package/dist/interface/ev-emitter.Bxc0PZ7a.0.0.14-alpha.0.js +1 -0
  32. package/dist/interface/fast-deep-equal.DCYmWVJH.0.0.14-alpha.0.js +1 -0
  33. package/dist/interface/{highlight.js.DhQG6_ss.0.0.13.js → highlight.js.DcTAsvG9.0.0.14-alpha.0.js} +1 -1
  34. package/dist/interface/index.html +33 -33
  35. package/dist/interface/linkify-it.CDr-VnGD.0.0.14-alpha.0.js +1 -0
  36. package/dist/interface/main.0OAUVwby.0.0.14-alpha.0.js +9 -0
  37. package/dist/interface/{markdown-it.CYBQYH34.0.0.13.js → markdown-it.Byo8AqRb.0.0.14-alpha.0.js} +1 -1
  38. package/dist/interface/{nprogress.BFdCzr-7.0.0.13.js → nprogress.DCNHuz_8.0.0.14-alpha.0.js} +1 -1
  39. package/dist/interface/{pinia.Bga1JTi8.0.0.13.js → pinia.CD1qWkhY.0.0.14-alpha.0.js} +1 -1
  40. package/dist/interface/plugins.TOSDTC9P.0.0.14-alpha.0.js +1 -0
  41. package/dist/interface/pwa/pwa-120x120.png +0 -0
  42. package/dist/interface/pwa/pwa-144x144.png +0 -0
  43. package/dist/interface/pwa/pwa-152x152.png +0 -0
  44. package/dist/interface/pwa/pwa-167x167.png +0 -0
  45. package/dist/interface/pwa/pwa-192x192.png +0 -0
  46. package/dist/interface/pwa/pwa-24x24.png +0 -0
  47. package/dist/interface/pwa/pwa-36x36.png +0 -0
  48. package/dist/interface/pwa/pwa-48x48.png +0 -0
  49. package/dist/interface/pwa/pwa-50x50.png +0 -0
  50. package/dist/interface/pwa/pwa-64x64.png +0 -0
  51. package/dist/interface/pwa/pwa-72x72.png +0 -0
  52. package/dist/interface/pwa/pwa-88x88.png +0 -0
  53. package/dist/interface/pwa/pwa-96x96.png +0 -0
  54. package/dist/interface/{qrcode.BcRvH17-.0.0.13.js → qrcode.CLpIqVUc.0.0.14-alpha.0.js} +1 -1
  55. package/dist/interface/react-dnd-touch-backend.EtdwZ3Jc.0.0.14-alpha.0.js +1 -0
  56. package/dist/interface/{rxjs.CmasQk-X.0.0.13.js → rxjs.Dg5Y9OHz.0.0.14-alpha.0.js} +1 -1
  57. package/dist/interface/socket.io-client.BdwjwB2E.0.0.14-alpha.0.js +1 -0
  58. package/dist/interface/socket.io-parser.BI2UU9la.0.0.14-alpha.0.js +1 -0
  59. package/dist/interface/sw.js +1 -1
  60. package/dist/interface/system.DrON0Fys.0.0.14-alpha.0.js +1 -0
  61. package/dist/interface/ui.DW844Nw8.0.0.14-alpha.0.js +1 -0
  62. package/dist/interface/{unidragger.DdVxANhH.0.0.13.js → unidragger.oH1IlhPP.0.0.14-alpha.0.js} +1 -1
  63. package/dist/interface/v-calendar.w8TD0lm-.0.0.14-alpha.0.js +1 -0
  64. package/dist/interface/{vee-validate.D2wCUJfh.0.0.13.js → vee-validate.D18szerY.0.0.14-alpha.0.js} +1 -1
  65. package/dist/interface/{vue-i18n.DryJT-yG.0.0.13.js → vue-i18n.Dp4sqTxy.0.0.14-alpha.0.js} +1 -1
  66. package/dist/interface/vue-inline-svg.DYHwaGKL.0.0.14-alpha.0.js +1 -0
  67. package/dist/interface/{vue-router.DqihDWFz.0.0.13.js → vue-router.B9o2De_x.0.0.14-alpha.0.js} +1 -1
  68. package/dist/interface/{vue3-apexcharts.BHMHoOx8.0.0.13.js → vue3-apexcharts.CW4XSzag.0.0.14-alpha.0.js} +1 -1
  69. package/dist/interface/vue3-dnd.B9c6Zx0c.0.0.14-alpha.0.js +1 -0
  70. package/dist/interface/vue3-toastify.BkUxK5j6.0.0.14-alpha.0.js +1 -0
  71. package/dist/interface/{vuetify.BenoxTsr.0.0.13.js → vuetify.CQ44CcyG.0.0.14-alpha.0.js} +1 -1
  72. package/dist/server/bin/installer/linux.js +1 -1
  73. package/dist/server/bin/installer/linux.js.map +1 -1
  74. package/dist/server/package.json +5 -4
  75. package/dist/server/src/api/controllers/system.controller.d.ts +4 -1
  76. package/dist/server/src/api/controllers/system.controller.js +33 -0
  77. package/dist/server/src/api/controllers/system.controller.js.map +1 -1
  78. package/dist/server/src/api/database/index.d.ts +3 -1
  79. package/dist/server/src/api/database/index.js +12 -0
  80. package/dist/server/src/api/database/index.js.map +1 -1
  81. package/dist/server/src/api/database/types.d.ts +7 -0
  82. package/dist/server/src/api/index.js +1 -1
  83. package/dist/server/src/api/index.js.map +1 -1
  84. package/dist/server/src/api/routes/system.routes.js +16 -0
  85. package/dist/server/src/api/routes/system.routes.js.map +1 -1
  86. package/dist/server/src/api/schemas/system.schema.d.ts +9 -0
  87. package/dist/server/src/api/schemas/system.schema.js +8 -0
  88. package/dist/server/src/api/schemas/system.schema.js.map +1 -0
  89. package/dist/server/src/api/schemas/users.schema.d.ts +34 -34
  90. package/dist/server/src/api/services/system.service.d.ts +7 -0
  91. package/dist/server/src/api/services/system.service.js +22 -0
  92. package/dist/server/src/api/services/system.service.js.map +1 -0
  93. package/dist/server/src/api/types/index.d.ts +4 -0
  94. package/dist/server/src/api/types/index.js.map +1 -1
  95. package/dist/server/src/go2rtc/index.js +1 -0
  96. package/dist/server/src/go2rtc/index.js.map +1 -1
  97. package/dist/server/src/utils/network.d.ts +12 -0
  98. package/dist/server/src/utils/network.js +92 -0
  99. package/dist/server/src/utils/network.js.map +1 -0
  100. package/dist/server/src/utils/npm.js +7 -2
  101. package/dist/server/src/utils/npm.js.map +1 -1
  102. package/install/lmdb.js +81 -0
  103. package/package.json +5 -4
  104. package/dist/interface/@tanstack.rNNqDXib.0.0.13.js +0 -1
  105. package/dist/interface/@vueform.CaTOdvWk.0.0.13.js +0 -1
  106. package/dist/interface/@vueuse.RXnPbHnz.0.0.13.js +0 -1
  107. package/dist/interface/Account.BqE7RvC3.0.0.13.js +0 -1
  108. package/dist/interface/Adminpanel.hllL_vUx.0.0.13.js +0 -2
  109. package/dist/interface/Appearance.BvWFogEk.0.0.13.js +0 -1
  110. package/dist/interface/Backup.DS1_0koP.0.0.13.js +0 -1
  111. package/dist/interface/Camera.CDpzE3tI.0.0.13.js +0 -1
  112. package/dist/interface/Cameras.ImtUGnay.0.0.13.js +0 -1
  113. package/dist/interface/Camview.CIDDigUd.0.0.13.js +0 -1
  114. package/dist/interface/Config.Dx7qqjix.0.0.13.js +0 -1
  115. package/dist/interface/Console.IkajRlkS.0.0.13.js +0 -4
  116. package/dist/interface/FirstSteps.gB36CAPV.0.0.13.js +0 -1
  117. package/dist/interface/Plugin.Dmdq7eg2.0.0.13.js +0 -1
  118. package/dist/interface/Plugins.BlsT_Ctm.0.0.13.js +0 -1
  119. package/dist/interface/Recordings.NJkfLyST.0.0.13.js +0 -1
  120. package/dist/interface/Recordings.d-XiMIJY.0.0.13.js +0 -1
  121. package/dist/interface/Settings.CtjsmS-K.0.0.13.js +0 -1
  122. package/dist/interface/System.CKjKL2-m.0.0.13.js +0 -4
  123. package/dist/interface/User.B7z96rxB.0.0.13.js +0 -1
  124. package/dist/interface/VConfigEditor.vue_vue_type_script_setup_true_lang.KV9Arktd.0.0.13.js +0 -2
  125. package/dist/interface/VConsole.B_ucNfW8.0.0.13.js +0 -1
  126. package/dist/interface/VPlayer.DLxaA6uJ.0.0.13.js +0 -1
  127. package/dist/interface/dnd-core.gediqdsP.0.0.13.js +0 -1
  128. package/dist/interface/engine.io-client.jWnV_OQN.0.0.13.js +0 -1
  129. package/dist/interface/ev-emitter.BnUBws8R.0.0.13.js +0 -1
  130. package/dist/interface/fast-deep-equal.ChQuHYG8.0.0.13.js +0 -1
  131. package/dist/interface/linkify-it.CGqg1utY.0.0.13.js +0 -1
  132. package/dist/interface/main.D-udRFe6.0.0.13.js +0 -9
  133. package/dist/interface/plugins.GodGbcuD.0.0.13.js +0 -1
  134. package/dist/interface/react-dnd-touch-backend.Ch5f5vRm.0.0.13.js +0 -1
  135. package/dist/interface/socket.io-client.C_MSFRzn.0.0.13.js +0 -1
  136. package/dist/interface/socket.io-parser.DoUhVOYo.0.0.13.js +0 -1
  137. package/dist/interface/system.CJsZbAvb.0.0.13.js +0 -1
  138. package/dist/interface/ui.Bnc_R-SN.0.0.13.js +0 -1
  139. package/dist/interface/v-calendar.CxnDxlOi.0.0.13.js +0 -1
  140. package/dist/interface/vue-inline-svg.va799EvK.0.0.13.js +0 -1
  141. package/dist/interface/vue3-dnd.ZjtawZir.0.0.13.js +0 -1
  142. package/dist/interface/vue3-toastify.CudLrsQ6.0.0.13.js +0 -1
  143. package/dist/server/src/polyglot/node/decoder/wasm/test/imageUtils.py +0 -106
  144. /package/dist/interface/{@babel.l0sNRNKZ.0.0.13.js → @babel.l0sNRNKZ.0.0.14-alpha.0.js} +0 -0
  145. /package/dist/interface/{@intlify.YW_pt133.0.0.13.js → @intlify.YW_pt133.0.0.14-alpha.0.js} +0 -0
  146. /package/dist/interface/{@mdi.jq8isxax.0.0.13.js → @mdi.jq8isxax.0.0.14-alpha.0.js} +0 -0
  147. /package/dist/interface/{@popperjs.BQBsAJpH.0.0.13.js → @popperjs.BQBsAJpH.0.0.14-alpha.0.js} +0 -0
  148. /package/dist/interface/{@react-dnd.CcwRs9xb.0.0.13.js → @react-dnd.CcwRs9xb.0.0.14-alpha.0.js} +0 -0
  149. /package/dist/interface/{@socket.io.Dkula2eQ.0.0.13.js → @socket.io.Dkula2eQ.0.0.14-alpha.0.js} +0 -0
  150. /package/dist/interface/{@vue.CIFymae3.0.0.13.js → @vue.CIFymae3.0.0.14-alpha.0.js} +0 -0
  151. /package/dist/interface/{@xterm.hsdrI-pt.0.0.13.js → @xterm.CwunTQvf.0.0.14-alpha.0.js} +0 -0
  152. /package/dist/interface/assets/{@vueform.0.0.13.h7tNX9p6.css → @vueform.0.0.14-alpha.0.h7tNX9p6.css} +0 -0
  153. /package/dist/interface/assets/{@xterm.0.0.13.CGrrDQr5.css → @xterm.0.0.14-alpha.0.CGrrDQr5.css} +0 -0
  154. /package/dist/interface/assets/{Account.0.0.13.DlOUWknb.css → Account.0.0.14-alpha.0.DlOUWknb.css} +0 -0
  155. /package/dist/interface/assets/{Adminpanel.0.0.13.BHh3IMeu.css → Adminpanel.0.0.14-alpha.0.BHh3IMeu.css} +0 -0
  156. /package/dist/interface/assets/{Backup.0.0.13.BIwaSlv3.css → Backup.0.0.14-alpha.0.BIwaSlv3.css} +0 -0
  157. /package/dist/interface/assets/{Camera.0.0.13.B5hAZmeQ.css → Camera.0.0.14-alpha.0.B5hAZmeQ.css} +0 -0
  158. /package/dist/interface/assets/{Cameras.0.0.13.D7bnvH42.css → Cameras.0.0.14-alpha.0.D7bnvH42.css} +0 -0
  159. /package/dist/interface/assets/{Camview.0.0.13.cgjDTjXy.css → Camview.0.0.14-alpha.0.cgjDTjXy.css} +0 -0
  160. /package/dist/interface/assets/{Config.0.0.13.CncRTcjC.css → Config.0.0.14-alpha.0.CncRTcjC.css} +0 -0
  161. /package/dist/interface/assets/{Console.0.0.13.DWrfRWs9.css → Console.0.0.14-alpha.0.DWrfRWs9.css} +0 -0
  162. /package/dist/interface/assets/{FirstSteps.0.0.13.LZWhAsRR.css → FirstSteps.0.0.14-alpha.0.LZWhAsRR.css} +0 -0
  163. /package/dist/interface/assets/{NewCamera.0.0.13.DJ3tUBT_.css → NewCamera.0.0.14-alpha.0.DJ3tUBT_.css} +0 -0
  164. /package/dist/interface/assets/{Plugin.0.0.13.BGZE7hpr.css → Plugin.0.0.14-alpha.0.BGZE7hpr.css} +0 -0
  165. /package/dist/interface/assets/{Plugins.0.0.13.Cwu0aGUO.css → Plugins.0.0.14-alpha.0.Cwu0aGUO.css} +0 -0
  166. /package/dist/interface/assets/{Settings.0.0.13.BfSP_zcY.css → Settings.0.0.14-alpha.0.BfSP_zcY.css} +0 -0
  167. /package/dist/interface/assets/{User.0.0.13.BHWFyck9.css → User.0.0.14-alpha.0.BHWFyck9.css} +0 -0
  168. /package/dist/interface/assets/{VConsole.0.0.13.BZT1WyS-.css → VConsole.0.0.14-alpha.0.BZT1WyS-.css} +0 -0
  169. /package/dist/interface/assets/{VPlayer.0.0.13.H4sGdlHU.css → VPlayer.0.0.14-alpha.0.H4sGdlHU.css} +0 -0
  170. /package/dist/interface/assets/{VPluginCard.0.0.13.B4G51MYn.css → VPluginCard.0.0.14-alpha.0.B4G51MYn.css} +0 -0
  171. /package/dist/interface/assets/{highlight.0.0.13.DgoK_Xib.css → highlight.0.0.14-alpha.0.DgoK_Xib.css} +0 -0
  172. /package/dist/interface/assets/{logo-256.0.0.13.BCQk9H1-.png → logo-256.0.0.14-alpha.0.BCQk9H1-.png} +0 -0
  173. /package/dist/interface/assets/{logo-512.0.0.13.DLKVOU2S.png → logo-512.0.0.14-alpha.0.DLKVOU2S.png} +0 -0
  174. /package/dist/interface/assets/{logo.0.0.13.DmEiRk0z.png → logo.0.0.14-alpha.0.DmEiRk0z.png} +0 -0
  175. /package/dist/interface/assets/{main.0.0.13.BPl82sqN.css → main.0.0.14-alpha.0.BPl82sqN.css} +0 -0
  176. /package/dist/interface/assets/{mode-json.0.0.13.Br7xisR1.js → mode-json.0.0.14-alpha.0.Br7xisR1.js} +0 -0
  177. /package/dist/interface/assets/{mode-yaml.0.0.13.CIYL8U3d.js → mode-yaml.0.0.14-alpha.0.CIYL8U3d.js} +0 -0
  178. /package/dist/interface/assets/{v-calendar.0.0.13.CtSuDYZU.css → v-calendar.0.0.14-alpha.0.CtSuDYZU.css} +0 -0
  179. /package/dist/interface/assets/{vue3-toastify.0.0.13.DTY1DMRs.css → vue3-toastify.0.0.14-alpha.0.DTY1DMRs.css} +0 -0
  180. /package/dist/interface/assets/{vuetify.0.0.13.DPyVfAPv.css → vuetify.0.0.14-alpha.0.DPyVfAPv.css} +0 -0
  181. /package/dist/interface/{axios.BI2i94Vb.0.0.13.js → axios.BI2i94Vb.0.0.14-alpha.0.js} +0 -0
  182. /package/dist/interface/{compare-versions.DqEOhma6.0.0.13.js → compare-versions.DqEOhma6.0.0.14-alpha.0.js} +0 -0
  183. /package/dist/interface/{dijkstrajs.D_NXgYpA.0.0.13.js → dijkstrajs.D_NXgYpA.0.0.14-alpha.0.js} +0 -0
  184. /package/dist/interface/{engine.io-parser.BiEtp6m2.0.0.13.js → engine.io-parser.BiEtp6m2.0.0.14-alpha.0.js} +0 -0
  185. /package/dist/interface/{entities.C20TfXL6.0.0.13.js → entities.C20TfXL6.0.0.14-alpha.0.js} +0 -0
  186. /package/dist/interface/{get-size.D1dS-IaP.0.0.13.js → get-size.D1dS-IaP.0.0.14-alpha.0.js} +0 -0
  187. /package/dist/interface/{mdurl.k9Sl0PQj.0.0.13.js → mdurl.k9Sl0PQj.0.0.14-alpha.0.js} +0 -0
  188. /package/dist/interface/{punycode.js.Dj65hjkv.0.0.13.js → punycode.js.Dj65hjkv.0.0.14-alpha.0.js} +0 -0
  189. /package/dist/interface/{react-dnd-html5-backend.1HQjlkwI.0.0.13.js → react-dnd-html5-backend.1HQjlkwI.0.0.14-alpha.0.js} +0 -0
  190. /package/dist/interface/{redux.CuxFRhX_.0.0.13.js → redux.CuxFRhX_.0.0.14-alpha.0.js} +0 -0
  191. /package/dist/interface/{tslib.9k7AwCpt.0.0.13.js → tslib.9k7AwCpt.0.0.14-alpha.0.js} +0 -0
  192. /package/dist/interface/{uc.micro.kMc2yuuw.0.0.13.js → uc.micro.kMc2yuuw.0.0.14-alpha.0.js} +0 -0
  193. /package/dist/interface/{utils.BvINh1mj.0.0.13.js → utils.BvINh1mj.0.0.14-alpha.0.js} +0 -0
  194. /package/dist/interface/{uuid.DvF23Exx.0.0.13.js → uuid.DvF23Exx.0.0.14-alpha.0.js} +0 -0
  195. /package/dist/interface/{vue.l0sNRNKZ.0.0.13.js → vue.l0sNRNKZ.0.0.14-alpha.0.js} +0 -0
  196. /package/dist/interface/{zod.BaF2dDCd.0.0.13.js → zod.BaF2dDCd.0.0.14-alpha.0.js} +0 -0
@@ -1,106 +0,0 @@
1
- import asyncio
2
- import time
3
- from typing import Any, Literal
4
-
5
- import numpy as np
6
- from PIL import Image
7
-
8
- width = 640
9
- height = 360
10
-
11
-
12
- def yuv420_to_rgb(yuv_bytes: bytes, width: int, height: int) -> np.ndarray[Any, Any]:
13
- frame_size = width * height
14
- uv_size = frame_size // 4
15
-
16
- raw_data = np.frombuffer(yuv_bytes, dtype=np.uint8)
17
-
18
- y = raw_data[:frame_size].reshape((height, width)).astype(np.float32) - 16.0
19
- u = (
20
- raw_data[frame_size : frame_size + uv_size].reshape((height // 2, width // 2)).astype(np.float32)
21
- - 128.0
22
- )
23
- v = raw_data[frame_size + uv_size :].reshape((height // 2, width // 2)).astype(np.float32) - 128.0
24
-
25
- # Upsample U and V to match Y dimensions in one step
26
- u = u.repeat(2, axis=0).repeat(2, axis=1)
27
- v = v.repeat(2, axis=0).repeat(2, axis=1)
28
-
29
- # Perform YUV to RGB conversion
30
- r = y + 1.402 * v
31
- g = y - 0.344136 * u - 0.714136 * v
32
- b = y + 1.772 * u
33
-
34
- # return np.clip(np.stack((r, g, b), axis=-1), 0, 255).astype(np.uint8)
35
- rgb = np.stack((r, g, b), axis=-1)
36
- return np.clip(rgb, 0, 255).astype(np.uint8)
37
-
38
-
39
- def yuv420_to_rgba(yuv_bytes: bytes, width: int, height: int) -> np.ndarray[Any, Any]:
40
- rgb = yuv420_to_rgb(yuv_bytes, width, height)
41
- alpha = np.full((height, width, 1), 255, dtype=np.uint8) # Alpha direkt als uint8
42
- rgba = np.concatenate((rgb, alpha), axis=-1)
43
- return rgba
44
-
45
-
46
- def yuv420_to_gray(yuv_bytes: bytes, width: int, height: int) -> np.ndarray[Any, Any]:
47
- frame_size = width * height
48
- raw_data = np.frombuffer(yuv_bytes, dtype=np.uint8)
49
- return raw_data[:frame_size].reshape((height, width)).astype(np.uint8)
50
-
51
-
52
- def read_yuv_file():
53
- with open("frame.yuv", "rb") as f:
54
- return f.read()
55
-
56
-
57
- def main(format: Literal["rgb", "rgba", "gray"]):
58
- yuv_bytes = read_yuv_file()
59
-
60
- if format == "rgb":
61
- rgb = yuv420_to_rgb(yuv_bytes, width, height)
62
- rgb_image = Image.fromarray(rgb)
63
- rgb_image.save("frame_rgb.jpg")
64
- elif format == "rgba":
65
- rgba = yuv420_to_rgba(yuv_bytes, width, height)
66
- rgba_image = Image.fromarray(rgba)
67
- rgba_image.save("frame_rgba.png")
68
- elif format == "gray":
69
- gray = yuv420_to_gray(yuv_bytes, width, height)
70
- gray_image = Image.fromarray(gray)
71
- gray_image.save("frame_gray.jpg")
72
-
73
-
74
- async def benchmark(format: Literal["rgb", "rgba", "gray"]):
75
- yuv_bytes = read_yuv_file()
76
-
77
- fps = 10
78
- total_frames = 3000
79
- average_latency_in_ms = 6
80
- frame_duration = 1.0 / fps
81
- current_frame = 0
82
-
83
- start = time.time()
84
-
85
- while current_frame < total_frames:
86
- if format == "rgb":
87
- rgb = yuv420_to_rgb(yuv_bytes, width, height)
88
- Image.fromarray(rgb)
89
- elif format == "rgba":
90
- rgba = yuv420_to_rgba(yuv_bytes, width, height)
91
- Image.fromarray(rgba)
92
- elif format == "gray":
93
- gray = yuv420_to_gray(yuv_bytes, width, height)
94
- Image.fromarray(gray)
95
-
96
- current_frame += 1
97
- await asyncio.sleep(frame_duration + average_latency_in_ms / 1000.0)
98
-
99
- end = time.time()
100
- print("Simulation completed! Total duration:", (end - start) * 1000, "ms")
101
-
102
-
103
- format: Literal["rgb", "rgba", "gray"] = "gray"
104
-
105
- main(format)
106
- asyncio.run(benchmark(format))