MCPcopy Create free account
hub / github.com/audacity/audacity / GetPlaybackSlice

Method GetPlaybackSlice

src/ScrubState.cpp:364–400  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

362}
363
364PlaybackSlice ScrubbingPlaybackPolicy::GetPlaybackSlice(
365 PlaybackSchedule &, size_t available)
366{
367 if (mReplenish)
368 return { available, 0, 0 };
369
370 auto gAudioIO = AudioIO::Get();
371
372 // How many samples to produce for each channel.
373 auto frames = available;
374 auto toProduce = frames;
375
376 // scrubbing and play-at-speed are not limited by the real time
377 // and length accumulators
378 toProduce =
379 frames = limitSampleBufferSize(frames, mScrubDuration);
380
381 if (mSilentScrub)
382 toProduce = 0;
383
384 mScrubDuration -= frames;
385 wxASSERT(mScrubDuration >= 0);
386
387 mUntilDiscontinuity = 0;
388 if (mScrubDuration <= 0) {
389 mReplenish = true;
390 auto oldEndSample = mEndSample;
391 mOldEndTime = oldEndSample.as_long_long() / mRate;
392 ScrubQueue::Instance.Get(
393 mStartSample, mEndSample, available, mScrubDuration);
394 mNewStartTime = mStartSample.as_long_long() / mRate;
395 if(mScrubDuration >= 0 && oldEndSample != mStartSample)
396 mUntilDiscontinuity = frames;
397 }
398
399 return { available, frames, toProduce };
400}
401
402std::pair<double, double> ScrubbingPlaybackPolicy::AdvancedTrackTime(
403 PlaybackSchedule &schedule, double trackTime, size_t nSamples )

Callers

nothing calls this directly

Calls 3

GetFunction · 0.85
limitSampleBufferSizeFunction · 0.85
GetMethod · 0.45

Tested by

no test coverage detected