diff sv/audioio/AudioCallbackPlaySource.cpp @ 110:71e5f393b727

debugging TimeStretchFilter - adding safety margin to buffers
author lbajardsilogic
date Mon, 17 Sep 2007 08:07:23 +0000
parents d94ee3e8dfe1
children 66af7c1b10d9
line wrap: on
line diff
--- a/sv/audioio/AudioCallbackPlaySource.cpp	Fri Sep 14 16:50:30 2007 +0000
+++ b/sv/audioio/AudioCallbackPlaySource.cpp	Mon Sep 17 08:07:23 2007 +0000
@@ -33,7 +33,8 @@
 //#define DEBUG_AUDIO_PLAY_SOURCE 1
 //#define DEBUG_AUDIO_PLAY_SOURCE_PLAYING 1
 
-const size_t AudioCallbackPlaySource::m_ringBufferSize = 131071;
+//const size_t AudioCallbackPlaySource::m_ringBufferSize = 131071;
+const size_t AudioCallbackPlaySource::m_ringBufferSize = 1764000;
 
 AudioCallbackPlaySource::AudioCallbackPlaySource(ViewManager *manager) :
     m_viewManager(manager),
@@ -1558,6 +1559,20 @@
 	{
 		ib[c] = (float*) malloc(required*sizeof(float));
 		RingBuffer<float> *rb = getReadRingBuffer(c);
+		if (!rb) {
+            std::cerr << "WARNING: AudioCallbackPlaySource::applyRealTimeFilters: "
+                      << "No ring buffer available for channel " << c
+                      << ", returning no data here" << std::endl;
+            return;
+        }
+		size_t rs = rb->getReadSpace();
+		if (rs < required) {
+			std::cerr << "WARNING: AudioCallbackPlaySource::applyRealTimeFilters: "
+                      << "Ring buffer for channel " << c << " has only "
+                      << rs << " (of " << got << ") samples available, "
+                      << "exit" << std::endl;
+			return;
+		}
         if (rb) {
 			size_t gotHere = rb->peek(ib[c], got);
 			if (gotHere < got)