From 881aead42fc328fa66811e8b4e68a4a58daec887 Mon Sep 17 00:00:00 2001 From: philippe44 Date: Mon, 27 May 2019 13:19:11 -0700 Subject: [PATCH] corrected libfaad + added test_open back --- components/codecs/lib/libfaad.a | Bin 469038 -> 469026 bytes main/main.c | 2 +- main/output.c | 2 - main/output_bt.c | 17 ++++++-- ...ut_dac.c.nocompile => output_dac.c.sample} | 30 +++++++++---- main/sdkconfig.defaults | 40 ------------------ main/squeezelite.h | 3 +- 7 files changed, 39 insertions(+), 55 deletions(-) rename main/{output_dac.c.nocompile => output_dac.c.sample} (83%) delete mode 100644 main/sdkconfig.defaults diff --git a/components/codecs/lib/libfaad.a b/components/codecs/lib/libfaad.a index b56033492dc7c45ad5d70508388b9ce43d4c72f9..610a9d6c249ae28531c95b18e32c759ade999073 100644 GIT binary patch delta 8060 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 AvH$=8 diff --git a/main/main.c b/main/main.c index 953fa5ae..8be1dd37 100644 --- a/main/main.c +++ b/main/main.c @@ -750,7 +750,7 @@ int main(int argc, char **argv) { stream_init(log_stream, stream_buf_size); #if DACAUDIO - output_init_dac(log_output, output_buf_size, output_params, rates, rate_delay, idle); + output_init_dac(log_output, output_device, output_buf_size, output_params, rates, rate_delay, idle); #else if (!strcmp(output_device, "-")) { output_init_stdout(log_output, output_buf_size, output_params, rates, rate_delay); diff --git a/main/output.c b/main/output.c index 622b3d21..a63cea9e 100644 --- a/main/output.c +++ b/main/output.c @@ -386,14 +386,12 @@ void output_init_common(log_level level, const char *device, unsigned output_buf output.supported_rates[i] = rates[i]; } } -#ifndef DACAUDIO else { if (!test_open(output.device, output.supported_rates, user_rates)) { LOG_ERROR("unable to open output device: %s", output.device); exit(0); } } -#endif if (user_rates) { for (i = 0; i < MAX_SUPPORTED_SAMPLERATES; ++i) { diff --git a/main/output_bt.c b/main/output_bt.c index 959e6a2d..513c34ba 100644 --- a/main/output_bt.c +++ b/main/output_bt.c @@ -122,7 +122,7 @@ static char *bda2str(esp_bd_addr_t bda, char *str, size_t size) } -void output_init_dac(log_level level, unsigned output_buf_size, char *params, unsigned rates[], unsigned rate_delay, unsigned idle) { +void output_init_dac(log_level level, char *device, unsigned output_buf_size, char *params, unsigned rates[], unsigned rate_delay, unsigned idle) { loglevel = level; LOG_INFO("init output BT"); @@ -188,8 +188,8 @@ void output_init_dac(log_level level, unsigned output_buf_size, char *params, un /* * Bluetooth audio source init Start */ - - output_init_common(level, "-", output_buf_size, rates, idle); + device = "BT"; + output_init_common(level, device, output_buf_size, rates, idle); //#if LINUX || OSX || FREEBSD || POSIX // pthread_attr_t attr; @@ -531,6 +531,17 @@ static int32_t bt_app_a2d_data_cb(uint8_t *data, int32_t len) return frames * 4; } +bool test_open(const char *device, unsigned rates[], bool userdef_rates) { + memset(rates, 0, MAX_SUPPORTED_SAMPLERATES * sizeof(unsigned)); + if (!strcmp(device, "BT")) { + rates[0] = 44100; + } else { + unsigned _rates[] = { 96000, 88200, 48000, 44100, 32000, 0 }; + memcpy(rates, _rates, sizeof(_rates)); + } + return true; +} + static void a2d_app_heart_beat(void *arg) { bt_app_work_dispatch(bt_app_av_sm_hdlr, BT_APP_HEART_BEAT_EVT, NULL, 0, NULL); diff --git a/main/output_dac.c.nocompile b/main/output_dac.c.sample similarity index 83% rename from main/output_dac.c.nocompile rename to main/output_dac.c.sample index 44952bfe..7d755ff9 100644 --- a/main/output_dac.c.nocompile +++ b/main/output_dac.c.sample @@ -37,7 +37,7 @@ void set_volume(unsigned left, unsigned right) { UNLOCK; } -void output_init_dac(log_level level, unsigned output_buf_size, char *params, unsigned rates[], unsigned rate_delay, unsigned idle) { +void output_init_dac(log_level level, char *device, unsigned output_buf_size, char *params, unsigned rates[], unsigned rate_delay, unsigned idle) { loglevel = level; LOG_INFO("init output DAC"); @@ -58,13 +58,13 @@ void output_init_dac(log_level level, unsigned output_buf_size, char *params, un if (!strcmp(params, "24")) output.format = S24_3LE; if (!strcmp(params, "16")) output.format = S16_LE; } - + // ensure output rate is specified to avoid test open if (!rates[0]) { rates[0] = 44100; } - output_init_common(level, "-", output_buf_size, rates, idle); + output_init_common(level, device, output_buf_size, rates, idle); #if LINUX || OSX || FREEBSD || POSIX pthread_attr_t attr; @@ -119,7 +119,7 @@ static int _dac_write_frames(frames_t out_frames, bool silence, s32_t gainL, s32 #endif } else { - + obuf = silencebuf; #if !REPACK IF_DSD( @@ -143,7 +143,7 @@ static int _dac_write_frames(frames_t out_frames, bool silence, s32_t gainL, s32 static void *output_thread() { // buffer to hold output data so we can block on writing outside of output lock, allocated on init u8_t *obuf = malloc(FRAME_BLOCK * BYTES_PER_FRAME); - unsigned frames = 0; + int frames = 0; #if REPACK LOCK; @@ -161,7 +161,9 @@ static void *output_thread() { } UNLOCK; -#endif +#else + bytes_per_frame = BYTES_PER_FRAME; +#endif while (running) { @@ -183,8 +185,13 @@ static void *output_thread() { UNLOCK; if (frames) { - // do something with some of these frames... - usleep((frames * 1000 * 1000) / output.current_sample_rate); + if (output.device[0] == '-' && memcmp(optr, silencebuf, frames * bytes_per_frame)) { + fwrite(obuf, bytes_per_frame, frames, stdout); + LOG_INFO("writing frames %d", frames); + } else { + // do something with some of these frames... + usleep((frames * 1000 * 1000) / output.current_sample_rate); + } frames = 0; } else { usleep((FRAME_BLOCK * 1000 * 1000) / output.current_sample_rate); @@ -195,3 +202,10 @@ static void *output_thread() { return 0; } +bool test_open(const char *device, unsigned rates[], bool userdef_rates) { + unsigned _rates[] = { 96000, 88200, 48000, 44100, 32000, 0 }; + memcpy(rates, _rates, sizeof(_rates)); + return true; +} + + diff --git a/main/sdkconfig.defaults b/main/sdkconfig.defaults deleted file mode 100644 index 91c40591..00000000 --- a/main/sdkconfig.defaults +++ /dev/null @@ -1,40 +0,0 @@ -# Override some defaults so BT stack is enabled and -# Classic BT is enabled -CONFIG_BT_ENABLED=y -CONFIG_BTDM_CONTROLLER_MODE_BLE_ONLY= -CONFIG_BTDM_CONTROLLER_MODE_BR_EDR_ONLY=y -CONFIG_BTDM_CONTROLLER_MODE_BTDM= -CONFIG_BLUEDROID_ENABLED=y -CONFIG_CLASSIC_BT_ENABLED=y -CONFIG_A2DP_ENABLE=y -CONFIG_BT_SPP_ENABLED=n -CONFIG_GATTS_ENABLE=n -CONFIG_GATTC_ENABLE=n -CONFIG_BLE_SMP_ENABLE=n -SW_COEXIST_PREFERENCE_BALANCE=y -#enable SPIRAM -CONFIG_SPIRAM_SUPPORT=y -CONFIG_SPIRAM_BOOT_INIT=y -CONFIG_SPIRAM_USE_MALLOC=y -CONFIG_SPIRAM_TYPE_AUTO=y -CONFIG_SPIRAM_SIZE=-1 -CONFIG_SPIRAM_SPEED_40M=y -CONFIG_SPIRAM_MEMTEST=y -CONFIG_SPIRAM_CACHE_WORKAROUND=y -CONFIG_SPIRAM_BANKSWITCH_ENABLE=y -CONFIG_SPIRAM_BANKSWITCH_RESERVE=8 -CONFIG_SPIRAM_MALLOC_RESERVE_INTERNAL=32768 -CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=2048 -CONFIG_PICO_PSRAM_CS_IO=10 -CONFIG_MAIN_TASK_STACK_SIZE=8000 -CONFIG_PARTITION_TABLE_CUSTOM=y -CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" -CONFIG_PARTITION_TABLE_FILENAME="partitions.csv" -CONFIG_PARTITION_TABLE_OFFSET=0x8000 -CONFIG_PARTITION_TABLE_MD5=y -# CPU & threads options -ESP32_DEFAULT_CPU_FREQ_240=y -CONFIG_ESP32_DEFAULT_PTHREAD_CORE_NO_AFFINITY= -CONFIG_ESP32_DEFAULT_PTHREAD_CORE_0= -CONFIG_ESP32_DEFAULT_PTHREAD_CORE_1=y -CONFIG_ESP32_PTHREAD_TASK_CORE_DEFAULT=1 diff --git a/main/squeezelite.h b/main/squeezelite.h index 18b23194..98c048b6 100644 --- a/main/squeezelite.h +++ b/main/squeezelite.h @@ -723,7 +723,8 @@ void _pa_open(void); // output_dac.c #if DACAUDIO void set_volume(unsigned left, unsigned right); -void output_init_dac(log_level level, unsigned output_buf_size, char *params, unsigned rates[], unsigned rate_delay, unsigned idle); +bool test_open(const char *device, unsigned rates[], bool userdef_rates); +void output_init_dac(log_level level, char *device, unsigned output_buf_size, char *params, unsigned rates[], unsigned rate_delay, unsigned idle); void output_close_dac(void); #endif