Merge pull request #100245 from Faless/web/audio_worklet_fallback

[Web] Restore ScriptProcessorNode audio driver fallback
This commit is contained in:
Thaddeus Crews 2024-12-10 14:15:43 -06:00
commit dfaf8074e0
No known key found for this signature in database
GPG Key ID: 62181B86FE9E5D84
4 changed files with 6 additions and 6 deletions

View File

@ -479,6 +479,8 @@ void AudioDriverWorklet::_capture_callback(int p_pos, int p_samples) {
driver->_audio_driver_capture(p_pos, p_samples);
}
#endif // THREADS_ENABLED
/// ScriptProcessorNode implementation
AudioDriverScriptProcessor *AudioDriverScriptProcessor::singleton = nullptr;
@ -497,5 +499,3 @@ Error AudioDriverScriptProcessor::create(int &p_buffer_samples, int p_channels)
void AudioDriverScriptProcessor::start(float *p_out_buf, int p_out_buf_size, float *p_in_buf, int p_in_buf_size) {
godot_audio_script_start(p_in_buf, p_in_buf_size, p_out_buf, p_out_buf_size, &_process_callback);
}
#endif // THREADS_ENABLED

View File

@ -169,6 +169,8 @@ public:
AudioDriverWorklet() { singleton = this; }
};
#endif // THREADS_ENABLED
class AudioDriverScriptProcessor : public AudioDriverWeb {
private:
static void _process_callback();
@ -178,7 +180,6 @@ private:
protected:
virtual Error create(int &p_buffer_size, int p_output_channels) override;
virtual void start(float *p_out_buf, int p_out_buf_size, float *p_in_buf, int p_in_buf_size) override;
virtual void finish_driver() override;
public:
virtual const char *get_name() const override { return "ScriptProcessor"; }
@ -191,6 +192,4 @@ public:
AudioDriverScriptProcessor() { singleton = this; }
};
#endif // THREADS_ENABLED
#endif // AUDIO_DRIVER_WEB_H

View File

@ -2160,7 +2160,7 @@ autoAddDeps(GodotAudioWorklet, '$GodotAudioWorklet');
mergeInto(LibraryManager.library, GodotAudioWorklet);
/*
* The ScriptProcessorNode API, used when threads are disabled.
* The ScriptProcessorNode API, used as a fallback if AudioWorklet is not available.
*/
const GodotAudioScript = {
$GodotAudioScript__deps: ['$GodotAudio'],

View File

@ -275,6 +275,7 @@ OS_Web::OS_Web() {
if (AudioDriverWeb::is_available()) {
audio_drivers.push_back(memnew(AudioDriverWorklet));
audio_drivers.push_back(memnew(AudioDriverScriptProcessor));
}
for (AudioDriverWeb *audio_driver : audio_drivers) {
AudioDriverManager::add_driver(audio_driver);