@camera.ui/server 0.0.12 → 0.0.13-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 (57) hide show
  1. package/dist/interface/assets/{Account-BOKU0EJX.js → Account-ztef-k66.js} +1 -1
  2. package/dist/interface/assets/{Adminpanel-YAFzNmEU.js → Adminpanel-BEcJey3P.js} +1 -1
  3. package/dist/interface/assets/{Appearance-Duun7epF.js → Appearance-CsfsWFip.js} +1 -1
  4. package/dist/interface/assets/{Backup-txkWCOnL.js → Backup-BwyitGhD.js} +1 -1
  5. package/dist/interface/assets/{Camera-DgfG8iRv.js → Camera-C3krHJdP.js} +1 -1
  6. package/dist/interface/assets/{Cameras-C2tAxpUZ.js → Cameras-B3CGK5bP.js} +1 -1
  7. package/dist/interface/assets/{Camview-pb3aChcM.js → Camview-DYA9NpZ3.js} +1 -1
  8. package/dist/interface/assets/{Config-DtsKZdLg.js → Config-C4Yj-UzO.js} +1 -1
  9. package/dist/interface/assets/{Console-CA8nMvU5.js → Console-CqFPXqb4.js} +1 -1
  10. package/dist/interface/assets/{FirstSteps-DeX4Bemm.js → FirstSteps-DZRXrwSw.js} +1 -1
  11. package/dist/interface/assets/{NewCamera-DwielMXk.js → NewCamera-8rlzf_6H.js} +19 -19
  12. package/dist/interface/assets/NewCamera-XducYkxQ.css +1 -0
  13. package/dist/interface/assets/{Plugin-Dop0LJtA.js → Plugin-mw4kghIK.js} +1 -1
  14. package/dist/interface/assets/{Plugins-BGXIm0xp.js → Plugins-roT2R7G-.js} +1 -1
  15. package/dist/interface/assets/{Recordings-DOih4uT0.js → Recordings-C8o1REyq.js} +1 -1
  16. package/dist/interface/assets/{Recordings-C8UOLPGO.js → Recordings-Cb66bgzd.js} +1 -1
  17. package/dist/interface/assets/{Settings-gA-avLCG.js → Settings-CIMHAESW.js} +1 -1
  18. package/dist/interface/assets/{System-qzadLbQp.js → System-D9FiXyM6.js} +1 -1
  19. package/dist/interface/assets/{User-CeCpRCio.js → User-D97-Rs68.js} +1 -1
  20. package/dist/interface/assets/{VConfigEditor.vue_vue_type_script_setup_true_lang-DdIvFMZw.js → VConfigEditor.vue_vue_type_script_setup_true_lang-DE77uadd.js} +1 -1
  21. package/dist/interface/assets/{VConsole-DV0DbWWq.js → VConsole-Bf-WItOk.js} +1 -1
  22. package/dist/interface/assets/VPlayer-CjBoAE42.js +1 -0
  23. package/dist/interface/assets/{VPluginCard-BycEbaTg.js → VPluginCard-23hHloPd.js} +1 -1
  24. package/dist/interface/assets/{axios--Jv2L996.js → axios-BI2i94Vb.js} +1 -1
  25. package/dist/interface/assets/{main-BzgITsk2.js → main-CltTNKYj.js} +3 -3
  26. package/dist/interface/assets/{plugins-C8sTJ5vl.js → plugins-BvEiuWHs.js} +1 -1
  27. package/dist/interface/assets/{system-BrsCyD1M.js → system-4fS8k88J.js} +1 -1
  28. package/dist/interface/index.html +2 -2
  29. package/dist/interface/pwa/pwa-120x120.png +0 -0
  30. package/dist/interface/pwa/pwa-144x144.png +0 -0
  31. package/dist/interface/pwa/pwa-152x152.png +0 -0
  32. package/dist/interface/pwa/pwa-167x167.png +0 -0
  33. package/dist/interface/pwa/pwa-192x192.png +0 -0
  34. package/dist/interface/pwa/pwa-24x24.png +0 -0
  35. package/dist/interface/pwa/pwa-36x36.png +0 -0
  36. package/dist/interface/pwa/pwa-48x48.png +0 -0
  37. package/dist/interface/pwa/pwa-50x50.png +0 -0
  38. package/dist/interface/pwa/pwa-64x64.png +0 -0
  39. package/dist/interface/pwa/pwa-72x72.png +0 -0
  40. package/dist/interface/pwa/pwa-88x88.png +0 -0
  41. package/dist/interface/pwa/pwa-96x96.png +0 -0
  42. package/dist/interface/sw.js +1 -1
  43. package/dist/server/package.json +1 -1
  44. package/dist/server/src/api/controllers/plugins.controller.js +2 -5
  45. package/dist/server/src/api/controllers/plugins.controller.js.map +1 -1
  46. package/dist/server/src/plugins/worker.js +2 -4
  47. package/dist/server/src/plugins/worker.js.map +1 -1
  48. package/dist/server/src/polyglot/python/plugins/plugin_api.py +0 -2
  49. package/dist/server/src/services/logger/index.d.ts +3 -9
  50. package/dist/server/src/services/logger/index.js +3 -21
  51. package/dist/server/src/services/logger/index.js.map +1 -1
  52. package/dist/server/src/utils/pythonInstaller.js +5 -6
  53. package/dist/server/src/utils/pythonInstaller.js.map +1 -1
  54. package/package.json +1 -1
  55. package/dist/interface/assets/NewCamera-CHMgUDbC.css +0 -1
  56. package/dist/interface/assets/VPlayer-CZ-w1hne.js +0 -1
  57. package/dist/server/src/polyglot/node/decoder/wasm/test/imageUtils.py +0 -106
@@ -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))