mirror of
https://github.com/godotengine/godot
synced 2024-09-30 06:11:28 +00:00
Fix audio crackling issues due to incorrect WASAPI buffer size
(cherry picked from commit 179b0786c6
)
This commit is contained in:
parent
60867e63be
commit
cd118f80c6
|
@ -739,12 +739,17 @@ void AudioDriverWASAPI::thread_func(void *p_udata) {
|
|||
ad->start_counting_ticks();
|
||||
|
||||
if (avail_frames > 0 && ad->audio_output.audio_client) {
|
||||
UINT32 buffer_size;
|
||||
UINT32 cur_frames;
|
||||
bool invalidated = false;
|
||||
HRESULT hr = ad->audio_output.audio_client->GetCurrentPadding(&cur_frames);
|
||||
HRESULT hr = ad->audio_output.audio_client->GetBufferSize(&buffer_size);
|
||||
if (hr != S_OK) {
|
||||
ERR_PRINT("WASAPI: GetBufferSize error");
|
||||
}
|
||||
hr = ad->audio_output.audio_client->GetCurrentPadding(&cur_frames);
|
||||
if (hr == S_OK) {
|
||||
// Check how much frames are available on the WASAPI buffer
|
||||
UINT32 write_frames = MIN(ad->buffer_frames - cur_frames, avail_frames);
|
||||
UINT32 write_frames = MIN(buffer_size - cur_frames, avail_frames);
|
||||
if (write_frames > 0) {
|
||||
BYTE *buffer = nullptr;
|
||||
hr = ad->audio_output.render_client->GetBuffer(write_frames, &buffer);
|
||||
|
|
Loading…
Reference in a new issue