diff options
Diffstat (limited to 'src/SampleQueue.h')
-rw-r--r-- | src/SampleQueue.h | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/SampleQueue.h b/src/SampleQueue.h index dd01986..646f3dd 100644 --- a/src/SampleQueue.h +++ b/src/SampleQueue.h @@ -120,10 +120,12 @@ public: /*! Wait until len elements in the queue are available, * and then fill the buf. If the timeout_ms (expressed in milliseconds * expires), fill the available number of elements. + * Also update the overrun variable with the information + * of how many overruns we saw since the last pop. * * \return the number of elemets written into buf */ - size_t pop_wait(T* buf, size_t len, int timeout_ms) + size_t pop_wait(T* buf, size_t len, int timeout_ms, size_t* overruns = NULL) { assert(len % (m_channels * m_bytes_per_sample) == 0); @@ -132,6 +134,11 @@ public: #endif std::unique_lock<std::mutex> lock(m_mutex); + if (overruns) { + *overruns = m_overruns; + m_overruns = 0; + } + auto time_start = std::chrono::steady_clock::now(); const auto timeout = std::chrono::milliseconds(timeout_ms); |