From fdbc0932e4558f4ffbc8b2b692c8c576be1be704 Mon Sep 17 00:00:00 2001 From: Surma Date: Thu, 24 Jan 2019 16:16:18 -0500 Subject: [PATCH] Code review --- codecs/rotate/package.json | 2 +- codecs/rotate/rotate.as | 3 ++- codecs/rotate/rotate.wasm | Bin 341 -> 336 bytes src/codecs/rotate/processor.ts | 8 ++------ 4 files changed, 5 insertions(+), 8 deletions(-) diff --git a/codecs/rotate/package.json b/codecs/rotate/package.json index 44e3400c..aacccdaa 100644 --- a/codecs/rotate/package.json +++ b/codecs/rotate/package.json @@ -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" diff --git a/codecs/rotate/rotate.as b/codecs/rotate/rotate.as index b3466b39..259355f9 100644 --- a/codecs/rotate/rotate.as +++ b/codecs/rotate/rotate.as @@ -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(offset + i * 4, load(start * 4)); i += 1; } diff --git a/codecs/rotate/rotate.wasm b/codecs/rotate/rotate.wasm index a1c76a21bb740b2c7247788759e98c747cf30ad6..3b58861bb6a3a589145f42df11bfc3a22e84580b 100644 GIT binary patch literal 336 zcmW-bJyOIl427R0=f`n40gbd3C!mfCn5{U&hM6=WnPrwVR4M2=4X5EO6v!zwmh`^& zWQ-px0icdAvhO=CfCz&^pm$IuE;jd4uhV+HeKM+Td|f6&eYDl91HUp$9FDbt(PN`|~!qv2GUuPjtf{7@mnK^*D7Nyp+y!iTcu6-;xfX* zmirS6{T~s1SyU*^iB}^z@IfWvxPuQCjW3>zPxsKuP@sSRxZ~|r4Gy_L(%$2f_nO&L d-8}hq&v;}wp~-qj^<=oC7+q*5ldX&bioZ#&E}8%U diff --git a/src/codecs/rotate/processor.ts b/src/codecs/rotate/processor.ts index 751bc685..7119bae6 100644 --- a/src/codecs/rotate/processor.ts +++ b/src/codecs/rotate/processor.ts @@ -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),