mirror of
https://github.com/godotengine/godot.git
synced 2026-01-08 00:25:01 +03:00
Merge pull request #52695 from Faless/js/4.x_audio_mix_rate
[HTML5] Use browser mix rate by default on the Web.
This commit is contained in:
@@ -108,7 +108,7 @@ Error AudioDriverJavaScript::init() {
|
||||
mix_rate = GLOBAL_GET("audio/driver/mix_rate");
|
||||
int latency = GLOBAL_GET("audio/driver/output_latency");
|
||||
|
||||
channel_count = godot_audio_init(mix_rate, latency, &_state_change_callback, &_latency_update_callback);
|
||||
channel_count = godot_audio_init(&mix_rate, latency, &_state_change_callback, &_latency_update_callback);
|
||||
buffer_length = closest_power_of_2((latency * mix_rate / 1000));
|
||||
#ifndef NO_THREADS
|
||||
node = memnew(WorkletNode);
|
||||
|
||||
@@ -38,7 +38,7 @@ extern "C" {
|
||||
#include "stddef.h"
|
||||
|
||||
extern int godot_audio_is_available();
|
||||
extern int godot_audio_init(int p_mix_rate, int p_latency, void (*_state_cb)(int), void (*_latency_cb)(float));
|
||||
extern int godot_audio_init(int *p_mix_rate, int p_latency, void (*_state_cb)(int), void (*_latency_cb)(float));
|
||||
extern void godot_audio_resume();
|
||||
|
||||
extern int godot_audio_capture_start();
|
||||
|
||||
@@ -37,10 +37,14 @@ const GodotAudio = {
|
||||
interval: 0,
|
||||
|
||||
init: function (mix_rate, latency, onstatechange, onlatencyupdate) {
|
||||
const ctx = new (window.AudioContext || window.webkitAudioContext)({
|
||||
sampleRate: mix_rate,
|
||||
// latencyHint: latency / 1000 // Do not specify, leave 'interactive' for good performance.
|
||||
});
|
||||
const opts = {};
|
||||
// If mix_rate is 0, let the browser choose.
|
||||
if (mix_rate) {
|
||||
opts['sampleRate'] = mix_rate;
|
||||
}
|
||||
// Do not specify, leave 'interactive' for good performance.
|
||||
// opts['latencyHint'] = latency / 1000;
|
||||
const ctx = new (window.AudioContext || window.webkitAudioContext)(opts);
|
||||
GodotAudio.ctx = ctx;
|
||||
ctx.onstatechange = function () {
|
||||
let state = 0;
|
||||
@@ -159,7 +163,10 @@ const GodotAudio = {
|
||||
godot_audio_init: function (p_mix_rate, p_latency, p_state_change, p_latency_update) {
|
||||
const statechange = GodotRuntime.get_func(p_state_change);
|
||||
const latencyupdate = GodotRuntime.get_func(p_latency_update);
|
||||
return GodotAudio.init(p_mix_rate, p_latency, statechange, latencyupdate);
|
||||
const mix_rate = GodotRuntime.getHeapValue(p_mix_rate, 'i32');
|
||||
const channels = GodotAudio.init(mix_rate, p_latency, statechange, latencyupdate);
|
||||
GodotRuntime.setHeapValue(p_mix_rate, GodotAudio.ctx.sampleRate, 'i32');
|
||||
return channels;
|
||||
},
|
||||
|
||||
godot_audio_resume__sig: 'v',
|
||||
|
||||
Reference in New Issue
Block a user