annotate data/fileio/AudioFileReader.cpp @ 1061:c1e43c8d2527 tonioni

Thread-local debug was causing crash on exit with Qt 5.4.x. But we introduced that because QDebug itself was crashing when used from multiple threads. Replace with simpler fstream version
author Chris Cannam
date Tue, 31 Mar 2015 10:36:52 +0100
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