@camera.ui/server 0.0.12-alpha.1 → 0.0.12-alpha.3
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/@mdi-CmcijEFB.js +1 -0
- package/dist/interface/assets/{Account-J8XDeuej.js → Account-CWvLwuSI.js} +1 -1
- package/dist/interface/assets/{Adminpanel-ByYWJ4zG.js → Adminpanel-D1acAd4f.js} +1 -1
- package/dist/interface/assets/{Appearance-DmUOEvJN.js → Appearance-Bt86BtvT.js} +1 -1
- package/dist/interface/assets/{Backup-3SwIBdjp.js → Backup-BoCWS3SS.js} +1 -1
- package/dist/interface/assets/{Camera-BpYqQh2o.js → Camera-DGGyL9at.js} +1 -1
- package/dist/interface/assets/{Cameras-BEdfIDDg.js → Cameras-BT6tKbp5.js} +1 -1
- package/dist/interface/assets/{Camview-BANRuW4p.js → Camview-BIiqI_Yj.js} +1 -1
- package/dist/interface/assets/{Config-DAiKsG7W.css → Config-CfhTfiRn.css} +1 -1
- package/dist/interface/assets/Config-EHUrVnjH.js +1 -0
- package/dist/interface/assets/Console-CJPb2CoP.css +1 -0
- package/dist/interface/assets/Console-D7qigIrb.js +4 -0
- package/dist/interface/assets/{FirstSteps-CyxYpRVg.js → FirstSteps-BdNf60c3.js} +1 -1
- package/dist/interface/assets/{NewCamera-C6lmMbpW.js → NewCamera-DrIOe7GH.js} +1 -1
- package/dist/interface/assets/{Plugin-mKM3zBSm.js → Plugin-CZN7KLfw.js} +1 -1
- package/dist/interface/assets/{Plugins-B8gCgxOx.css → Plugins-DJCy47sz.css} +1 -1
- package/dist/interface/assets/Plugins-DePXhcTc.js +1 -0
- package/dist/interface/assets/{Recordings-Cbq5yO-V.js → Recordings-BsNa4nl1.js} +1 -1
- package/dist/interface/assets/{Recordings-J3fVl1Nf.js → Recordings-CBmeBTjC.js} +1 -1
- package/dist/interface/assets/{Settings-DbkqvnBI.js → Settings-HBKa6UiL.js} +1 -1
- package/dist/interface/assets/System-BeXkfJHe.js +4 -0
- package/dist/interface/assets/{User-qJyXwoHp.js → User-CA1u4oTs.js} +1 -1
- package/dist/interface/assets/{VConfigEditor.vue_vue_type_script_setup_true_lang-C2wWpZqH.js → VConfigEditor.vue_vue_type_script_setup_true_lang-DzQETeRW.js} +1 -1
- package/dist/interface/assets/{VConsole-CKf3T4gS.js → VConsole-B1XFaB1X.js} +1 -1
- package/dist/interface/assets/{VPlayer-DJjwfULk.css → VPlayer-B1HHlrNE.css} +1 -1
- package/dist/interface/assets/VPlayer-DpgP5_CU.js +1 -0
- package/dist/interface/assets/VPluginCard-D_XHVDOF.css +1 -0
- package/dist/interface/assets/VPluginCard-DxspPu-g.js +4 -0
- package/dist/interface/assets/{main-DAdsd7ig.css → main-Uk5-SrnC.css} +1 -1
- package/dist/interface/assets/main-g2kR7sEX.js +9 -0
- package/dist/interface/assets/plugins-S3SjQeRW.js +1 -0
- package/dist/interface/assets/{system-BN-plpJC.js → system-l2HUoPBI.js} +1 -1
- package/dist/interface/index.html +3 -3
- 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/bin/cameraui.d.ts +1 -0
- package/dist/server/bin/cameraui.js +20 -1
- package/dist/server/bin/cameraui.js.map +1 -1
- package/dist/server/bin/installer/darwin.js +7 -1
- package/dist/server/bin/installer/darwin.js.map +1 -1
- package/dist/server/bin/installer/freebsd.js +7 -1
- package/dist/server/bin/installer/freebsd.js.map +1 -1
- package/dist/server/bin/installer/linux.d.ts +2 -0
- package/dist/server/bin/installer/linux.js +31 -25
- package/dist/server/bin/installer/linux.js.map +1 -1
- package/dist/server/bin/installer/win32.js +7 -1
- package/dist/server/bin/installer/win32.js.map +1 -1
- package/dist/server/package.json +3 -3
- 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/api/types/index.d.ts +1 -1
- package/dist/server/src/plugins/plugin.js +2 -2
- package/dist/server/src/plugins/plugin.js.map +1 -1
- package/dist/server/src/polyglot/python/plugins/storage_controller.py +1 -1
- package/dist/server/src/services/config/index.d.ts +3 -0
- package/dist/server/src/services/config/index.js +49 -10
- package/dist/server/src/services/config/index.js.map +1 -1
- package/package.json +3 -3
- package/dist/interface/assets/@mdi-B8Roxr1z.js +0 -1
- package/dist/interface/assets/Config-BWydVKCs.js +0 -1
- package/dist/interface/assets/Console-BsyX2S3R.css +0 -1
- package/dist/interface/assets/Console-TPR0d-TO.js +0 -4
- package/dist/interface/assets/Plugins-C_EbpQcI.js +0 -1
- package/dist/interface/assets/System-Bj88A2C7.js +0 -4
- package/dist/interface/assets/VPlayer-DeUJBU1V.js +0 -1
- package/dist/interface/assets/VPluginCard-BoeWmehD.css +0 -1
- package/dist/interface/assets/VPluginCard-C9lEIVNw.js +0 -4
- package/dist/interface/assets/main-Dt6mWkg4.js +0 -9
- package/dist/interface/assets/plugins-B5ESYMZH.js +0 -1
- package/dist/server/src/polyglot/node/decoder/wasm/test/imageUtils.py +0 -106
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var y=Object.defineProperty;var p=(t,n,e)=>n in t?y(t,n,{enumerable:!0,configurable:!0,writable:!0,value:e}):t[n]=e;var g=(t,n,e)=>p(t,typeof n!="symbol"?n+"":n,e);import{i as o}from"./vue3-toastify-D8Ru9hkX.js";import{i as l,x as s}from"./main-Dt6mWkg4.js";import{u as d,b as i,a as r}from"./@tanstack-BvYNCsQh.js";import{r as m,u}from"./@vue-DMh6qW6s.js";const P=async({pluginData:t})=>(await s.post("/plugins",t)).data,Q=async({pluginName:t,signal:n})=>(await s.get(`/plugins/${t}`,{signal:n})).data,b=async({pluginname:t,signal:n})=>(await s.get(`/plugins/${t}/versions`,{signal:n})).data,h=async({pluginName:t,signal:n})=>(await s.get(`/plugins/${t}/update`,{signal:n})).data,q=async({pluginName:t,signal:n})=>(await s.get(`/plugins/${t}/logo`,{signal:n})).data,F=async({pluginName:t,signal:n})=>(await s.get(`/plugins/${t}/schema`,{signal:n})).data,w=async({pluginName:t,signal:n})=>(await s.get(`/plugins/${t}/config`,{signal:n})).data,f=async({pluginName:t,signal:n})=>(await s.get(`/plugins/${t}/contract`,{signal:n})).data,v=async({pluginName:t,signal:n})=>(await s.get(`/plugins/${t}/readme`,{signal:n})).data,C=async({pluginName:t,signal:n})=>(await s.get(`/plugins/${t}/changelog`,{signal:n})).data,K=async({pluginName:t,signal:n})=>(await s.get(`/plugins/${t}/release`,{signal:n})).data,_=async({pluginName:t,parameter:n,signal:e})=>(await s.get(`/plugins/${t}/interface`,{params:n,signal:e})).data,$=async({parameter:t,signal:n})=>(await s.get("/plugins",{params:t,signal:n})).data,A=async({parameter:t,signal:n})=>(await s.get("/plugins/extensions",{params:t,signal:n})).data,S=async({query:t,parameter:n,signal:e})=>(await s.get("/plugins/search",{params:{...t,...n},signal:e})).data,L=async({pluginName:t})=>(await s.put(`/plugins/${t}/enable`)).data,x=async({pluginName:t,configData:n})=>(await s.patch(`/plugins/${t}/config`,n)).data,R=async({pluginName:t})=>(await s.put(`/plugins/${t}/disable`)).data,N=async({pluginName:t})=>(await s.put(`/plugins/${t}/start`)).data,I=async({pluginName:t})=>(await s.put(`/plugins/${t}/stop`)).data,J=async({pluginName:t})=>(await s.put(`/plugins/${t}/restart`)).data,E=async({pluginName:t,formData:n})=>(await s.post(`/plugins/${t}/detect/motion`,n,{responseType:"arraybuffer"})).data,U=async({pluginName:t,formData:n})=>(await s.post(`/plugins/${t}/detect/objects`,n)).data,V=async({pluginName:t,formData:n})=>(await s.post(`/plugins/${t}/detect/audio`,n)).data,j=async({pluginName:t,actionId:n,payload:e})=>(await s.post(`/plugins/${t}/submit`,{actionId:n,payload:e})).data,D=async({pluginName:t,removeStorage:n})=>(await s.delete(`/plugins/${t}`,{params:{removeStorage:n}})).data,M=async()=>(await s.delete("/plugins")).data;class G{constructor(){g(this,"_queryClient",d());g(this,"queryActivator",m([{name:"getPluginQuery",enabled:!0},{name:"getPluginsQuery",enabled:!0},{name:"getPluginsExtensionsQuery",enabled:!0},{name:"searchPluginsQuery",enabled:!0},{name:"getPluginVersionsQuery",enabled:!0},{name:"getPluginUpdateQuery",enabled:!0},{name:"getPluginLogoQuery",enabled:!0},{name:"getPluginSchemaQuery",enabled:!0},{name:"getPluginConfigJsonQuery",enabled:!0},{name:"getPluginContractQuery",enabled:!0},{name:"getPluginReadmeQuery",enabled:!0},{name:"getPluginReleaseQuery",enabled:!0},{name:"getPluginInterfaceQuery",enabled:!0},{name:"getPluginChangelogQuery",enabled:!0}]))}get queryClient(){return this._queryClient}installPluginQuery(){return i({mutationFn:P,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:["pluginsList"]}),o.success(l.global.t("components.toast.plugin_added"))}})}getPluginQuery(n){return r({queryKey:["plugins",n],queryFn:({signal:e})=>Q({pluginName:u(n),signal:e}),enabled:()=>this.queryActivator.value.some(e=>e.name==="getPluginQuery"&&e.enabled)})}getPluginsQuery(n){return r({queryKey:["pluginsList",n],queryFn:({signal:e})=>$({parameter:u(n),signal:e}),placeholderData:e=>e,enabled:()=>this.queryActivator.value.some(e=>e.name==="getPluginsQuery"&&e.enabled)})}getPluginsExtensionsQuery(n){return r({queryKey:["extensionsList",n],queryFn:({signal:e})=>A({parameter:u(n),signal:e}),placeholderData:e=>e,enabled:()=>this.queryActivator.value.some(e=>e.name==="getPluginsExtensionsQuery"&&e.enabled)})}searchPluginsQuery(n,e){return r({queryKey:["pluginsSearch",n,e],queryFn:({signal:a})=>S({query:u(n),parameter:u(e),signal:a}),placeholderData:a=>a,enabled:()=>this.queryActivator.value.some(a=>a.name==="searchPluginsQuery"&&a.enabled)})}getPluginVersionsQuery(n){return r({queryKey:["plugins",n,"versions"],queryFn:({signal:e})=>b({pluginname:u(n),signal:e}),enabled:()=>this.queryActivator.value.some(e=>e.name==="getPluginVersionsQuery"&&e.enabled)})}getPluginUpdateQuery(n){return r({queryKey:["plugins",n,"update"],queryFn:({signal:e})=>h({pluginName:u(n),signal:e}),enabled:()=>this.queryActivator.value.some(e=>e.name==="getPluginUpdateQuery"&&e.enabled)})}getPluginLogoQuery(n){return r({queryKey:["plugins",n,"logo"],queryFn:({signal:e})=>q({pluginName:u(n),signal:e}),enabled:()=>this.queryActivator.value.some(e=>e.name==="getPluginLogoQuery"&&e.enabled)})}getPluginSchemaQuery(n){return r({queryKey:["plugins",n,"schema"],queryFn:({signal:e})=>F({pluginName:u(n),signal:e}),enabled:()=>this.queryActivator.value.some(e=>e.name==="getPluginSchemaQuery"&&e.enabled)})}getPluginConfigJsonQuery(n){return r({queryKey:["plugins",n,"config"],queryFn:({signal:e})=>w({pluginName:u(n),signal:e}),enabled:()=>this.queryActivator.value.some(e=>e.name==="getPluginConfigJsonQuery"&&e.enabled)})}getPluginContractQuery(n){return r({queryKey:["plugins",n,"contract"],queryFn:({signal:e})=>f({pluginName:u(n),signal:e}),enabled:()=>this.queryActivator.value.some(e=>e.name==="getPluginContractQuery"&&e.enabled)})}getPluginReadmeQuery(n){return r({queryKey:["plugins",n,"readme"],queryFn:({signal:e})=>v({pluginName:u(n),signal:e}),enabled:()=>this.queryActivator.value.some(e=>e.name==="getPluginReadmeQuery"&&e.enabled)})}getPluginReleaseQuery(n){return r({queryKey:["plugins",n,"release"],queryFn:({signal:e})=>K({pluginName:u(n),signal:e}),enabled:()=>this.queryActivator.value.some(e=>e.name==="getPluginReleaseQuery"&&e.enabled)})}getPluginInterfaceQuery(n,e){return r({queryKey:["plugins",n,"interface",e],queryFn:({signal:a})=>_({pluginName:u(n),parameter:e,signal:a}),enabled:()=>this.queryActivator.value.some(a=>a.name==="getPluginInterfaceQuery"&&a.enabled)})}getPluginChangelogQuery(n){return r({queryKey:["plugins",n,"changelog"],queryFn:({signal:e})=>C({pluginName:u(n),signal:e}),enabled:()=>this.queryActivator.value.some(e=>e.name==="getPluginChangelogQuery"&&e.enabled)})}patchPluginConfigQuery(){return i({mutationFn:x,onSuccess:async(n,e)=>{await this._queryClient.refetchQueries({queryKey:["plugins",e.pluginName]}),o.success(l.global.t("components.toast.plugin_config_updated"))}})}startPluginQuery(){return i({mutationFn:N,onSuccess:async(n,e)=>{await this._queryClient.refetchQueries({queryKey:["plugins",e.pluginName]}),o.success(l.global.t("components.toast.plugin_started"))}})}stopPluginQuery(){return i({mutationFn:I,onSuccess:async(n,e)=>{await this._queryClient.refetchQueries({queryKey:["plugins",e.pluginName]}),o.success(l.global.t("components.toast.plugin_stopped"))}})}restartPluginQuery(){return i({mutationFn:J,onSuccess:async(n,e)=>{await this._queryClient.refetchQueries({queryKey:["plugins",e.pluginName]}),o.success(l.global.t("components.toast.plugin_restarted"))}})}detectMotionQuery(){return i({mutationFn:E})}detectObjectsQuery(){return i({mutationFn:U})}detectAudioQuery(){return i({mutationFn:V})}actionButtonQuery(){return i({mutationFn:j,onSuccess:async(n,e)=>{await this._queryClient.refetchQueries({queryKey:["plugins",e.pluginName]}),o.success(l.global.t("components.toast.plugin_request_sent"))}})}enablePluginQuery(){return i({mutationFn:L,onSuccess:async(n,e)=>{await this._queryClient.refetchQueries({queryKey:["pluginsList"]}),await this._queryClient.refetchQueries({queryKey:["plugins",e.pluginName]}),o.success(l.global.t("components.toast.plugin_enabled"))}})}disablePluginQuery(){return i({mutationFn:R,onSuccess:async(n,e)=>{await this._queryClient.refetchQueries({queryKey:["pluginsList"]}),await this._queryClient.refetchQueries({queryKey:["plugins",e.pluginName]}),o.success(l.global.t("components.toast.plugin_disabled"))}})}uninstallPluginQuery(){return i({mutationFn:D,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:["pluginsList"]}),o.success(l.global.t("components.toast.plugin_removed"))}})}uninstallPluginsQuery(){return i({mutationFn:M,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:["pluginsList"]}),o.success(l.global.t("components.toast.plugins_removed"))}})}toggleQueryActivator(n,e){const a=this.queryActivator.value.find(c=>c.name===n);a&&(a.enabled=e)}}export{G as P};
|
|
@@ -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))
|