annotate data/fileio/AudioFileReader.cpp @ 997:2104ea2204d2

Separate out stdout ability (not all writers that support one-file will necessarily want to support it, e.g. for binary formats)
author Chris Cannam
date Mon, 13 Oct 2014 10:56:16 +0100
parents 59e7fe1b1003
children cc27f35aa75c
rev   line source
Chris@175 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@175 2
Chris@175 3 /*
Chris@175 4 Sonic Visualiser
Chris@175 5 An audio file viewer and annotation editor.
Chris@175 6 Centre for Digital Music, Queen Mary, University of London.
Chris@175 7 This file copyright 2006 Chris Cannam.
Chris@175 8
Chris@175 9 This program is free software; you can redistribute it and/or
Chris@175 10 modify it under the terms of the GNU General Public License as
Chris@175 11 published by the Free Software Foundation; either version 2 of the
Chris@175 12 License, or (at your option) any later version. See the file
Chris@175 13 COPYING included with this distribution for more information.
Chris@175 14 */
Chris@175 15
Chris@175 16 #include "AudioFileReader.h"
Chris@175 17
Chris@327 18 void
Chris@929 19 AudioFileReader::getDeInterleavedFrames(int start, int count,
Chris@327 20 std::vector<SampleBlock> &frames) const
Chris@327 21 {
Chris@327 22 SampleBlock interleaved;
Chris@327 23 getInterleavedFrames(start, count, interleaved);
Chris@327 24
Chris@929 25 int channels = getChannelCount();
Chris@929 26 int rc = interleaved.size() / channels;
Chris@327 27
Chris@327 28 frames.clear();
Chris@327 29
Chris@929 30 for (int c = 0; c < channels; ++c) {
Chris@327 31 frames.push_back(SampleBlock());
Chris@327 32 }
Chris@327 33
Chris@929 34 for (int i = 0; i < rc; ++i) {
Chris@929 35 for (int c = 0; c < channels; ++c) {
Chris@327 36 frames[c].push_back(interleaved[i * channels + c]);
Chris@327 37 }
Chris@327 38 }
Chris@327 39 }
Chris@327 40