From a55bac4306042c9d23e04d405de0cf1b666cd129 Mon Sep 17 00:00:00 2001 From: Sebastien Leclerc Date: Sat, 22 Jun 2019 08:54:17 -0400 Subject: [PATCH] Stabilize sync on A2DP --- components/platform_esp32/platform_esp32.c | 7 ++++--- main/output_dac.c | 7 +++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/components/platform_esp32/platform_esp32.c b/components/platform_esp32/platform_esp32.c index de086bb7..399e2658 100644 --- a/components/platform_esp32/platform_esp32.c +++ b/components/platform_esp32/platform_esp32.c @@ -295,6 +295,9 @@ static int32_t bt_app_a2d_data_cb(uint8_t *data, int32_t len) SET_MIN_MAX(len,req); TIME_MEASUREMENT_START(start_timer); LOCK; + output.device_frames = 0; // todo: check if this is the right way do to this. + output.updated = gettime_ms(); + output.frames_played_dmp = output.frames_played; SET_MIN_MAX_SIZED(_buf_used(outputbuf),bt,outputbuf->size); do { avail_data = _output_frames( wanted_len/BYTES_PER_FRAME )*BYTES_PER_FRAME; // Keep the transfer buffer full @@ -304,9 +307,7 @@ static int32_t bt_app_a2d_data_cb(uint8_t *data, int32_t len) { SET_MIN_MAX(wanted_len, under); } - output.device_frames = 0; // todo: check if this is the right way do to this. - output.updated = gettime_ms(); - output.frames_played_dmp = output.frames_played; + UNLOCK; SET_MIN_MAX(TIME_MEASUREMENT_GET(start_timer),lock_out_time); SET_MIN_MAX((len-wanted_len), rec); diff --git a/main/output_dac.c b/main/output_dac.c index f5333bde..f7499d3e 100644 --- a/main/output_dac.c +++ b/main/output_dac.c @@ -291,6 +291,9 @@ static void *output_thread_dac() { continue; } LOG_SDEBUG("Current buffer free: %10d, cont read: %10d",_buf_space(dacbuffer),_buf_cont_read(dacbuffer)); + output.device_frames =0; + output.updated = gettime_ms(); + output.frames_played_dmp = output.frames_played; do{ // fill our buffer @@ -313,7 +316,6 @@ static void *output_thread_dac() { SET_MIN_MAX_SIZED(_buf_used(dacbuffer),loci2sbuf,dacbuffer->size); bytes_to_send_i2s = _buf_cont_read(dacbuffer); SET_MIN_MAX(bytes_to_send_i2s,i2savailable); - int pass=0; i2s_total_bytes_written=0; while (bytes_to_send_i2s>0 ) @@ -353,9 +355,6 @@ static void *output_thread_dac() { SET_MIN_MAX(bytes_to_send_i2s,i2savailable); } - output.device_frames =0; - output.updated = gettime_ms(); - output.frames_played_dmp = output.frames_played; /*