#javascript #audio-worklet
#javascript #аудио-worklet
Вопрос:
Мне нужно, чтобы мой worklet использовал функцию, которая находится в вызывающем TS-файле. Поскольку в postMessage разрешены только строки и числа. Мне трудно передать функцию. Возможно ли это вообще?
calling.ts
// processAudio is the function (This is how i send data to worklet function)
this.socketWorkletNode.port.postMessage({
type: 'setState', state: state,
processAudio: this.filterFunctions.processAudio
});
worklet.js
class audio_process_worklet {
...
handleMessage_(event) {
// If process function is available then set it in the class
if(event.data.processAudio) {
this.processedData = event.data.processAudio(this.audioData);
}
}
...
}
Подробнее: причина, по которой мне нужно передать функцию, заключается в том, что это функция, которую я получил через WebAssembly. На самом деле это функция, написанная в коде C. Я скомпилировал его как файл WASM с помощью компилятора emcc и передал файл с сервера. Используя модуль WebAssembly в браузере, я получаю функцию.
Комментарии:
1. Вам нужно будет включить вашу WebAssembly как часть кода, загружаемого в worklet при его создании.
2. Я довольно новичок в worklets и WebAssembly. У вас есть какой-нибудь пример, как это можно сделать? Я бы мне очень помог. Я попытался запустить WebAssembly внутри самого worklet. Но он не запускается, поскольку он сказал, что он не определен. Но в соответствии с JS они доступны во всем мире, верно!!!