Mercurial > hg > easaier-soundaccess
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];