diff data/fileio/AudioFileReader.cpp @ 327:1d656dcda8ef

* some tweaks to improve usability of these classes in a console application
author Chris Cannam
date Fri, 02 Nov 2007 16:50:31 +0000
parents 92e8dbde73cd
children 59e7fe1b1003
line wrap: on
line diff
--- a/data/fileio/AudioFileReader.cpp	Thu Nov 01 16:02:01 2007 +0000
+++ b/data/fileio/AudioFileReader.cpp	Fri Nov 02 16:50:31 2007 +0000
@@ -15,3 +15,26 @@
 
 #include "AudioFileReader.h"
 
+void
+AudioFileReader::getDeInterleavedFrames(size_t start, size_t count,
+                                        std::vector<SampleBlock> &frames) const
+{
+    SampleBlock interleaved;
+    getInterleavedFrames(start, count, interleaved);
+    
+    size_t channels = getChannelCount();
+    size_t rc = interleaved.size() / channels;
+
+    frames.clear();
+
+    for (size_t c = 0; c < channels; ++c) {
+        frames.push_back(SampleBlock());
+    }
+
+    for (size_t i = 0; i < rc; ++i) {
+        for (size_t c = 0; c < channels; ++c) {
+            frames[c].push_back(interleaved[i * channels + c]);
+        }
+    }
+}
+