class P extends AudioWorkletProcessor{constructor(...args){super();this.rom=null;this.bufferv=[];this.minb=0;this.wasm={};this.msgv=[];this.port.onmessage=msg=>{if(msg.data?.wasm){this.prepareClient(msg.data.wasm,msg.data.r,msg.data.c).catch((e)=>{console.error("Failed to initialize audio thread.",e);});}else if(msg.data?.msg){this.msgv.push(msg.data.msg);}else{console.log(`AudioWorkletProcessor unexpected message`,msg);}};}process(i,o,p){if(!this.run||(this.minb<1))return true;let op=0;while(op<o[0][0].length){let updc=o[0][0].length-op;if(updc>this.minb)updc=this.minb;this.upd(updc);for(let chid=o[0].length;chid-->0;){const sb=this.bufferv[chid];if(sb){const src=new Float32Array(sb.buffer,sb.byteOffset+op*4,updc);const dst=new Float32Array(o[0][chid].buffer,o[0][chid].byteOffset+op*4,updc);dst.set(src);}}op+=updc;}return true;}prepareClient(s,rt,c){if(this.wi)throw new Error("Multiple audio init.");return WebAssembly.instantiate(s,{env:{sh_spcm:(chid,p,c)=>this.spb(chid,p,c),sh_log:p=>this.log(p),sh_mr:(p,a)=>this.rcv(p,a),}}).then(r=>{this.wi=r.instance;this.mem=new Uint8Array(this.wi.exports.memory.buffer);this.upd=this.wi.exports.sha_update;if(this.wi.exports.sha_init(rt,c)<0){throw new Error("sha_init failed");}}).then(()=>{this.run=true;});}spb(chid,p,c){if(this.run)return;this.bufferv[chid]=new Float32Array(this.mem.buffer,this.mem.byteOffset+p,c);this.minb=this.bufferv.reduce((a,v)=>((a<v?.length)?a:v.length),9999);}rcv(p,a){if(this.msgv.length<1)return 0;const msg=this.msgv[0];this.msgv.splice(0,1);if(msg.length<=a){new Uint8Array(this.mem.buffer,this.mem.byteOffset+p,msg.length).set(msg);}return msg.length;}log(p){}}registerProcessor("AWP",P);

Loading