41 lines
1001 B
JavaScript
41 lines
1001 B
JavaScript
|
'use strict';
|
||
|
|
||
|
Object.defineProperty(exports, "__esModule", {
|
||
|
value: true
|
||
|
});
|
||
|
|
||
|
exports.default = function (self) {
|
||
|
var opusDecoder;
|
||
|
self.addEventListener('message', function (e) {
|
||
|
var data = e.data;
|
||
|
if (data.action === 'reset') {
|
||
|
if (opusDecoder) {
|
||
|
opusDecoder.destroy();
|
||
|
opusDecoder = null;
|
||
|
}
|
||
|
self.postMessage({
|
||
|
action: 'reset'
|
||
|
});
|
||
|
} else if (data.action === 'decodeOpus') {
|
||
|
if (!opusDecoder) {
|
||
|
opusDecoder = new _libopus.Decoder({
|
||
|
unsafe: true,
|
||
|
channels: 1, // TODO
|
||
|
rate: MUMBLE_SAMPLE_RATE
|
||
|
});
|
||
|
}
|
||
|
var input = data.buffer ? Buffer.from(data.buffer) : null;
|
||
|
var decoded = opusDecoder.decodeFloat32(input);
|
||
|
self.postMessage({
|
||
|
action: 'decoded',
|
||
|
buffer: decoded.buffer,
|
||
|
target: data.target,
|
||
|
position: data.position
|
||
|
}, [decoded.buffer]);
|
||
|
}
|
||
|
});
|
||
|
};
|
||
|
|
||
|
var _libopus = require('libopus.js');
|
||
|
|
||
|
var MUMBLE_SAMPLE_RATE = 48000;
|