# HG changeset patch # User lbajardsilogic # Date 1182519326 0 # Node ID 51a12971e10eab30b5ccb1293fa6b0247b3db25e # Parent 76d4fbab5f204e6d85b66ee5b74d62d123296a7e specify the number of channels of the source to the filters diff -r 76d4fbab5f20 -r 51a12971e10e sv/audioio/AudioCallbackPlaySource.cpp --- 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 diff -r 76d4fbab5f20 -r 51a12971e10e sv/filter/Filter.cpp --- 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() diff -r 76d4fbab5f20 -r 51a12971e10e sv/filter/Filter.h --- 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; }; diff -r 76d4fbab5f20 -r 51a12971e10e sv/filter/FilterStack.cpp --- 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::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 diff -r 76d4fbab5f20 -r 51a12971e10e sv/filter/FilterStack.h --- 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 m_filters; int m_count; + + size_t m_sourceChannelCount; }; #endif \ No newline at end of file diff -r 76d4fbab5f20 -r 51a12971e10e sv/filter/TimeStretchFilter.cpp --- 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 1) @@ -367,7 +367,7 @@ if (samples > m_framesize/4) return; - int channel = 2; + int channel = getSourceChannelCount(); for (int i=0; i