33 releaseMasterResources();
42 if (source ==
nullptr)
101 inputStreamEOF =
false;
111 if ((! playing) && masterSource !=
nullptr)
117 inputStreamEOF =
false;
131 while (--n >= 0 && ! stopped)
140 if (sampleRate > 0.0)
146 if (sampleRate > 0.0)
154 if (sampleRate > 0.0)
162 if (positionableSource !=
nullptr)
164 if (sampleRate > 0 && sourceSampleRate > 0)
169 if (resamplerSource !=
nullptr)
172 inputStreamEOF =
false;
178 if (positionableSource !=
nullptr)
180 const double ratio = (sampleRate > 0 && sourceSampleRate > 0) ? sampleRate / sourceSampleRate : 1.0;
191 if (positionableSource !=
nullptr)
193 const double ratio = (sampleRate > 0 && sourceSampleRate > 0) ? sampleRate / sourceSampleRate : 1.0;
203 return positionableSource !=
nullptr && positionableSource->
isLooping();
218 if (masterSource !=
nullptr)
221 if (resamplerSource !=
nullptr && sourceSampleRate > 0)
224 inputStreamEOF =
false;
228void AudioTransportSource::releaseMasterResources()
232 if (masterSource !=
nullptr)
240 releaseMasterResources();
247 if (masterSource !=
nullptr && ! stopped)
254 for (
int i =
info.buffer->getNumChannels(); --i >= 0;)
255 info.buffer->applyGainRamp (i,
info.startSample, jmin (256,
info.numSamples), 1.0f, 0.0f);
257 if (
info.numSamples > 256)
265 inputStreamEOF =
true;
271 for (
int i =
info.buffer->getNumChannels(); --i >= 0;)
272 info.buffer->applyGainRamp (i,
info.startSample,
info.numSamples, lastGain, gain);
276 info.clearActiveBufferRegion();
virtual void releaseResources()=0
virtual void prepareToPlay(int samplesPerBlockExpected, double sampleRate)=0
virtual void getNextAudioBlock(const AudioSourceChannelInfo &bufferToFill)=0
void prepareToPlay(int samplesPerBlockExpected, double sampleRate) override
int64 getNextReadPosition() const override
double getCurrentPosition() const
void releaseResources() override
void getNextAudioBlock(const AudioSourceChannelInfo &) override
int64 getTotalLength() const override
~AudioTransportSource() override
void setPosition(double newPosition)
double getLengthInSeconds() const
void setGain(float newGain) noexcept
void setSource(PositionableAudioSource *newSource, int readAheadBufferSize=0, TimeSliceThread *readAheadThread=nullptr, double sourceSampleRateToCorrectFor=0.0, int maxNumChannels=2)
bool isLooping() const override
void setNextReadPosition(int64 newPosition) override
virtual bool isLooping() const =0
virtual int64 getNextReadPosition() const =0
virtual int64 getTotalLength() const =0
virtual void setNextReadPosition(int64 newPosition)=0
void setResamplingRatio(double samplesInPerOutputSample)
static void JUCE_CALLTYPE sleep(int milliseconds)