fix audio overrun
This commit is contained in:
parent
fad46137a0
commit
6a029b7e79
@ -256,6 +256,7 @@ void audio_play(const char *path,
|
|||||||
request.freq = AUDIO_FREQUENCY;
|
request.freq = AUDIO_FREQUENCY;
|
||||||
request.format = AUDIO_F32;
|
request.format = AUDIO_F32;
|
||||||
request.channels = 2;
|
request.channels = 2;
|
||||||
|
request.samples = 4096;
|
||||||
#ifndef TWN_FEATURE_PUSH_AUDIO
|
#ifndef TWN_FEATURE_PUSH_AUDIO
|
||||||
request.callback = audio_callback;
|
request.callback = audio_callback;
|
||||||
#endif
|
#endif
|
||||||
|
@ -226,6 +226,9 @@ static void main_loop(void) {
|
|||||||
|
|
||||||
/* TODO: make it works when ctx.ticks_per_second != 60 */
|
/* TODO: make it works when ctx.ticks_per_second != 60 */
|
||||||
#ifdef TWN_FEATURE_PUSH_AUDIO
|
#ifdef TWN_FEATURE_PUSH_AUDIO
|
||||||
|
uint64_t const queued_frames = SDL_GetQueuedAudioSize(ctx.audio_device) / sizeof (float) / 2;
|
||||||
|
if (queued_frames >= 4096 * 2)
|
||||||
|
SDL_ClearQueuedAudio(ctx.audio_device);
|
||||||
static uint8_t audio_buffer[(AUDIO_FREQUENCY / 60) * sizeof (float) * 2];
|
static uint8_t audio_buffer[(AUDIO_FREQUENCY / 60) * sizeof (float) * 2];
|
||||||
if (ctx.audio_initialized) {
|
if (ctx.audio_initialized) {
|
||||||
audio_callback(NULL, audio_buffer, sizeof audio_buffer);
|
audio_callback(NULL, audio_buffer, sizeof audio_buffer);
|
||||||
|
Loading…
Reference in New Issue
Block a user