alsa: don't spam console if underrun

This commit is contained in:
Flyinghead 2019-05-20 19:13:08 +02:00
parent 07b3f83343
commit 4cfcf2ea83
1 changed files with 2 additions and 19 deletions

View File

@ -159,30 +159,13 @@ static u32 alsa_push(void* frame, u32 samples, bool wait)
if (rc == -EPIPE) if (rc == -EPIPE)
{ {
/* EPIPE means underrun */ /* EPIPE means underrun */
fprintf(stderr, "ALSA: underrun occurred\n");
snd_pcm_prepare(handle); snd_pcm_prepare(handle);
// Write some silence then our samples // Write some silence then our samples
const size_t silence_size = period_size * 4; const size_t silence_size = period_size * 4;
void *silence = alloca(silence_size * 4); void *silence = alloca(silence_size * 4);
memset(silence, 0, silence_size * 4); memset(silence, 0, silence_size * 4);
rc = snd_pcm_writei(handle, silence, silence_size); snd_pcm_writei(handle, silence, silence_size);
if (rc < 0) snd_pcm_writei(handle, frame, samples);
fprintf(stderr, "ALSA: error from writei(silence): %s\n", snd_strerror(rc));
else if (rc < silence_size)
fprintf(stderr, "ALSA: short write from writei(silence): %d/%ld frames\n", rc, silence_size);
rc = snd_pcm_writei(handle, frame, samples);
if (rc < 0)
fprintf(stderr, "ALSA: error from writei(again): %s\n", snd_strerror(rc));
else if (rc < samples)
fprintf(stderr, "ALSA: short write from writei(again): %d/%d frames\n", rc, samples);
}
else if (rc < 0)
{
fprintf(stderr, "ALSA: error from writei: %s\n", snd_strerror(rc));
}
else if (rc != samples)
{
fprintf(stderr, "ALSA: short write, wrote %d frames of %d\n", rc, samples);
} }
return 1; return 1;
} }