comparison render_sdl.c @ 1589:780604a036e4

Limit underflow warning spam
author Michael Pavone <pavone@retrodev.com>
date Wed, 20 Jun 2018 22:49:21 -0700
parents 348814d5b73f
children 220ede292e97
comparison
equal deleted inserted replaced
1588:348814d5b73f 1589:780604a036e4
188 static int32_t cur_min_buffered; 188 static int32_t cur_min_buffered;
189 static uint32_t min_remaining_buffer; 189 static uint32_t min_remaining_buffer;
190 static void audio_callback_drc(void *userData, uint8_t *byte_stream, int len) 190 static void audio_callback_drc(void *userData, uint8_t *byte_stream, int len)
191 { 191 {
192 memset(byte_stream, 0, len); 192 memset(byte_stream, 0, len);
193 if (cur_min_buffered < 0) {
194 //underflow last frame, but main thread hasn't gotten a chance to call SDL_PauseAudio yet
195 return;
196 }
193 cur_min_buffered = 0x7FFFFFFF; 197 cur_min_buffered = 0x7FFFFFFF;
194 min_remaining_buffer = 0xFFFFFFFF; 198 min_remaining_buffer = 0xFFFFFFFF;
195 for (uint8_t i = 0; i < num_audio_sources; i++) 199 for (uint8_t i = 0; i < num_audio_sources; i++)
196 { 200 {
197 201
1434 1438
1435 if (cur_min_buffered < 0) { 1439 if (cur_min_buffered < 0) {
1436 adjust_ratio = max_adjust; 1440 adjust_ratio = max_adjust;
1437 SDL_PauseAudio(1); 1441 SDL_PauseAudio(1);
1438 last_buffered = NO_LAST_BUFFERED; 1442 last_buffered = NO_LAST_BUFFERED;
1443 cur_min_buffered = 0;
1439 } else { 1444 } else {
1440 adjust_ratio = -1.0 * average_change / ((float)sample_rate / (float)source_hz); 1445 adjust_ratio = -1.0 * average_change / ((float)sample_rate / (float)source_hz);
1441 adjust_ratio /= 2.5 * source_hz; 1446 adjust_ratio /= 2.5 * source_hz;
1442 if (fabsf(adjust_ratio) > max_adjust) { 1447 if (fabsf(adjust_ratio) > max_adjust) {
1443 adjust_ratio = adjust_ratio > 0 ? max_adjust : -max_adjust; 1448 adjust_ratio = adjust_ratio > 0 ? max_adjust : -max_adjust;