LarpixClient/webroot/webp-worker.js

18 lines
806 B
JavaScript

import { encodeAnimation, decodeAnimation } from './wasm-webp/index.js';
self.onmessage = async (e) => {
let action = e.data.action || 'encode';
try {
if (action === 'decode') {
let decoded = await decodeAnimation(e.data.data, true);
let transferables = decoded.map(f => f.data.buffer);
self.postMessage({ success: true, data: decoded, action }, transferables);
} else {
let { targetWidth, targetHeight, webpFrames } = e.data;
let webpUint8 = await encodeAnimation(targetWidth, targetHeight, true, webpFrames);
self.postMessage({ success: true, data: webpUint8, action }, [webpUint8.buffer]);
}
} catch (err) {
self.postMessage({ success: false, error: err.toString(), action });
}
};