worker.js 829 B

1234567891011121314151617181920212223242526272829303132333435
  1. (function(){
  2. 'use strict';
  3. var samplesMono;
  4. var floatTo16BitPCM = function(input, output){
  5. for(var i = 0; i < input.length; i++){
  6. var s = Math.max(-1, Math.min(1, input[i]));
  7. output[i] = (s < 0 ? s * 0x8000 : s * 0x7FFF);
  8. }
  9. };
  10. var convertBuffer = function(arrayBuffer){
  11. var data = new Float32Array(arrayBuffer);
  12. var out = new Int16Array(arrayBuffer.length);
  13. floatTo16BitPCM(data, out);
  14. return out;
  15. };
  16. var encode = function(arrayBuffer){
  17. samplesMono = convertBuffer(arrayBuffer);
  18. self.postMessage({
  19. cmd: 'pcm',
  20. buf: samplesMono
  21. });
  22. };
  23. self.onmessage = function(e){
  24. switch(e.data.cmd){
  25. case 'encode':
  26. encode(e.data.buf);
  27. break;
  28. }
  29. };
  30. })();