From 27f9d159d658d26569632f166c2dd3fe5e85f1bc Mon Sep 17 00:00:00 2001 From: Skyeng Date: Fri, 17 Nov 2023 12:55:37 +0100 Subject: [PATCH] fix: fix bug in worker example, so that the last second of audio would be fully encoded --- worker-example/worker.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/worker-example/worker.js b/worker-example/worker.js index bdbe861..58a3428 100644 --- a/worker-example/worker.js +++ b/worker-example/worker.js @@ -41,15 +41,16 @@ mp3Encoder = new lamejs.Mp3Encoder(wav.channels, wav.sampleRate, config.bitRate || 96); var remaining = samplesLeft.length; - for (var i = 0; remaining >= maxSamples; i += maxSamples) { - var left = samplesLeft.subarray(i, i + maxSamples); + for (var i = 0; remaining > 0; i += maxSamples) { + const chunkSize = Math.min(maxSamples, remaining); + var left = samplesLeft.subarray(i, i + chunkSize); var right; if (samplesRight) { - right = samplesRight.subarray(i, i + maxSamples); + right = samplesRight.subarray(i, chunkSize); } var mp3buf = mp3Encoder.encodeBuffer(left, right); appendToBuffer(mp3buf); - remaining -= maxSamples; + remaining -= chunkSize; self.postMessage({ cmd: 'progress', progress: (1 - remaining / samplesLeft.length)