[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 05/23] sdlaudio: always clear the sample buffer
From: |
Volker Rümelin |
Subject: |
[PATCH 05/23] sdlaudio: always clear the sample buffer |
Date: |
Sun, 10 Jan 2021 11:02:21 +0100 |
Always fill the remaining audio callback buffer with silence.
SDL 2.0 doesn't initialize the audio callback buffer. This was
an incompatible change compared to SDL 1.2. For reference read
the SDL 1.2 to 2.0 migration guide.
Signed-off-by: Volker Rümelin <vr_qemu@t-online.de>
---
audio/sdlaudio.c | 33 ++++++++++++++++-----------------
1 file changed, 16 insertions(+), 17 deletions(-)
diff --git a/audio/sdlaudio.c b/audio/sdlaudio.c
index 68126a99ab..79eed23849 100644
--- a/audio/sdlaudio.c
+++ b/audio/sdlaudio.c
@@ -211,27 +211,26 @@ static void sdl_callback (void *opaque, Uint8 *buf, int
len)
SDLAudioState *s = &glob_sdl;
HWVoiceOut *hw = &sdl->hw;
- if (s->exit) {
- return;
- }
+ if (!s->exit) {
- /* dolog("callback: len=%d avail=%zu\n", len, hw->pending_emul); */
+ /* dolog("callback: len=%d avail=%zu\n", len, hw->pending_emul); */
- while (hw->pending_emul && len) {
- size_t write_len;
- ssize_t start = ((ssize_t) hw->pos_emul) - hw->pending_emul;
- if (start < 0) {
- start += hw->size_emul;
- }
- assert(start >= 0 && start < hw->size_emul);
+ while (hw->pending_emul && len) {
+ size_t write_len;
+ ssize_t start = (ssize_t)hw->pos_emul - hw->pending_emul;
+ if (start < 0) {
+ start += hw->size_emul;
+ }
+ assert(start >= 0 && start < hw->size_emul);
- write_len = MIN(MIN(hw->pending_emul, len),
- hw->size_emul - start);
+ write_len = MIN(MIN(hw->pending_emul, len),
+ hw->size_emul - start);
- memcpy(buf, hw->buf_emul + start, write_len);
- hw->pending_emul -= write_len;
- len -= write_len;
- buf += write_len;
+ memcpy(buf, hw->buf_emul + start, write_len);
+ hw->pending_emul -= write_len;
+ len -= write_len;
+ buf += write_len;
+ }
}
/* clear remaining buffer that we couldn't fill with data */
--
2.26.2
- [PATCH 00/23] next round of audio patches, Volker Rümelin, 2021/01/10
- [PATCH 02/23] audio: fix bit-rotted code, Volker Rümelin, 2021/01/10
- [PATCH 01/23] sdlaudio: remove leftover SDL1.2 code, Volker Rümelin, 2021/01/10
- [PATCH 04/23] sdlaudio: don't start playback in init routine, Volker Rümelin, 2021/01/10
- [PATCH 05/23] sdlaudio: always clear the sample buffer,
Volker Rümelin <=
- [PATCH 06/23] sdlaudio: fill remaining sample buffer with silence, Volker Rümelin, 2021/01/10
- [PATCH 07/23] sdlaudio: replace legacy functions with modern ones, Volker Rümelin, 2021/01/10
- [PATCH 03/23] sdlaudio: add -audiodev sdl,out.buffer-count option, Volker Rümelin, 2021/01/10