MCPcopy Create free account
hub / github.com/modelscope/FunASR / connWorklet

Function connWorklet

runtime/html5/static/recorder-core.js:189–306  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

187
188//===================连接方式二=========================
189var connWorklet=function(){
190 //尝试开启AudioWorklet处理
191 isWebM=stream.isWebM=false;
192 _Disconn_r(stream);
193
194 isWorklet=stream.isWorklet=!oldFn || Recorder[ConnectEnableWorklet];
195 var AwNode=window.AudioWorkletNode;
196 if(!(isWorklet && ctx[audioWorklet] && AwNode)){
197 oldScript();//被禁用 或 不支持,直接使用老的
198 return;
199 };
200 var clazzUrl=function(){
201 var xf=function(f){return f.toString().replace(/^function|DEL_/g,"").replace(/\$RA/g,recAudioWorklet)};
202 var clazz='class '+RecProc+' extends AudioWorkletProcessor{';
203 clazz+="constructor "+xf(function(option){
204 DEL_super(option);
205 var This=this,bufferSize=option.processorOptions.bufferSize;
206 This.bufferSize=bufferSize;
207 This.buffer=new Float32Array(bufferSize*2);//乱给size搞乱缓冲区不管
208 This.pos=0;
209 This.port.onmessage=function(e){
210 if(e.data.kill){
211 This.kill=true;
212 console.log("$RA kill call");
213 }
214 };
215 console.log("$RA .ctor call", option);
216 });
217
218 //https://developer.mozilla.org/en-US/docs/Web/API/AudioWorkletProcessor/process 每次回调128个采样数据,1秒375次回调,高频导致移动端性能问题,结果就是回调次数缺斤少两,进而导致丢失数据,PC端似乎没有性能问题
219 clazz+="process "+xf(function(input,b,c){//需要等到ctx激活后才会有回调
220 var This=this,bufferSize=This.bufferSize;
221 var buffer=This.buffer,pos=This.pos;
222 input=(input[0]||[])[0]||[];
223 if(input.length){
224 buffer.set(input,pos);
225 pos+=input.length;
226
227 var len=~~(pos/bufferSize)*bufferSize;
228 if(len){
229 this.port.postMessage({ val: buffer.slice(0,len) });
230
231 var more=buffer.subarray(len,pos);
232 buffer=new Float32Array(bufferSize*2);
233 buffer.set(more);
234 pos=more.length;
235 This.buffer=buffer;
236 }
237 This.pos=pos;
238 }
239 return !This.kill;
240 });
241 clazz+='}'
242 +'try{'
243 +'registerProcessor("'+RecProc+'", '+RecProc+')'
244 +'}catch(e){'
245 +'console.error("'+recAudioWorklet+'注册失败",e)'
246 +'}';

Callers 1

connWebMFunction · 0.70

Calls 7

resumeMethod · 0.80
_Disconn_rFunction · 0.70
oldScriptFunction · 0.70
awNextFunction · 0.70
CLogFunction · 0.70
createNodeFunction · 0.70
clazzUrlFunction · 0.70

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…