worker.js 876 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. })();