Pārlūkot izejas kodu

optimization for AAC-SBR

Philippe G 4 gadi atpakaļ
vecāks
revīzija
0f792d71ee

BIN
components/codecs/lib/libhelix-aac-sbr.a


BIN
components/codecs/lib/libhelix-aac.a


+ 5 - 1
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;

+ 2 - 2
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;