mirror of
https://github.com/GoogleChromeLabs/squoosh.git
synced 2025-11-14 17:49:52 +00:00
Code review
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "rotate",
|
||||
"scripts": {
|
||||
"build": "mv rotate.{as,ts} && asc rotate.ts -b rotate.wasm --validate --optimize && mv rotate.{ts,as}"
|
||||
"build": "mv rotate.{as,ts} && asc rotate.ts -b rotate.wasm --validate -O3 && mv rotate.{ts,as}"
|
||||
},
|
||||
"devDependencies": {
|
||||
"assemblyscript": "github:AssemblyScript/assemblyscript"
|
||||
|
||||
@@ -54,8 +54,9 @@ export function rotate(inputWidth: i32, inputHeight: i32, rotate: i32): void {
|
||||
}
|
||||
|
||||
for (let d2 = d2Start; d2 >= 0 && d2 < d2Limit; d2 += d2Advance) {
|
||||
let d2offset = d2 * d2Multiplier;
|
||||
for (let d1 = d1Start; d1 >= 0 && d1 < d1Limit; d1 += d1Advance) {
|
||||
let start = ((d1 * d1Multiplier) + (d2 * d2Multiplier));
|
||||
let start = ((d1 * d1Multiplier) + d2offset);
|
||||
store<u32>(offset + i * 4, load<u32>(start * 4));
|
||||
i += 1;
|
||||
}
|
||||
|
||||
Binary file not shown.
@@ -9,18 +9,14 @@ export async function rotate(
|
||||
// Number of wasm memory pages (á 64KiB) needed to store the image twice.
|
||||
const bytesPerImage = data.width * data.height * 4;
|
||||
const numPagesNeeded = Math.ceil(bytesPerImage * 2 / (64 * 1024));
|
||||
// const memory = new Uint8ClampedArray(data.data.length * 2);
|
||||
// const memory = new WebAssembly.Memory({
|
||||
// initial: Math.ceil(data.width * data.height * 4 * 2 / (64 * 1024)),
|
||||
// });
|
||||
const { instance } = (await (WebAssembly as any).instantiateStreaming(
|
||||
fetch(wasmUrl),
|
||||
)) as { instance: RotateModuleInstance };
|
||||
|
||||
instance.exports.memory.grow(numPagesNeeded);
|
||||
|
||||
const view = new Uint8ClampedArray(instance.exports.memory.buffer);
|
||||
view.set(data.data);
|
||||
(self as any).instance = instance;
|
||||
|
||||
instance.exports.rotate(data.width, data.height, opts.rotate);
|
||||
return new ImageData(
|
||||
view.slice(bytesPerImage, bytesPerImage * 2),
|
||||
|
||||
Reference in New Issue
Block a user