| 172 | } |
| 173 | |
| 174 | std::unique_ptr<AudioBus> AudioBus::createBufferFromRange(const AudioBus * sourceBuffer, int startFrame, int endFrame) |
| 175 | { |
| 176 | int numberOfSourceFrames = sourceBuffer->length(); |
| 177 | int numberOfChannels = sourceBuffer->numberOfChannels(); |
| 178 | |
| 179 | // Sanity checking |
| 180 | bool isRangeSafe = startFrame < endFrame && endFrame <= numberOfSourceFrames; |
| 181 | ASSERT(isRangeSafe); |
| 182 | |
| 183 | if (!isRangeSafe) |
| 184 | { |
| 185 | return nullptr; |
| 186 | } |
| 187 | |
| 188 | int rangeLength = endFrame - startFrame; |
| 189 | |
| 190 | std::unique_ptr<AudioBus> audioBus(new AudioBus(numberOfChannels, rangeLength)); |
| 191 | audioBus->setSampleRate(sourceBuffer->sampleRate()); |
| 192 | |
| 193 | for (int i = 0; i < numberOfChannels; ++i) |
| 194 | { |
| 195 | audioBus->channel(i)->copyFromRange(sourceBuffer->channel(i), startFrame, endFrame); |
| 196 | } |
| 197 | |
| 198 | return audioBus; |
| 199 | } |
| 200 | |
| 201 | std::unique_ptr<AudioBus> AudioBus::createByCloning(const AudioBus * sourceBus) |
| 202 | { |
nothing calls this directly
no test coverage detected