| 496 | } |
| 497 | |
| 498 | inline uint64_t copyAudioData (AudioFileWriter& dest, AudioFileReader& source, uint64_t maxNumFramesToCopy) |
| 499 | { |
| 500 | constexpr uint32_t bufferSize = 2048; |
| 501 | |
| 502 | auto& readerProperties = source.getProperties(); |
| 503 | auto framesToDo = maxNumFramesToCopy != 0 ? std::min (maxNumFramesToCopy, readerProperties.numFrames) : readerProperties.numFrames; |
| 504 | auto tempBuffer = choc::buffer::ChannelArrayBuffer<double> (readerProperties.numChannels, bufferSize, false); |
| 505 | uint64_t readIndex = 0; |
| 506 | |
| 507 | while (framesToDo != 0) |
| 508 | { |
| 509 | auto blockSize = static_cast<uint32_t> (std::min (static_cast<uint64_t> (bufferSize), framesToDo)); |
| 510 | auto block = tempBuffer.getStart (blockSize); |
| 511 | |
| 512 | if (! source.readFrames (readIndex, block)) |
| 513 | break; |
| 514 | |
| 515 | dest.appendFrames (block); |
| 516 | |
| 517 | readIndex += blockSize; |
| 518 | framesToDo -= blockSize; |
| 519 | } |
| 520 | |
| 521 | return readIndex; |
| 522 | } |
| 523 | |
| 524 | //============================================================================== |
| 525 | template <typename AudioFormatType> |
nothing calls this directly
no test coverage detected