1
0
Fork 0
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:
jules 2012-04-28 11:37:05 +01:00
parent 79381ced5d
commit 4f590f036d
10 changed files with 36 additions and 34 deletions

View file

@ -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

View file

@ -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);
}

View file

@ -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)
{

View file

@ -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)

View file

@ -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);

View file

@ -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);

View file

@ -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;
}

View file

@ -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);

View file

@ -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

View file

@ -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;