diff --git a/components/codecs/lib/libhelix-aac-sbr.a b/components/codecs/lib/libhelix-aac-sbr.a index 4b56eb9b..b5b1fc4d 100644 Binary files a/components/codecs/lib/libhelix-aac-sbr.a and b/components/codecs/lib/libhelix-aac-sbr.a differ diff --git a/components/codecs/lib/libhelix-aac.a b/components/codecs/lib/libhelix-aac.a index f9d47457..9ad0703d 100644 Binary files a/components/codecs/lib/libhelix-aac.a and b/components/codecs/lib/libhelix-aac.a differ diff --git a/components/squeezelite/output_i2s.c b/components/squeezelite/output_i2s.c index 60fd0f90..a8790123 100644 --- a/components/squeezelite/output_i2s.c +++ b/components/squeezelite/output_i2s.c @@ -419,7 +419,11 @@ static int _i2s_write_frames(frames_t out_frames, bool silence, s32_t gainL, s32 memcpy(obuf + oframes * BYTES_PER_FRAME, silencebuf, out_frames * BYTES_PER_FRAME); } - output_visu_export(obuf + oframes * BYTES_PER_FRAME, out_frames, output.current_sample_rate, silence, (gainL + gainR) / 2); + // don't update visu if we don't have enough data in buffer + if (_buf_used(outputbuf) > outputbuf->size >> 2) { + output_visu_export(obuf + oframes * BYTES_PER_FRAME, out_frames, output.current_sample_rate, silence, (gainL + gainR) / 2); + } + oframes += out_frames; return out_frames; diff --git a/components/squeezelite/output_visu.c b/components/squeezelite/output_visu.c index df31006c..9fa7b001 100644 --- a/components/squeezelite/output_visu.c +++ b/components/squeezelite/output_visu.c @@ -22,7 +22,7 @@ #include "squeezelite.h" -#define VISUEXPORT_SIZE 2048 +#define VISUEXPORT_SIZE 512 EXT_BSS struct visu_export_s visu_export; static struct visu_export_s *visu = &visu_export; @@ -37,7 +37,7 @@ void output_visu_export(void *frames, frames_t out_frames, u32_t rate, bool sile return; } - // do not block, try to stuff data put wait for consumer to have used them + // do not block, try to stuff data but wait for consumer to have used them if (!pthread_mutex_trylock(&visu->mutex)) { // don't mix sample rates if (visu->rate != rate) visu->level = 0;