mirror of
https://github.com/godotengine/godot.git
synced 2025-01-30 21:33:18 +08:00
Merge pull request #100245 from Faless/web/audio_worklet_fallback
[Web] Restore ScriptProcessorNode audio driver fallback
This commit is contained in:
commit
dfaf8074e0
@ -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
|
||||
|
@ -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
|
||||
|
@ -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'],
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user