diff --git a/src/media/audio/ringbuffer.cpp b/src/media/audio/ringbuffer.cpp index c1074301a1f0401d51d3bade980c97547814cc0e..b3859f6bb305b22519d60f6dc02eab45e77da00a 100644 --- a/src/media/audio/ringbuffer.cpp +++ b/src/media/audio/ringbuffer.cpp @@ -163,6 +163,7 @@ RingBuffer::hasNoReadOffsets() const void RingBuffer::put(std::shared_ptr<AudioFrame>&& data) { + std::lock_guard<std::mutex> l(writeLock_); resizer_.enqueue(resampler_.resample(std::move(data), format_)); } diff --git a/src/media/audio/ringbuffer.h b/src/media/audio/ringbuffer.h index 3b09644f9e8d53e1782d966fd1a44e93b20ced3f..de6ea39914577ad4822db2d8b8f63e24888d5f80 100644 --- a/src/media/audio/ringbuffer.h +++ b/src/media/audio/ringbuffer.h @@ -72,6 +72,7 @@ public: inline void setFormat(const AudioFormat& format) { + std::lock_guard<std::mutex> l(writeLock_); format_ = format; resizer_.setFormat(format, format.sample_rate / 50); } @@ -201,6 +202,7 @@ private: mutable std::mutex lock_; mutable std::condition_variable not_empty_; + std::mutex writeLock_; ReadOffsetMap readoffsets_;