mirror of
https://github.com/Relintai/sdl2_frt.git
synced 2024-12-16 11:06:49 +01:00
audio: fix popping sounds caused by signed/unsigned conversion
When converting audio from signed to unsigned values of vice-versa the silence value chosen by SDL was the value of the device, not of the stream that the data was being put into. After conversion this would lead to a very high or low value, making the speaker jump to a extreme positon, leading to an audible noise whenever creating, destroying or playing scilence on a device that reqired such conversion.
This commit is contained in:
parent
f311e0a826
commit
554037a6f7
@ -577,7 +577,7 @@ SDL_BufferQueueDrainCallback(void *userdata, Uint8 *stream, int len)
|
||||
|
||||
if (len > 0) { /* fill any remaining space in the stream with silence. */
|
||||
SDL_assert(SDL_CountDataQueue(device->buffer_queue) == 0);
|
||||
SDL_memset(stream, device->spec.silence, len);
|
||||
SDL_memset(stream, device->callbackspec.silence, len);
|
||||
}
|
||||
}
|
||||
|
||||
@ -733,7 +733,7 @@ SDL_RunAudio(void *devicep)
|
||||
/* !!! FIXME: this should be LockDevice. */
|
||||
SDL_LockMutex(device->mixer_lock);
|
||||
if (SDL_AtomicGet(&device->paused)) {
|
||||
SDL_memset(data, device->spec.silence, data_len);
|
||||
SDL_memset(data, device->callbackspec.silence, data_len);
|
||||
} else {
|
||||
callback(udata, data, data_len);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user