changeset 84:51a12971e10e

specify the number of channels of the source to the filters
author lbajardsilogic
date Fri, 22 Jun 2007 13:35:26 +0000
parents 76d4fbab5f20
children c8186c4942d6
files sv/audioio/AudioCallbackPlaySource.cpp sv/filter/Filter.cpp sv/filter/Filter.h sv/filter/FilterStack.cpp sv/filter/FilterStack.h sv/filter/TimeStretchFilter.cpp
diffstat 6 files changed, 29 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/sv/audioio/AudioCallbackPlaySource.cpp	Fri Jun 22 12:49:50 2007 +0000
+++ b/sv/audioio/AudioCallbackPlaySource.cpp	Fri Jun 22 13:35:26 2007 +0000
@@ -216,6 +216,8 @@
     }
 
     m_condition.wakeAll();
+
+	m_filterStack->setSourceChannelCount(getTargetChannelCount());
 }
 
 void
--- a/sv/filter/Filter.cpp	Fri Jun 22 12:49:50 2007 +0000
+++ b/sv/filter/Filter.cpp	Fri Jun 22 13:35:26 2007 +0000
@@ -13,7 +13,8 @@
  
 #include "Filter.h"
 
-Filter::Filter() : PropertyContainer()
+Filter::Filter() : PropertyContainer(),
+	m_sourceChannelCount(0)
 {}
 
 Filter::~Filter()
--- a/sv/filter/Filter.h	Fri Jun 22 12:49:50 2007 +0000
+++ b/sv/filter/Filter.h	Fri Jun 22 13:35:26 2007 +0000
@@ -42,8 +42,12 @@
 
 	virtual size_t getRequiredInputSamples(size_t outputSamplesNeeded) = 0;
 
+	inline void setSourceChannelCount(size_t channel){m_sourceChannelCount = channel;}
+	inline size_t getSourceChannelCount(){return m_sourceChannelCount;}
+
 protected:
 
+	size_t		m_sourceChannelCount; 
 
 };
 
--- a/sv/filter/FilterStack.cpp	Fri Jun 22 12:49:50 2007 +0000
+++ b/sv/filter/FilterStack.cpp	Fri Jun 22 13:35:26 2007 +0000
@@ -31,6 +31,7 @@
 void FilterStack::addFilter(Filter * filter)
 {
 	m_filters[m_count] = filter;
+	filter->setSourceChannelCount(m_sourceChannelCount);
 	m_count++;	
 	emit newFilterAdded(filter);
 }
@@ -123,4 +124,18 @@
 		}
 	}
 	return max;
+}
+
+void FilterStack::setSourceChannelCount(size_t channel)
+{
+	m_sourceChannelCount = channel;
+
+	std::map<int, Filter *>::iterator iter;
+
+	for (iter = m_filters.begin(); iter != m_filters.end(); iter++)
+	{
+		Filter * filter = iter->second;
+		filter->setSourceChannelCount(m_sourceChannelCount);
+	}
+
 }
\ No newline at end of file
--- a/sv/filter/FilterStack.h	Fri Jun 22 12:49:50 2007 +0000
+++ b/sv/filter/FilterStack.h	Fri Jun 22 13:35:26 2007 +0000
@@ -39,6 +39,8 @@
 
 	size_t getRequiredInputSamples(size_t outputSamplesNeeded);
 
+	void setSourceChannelCount(size_t channel);
+
 signals:
 	void newFilterAdded(Filter *);
 	void filterRemoved(QString);
@@ -47,6 +49,8 @@
 	std::map<int, Filter *> m_filters; 
 
 	int			m_count;
+
+	size_t		m_sourceChannelCount; 
 };
 
 #endif
\ No newline at end of file
--- a/sv/filter/TimeStretchFilter.cpp	Fri Jun 22 12:49:50 2007 +0000
+++ b/sv/filter/TimeStretchFilter.cpp	Fri Jun 22 13:35:26 2007 +0000
@@ -248,7 +248,7 @@
 	if (samples < floor(m_framesize*m_interpfactor + 1))
 		return;
 
-	int channel = 2;
+	int channel = getSourceChannelCount();
 
 	for (int i=0; i<samples; i++){
 		if (channel > 1)
@@ -367,7 +367,7 @@
 	if (samples > m_framesize/4)
 		return;
 
-	int channel = 2;
+	int channel = getSourceChannelCount();
 
 	for (int i=0; i<samples; i++){
 		output[0][i] = outbuffer[i];