Преглед на файлове

store equalizer - release

Philippe G преди 3 години
родител
ревизия
192cb975e2
променени са 3 файла, в които са добавени 26 реда и са изтрити 3 реда
  1. 21 3
      components/squeezelite/equalizer.c
  2. 1 0
      components/squeezelite/equalizer.h
  3. 4 0
      components/squeezelite/output_embedded.c

+ 21 - 3
components/squeezelite/equalizer.c

@@ -7,13 +7,14 @@
  *  https://opensource.org/licenses/MIT
  *
  */
- 
+
+#include "nvs_utilities.h"
 #include "squeezelite.h" 
 #include "equalizer.h"
 #include "esp_equalizer.h"
- 
-#define EQ_BANDS	10
 
+#define EQ_BANDS 10
+ 
 static log_level loglevel = lINFO;
  
 static struct {
@@ -21,6 +22,20 @@ static struct {
 	float gain[EQ_BANDS];
 	bool update;
 } equalizer = { .update = true };
+
+/****************************************************************************************
+ * initialize equalizer
+ */
+void equalizer_init(void) {
+	s8_t *gain = get_nvs_value_alloc(NVS_TYPE_BLOB, "equalizer");
+	
+	if (!gain) gain = calloc(EQ_BANDS, sizeof(*gain));
+	
+	equalizer_update(gain);
+	free(gain);
+	
+	LOG_INFO("initializing equalizer");
+}	
  
 /****************************************************************************************
  * open equalizer
@@ -68,10 +83,13 @@ void equalizer_close(void) {
  * update equalizer gain
  */
 void equalizer_update(s8_t *gain) {
+	store_nvs_value_len(NVS_TYPE_BLOB, "equalizer", gain, EQ_BANDS * sizeof(*gain));
+	
 	for (int i = 0; i < EQ_BANDS; i++) equalizer.gain[i] = gain[i];
 	equalizer.update = true;
 }
 
+
 /****************************************************************************************
  * process equalizer 
  */

+ 1 - 0
components/squeezelite/equalizer.h

@@ -10,6 +10,7 @@
  
 #pragma once
 
+void equalizer_init(void);
 void equalizer_open(u32_t sample_rate);
 void equalizer_close(void);
 void equalizer_update(s8_t *gain);

+ 4 - 0
components/squeezelite/output_embedded.c

@@ -73,11 +73,15 @@ void output_init_embedded(log_level level, char *device, unsigned output_buf_siz
 	slimp_handler_chain = slimp_handler;
 	slimp_handler = handler;
 	
+	// init equalizer before backends
+	equalizer_init();
+	
 	memset(&output, 0, sizeof(output));
 	output_init_common(level, device, output_buf_size, rates, idle);
 	output.start_frames = FRAME_BLOCK;
 	output.rate_delay = rate_delay;
 	
+	
 	if (strcasestr(device, "BT ") || !strcasecmp(device, "BT")) {
 		LOG_INFO("init Bluetooth");
 		close_cb = &output_close_bt;