OxiPNG + threads PoC

This commit is contained in:
Ingvar Stepanyan
2020-04-25 14:28:16 +01:00
committed by Ingvar Stepanyan
parent 685558847f
commit 4c658b79ef
15 changed files with 398 additions and 68 deletions

27
codecs/oxipng/main.js Normal file
View File

@@ -0,0 +1,27 @@
import initOxiPNG, { start_main_thread, optimise } from './pkg/squoosh_oxipng.js';
import wasmUrl from "./pkg/squoosh_oxipng_bg.wasm";
async function startMainThread() {
await initOxiPNG(fetch(wasmUrl));
start_main_thread({
length: navigator.hardwareConcurrency,
pop: () => ({
postMessage: data => {
postMessage({ type: 'spawn', data });
}
})
});
return {
optimise
};
}
const mainThread = startMainThread();
addEventListener('message', async ({ data: { id, args } }) => {
try {
let result = (await mainThread).optimise(...args);
postMessage({ ok: true, id, result });
} catch (result) {
postMessage({ ok: false, id, result });
}
});