From ed99d5e145b7875024cb8a6bbf4181a2e6c829ba Mon Sep 17 00:00:00 2001 From: pschatzmann Date: Mon, 9 Dec 2024 10:06:00 +0100 Subject: [PATCH] A2DPStream tx_write_timeout_ms --- src/AudioTools/AudioLibs/A2DPStream.h | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/AudioTools/AudioLibs/A2DPStream.h b/src/AudioTools/AudioLibs/A2DPStream.h index e7dd4b55b..22f3d2c27 100644 --- a/src/AudioTools/AudioLibs/A2DPStream.h +++ b/src/AudioTools/AudioLibs/A2DPStream.h @@ -54,6 +54,8 @@ class A2DPConfig { int delay_ms = 1; /// when a2dp source is active but has no data we generate silence data bool silence_on_nodata = false; + /// write timeout in ms: -1 is blocking write + int tx_write_timeout_ms = -1; // no timeout }; @@ -229,10 +231,16 @@ class A2DPStream : public AudioStream, public VolumeSupport { } // blocking write: if buffer is full we wait + int timeout = config.tx_write_timeout_ms; + int wait_time = 5; size_t free = a2dp_buffer.availableForWrite(); while(len > free){ LOGD("Waiting for buffer: writing %d > available %d", (int) len, (int) free); - delay(5); + if (timeout > 0) { + timeout -= wait_time; + if (timeout <= 0) return 0; + } + delay(wait_time); free = a2dp_buffer.availableForWrite(); } }