mirror of
https://github.com/godotengine/godot.git
synced 2025-10-20 00:13:30 +00:00
[HTML5] Refactor audio drivers. Implement AudioWorklet w/o threads.
Performances are not great in general, bad on Firefox, on Chrome, well, it could be an improvement. Leave it as a fallback for now, but can be forced via project settings if desired (or custom JavaScript logic via the "args" option). I'm actually surprised this works, it involves so many allocations, but there's no way around it when SharedArrayBuffer is not available :(.
This commit is contained in:
parent
e902347a8c
commit
246334b836
7 changed files with 339 additions and 154 deletions
|
@ -63,9 +63,7 @@ void OS_JavaScript::initialize() {
|
|||
}
|
||||
|
||||
void OS_JavaScript::resume_audio() {
|
||||
if (audio_driver_javascript) {
|
||||
audio_driver_javascript->resume();
|
||||
}
|
||||
AudioDriverJavaScript::resume();
|
||||
}
|
||||
|
||||
void OS_JavaScript::set_main_loop(MainLoop *p_main_loop) {
|
||||
|
@ -101,10 +99,10 @@ void OS_JavaScript::delete_main_loop() {
|
|||
|
||||
void OS_JavaScript::finalize() {
|
||||
delete_main_loop();
|
||||
if (audio_driver_javascript) {
|
||||
memdelete(audio_driver_javascript);
|
||||
audio_driver_javascript = nullptr;
|
||||
for (AudioDriverJavaScript *driver : audio_drivers) {
|
||||
memdelete(driver);
|
||||
}
|
||||
audio_drivers.clear();
|
||||
}
|
||||
|
||||
// Miscellaneous
|
||||
|
@ -229,8 +227,13 @@ OS_JavaScript::OS_JavaScript() {
|
|||
setenv("LANG", locale_ptr, true);
|
||||
|
||||
if (AudioDriverJavaScript::is_available()) {
|
||||
audio_driver_javascript = memnew(AudioDriverJavaScript);
|
||||
AudioDriverManager::add_driver(audio_driver_javascript);
|
||||
#ifdef NO_THREADS
|
||||
audio_drivers.push_back(memnew(AudioDriverScriptProcessor));
|
||||
#endif
|
||||
audio_drivers.push_back(memnew(AudioDriverWorklet));
|
||||
}
|
||||
for (int i = 0; i < audio_drivers.size(); i++) {
|
||||
AudioDriverManager::add_driver(audio_drivers[i]);
|
||||
}
|
||||
|
||||
idb_available = godot_js_os_fs_is_persistent();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue