After migrating to SDL2 interfaces there is noise during startup fix
this by initializng buffer as specification requires.
Per SDL_AudioCallback spec:
The callback must completely initialize the buffer; as of SDL 2.0, this buffer is not initialized before the callback is called. If there is nothing to play, the callback should fill the buffer with silence.
Signed-off-by: Amadeusz Sławiński <amade@asmblr.net>
git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@12480
d7cf8633-e32d-0410-b094-
e92efae38249
::stable-branch::merge=
83f8124af58307eae378846c9746b5d769673474
PartialLength2 = FrameCount * factor - PartialLength1;
memcpy(&stream[PartialLength1], &snd_renderbuffer->ring[0], PartialLength2);
PartialLength2 = FrameCount * factor - PartialLength1;
memcpy(&stream[PartialLength1], &snd_renderbuffer->ring[0], PartialLength2);
+
+ // As of SDL 2.0 buffer needs to be fully initialized, so fill leftover part with silence
+ // FIXME this is another place that assumes 8bit is always unsigned and others always signed
+ memset(&stream[PartialLength1 + PartialLength2], snd_renderbuffer->format.width == 1 ? 0x80 : 0, len - (PartialLength1 + PartialLength2));
memcpy(stream, &snd_renderbuffer->ring[StartOffset * factor], FrameCount * factor);
memcpy(stream, &snd_renderbuffer->ring[StartOffset * factor], FrameCount * factor);
+ // As of SDL 2.0 buffer needs to be fully initialized, so fill leftover part with silence
+ // FIXME this is another place that assumes 8bit is always unsigned and others always signed
+ memset(&stream[FrameCount * factor], snd_renderbuffer->format.width == 1 ? 0x80 : 0, len - (FrameCount * factor));
+ }
+
snd_renderbuffer->startframe += FrameCount;
if (FrameCount < RequestedFrames && developer_insane.integer && vid_activewindow)
snd_renderbuffer->startframe += FrameCount;
if (FrameCount < RequestedFrames && developer_insane.integer && vid_activewindow)