From 0782b18cb0039b718fb530738b8dea716a6a5e32 Mon Sep 17 00:00:00 2001 From: morethanwords Date: Tue, 2 Jun 2020 01:19:35 +0300 Subject: [PATCH] Completed task #3: Recording voice messages: 1) Record and play on Safari 2) Ripple effect 3) Encoding and decoding new waveform --- public/decoderWorker.min.js | 2 +- public/decoderWorker.min.wasm | Bin 185297 -> 185315 bytes public/encoderWorker.min.wasm | Bin 286534 -> 286875 bytes public/index_template.html | 9 +- public/recorder.min.js | 1 + src/components/chatInput.ts | 66 +++- src/components/wrappers.ts | 368 ++++++++++++++-------- src/lib/appManagers/appDocsManager.ts | 44 ++- src/lib/appManagers/appImManager.ts | 11 +- src/lib/appManagers/appMessagesManager.ts | 33 +- src/lib/mtproto/apiFileManager.ts | 4 +- src/lib/opusDecodeController.ts | 134 ++++++++ src/lib/opusProcessor.ts | 5 - src/scss/partials/_chat.scss | 29 +- src/scss/partials/_chatBubble.scss | 4 + 15 files changed, 521 insertions(+), 189 deletions(-) create mode 100644 public/recorder.min.js create mode 100644 src/lib/opusDecodeController.ts delete mode 100644 src/lib/opusProcessor.ts diff --git a/public/decoderWorker.min.js b/public/decoderWorker.min.js index 4e1859fa..c658d7d6 100644 --- a/public/decoderWorker.min.js +++ b/public/decoderWorker.min.js @@ -1 +1 @@ -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 i=t[s]={i:s,l:!1,exports:{}};return e[s].call(i.exports,i,i.exports,r),i.l=!0,i.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 i in e)r.d(s,i,function(t){return e[t]}.bind(null,i));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,i=new Promise(function(e){s=e});t.onmessage=function(e){i.then(function(){switch(e.data.command){case"decode":r&&r.decode(e.data.pages);break;case"done":r&&(r.sendLastBuffer(),t.close());break;case"init":r=new o(e.data,Module)}})};var o=function(e,t){if(!t)throw new Error("Module with exports required to initialize a decoder instance");this.mainReady=i,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.HEAP32=t.HEAP32,this.HEAPF32=t.HEAPF32,this.outputBuffers=[]};o.prototype.decode=function(e){var t=new DataView(e.buffer);this.getPageBoundaries(t).map(function(r){var s=t.getUint8(r+5,!0),i=t.getUint32(r+18,!0);if(2&s&&(this.numberOfChannels=t.getUint8(r+37,!0),this.init()),i>1){for(var o=t.getUint8(r+26,!0),u=r+27+o,n=0;n>2]=h,this.HEAP32[this.resampleOutputLengthPointer>>2]=a,this._speex_resampler_process_interleaved_float(this.resampler,this.decoderOutputPointer,this.decoderOutputLengthPointer,this.resampleOutputBufferPointer,this.resampleOutputLengthPointer),this.sendToOutputBuffers(this.HEAPF32.subarray(this.resampleOutputBufferPointer>>2,(this.resampleOutputBufferPointer>>2)+a*this.numberOfChannels)),this.decoderBufferIndex=0}}4&s&&this.sendLastBuffer()}},this)},o.prototype.getPageBoundaries=function(e){for(var t=[],r=0;r1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",abort);quit_=function(status){process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){arguments_=scriptArgs}else if(typeof arguments!="undefined"){arguments_=arguments}if(typeof quit==="function"){quit_=function(status){quit(status)}}if(typeof print!=="undefined"){if(typeof console==="undefined")console={};console.log=print;console.warn=console.error=typeof printErr!=="undefined"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1)}else{scriptDirectory=""}read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)};setWindowTitle=function(title){document.title=title}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var asm2wasmImports={"f64-rem":function(x,y){return x%y},"debugger":function(){}};var functionPointers=new Array(0);var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime;if(Module["noExitRuntime"])noExitRuntime=Module["noExitRuntime"];if(typeof WebAssembly!=="object"){err("no native wasm support detected")}var wasmMemory;var wasmTable=new WebAssembly.Table({"initial":14,"maximum":14,"element":"anyfunc"});var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(u8Array,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(u8Array[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&u8Array.subarray&&UTF8Decoder){return UTF8Decoder.decode(u8Array.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}var UTF16Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf-16le"):undefined;var WASM_PAGE_SIZE=65536;var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var DYNAMIC_BASE=5280704,DYNAMICTOP_PTR=37616;var INITIAL_TOTAL_MEMORY=Module["TOTAL_MEMORY"]||16777216;if(Module["wasmMemory"]){wasmMemory=Module["wasmMemory"]}else{wasmMemory=new WebAssembly.Memory({"initial":INITIAL_TOTAL_MEMORY/WASM_PAGE_SIZE,"maximum":INITIAL_TOTAL_MEMORY/WASM_PAGE_SIZE})}if(wasmMemory){buffer=wasmMemory.buffer}INITIAL_TOTAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback();continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Module["dynCall_v"](func)}else{Module["dynCall_vi"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what+="";out(what);err(what);ABORT=true;EXITSTATUS=1;throw"abort("+what+"). Build with -s ASSERTIONS=1 for more info."}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return String.prototype.startsWith?filename.startsWith(dataURIPrefix):filename.indexOf(dataURIPrefix)===0}var wasmBinaryFile="decoderWorker.min.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch==="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={"env":asmLibraryArg,"wasi_unstable":asmLibraryArg,"global":{"NaN":NaN,Infinity:Infinity},"global.Math":Math,"asm2wasm":asm2wasmImports};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming==="function"&&!isDataURI(wasmBinaryFile)&&typeof fetch==="function"){fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}Module["asm"]=createWasm;var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};var SYSCALLS={buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:0,get:function(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(){var ret=UTF8ToString(SYSCALLS.get());return ret},get64:function(){var low=SYSCALLS.get(),high=SYSCALLS.get();return low},getZero:function(){SYSCALLS.get()}};function _fd_close(fd){try{return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function ___wasi_fd_close(){return _fd_close.apply(null,arguments)}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function ___wasi_fd_seek(){return _fd_seek.apply(null,arguments)}function _fd_write(fd,iov,iovcnt,pnum){try{var num=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function ___wasi_fd_write(){return _fd_write.apply(null,arguments)}function _abort(){abort()}function _emscripten_get_heap_size(){return HEAP8.length}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){abortOnCannotGrowMemory(requestedSize)}function _llvm_stackrestore(p){var self=_llvm_stacksave;var ret=self.LLVM_SAVEDSTACKS[p];self.LLVM_SAVEDSTACKS.splice(p,1);stackRestore(ret)}function _llvm_stacksave(){var self=_llvm_stacksave;if(!self.LLVM_SAVEDSTACKS){self.LLVM_SAVEDSTACKS=[]}self.LLVM_SAVEDSTACKS.push(stackSave());return self.LLVM_SAVEDSTACKS.length-1}function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest)}var asmGlobalArg={};var asmLibraryArg={"j":___wasi_fd_close,"i":___wasi_fd_seek,"h":___wasi_fd_write,"__memory_base":1024,"__table_base":0,"g":_abort,"d":_emscripten_get_heap_size,"f":_emscripten_memcpy_big,"c":_emscripten_resize_heap,"a":_llvm_stackrestore,"b":_llvm_stacksave,"e":abort,"memory":wasmMemory,"table":wasmTable};var asm=Module["asm"](asmGlobalArg,asmLibraryArg,buffer);Module["asm"]=asm;var _free=Module["_free"]=function(){return Module["asm"]["k"].apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return Module["asm"]["l"].apply(null,arguments)};var _opus_decode_float=Module["_opus_decode_float"]=function(){return Module["asm"]["m"].apply(null,arguments)};var _opus_decoder_create=Module["_opus_decoder_create"]=function(){return Module["asm"]["n"].apply(null,arguments)};var _opus_decoder_destroy=Module["_opus_decoder_destroy"]=function(){return Module["asm"]["o"].apply(null,arguments)};var _speex_resampler_destroy=Module["_speex_resampler_destroy"]=function(){return Module["asm"]["p"].apply(null,arguments)};var _speex_resampler_init=Module["_speex_resampler_init"]=function(){return Module["asm"]["q"].apply(null,arguments)};var _speex_resampler_process_interleaved_float=Module["_speex_resampler_process_interleaved_float"]=function(){return Module["asm"]["r"].apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return Module["asm"]["s"].apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return Module["asm"]["t"].apply(null,arguments)};Module["asm"]=asm;var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}noExitRuntime=true;run(); +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<s&&(s=h),r++%t==0&&(ol&&(e[i]=l);var c=5*this.resultSamples/8+1,m=new Uint8Array(Math.floor(c));for(i=0;i1){for(var a=r.getUint8(s+26,!0),f=s+27+a,h=0;h0){var l=this.HEAPF32.subarray(this.decoderOutputPointer>>2,(this.decoderOutputPointer>>2)+this.decoderOutputMaxLength);this.waveformGenerator.saveSamples(this.decoderOutputMaxLength,l)}var c=Math.ceil(d*this.config.outputBufferSampleRate/this.config.decoderSampleRate);this.HEAP32[this.decoderOutputLengthPointer>>2]=d,this.HEAP32[this.resampleOutputLengthPointer>>2]=c,this._speex_resampler_process_interleaved_float(this.resampler,this.decoderOutputPointer,this.decoderOutputLengthPointer,this.resampleOutputBufferPointer,this.resampleOutputLengthPointer),this.sendToOutputBuffers(this.HEAPF32.subarray(this.resampleOutputBufferPointer>>2,(this.resampleOutputBufferPointer>>2)+c*this.numberOfChannels)),this.decoderBufferIndex=0}}(4&u||o==i)&&this.sendLastBuffer()}},this)},i.prototype.getPageBoundaries=function(e){for(var t=[],r=0;r1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",abort);quit_=function(status){process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){arguments_=scriptArgs}else if(typeof arguments!="undefined"){arguments_=arguments}if(typeof quit==="function"){quit_=function(status){quit(status)}}if(typeof print!=="undefined"){if(typeof console==="undefined")console={};console.log=print;console.warn=console.error=typeof printErr!=="undefined"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1)}else{scriptDirectory=""}read_=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)};setWindowTitle=function(title){document.title=title}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var asm2wasmImports={"f64-rem":function(x,y){return x%y},"debugger":function(){}};var functionPointers=new Array(0);var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime;if(Module["noExitRuntime"])noExitRuntime=Module["noExitRuntime"];if(typeof WebAssembly!=="object"){err("no native wasm support detected")}var wasmMemory;var wasmTable=new WebAssembly.Table({"initial":14,"maximum":14,"element":"anyfunc"});var ABORT=false;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(u8Array,idx,maxBytesToRead){var endIdx=idx+maxBytesToRead;var endPtr=idx;while(u8Array[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&u8Array.subarray&&UTF8Decoder){return UTF8Decoder.decode(u8Array.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}var UTF16Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf-16le"):undefined;var WASM_PAGE_SIZE=65536;var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var DYNAMIC_BASE=5280704,DYNAMICTOP_PTR=37616;var INITIAL_TOTAL_MEMORY=Module["TOTAL_MEMORY"]||16777216;if(Module["wasmMemory"]){wasmMemory=Module["wasmMemory"]}else{wasmMemory=new WebAssembly.Memory({"initial":INITIAL_TOTAL_MEMORY/WASM_PAGE_SIZE,"maximum":INITIAL_TOTAL_MEMORY/WASM_PAGE_SIZE})}if(wasmMemory){buffer=wasmMemory.buffer}INITIAL_TOTAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback();continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Module["dynCall_v"](func)}else{Module["dynCall_vi"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what+="";out(what);err(what);ABORT=true;EXITSTATUS=1;throw"abort("+what+"). Build with -s ASSERTIONS=1 for more info."}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return String.prototype.startsWith?filename.startsWith(dataURIPrefix):filename.indexOf(dataURIPrefix)===0}var wasmBinaryFile="decoderWorker.min.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(){try{if(wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(wasmBinaryFile)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&typeof fetch==="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary()})}return new Promise(function(resolve,reject){resolve(getBinary())})}function createWasm(){var info={"env":asmLibraryArg,"wasi_unstable":asmLibraryArg,"global":{"NaN":NaN,Infinity:Infinity},"global.Math":Math,"asm2wasm":asm2wasmImports};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiatedSource(output){receiveInstance(output["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming==="function"&&!isDataURI(wasmBinaryFile)&&typeof fetch==="function"){fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}Module["asm"]=createWasm;var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path==="/")return"/";var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};var SYSCALLS={buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:0,get:function(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(){var ret=UTF8ToString(SYSCALLS.get());return ret},get64:function(){var low=SYSCALLS.get(),high=SYSCALLS.get();return low},getZero:function(){SYSCALLS.get()}};function _fd_close(fd){try{return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function ___wasi_fd_close(){return _fd_close.apply(null,arguments)}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function ___wasi_fd_seek(){return _fd_seek.apply(null,arguments)}function _fd_write(fd,iov,iovcnt,pnum){try{var num=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function ___wasi_fd_write(){return _fd_write.apply(null,arguments)}function _abort(){abort()}function _emscripten_get_heap_size(){return HEAP8.length}function abortOnCannotGrowMemory(requestedSize){abort("OOM")}function _emscripten_resize_heap(requestedSize){abortOnCannotGrowMemory(requestedSize)}function _llvm_stackrestore(p){var self=_llvm_stacksave;var ret=self.LLVM_SAVEDSTACKS[p];self.LLVM_SAVEDSTACKS.splice(p,1);stackRestore(ret)}function _llvm_stacksave(){var self=_llvm_stacksave;if(!self.LLVM_SAVEDSTACKS){self.LLVM_SAVEDSTACKS=[]}self.LLVM_SAVEDSTACKS.push(stackSave());return self.LLVM_SAVEDSTACKS.length-1}function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest)}var asmGlobalArg={};var asmLibraryArg={"j":___wasi_fd_close,"i":___wasi_fd_seek,"h":___wasi_fd_write,"__memory_base":1024,"__table_base":0,"g":_abort,"d":_emscripten_get_heap_size,"f":_emscripten_memcpy_big,"c":_emscripten_resize_heap,"a":_llvm_stackrestore,"b":_llvm_stacksave,"e":abort,"memory":wasmMemory,"table":wasmTable};var asm=Module["asm"](asmGlobalArg,asmLibraryArg,buffer);Module["asm"]=asm;var _free=Module["_free"]=function(){return Module["asm"]["k"].apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return Module["asm"]["l"].apply(null,arguments)};var _opus_decode_float=Module["_opus_decode_float"]=function(){return Module["asm"]["m"].apply(null,arguments)};var _opus_decoder_create=Module["_opus_decoder_create"]=function(){return Module["asm"]["n"].apply(null,arguments)};var _opus_decoder_destroy=Module["_opus_decoder_destroy"]=function(){return Module["asm"]["o"].apply(null,arguments)};var _speex_resampler_destroy=Module["_speex_resampler_destroy"]=function(){return Module["asm"]["p"].apply(null,arguments)};var _speex_resampler_init=Module["_speex_resampler_init"]=function(){return Module["asm"]["q"].apply(null,arguments)};var _speex_resampler_process_interleaved_float=Module["_speex_resampler_process_interleaved_float"]=function(){return Module["asm"]["r"].apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return Module["asm"]["s"].apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return Module["asm"]["t"].apply(null,arguments)};Module["asm"]=asm;var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0)return;function doRun(){if(calledRun)return;calledRun=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}noExitRuntime=true;run(); diff --git a/public/decoderWorker.min.wasm b/public/decoderWorker.min.wasm index 3da06861b2982fda4c9f1a503c4c1f3571ee973e..1e9051894fe3efc098d0b3675becb7c59b32789e 100644 GIT binary patch delta 4311 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 E8@V)YG5`Po diff --git a/public/encoderWorker.min.wasm b/public/encoderWorker.min.wasm index b79dad9de6df491a39a4ad003fc7aff4e1f4912a..c61f179c8b72fb605cf02bb72735aae70fe6a283 100644 GIT binary patch delta 18437 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 delta 18205 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 -
- 0:02,43 -
+
- +
+
+ +