audio-worklet-source-phase.js (1228B)
1 import source modSource from './worker.wasm'; 2 3 class AudioProcessor extends AudioWorkletProcessor { 4 constructor(...args) { 5 super(...args); 6 let port = this.port; 7 8 port.onmessage = (e) => { 9 let staticCheck = false; 10 let dynamicCheck = false; 11 const pm = 12 (x) => { 13 const message = { 14 value: x, 15 staticCheck: staticCheck, 16 dynamicCheck: dynamicCheck 17 }; 18 port.postMessage(message); 19 } 20 21 staticCheck = modSource instanceof WebAssembly.Module; 22 // `import.source` should fail because dynamic imports aren't supported 23 // in worklets. 24 let import_promise = import.source('./execute-start.wasm'); 25 import_promise 26 .catch((e) => { 27 dynamicCheck = e instanceof TypeError; 28 }) 29 .then(() => { 30 // worker.wasm will call pm with the result, so instantiate this 31 // after the dynamic check. 32 WebAssembly.instantiate( 33 modSource, {'./worker-helper.js': {'pm': pm}}); 34 }); 35 }; 36 } 37 38 process(inputs, outputs, parameters) { 39 return true; 40 } 41 } 42 43 registerProcessor('audio-processor', AudioProcessor);