summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/VLCInput.cpp16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/VLCInput.cpp b/src/VLCInput.cpp
index 555b1e1..6b7a4bb 100644
--- a/src/VLCInput.cpp
+++ b/src/VLCInput.cpp
@@ -111,10 +111,20 @@ int VLCInput::prepare()
void VLCInput::preRender(uint8_t** pp_pcm_buffer, size_t size)
{
- boost::mutex::scoped_lock lock(m_queue_mutex);
+ const size_t max_length = 20 * size;
- m_current_buf.resize(size);
- *pp_pcm_buffer = &m_current_buf[0];
+ for (;;) {
+ boost::mutex::scoped_lock lock(m_queue_mutex);
+
+ if (m_queue.size() < max_length) {
+ m_current_buf.resize(size);
+ *pp_pcm_buffer = &m_current_buf[0];
+ return;
+ }
+
+ lock.unlock();
+ boost::this_thread::sleep(boost::posix_time::milliseconds(1));
+ }
}
void VLCInput::postRender(uint8_t* p_pcm_buffer, size_t size)