diff options
author | 2017-06-25 09:59:59 +0000 | |
---|---|---|
committer | 2017-06-25 18:28:43 +0000 | |
commit | 9788f622e2f76c0487e5f0c430e92be75be991ea (patch) | |
tree | 63a813522cd3b226146211d39055c3155339fe4b | |
parent | fe01a1342c41b33601a8cd93904335b5039feda7 (diff) |
Fix sound_sdl::sdl_callback, fill buffer with silence when underflow.
The problem is most noticeable when you are saving state, and the
save takes a relatively long time, short period of audio gets played
repeatedly, which is usually unpleasant.
I found out it's caused by sdl_sound::sdl_callback not fill the audio
buffer with silence when underflow occurs. According to
https://wiki.libsdl.org/SDL_AudioSpec, if there's nothing to play,
the callback should fill the buffer with silence.
I tested this change and the problem is gone.
-rw-r--r-- | src/osd/modules/sound/sdl_sound.cpp | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/src/osd/modules/sound/sdl_sound.cpp b/src/osd/modules/sound/sdl_sound.cpp index 6ea3af913d9..ad38fab4bab 100644 --- a/src/osd/modules/sound/sdl_sound.cpp +++ b/src/osd/modules/sound/sdl_sound.cpp @@ -359,6 +359,7 @@ static void sdl_callback(void *userdata, Uint8 *stream, int len) if (LOG_SOUND) fprintf(sound_log, "Underflow at sdl_callback: SPP=%d SBI=%d(%d) Len=%d\n", (int)thiz->stream_playpos, (int)sb_in, (int)thiz->stream_buffer_in, (int)len); + memset(stream, 0, len); return; } else if ((thiz->stream_playpos+len) > thiz->stream_buffer_size) |