Mercurial > hg > svcore
comparison data/model/AggregateWaveModel.cpp @ 1326:54af1e21705c 3.0-integration
Update to use bqvec allocator for float vectors
author | Chris Cannam |
---|---|
date | Tue, 13 Dec 2016 15:23:21 +0000 |
parents | 5cbf71022679 |
children | 770f80d9ccee |
comparison
equal
deleted
inserted
replaced
1325:3aea4f7617bb | 1326:54af1e21705c |
---|---|
92 { | 92 { |
93 if (m_components.empty()) return 0; | 93 if (m_components.empty()) return 0; |
94 return m_components.begin()->model->getSampleRate(); | 94 return m_components.begin()->model->getSampleRate(); |
95 } | 95 } |
96 | 96 |
97 vector<float> | 97 floatvec_t |
98 AggregateWaveModel::getData(int channel, sv_frame_t start, sv_frame_t count) const | 98 AggregateWaveModel::getData(int channel, sv_frame_t start, sv_frame_t count) const |
99 { | 99 { |
100 int ch0 = channel, ch1 = channel; | 100 int ch0 = channel, ch1 = channel; |
101 if (channel == -1) { | 101 if (channel == -1) { |
102 ch0 = 0; | 102 ch0 = 0; |
103 ch1 = getChannelCount()-1; | 103 ch1 = getChannelCount()-1; |
104 } | 104 } |
105 | 105 |
106 vector<float> result(count, 0.f); | 106 floatvec_t result(count, 0.f); |
107 | |
108 sv_frame_t longest = 0; | 107 sv_frame_t longest = 0; |
109 | 108 |
110 for (int c = ch0; c <= ch1; ++c) { | 109 for (int c = ch0; c <= ch1; ++c) { |
111 | 110 |
112 auto here = m_components[c].model->getData(m_components[c].channel, | 111 auto here = m_components[c].model->getData(m_components[c].channel, |
121 | 120 |
122 result.resize(longest); | 121 result.resize(longest); |
123 return result; | 122 return result; |
124 } | 123 } |
125 | 124 |
126 vector<vector<float>> | 125 vector<floatvec_t> |
127 AggregateWaveModel::getMultiChannelData(int fromchannel, int tochannel, | 126 AggregateWaveModel::getMultiChannelData(int fromchannel, int tochannel, |
128 sv_frame_t start, sv_frame_t count) const | 127 sv_frame_t start, sv_frame_t count) const |
129 { | 128 { |
130 sv_frame_t min = count; | 129 sv_frame_t min = count; |
131 | 130 |
132 vector<vector<float>> result; | 131 vector<floatvec_t> result; |
133 | 132 |
134 for (int c = fromchannel; c <= tochannel; ++c) { | 133 for (int c = fromchannel; c <= tochannel; ++c) { |
135 auto here = getData(c, start, count); | 134 auto here = getData(c, start, count); |
136 if (sv_frame_t(here.size()) < min) { | 135 if (sv_frame_t(here.size()) < min) { |
137 min = sv_frame_t(here.size()); | 136 min = sv_frame_t(here.size()); |