From 7df1ed171cc1b857e3d72780196d24ab4f155a90 Mon Sep 17 00:00:00 2001 From: nitodeco Date: Sun, 26 Jan 2025 00:57:08 +0100 Subject: [PATCH] fix buffer boundary error --- src/lib/alaw.ts | 9 ++++++--- src/lib/mulaw.ts | 9 ++++++--- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/lib/alaw.ts b/src/lib/alaw.ts index cb343f7..3904c5e 100644 --- a/src/lib/alaw.ts +++ b/src/lib/alaw.ts @@ -89,10 +89,13 @@ export function decode(samples: Uint8Array): Int16Array { * @returns {Buffer} Buffer of 8-bit A-Law samples */ export function encodeBuffer(buffer: Buffer): Buffer { - const samples = new Int16Array(buffer.length / 2); - for (let i = 0; i < buffer.length; i += 2) { - samples[i / 2] = buffer.readInt16LE(i); + const numSamples = Math.floor(buffer.length / 2); + const samples = new Int16Array(numSamples); + + for (let i = 0; i < numSamples; i++) { + samples[i] = buffer.readInt16LE(i * 2); } + return Buffer.from(encode(samples).buffer); } diff --git a/src/lib/mulaw.ts b/src/lib/mulaw.ts index d4e3798..b06bee0 100644 --- a/src/lib/mulaw.ts +++ b/src/lib/mulaw.ts @@ -83,10 +83,13 @@ export function decode(samples: Uint8Array): Int16Array { * @returns {Buffer} Buffer of 8-bit μ-Law samples */ export function encodeBuffer(buffer: Buffer): Buffer { - const samples = new Int16Array(buffer.length / 2); - for (let i = 0; i < buffer.length; i += 2) { - samples[i / 2] = buffer.readInt16LE(i); + const numSamples = Math.floor(buffer.length / 2); + const samples = new Int16Array(numSamples); + + for (let i = 0; i < numSamples; i++) { + samples[i] = buffer.readInt16LE(i * 2); } + return Buffer.from(encode(samples).buffer); }