Mercurial > hg > svcore
diff data/model/AggregateWaveModel.cpp @ 363:0e30c8ec15a0
* Add wave file model method for reading more than one channel at once,
avoiding ludicrously expensive backward seeks and double-reads when
playing multi-channel files or using them as inputs to feature extraction
plugins
author | Chris Cannam |
---|---|
date | Thu, 24 Jan 2008 14:35:43 +0000 |
parents | 70a232b1f12a |
children | 166c22eff678 |
line wrap: on
line diff
--- a/data/model/AggregateWaveModel.cpp Thu Jan 24 11:03:59 2008 +0000 +++ b/data/model/AggregateWaveModel.cpp Thu Jan 24 14:35:43 2008 +0000 @@ -175,6 +175,21 @@ if (mixing) delete[] readbuf; return sz; } + +size_t +AggregateWaveModel::getData(size_t fromchannel, size_t tochannel, + size_t start, size_t count, + float **buffer) const +{ + size_t min = count; + + for (size_t c = fromchannel; c <= tochannel; ++c) { + size_t here = getData(c, start, count, buffer[c - fromchannel]); + if (here < min) min = here; + } + + return min; +} void AggregateWaveModel::getSummaries(size_t channel, size_t start, size_t count,