@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.
- package/dist/interface/assets/{Account-BOKU0EJX.js → Account-ztef-k66.js} +1 -1
- package/dist/interface/assets/{Adminpanel-YAFzNmEU.js → Adminpanel-BEcJey3P.js} +1 -1
- package/dist/interface/assets/{Appearance-Duun7epF.js → Appearance-CsfsWFip.js} +1 -1
- package/dist/interface/assets/{Backup-txkWCOnL.js → Backup-BwyitGhD.js} +1 -1
- package/dist/interface/assets/{Camera-DgfG8iRv.js → Camera-C3krHJdP.js} +1 -1
- package/dist/interface/assets/{Cameras-C2tAxpUZ.js → Cameras-B3CGK5bP.js} +1 -1
- package/dist/interface/assets/{Camview-pb3aChcM.js → Camview-DYA9NpZ3.js} +1 -1
- package/dist/interface/assets/{Config-DtsKZdLg.js → Config-C4Yj-UzO.js} +1 -1
- package/dist/interface/assets/{Console-CA8nMvU5.js → Console-CqFPXqb4.js} +1 -1
- package/dist/interface/assets/{FirstSteps-DeX4Bemm.js → FirstSteps-DZRXrwSw.js} +1 -1
- package/dist/interface/assets/{NewCamera-DwielMXk.js → NewCamera-8rlzf_6H.js} +19 -19
- package/dist/interface/assets/NewCamera-XducYkxQ.css +1 -0
- package/dist/interface/assets/{Plugin-Dop0LJtA.js → Plugin-mw4kghIK.js} +1 -1
- package/dist/interface/assets/{Plugins-BGXIm0xp.js → Plugins-roT2R7G-.js} +1 -1
- package/dist/interface/assets/{Recordings-DOih4uT0.js → Recordings-C8o1REyq.js} +1 -1
- package/dist/interface/assets/{Recordings-C8UOLPGO.js → Recordings-Cb66bgzd.js} +1 -1
- package/dist/interface/assets/{Settings-gA-avLCG.js → Settings-CIMHAESW.js} +1 -1
- package/dist/interface/assets/{System-qzadLbQp.js → System-D9FiXyM6.js} +1 -1
- package/dist/interface/assets/{User-CeCpRCio.js → User-D97-Rs68.js} +1 -1
- 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
- package/dist/interface/assets/{VConsole-DV0DbWWq.js → VConsole-Bf-WItOk.js} +1 -1
- package/dist/interface/assets/VPlayer-CjBoAE42.js +1 -0
- package/dist/interface/assets/{VPluginCard-BycEbaTg.js → VPluginCard-23hHloPd.js} +1 -1
- package/dist/interface/assets/{axios--Jv2L996.js → axios-BI2i94Vb.js} +1 -1
- package/dist/interface/assets/{main-BzgITsk2.js → main-CltTNKYj.js} +3 -3
- package/dist/interface/assets/{plugins-C8sTJ5vl.js → plugins-BvEiuWHs.js} +1 -1
- package/dist/interface/assets/{system-BrsCyD1M.js → system-4fS8k88J.js} +1 -1
- package/dist/interface/index.html +2 -2
- package/dist/interface/pwa/pwa-120x120.png +0 -0
- package/dist/interface/pwa/pwa-144x144.png +0 -0
- package/dist/interface/pwa/pwa-152x152.png +0 -0
- package/dist/interface/pwa/pwa-167x167.png +0 -0
- package/dist/interface/pwa/pwa-192x192.png +0 -0
- package/dist/interface/pwa/pwa-24x24.png +0 -0
- package/dist/interface/pwa/pwa-36x36.png +0 -0
- package/dist/interface/pwa/pwa-48x48.png +0 -0
- package/dist/interface/pwa/pwa-50x50.png +0 -0
- package/dist/interface/pwa/pwa-64x64.png +0 -0
- package/dist/interface/pwa/pwa-72x72.png +0 -0
- package/dist/interface/pwa/pwa-88x88.png +0 -0
- package/dist/interface/pwa/pwa-96x96.png +0 -0
- package/dist/interface/sw.js +1 -1
- package/dist/server/package.json +1 -1
- package/dist/server/src/api/controllers/plugins.controller.js +2 -5
- package/dist/server/src/api/controllers/plugins.controller.js.map +1 -1
- package/dist/server/src/plugins/worker.js +2 -4
- package/dist/server/src/plugins/worker.js.map +1 -1
- package/dist/server/src/polyglot/python/plugins/plugin_api.py +0 -2
- package/dist/server/src/services/logger/index.d.ts +3 -9
- package/dist/server/src/services/logger/index.js +3 -21
- package/dist/server/src/services/logger/index.js.map +1 -1
- package/dist/server/src/utils/pythonInstaller.js +5 -6
- package/dist/server/src/utils/pythonInstaller.js.map +1 -1
- package/package.json +1 -1
- package/dist/interface/assets/NewCamera-CHMgUDbC.css +0 -1
- package/dist/interface/assets/VPlayer-CZ-w1hne.js +0 -1
- 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))
|