From a316120b6987b8b60eebc9dd059a3102e5215164 Mon Sep 17 00:00:00 2001 From: Surma Date: Fri, 15 Feb 2019 19:13:22 +0100 Subject: [PATCH] Switch to 8 byte offset --- codecs/rotate/rotate.rs | 4 ++-- codecs/rotate/rotate.wasm | Bin 353 -> 353 bytes src/codecs/rotate/processor.ts | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/codecs/rotate/rotate.rs b/codecs/rotate/rotate.rs index ccac2ef2..645e1784 100644 --- a/codecs/rotate/rotate.rs +++ b/codecs/rotate/rotate.rs @@ -22,8 +22,8 @@ fn rotate(width: usize, height: usize, _rotate: usize) { let in_b: &mut [u32]; let out_b: &mut [u32]; unsafe { - in_b = from_raw_parts_mut::(4 as *mut u32, num_pixels); - out_b = from_raw_parts_mut::((num_pixels * 4 + 4) as *mut u32, num_pixels); + in_b = from_raw_parts_mut::(8 as *mut u32, num_pixels); + out_b = from_raw_parts_mut::((num_pixels * 4 + 8) as *mut u32, num_pixels); } let new_width = height; diff --git a/codecs/rotate/rotate.wasm b/codecs/rotate/rotate.wasm index 4ff666499b95b845874e0c3ea1816d7764f95e62..92547dc9390d27ade493b2173edabf851701bb92 100755 GIT binary patch delta 188 zcmW-bF%E)25JiXG1r~+{j_`-Xd$0wCFv7<8gP^nRXu2ZyAjtXy7X);L*FKq1m>}J$UA~Oj=daw*=Wb`v4S|mNE zfPOKFpYP#RsfV<%0c1HRhmrF<{%xsu-(0%-Hd99WFexH0W2dLNq$C+7E#YJ zU|3A*&-ZXDRT5$@bc(2sk(do4l@=X>+F#zc8BM<18v32=;s4~w>A9{e5eG8)0i%!| AU;qFB diff --git a/src/codecs/rotate/processor.ts b/src/codecs/rotate/processor.ts index 30bac75c..d880ac97 100644 --- a/src/codecs/rotate/processor.ts +++ b/src/codecs/rotate/processor.ts @@ -11,7 +11,7 @@ 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 + 4) / (64 * 1024)); + const numPagesNeeded = Math.ceil((bytesPerImage * 2 + 8) / (64 * 1024)); // Only count full pages, just to be safe. const numPagesAvailable = Math.floor(instance.exports.memory.buffer.byteLength / (64 * 1024)); const additionalPagesToAllocate = numPagesNeeded - numPagesAvailable; @@ -20,13 +20,13 @@ export async function rotate( instance.exports.memory.grow(additionalPagesToAllocate); } const view = new Uint8ClampedArray(instance.exports.memory.buffer); - view.set(data.data, 4); + view.set(data.data, 8); instance.exports.rotate(data.width, data.height, opts.rotate); const flipDimensions = opts.rotate % 180 !== 0; return new ImageData( - view.slice(bytesPerImage + 4, bytesPerImage * 2 + 4), + view.slice(bytesPerImage + 8, bytesPerImage * 2 + 8), flipDimensions ? data.height : data.width, flipDimensions ? data.width : data.height, );