RemoteDesktop: use asm decoder, remove dependencies on libjpg, improvement rendering perf

This commit is contained in:
DanyLE
2022-08-16 21:30:08 +02:00
parent 0dcfcc9afd
commit 86e2c1246c
16 changed files with 517 additions and 44 deletions

View File

@ -1 +0,0 @@
var api,onmessage,resolution,wasm_update;importScripts("wvnc_asm.js"),api={},resolution=void 0,Module.onRuntimeInitialized=function(){return api={createBuffer:Module.cwrap("create_buffer","number",["number","number"]),destroyBuffer:Module.cwrap("destroy_buffer","",["number"]),updateBuffer:Module.cwrap("update","number",["number","number","number","number","number","number"]),decodeBuffer:Module.cwrap("decode","number",["number","number","number","number"])}},wasm_update=function(e){var r,u,n,t,a,o,d,f,i,s,m;if(s=(r=new Uint8Array(e))[1]|r[2]<<8,m=r[3]|r[4]<<8,i=r[5]|r[6]<<8,t=r[7]|r[8]<<8,n=r[9],a=api.createBuffer(r.length),Module.HEAP8.set(r,a),d=i*t*4,o=api.decodeBuffer(a,r.length,resolution.depth,d),u=new Uint8Array(Module.HEAP8.buffer,o,d),e={},(f=new Uint8Array(d)).set(u,0),e.pixels=f.buffer,e.x=s,e.y=m,e.w=i,e.h=t,postMessage(e,[e.pixels]),api.destroyBuffer(a),0!==n||32!==resolution.depth)return api.destroyBuffer(o)},onmessage=function(e){return e.data.depth?resolution=e.data:wasm_update(e.data)};

View File

@ -0,0 +1,52 @@
// Generated by CoffeeScript 1.12.8
var api, onmessage, resolution, wasm_update;
importScripts('wvnc_asm.js');
api = {};
resolution = void 0;
Module.onRuntimeInitialized = function() {
return api = {
createBuffer: Module.cwrap('create_buffer', 'number', ['number', 'number']),
destroyBuffer: Module.cwrap('destroy_buffer', '', ['number']),
updateBuffer: Module.cwrap("update", 'number', ['number', 'number', 'number', 'number', 'number', 'number']),
decodeBuffer: Module.cwrap("decode", 'number', ['number', 'number', 'number', 'number'])
};
};
wasm_update = function(msg) {
var datain, dataout, flag, h, p, po, size, tmp, w, x, y;
datain = new Uint8Array(msg);
x = datain[1] | (datain[2] << 8);
y = datain[3] | (datain[4] << 8);
w = datain[5] | (datain[6] << 8);
h = datain[7] | (datain[8] << 8);
flag = datain[9];
p = api.createBuffer(datain.length);
Module.HEAP8.set(datain, p);
size = w * h * 4;
po = api.decodeBuffer(p, datain.length, size);
dataout = new Uint8Array(Module.HEAP8.buffer, po, size);
msg = {};
tmp = new Uint8Array(size);
tmp.set(dataout, 0);
msg.pixels = tmp.buffer;
msg.x = x;
msg.y = y;
msg.w = w;
msg.h = h;
postMessage(msg, [msg.pixels]);
api.destroyBuffer(po);
return api.destroyBuffer(p);
};
onmessage = function(e) {
if (e.data.depth) {
return resolution = e.data;
} else {
return wasm_update(e.data);
}
};

View File

@ -1,4 +1,3 @@
afx-app-window[data-id="RemoteDesktop"] div[data-id="container"]
{
background-color: #272822;

File diff suppressed because one or more lines are too long

View File

@ -1,13 +1,14 @@
{
"pkgname":"RemoteDesktop",
"app":"RemoteDesktop",
"name":"WVNC remote desktop",
"description":"",
"info":{
"author": "",
"email": ""
"author": "Dany LE",
"email": "contact@iohub.dev"
},
"version":"0.1.6-a",
"dependencies": ["libwvnc@0.1.2-a"],
"version":"0.1.7-b",
"dependencies": [],
"category":"Internet",
"icon": "icon.png",
"mimes":["none"]

File diff suppressed because one or more lines are too long