(function () { 'use strict'; var samplesMono; var floatTo16BitPCM = function (input, output) { for (var i = 0; i < input.length; i++) { var s = Math.max(-1, Math.min(1, input[i])); output[i] = (s < 0 ? s * 0x8000 : s * 0x7FFF); } }; var convertBuffer = function (arrayBuffer) { var data = new Float32Array(arrayBuffer); var out = new Int16Array(arrayBuffer.length); floatTo16BitPCM(data, out); return out; }; var encode = function (arrayBuffer) { samplesMono = convertBuffer(arrayBuffer); self.postMessage({ cmd: 'pcm', buf: samplesMono }); }; self.onmessage = function (e) { switch (e.data.cmd) { case 'encode': encode(e.data.buf); break; } }; })();