mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-10 23:44:24 +00:00
Added better constructors for AudioSourceChannelInfo.
This commit is contained in:
parent
79381ced5d
commit
4f590f036d
10 changed files with 36 additions and 34 deletions
|
|
@ -35,6 +35,31 @@
|
|||
*/
|
||||
struct JUCE_API AudioSourceChannelInfo
|
||||
{
|
||||
/** Creates an uninitialised AudioSourceChannelInfo. */
|
||||
AudioSourceChannelInfo() noexcept
|
||||
{
|
||||
}
|
||||
|
||||
/** Creates an AudioSourceChannelInfo. */
|
||||
AudioSourceChannelInfo (AudioSampleBuffer* bufferToUse,
|
||||
int startSampleOffset, int numSamplesToUse) noexcept
|
||||
: buffer (bufferToUse),
|
||||
startSample (startSampleOffset),
|
||||
numSamples (numSamplesToUse)
|
||||
{
|
||||
}
|
||||
|
||||
/** Creates an AudioSourceChannelInfo that uses the whole of a buffer.
|
||||
Note that the buffer provided must not be deleted while the
|
||||
AudioSourceChannelInfo is still using it.
|
||||
*/
|
||||
explicit AudioSourceChannelInfo (AudioSampleBuffer& bufferToUse) noexcept
|
||||
: buffer (&bufferToUse),
|
||||
startSample (0),
|
||||
numSamples (bufferToUse.getNumSamples())
|
||||
{
|
||||
}
|
||||
|
||||
/** The destination buffer to fill with audio data.
|
||||
|
||||
When the AudioSource::getNextAudioBlock() method is called, the active section
|
||||
|
|
|
|||
|
|
@ -252,11 +252,7 @@ void BufferingAudioSource::readBufferSection (const int64 start, const int lengt
|
|||
if (source->getNextReadPosition() != start)
|
||||
source->setNextReadPosition (start);
|
||||
|
||||
AudioSourceChannelInfo info;
|
||||
info.buffer = &buffer;
|
||||
info.startSample = bufferOffset;
|
||||
info.numSamples = length;
|
||||
|
||||
AudioSourceChannelInfo info (&buffer, bufferOffset, length);
|
||||
source->getNextAudioBlock (info);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -140,10 +140,7 @@ void MixerAudioSource::getNextAudioBlock (const AudioSourceChannelInfo& info)
|
|||
tempBuffer.setSize (jmax (1, info.buffer->getNumChannels()),
|
||||
info.buffer->getNumSamples());
|
||||
|
||||
AudioSourceChannelInfo info2;
|
||||
info2.buffer = &tempBuffer;
|
||||
info2.numSamples = info.numSamples;
|
||||
info2.startSample = 0;
|
||||
AudioSourceChannelInfo info2 (&tempBuffer, 0, info.numSamples);
|
||||
|
||||
for (int i = 1; i < inputs.size(); ++i)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -110,11 +110,7 @@ void ResamplingAudioSource::getNextAudioBlock (const AudioSourceChannelInfo& inf
|
|||
int numToDo = jmin (sampsNeeded - sampsInBuffer,
|
||||
bufferSize - endOfBufferPos);
|
||||
|
||||
AudioSourceChannelInfo readInfo;
|
||||
readInfo.buffer = &buffer;
|
||||
readInfo.numSamples = numToDo;
|
||||
readInfo.startSample = endOfBufferPos;
|
||||
|
||||
AudioSourceChannelInfo readInfo (&buffer, endOfBufferPos, numToDo);
|
||||
input->getNextAudioBlock (readInfo);
|
||||
|
||||
if (localRatio > 1.0001)
|
||||
|
|
|
|||
|
|
@ -274,11 +274,7 @@ const int kilobytesPerSecond1x = 176;
|
|||
if (numSamples > 0)
|
||||
{
|
||||
juce::AudioSampleBuffer tempBuffer (2, numSamples);
|
||||
|
||||
juce::AudioSourceChannelInfo info;
|
||||
info.buffer = &tempBuffer;
|
||||
info.startSample = 0;
|
||||
info.numSamples = numSamples;
|
||||
juce::AudioSourceChannelInfo info (tempBuffer);
|
||||
|
||||
source->getNextAudioBlock (info);
|
||||
|
||||
|
|
|
|||
|
|
@ -377,10 +377,7 @@ bool AudioCDBurner::addAudioTrack (AudioSource* audioSource, int numSamples)
|
|||
while (ok)
|
||||
{
|
||||
{
|
||||
AudioSourceChannelInfo info;
|
||||
info.buffer = &sourceBuffer;
|
||||
info.numSamples = samplesPerBlock;
|
||||
info.startSample = 0;
|
||||
AudioSourceChannelInfo info (&sourceBuffer, 0, samplesPerBlock);
|
||||
sourceBuffer.clear();
|
||||
|
||||
source->getNextAudioBlock (info);
|
||||
|
|
|
|||
|
|
@ -75,7 +75,6 @@ void AudioSourcePlayer::audioDeviceIOCallback (const float** inputChannelData,
|
|||
|
||||
if (source != nullptr)
|
||||
{
|
||||
AudioSourceChannelInfo info;
|
||||
int i, numActiveChans = 0, numInputs = 0, numOutputs = 0;
|
||||
|
||||
// messy stuff needed to compact the channels down into an array
|
||||
|
|
@ -141,14 +140,11 @@ void AudioSourcePlayer::audioDeviceIOCallback (const float** inputChannelData,
|
|||
|
||||
AudioSampleBuffer buffer (channels, numActiveChans, numSamples);
|
||||
|
||||
info.buffer = &buffer;
|
||||
info.startSample = 0;
|
||||
info.numSamples = numSamples;
|
||||
|
||||
AudioSourceChannelInfo info (&buffer, 0, numSamples);
|
||||
source->getNextAudioBlock (info);
|
||||
|
||||
for (i = info.buffer->getNumChannels(); --i >= 0;)
|
||||
info.buffer->applyGainRamp (i, info.startSample, info.numSamples, lastGain, gain);
|
||||
buffer.applyGainRamp (i, info.startSample, info.numSamples, lastGain, gain);
|
||||
|
||||
lastGain = gain;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -116,10 +116,7 @@ bool AudioFormatWriter::writeFromAudioSource (AudioSource& source, int numSample
|
|||
{
|
||||
const int numToDo = jmin (numSamplesToRead, samplesPerBlock);
|
||||
|
||||
AudioSourceChannelInfo info;
|
||||
info.buffer = &tempBuffer;
|
||||
info.startSample = 0;
|
||||
info.numSamples = numToDo;
|
||||
AudioSourceChannelInfo info (&tempBuffer, 0, numToDo);
|
||||
info.clearActiveBufferRegion();
|
||||
|
||||
source.getNextAudioBlock (info);
|
||||
|
|
|
|||
|
|
@ -46,6 +46,8 @@
|
|||
#if JUCE_MSVC
|
||||
#pragma warning (push)
|
||||
#pragma warning (disable: 4996)
|
||||
#else
|
||||
#define __cdecl
|
||||
#endif
|
||||
|
||||
/* Obviously you're going to need the Steinberg vstsdk2.4 folder in
|
||||
|
|
|
|||
|
|
@ -156,7 +156,7 @@ public:
|
|||
*/
|
||||
void prepareToWrite (int numToWrite, int& startIndex1, int& blockSize1, int& startIndex2, int& blockSize2) const noexcept;
|
||||
|
||||
/** Called after reading from the FIFO, to indicate that this many items have been added.
|
||||
/** Called after writing from the FIFO, to indicate that this many items have been added.
|
||||
@see prepareToWrite
|
||||
*/
|
||||
void finishedWrite (int numWritten) noexcept;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue