Tune ALSA parameters to avoid underruns

Fixes frequent underruns on Vero 4K
This commit is contained in:
Cameron Gutman 2022-11-01 00:08:43 -05:00
parent cb4b5d55b5
commit 30b563a2fc
2 changed files with 3 additions and 5 deletions

View File

@ -57,8 +57,8 @@ static int alsa_renderer_init(int audioConfiguration, POPUS_MULTISTREAM_CONFIGUR
snd_pcm_hw_params_t *hw_params;
snd_pcm_sw_params_t *sw_params;
snd_pcm_uframes_t period_size = samplesPerFrame * FRAME_BUFFER;
snd_pcm_uframes_t buffer_size = 2 * period_size;
snd_pcm_uframes_t period_size = (opusConfig->sampleRate * 20) / 1000; // 20 ms period
snd_pcm_uframes_t buffer_size = 3 * period_size; // 60 ms buffer
unsigned int sampleRate = opusConfig->sampleRate;
char* audio_device = (char*) context;
@ -84,7 +84,7 @@ static int alsa_renderer_init(int audioConfiguration, POPUS_MULTISTREAM_CONFIGUR
CHECK_RETURN(snd_pcm_sw_params_malloc(&sw_params));
CHECK_RETURN(snd_pcm_sw_params_current(handle, sw_params));
CHECK_RETURN(snd_pcm_sw_params_set_avail_min(handle, sw_params, period_size));
CHECK_RETURN(snd_pcm_sw_params_set_start_threshold(handle, sw_params, 1));
CHECK_RETURN(snd_pcm_sw_params_set_start_threshold(handle, sw_params, period_size));
CHECK_RETURN(snd_pcm_sw_params(handle, sw_params));
snd_pcm_sw_params_free(sw_params);

View File

@ -21,8 +21,6 @@
#include <Limelight.h>
#define FRAME_BUFFER 12
#ifdef HAVE_ALSA
extern AUDIO_RENDERER_CALLBACKS audio_callbacks_alsa;
#endif