From 06c1227e8f72fc2ea4fa559a8ccaf8bfc46ea2e3 Mon Sep 17 00:00:00 2001 From: Mido22 Date: Sat, 20 Sep 2014 16:28:25 +0800 Subject: [PATCH] now the data captured while encoding WAV is not lost, (this is helpful when you are sending chunks of wav to server) --- recorderWorker.js | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) mode change 100644 => 100755 recorderWorker.js diff --git a/recorderWorker.js b/recorderWorker.js old mode 100644 new mode 100755 index 08ad444c..649031ae --- a/recorderWorker.js +++ b/recorderWorker.js @@ -1,7 +1,12 @@ var recLength = 0, recBuffersL = [], recBuffersR = [], - sampleRate; + sampleRate, + encodingInProgress=false, + recBuffersLTemp = [], + recBuffersRTemp = [], + recLengthTemp = 0; + this.onmessage = function(e){ switch(e.data.command){ @@ -28,12 +33,19 @@ function init(config){ } function record(inputBuffer){ - recBuffersL.push(inputBuffer[0]); - recBuffersR.push(inputBuffer[1]); - recLength += inputBuffer[0].length; + if(encodingInProgress){ + recBuffersLTemp.push(inputBuffer[0]); + recBuffersRTemp.push(inputBuffer[1]); + recLengthTemp += inputBuffer[0].length; + }else{ + recBuffersL.push(inputBuffer[0]); + recBuffersR.push(inputBuffer[1]); + recLength += inputBuffer[0].length; + } } function exportWAV(type){ + encodingInProgress=true; var bufferL = mergeBuffers(recBuffersL, recLength); var bufferR = mergeBuffers(recBuffersR, recLength); var interleaved = interleave(bufferL, bufferR); @@ -51,9 +63,13 @@ function getBuffer() { } function clear(){ - recLength = 0; - recBuffersL = []; - recBuffersR = []; + recLength = recLengthTemp; + recBuffersL = recBuffersLTemp; + recBuffersR = recBuffersRTemp; + recLengthTemp = 0; + recBuffersLTemp = []; + recBuffersRTemp = []; + encodingInProgress=false; } function mergeBuffers(recBuffers, recLength){