42 const auto end = start + len;
67 0 <=
mPTrack->GetBlockStart(start)) {
85 const auto start0 =
mPTrack->GetBlockStart(start);
87 const auto len0 =
mPTrack->GetBestBlockSize(start0);
113 const auto start1 =
mPTrack->GetBlockStart(end0);
114 if (start1 == end0) {
115 const auto len1 =
mPTrack->GetBestBlockSize(start1);
128 auto remaining = len;
141 auto sinitLen = initLen.as_size_t();
145 start, sinitLen,
fillZero, mayThrow))
147 wxASSERT( sinitLen <= remaining );
148 remaining -= sinitLen;
154 for (
int ii = 0; ii < mNValidBuffers && remaining > 0; ++ii) {
158 wxASSERT(starti >= 0);
163 if (initLen <= 0 && leni == len) {
177 const size_t size =
sizeof(float) * leni.as_size_t();
179 memcpy(buffer,
mBuffers[ii].data.get() + starti.as_size_t(),
size);
180 wxASSERT( leni <= remaining );
181 remaining -= leni.as_size_t();
195 if (!
mPTrack->GetFloats(
reinterpret_cast<float*
>(buffer),
196 start, remaining,
fillZero, mayThrow))
GrowableSampleBuffer & Resize(size_t count, sampleFormat format)
GrowableSampleBuffer mOverlapBuffer
const float * GetFloats(sampleCount start, size_t len, bool mayThrow)
Retrieve samples as floats from the track or from the memory cache.
void SetTrack(const std::shared_ptr< const SampleTrack > &pTrack)
std::shared_ptr< const SampleTrack > mPTrack
Positions or offsets within audio files need a wide type.
auto end(const Ptr< Type, BaseDeleter > &p)
Enables range-for.