1234567891011121314151617181920212223242526272829303132333435 |
- (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;
- }
- };
- })();
|