tweb/public/t4/decoderWorker.min.js

2 lines
24 KiB
JavaScript
Raw Normal View History

var Module=typeof Module!=="undefined"?Module:{};!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.DecoderWorker=t():e.DecoderWorker=t()}("undefined"!=typeof self?self:this,function(){return function(e){var t={};function r(s){if(t[s])return t[s].exports;var o=t[s]={i:s,l:!1,exports:{}};return e[s].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,s){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:s})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var s=Object.create(null);if(r.r(s),Object.defineProperty(s,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(s,o,function(t){return e[t]}.bind(null,o));return s},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=0)}([function(e,t,r){"use strict";(function(t){var r,s,o=new Promise(function(e){s=e});t.onmessage=function(e){o.then(function(){switch(e.data.command){case"decode":r&&(r.waveformGenerator=e.data.waveform?new u:null,r.decode(e.data.pages,e.data.waveform));break;case"done":r&&(r.sendLastBuffer(),t.close());break;case"init":r=new i(e.data,Module)}})};var i=function(e,t){if(!t)throw new Error("Module with exports required to initialize a decoder instance");this.mainReady=o,this.config=Object.assign({bufferLength:4096,decoderSampleRate:48e3,outputBufferSampleRate:48e3,resampleQuality:3},e),this._opus_decoder_create=t._opus_decoder_create,this._opus_decoder_destroy=t._opus_decoder_destroy,this._speex_resampler_process_interleaved_float=t._speex_resampler_process_interleaved_float,this._speex_resampler_init=t._speex_resampler_init,this._speex_resampler_destroy=t._speex_resampler_destroy,this._opus_decode_float=t._opus_decode_float,this._free=t._free,this._malloc=t._malloc,this.HEAPU8=t.HEAPU8,this.HEAP16=t.HEAP16,this.HEAP32=t.HEAP32,this.HEAPF32=t.HEAPF32,this.outputBuffers=[]};function u(){this.resultSamples=100,this.allSamples=[],this.totalSamples=0}function n(e,t,r){var s=Math.floor(t/8);t%=8,r=e[s]|r<<t;for(var o=new Uint8Array(new Int32Array([r]).buffer),i=0;i<4;++i)e[s+i]=o[i]}u.prototype.saveSamples=function(e,t){this.totalSamples+=e,this.allSamples.push(t.slice())},u.prototype.generate=function(){for(var e=new Float32Array(this.resultSamples),t=Math.max(1,Math.floor(this.totalSamples/this.resultSamples)),r=0,s=0,o=0,i=0;i<this.allSamples.length;i++)for(var u=this.allSamples[i],a=0,f=u.length;a<f;a++){var h=Math.abs(u[a]);h>s&&(s=h),r++%t==0&&(o<this.resultSamples&&(e[o++]=s),s=0)}var p=new Uint16Array(this.resultSamples);for(i=0;i<this.resultSamples;i++)p[i]=32767.5*e[i]-.5;e=p;var d=0;for(i=0;i<this.resultSamples;i++)d+=e[i];var l=Math.floor(1.8*d/this.resultSamples);l<2500&&(l=2500);for(i=0;i<this.resultSamples;i++)e[i]>l&&(e[i]=l);var c=5*this.resultSamples/8+1,m=new Uint8Array(Math.floor(c));for(i=0;i<this.resultSamples;i++){n(m,5*i,31&Math.min(31,Math.floor(Math.floor(31*e[i])/l)))}return m},i.prototype.decode=function(e,t){var r=new DataView(e.buffer),s=this.getPageBoundaries(r),o=s.length-1;s.map(function(s,i){var u=r.getUint8(s+5,!0),n=r.getUint32(s+18,!0);if(2&u&&(this.numberOfChannels=r.getUint8(s+37,!0),this.init()),n>1){for(var a=r.getUint8(s+26,!0),f=s+27+a,h=0;h<a;h++){var p=r.getUint8(s+27+h,!0);if(this.decoderBuffer.set(e.subarray(f,f+=p),this.decoderBufferIndex),this.decoderBufferIndex+=p,p<255){var d=this._opus_decode_float(this.decoder,this.decoderBufferPointer,this.decoderBufferIndex,this.decoderOutputPointer,this.decoderOutputMaxLength,0);if(t&&d>0){var l=this.HEAPF32.subarray(this.decoderOutputPointer>>2,(this.decoderOutputPointer>>2)+this.decoderOutputMaxLength);this.waveformGenerator.saveSamples