Mercurial > hg > sonic-annotator
comparison runner/MultiplexedReader.cpp @ 288:fd4a6183482f kapoor_1202
Merge from branch piper-nopiper. The next release will be based on this.
author | Chris Cannam |
---|---|
date | Fri, 02 Dec 2016 10:04:44 +0000 |
parents | 68dc2d99a5b1 |
children | 6122159556bd |
comparison
equal
deleted
inserted
replaced
259:9e7d180be225 | 288:fd4a6183482f |
---|---|
18 MultiplexedReader::MultiplexedReader(QList<AudioFileReader *> readers) : | 18 MultiplexedReader::MultiplexedReader(QList<AudioFileReader *> readers) : |
19 m_readers(readers) | 19 m_readers(readers) |
20 { | 20 { |
21 m_channelCount = readers.size(); | 21 m_channelCount = readers.size(); |
22 m_sampleRate = readers[0]->getSampleRate(); | 22 m_sampleRate = readers[0]->getSampleRate(); |
23 | |
24 SVDEBUG << "MultiplexedReader: channel count: " << m_channelCount | |
25 << " (i.e. " << m_channelCount << " reader(s) to multiplex)" << endl; | |
26 SVDEBUG << "MultiplexedReader: sample rate from first reader: " | |
27 << m_sampleRate << endl; | |
23 | 28 |
24 m_frameCount = 0; | 29 m_frameCount = 0; |
25 m_quicklySeekable = true; | 30 m_quicklySeekable = true; |
26 | 31 |
27 foreach (AudioFileReader *r, m_readers) { | 32 foreach (AudioFileReader *r, m_readers) { |
47 foreach (AudioFileReader *r, m_readers) { | 52 foreach (AudioFileReader *r, m_readers) { |
48 delete r; | 53 delete r; |
49 } | 54 } |
50 } | 55 } |
51 | 56 |
52 SampleBlock | 57 std::vector<float> |
53 MultiplexedReader::getInterleavedFrames(sv_frame_t start, sv_frame_t frameCount) const | 58 MultiplexedReader::getInterleavedFrames(sv_frame_t start, sv_frame_t frameCount) const |
54 { | 59 { |
55 int out_chans = m_readers.size(); | 60 int out_chans = m_readers.size(); |
56 | 61 |
57 // Allocate and zero | 62 // Allocate and zero |
58 SampleBlock block(frameCount * out_chans, 0.f); | 63 std::vector<float> block(frameCount * out_chans, 0.f); |
59 | 64 |
60 for (int out_chan = 0; out_chan < out_chans; ++out_chan) { | 65 for (int out_chan = 0; out_chan < out_chans; ++out_chan) { |
61 | 66 |
62 AudioFileReader *reader = m_readers[out_chan]; | 67 AudioFileReader *reader = m_readers[out_chan]; |
63 SampleBlock readerBlock = reader->getInterleavedFrames(start, frameCount); | 68 auto readerBlock = reader->getInterleavedFrames(start, frameCount); |
64 | 69 |
65 int in_chans = reader->getChannelCount(); | 70 int in_chans = reader->getChannelCount(); |
66 | 71 |
67 for (int frame = 0; frame < frameCount; ++frame) { | 72 for (int frame = 0; frame < frameCount; ++frame) { |
68 | 73 |