[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 05/30] sdlaudio: always clear the sample buffer
From: |
Gerd Hoffmann |
Subject: |
[PULL 05/30] sdlaudio: always clear the sample buffer |
Date: |
Fri, 15 Jan 2021 14:21:21 +0100 |
From: Volker RĂ¼melin <vr_qemu@t-online.de>
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>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Message-id: 9315afe5-5958-c0b4-ea1e-14769511a9d5@t-online.de
Message-Id: <20210110100239.27588-5-vr_qemu@t-online.de>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
audio/sdlaudio.c | 35 +++++++++++++++++------------------
1 file changed, 17 insertions(+), 18 deletions(-)
diff --git a/audio/sdlaudio.c b/audio/sdlaudio.c
index 68126a99ab32..79eed23849ea 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;
+ 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);
+
+ memcpy(buf, hw->buf_emul + start, write_len);
+ hw->pending_emul -= write_len;
+ len -= write_len;
+ buf += write_len;
}
- assert(start >= 0 && start < hw->size_emul);
-
- 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;
}
/* clear remaining buffer that we couldn't fill with data */
--
2.29.2
- [PULL 00/30] Audio 20210115 patches, Gerd Hoffmann, 2021/01/15
- [PULL 02/30] audio: fix bit-rotted code, Gerd Hoffmann, 2021/01/15
- [PULL 01/30] sdlaudio: remove leftover SDL1.2 code, Gerd Hoffmann, 2021/01/15
- [PULL 10/30] audio: break generic buffer dependency on mixing-engine, Gerd Hoffmann, 2021/01/15
- [PULL 20/30] dsoundaudio: replace GetForegroundWindow(), Gerd Hoffmann, 2021/01/15
- [PULL 11/30] sdlaudio: enable (in|out).mixing-engine=off, Gerd Hoffmann, 2021/01/15
- [PULL 08/30] audio: split pcm_ops function get_buffer_in, Gerd Hoffmann, 2021/01/15
- [PULL 18/30] paaudio: limit minreq to 75% of audio timer_rate, Gerd Hoffmann, 2021/01/15
- [PULL 03/30] sdlaudio: add -audiodev sdl,out.buffer-count option, Gerd Hoffmann, 2021/01/15
- [PULL 22/30] dsoundaudio: enable f32 audio sample format, Gerd Hoffmann, 2021/01/15
- [PULL 05/30] sdlaudio: always clear the sample buffer,
Gerd Hoffmann <=
- [PULL 04/30] sdlaudio: don't start playback in init routine, Gerd Hoffmann, 2021/01/15
- [PULL 12/30] audio: remove remaining unused plive code, Gerd Hoffmann, 2021/01/15
- [PULL 15/30] paaudio: wait until the playback stream is ready, Gerd Hoffmann, 2021/01/15
- [PULL 21/30] dsoundaudio: rename dsound_open(), Gerd Hoffmann, 2021/01/15
- [PULL 09/30] sdlaudio: add recording functions, Gerd Hoffmann, 2021/01/15
- [PULL 07/30] sdlaudio: replace legacy functions with modern ones, Gerd Hoffmann, 2021/01/15
- [PULL 27/30] audio: Fix lines over 90 characters, Gerd Hoffmann, 2021/01/15
- [PULL 06/30] sdlaudio: fill remaining sample buffer with silence, Gerd Hoffmann, 2021/01/15
- [PULL 28/30] audio: Don't use '%#' in format strings, Gerd Hoffmann, 2021/01/15
- [PULL 23/30] dsoundaudio: fix log message, Gerd Hoffmann, 2021/01/15