KASM-3521 need to support relative pathing for the qoi workers (#44)
KASM-3521 need to support relative pathing for the qoi workers
This commit is contained in:
parent
a97fa93d84
commit
c5350ba2d7
|
@ -1609,6 +1609,7 @@ const UI = {
|
||||||
break;
|
break;
|
||||||
case 'setvideoquality':
|
case 'setvideoquality':
|
||||||
UI.forceSetting('video_quality', parseInt(event.data.value), false);
|
UI.forceSetting('video_quality', parseInt(event.data.value), false);
|
||||||
|
UI.forceSetting('enable_qoi', false, false); // QOI controlled via video quality mode when in iframe
|
||||||
UI.updateQuality();
|
UI.updateQuality();
|
||||||
break;
|
break;
|
||||||
case 'enable_game_mode':
|
case 'enable_game_mode':
|
||||||
|
@ -2043,7 +2044,7 @@ const UI = {
|
||||||
}
|
}
|
||||||
|
|
||||||
//force QOI off if mode is below extreme
|
//force QOI off if mode is below extreme
|
||||||
if (present_mode !== 4 && UI.getSetting('enable_qoi')) {
|
if (present_mode < 4 && UI.getSetting('enable_qoi')) {
|
||||||
UI.showStatus("Lossless QOI disabled when not in extreme quality mode.");
|
UI.showStatus("Lossless QOI disabled when not in extreme quality mode.");
|
||||||
UI.forceSetting('enable_qoi', false, false);
|
UI.forceSetting('enable_qoi', false, false);
|
||||||
}
|
}
|
||||||
|
|
|
@ -249,7 +249,7 @@ async function load(module, imports) {
|
||||||
|
|
||||||
async function init(input) {
|
async function init(input) {
|
||||||
if (typeof input === 'undefined') {
|
if (typeof input === 'undefined') {
|
||||||
input = '/core/decoders/qoi/qoi_viewer_bg.wasm';
|
input = path + 'core/decoders/qoi/qoi_viewer_bg.wasm';
|
||||||
}
|
}
|
||||||
const imports = {};
|
const imports = {};
|
||||||
imports.wbg = {};
|
imports.wbg = {};
|
||||||
|
@ -296,47 +296,50 @@ async function init(input) {
|
||||||
}
|
}
|
||||||
|
|
||||||
var arr;
|
var arr;
|
||||||
|
var path;
|
||||||
|
|
||||||
async function run() {
|
async function run() {
|
||||||
self.addEventListener('message', function(evt) {
|
self.addEventListener('message', async function(evt) {
|
||||||
try {
|
if (evt.data.path) {
|
||||||
let length = evt.data.length;
|
path = evt.data.path;
|
||||||
let data = new Uint8Array(evt.data.sab.slice(0, length));
|
await init();
|
||||||
let resultData = decode_qoi(data);
|
//Send message that worker is ready
|
||||||
if (!arr) {
|
self.postMessage({
|
||||||
arr = new Uint8Array(evt.data.sabR);
|
result: 1
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
try {
|
||||||
|
let length = evt.data.length;
|
||||||
|
let data = new Uint8Array(evt.data.sab.slice(0, length));
|
||||||
|
let resultData = decode_qoi(data);
|
||||||
|
if (!arr) {
|
||||||
|
arr = new Uint8Array(evt.data.sabR);
|
||||||
|
}
|
||||||
|
let lengthR = resultData.data.length;
|
||||||
|
arr.set(resultData.data);
|
||||||
|
let img = {
|
||||||
|
colorSpace: resultData.colorSpace,
|
||||||
|
width: resultData.width,
|
||||||
|
height: resultData.height
|
||||||
|
};
|
||||||
|
self.postMessage({
|
||||||
|
result: 0,
|
||||||
|
img: img,
|
||||||
|
length: lengthR,
|
||||||
|
width: evt.data.width,
|
||||||
|
height: evt.data.height,
|
||||||
|
x: evt.data.x,
|
||||||
|
y: evt.data.y,
|
||||||
|
frame_id: evt.data.frame_id
|
||||||
|
});
|
||||||
|
} catch (err) {
|
||||||
|
self.postMessage({
|
||||||
|
result: 2,
|
||||||
|
error: err
|
||||||
|
});
|
||||||
}
|
}
|
||||||
let lengthR = resultData.data.length;
|
|
||||||
arr.set(resultData.data);
|
|
||||||
let img = {
|
|
||||||
colorSpace: resultData.colorSpace,
|
|
||||||
width: resultData.width,
|
|
||||||
height: resultData.height
|
|
||||||
};
|
|
||||||
self.postMessage({
|
|
||||||
result: 0,
|
|
||||||
img: img,
|
|
||||||
length: lengthR,
|
|
||||||
width: evt.data.width,
|
|
||||||
height: evt.data.height,
|
|
||||||
x: evt.data.x,
|
|
||||||
y: evt.data.y,
|
|
||||||
frame_id: evt.data.frame_id
|
|
||||||
});
|
|
||||||
} catch (err) {
|
|
||||||
self.postMessage({
|
|
||||||
result: 2,
|
|
||||||
error: err
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}, false);
|
}, false);
|
||||||
|
|
||||||
await init();
|
|
||||||
|
|
||||||
//Send message that worker is ready
|
|
||||||
self.postMessage({
|
|
||||||
result: 1
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
run();
|
run();
|
||||||
|
|
|
@ -398,6 +398,8 @@ export default class TightDecoder {
|
||||||
}
|
}
|
||||||
|
|
||||||
_enableQOIWorkers() {
|
_enableQOIWorkers() {
|
||||||
|
let fullPath = window.location.pathname;
|
||||||
|
let path = fullPath.substring(0, fullPath.lastIndexOf('/')+1);
|
||||||
let sabTest = typeof SharedArrayBuffer;
|
let sabTest = typeof SharedArrayBuffer;
|
||||||
if (sabTest !== 'undefined') {
|
if (sabTest !== 'undefined') {
|
||||||
this._enableQOI = true;
|
this._enableQOI = true;
|
||||||
|
@ -416,7 +418,7 @@ export default class TightDecoder {
|
||||||
this._qoiRects = [];
|
this._qoiRects = [];
|
||||||
this._rectQlooping = false;
|
this._rectQlooping = false;
|
||||||
for (let i = 0; i < this._threads; i++) {
|
for (let i = 0; i < this._threads; i++) {
|
||||||
this._workers.push(new Worker("/core/decoders/qoi/decoder.js"));
|
this._workers.push(new Worker("core/decoders/qoi/decoder.js"));
|
||||||
this._sabs.push(new SharedArrayBuffer(300000));
|
this._sabs.push(new SharedArrayBuffer(300000));
|
||||||
this._sabsR.push(new SharedArrayBuffer(400000));
|
this._sabsR.push(new SharedArrayBuffer(400000));
|
||||||
this._arrs.push(new Uint8Array(this._sabs[i]));
|
this._arrs.push(new Uint8Array(this._sabs[i]));
|
||||||
|
@ -450,6 +452,9 @@ export default class TightDecoder {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
for (let i = 0; i < this._threads; i++) {
|
||||||
|
this._workers[i].postMessage({path:path});
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
this._enableQOI = false;
|
this._enableQOI = false;
|
||||||
Log.Warn("Enabling QOI Failed, client not compatible.");
|
Log.Warn("Enabling QOI Failed, client not compatible.");
|
||||||
|
|
Loading…
Reference in New Issue