annotate data/fileio/AudioFileReader.cpp @ 1162:1dd98a5432cf

Work around libsndfile-1.0.26 bug that reports all files as non-seekable
author Chris Cannam
date Wed, 24 Feb 2016 11:35:51 +0000
parents 843f67be0ed9
children 4d9816ba0ebe
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@1041 18 using std::vector;
Chris@1041 19
Chris@1041 20 vector<SampleBlock>
Chris@1041 21 AudioFileReader::getDeInterleavedFrames(sv_frame_t start, sv_frame_t count) const
Chris@327 22 {
Chris@1041 23 SampleBlock interleaved = getInterleavedFrames(start, count);
Chris@327 24
Chris@929 25 int channels = getChannelCount();
Chris@1038 26 sv_frame_t rc = interleaved.size() / channels;
Chris@327 27
Chris@1041 28 vector<SampleBlock> frames(channels, SampleBlock(rc, 0.f));
Chris@1041 29
Chris@929 30 for (int c = 0; c < channels; ++c) {
Chris@1041 31 for (sv_frame_t i = 0; i < rc; ++i) {
Chris@1041 32 frames[c][i] = interleaved[i * channels + c];
Chris@1041 33 }
Chris@327 34 }
Chris@327 35
Chris@1041 36 return frames;
Chris@327 37 }
Chris@327 38