From 4f590f036dd753c3254d0569572dc6408c4bf547 Mon Sep 17 00:00:00 2001 From: jules Date: Sat, 28 Apr 2012 11:37:05 +0100 Subject: [PATCH] Added better constructors for AudioSourceChannelInfo. --- .../sources/juce_AudioSource.h | 25 +++++++++++++++++++ .../sources/juce_BufferingAudioSource.cpp | 6 +---- .../sources/juce_MixerAudioSource.cpp | 5 +--- .../sources/juce_ResamplingAudioSource.cpp | 6 +---- .../native/juce_mac_AudioCDBurner.mm | 6 +---- .../native/juce_win32_AudioCDBurner.cpp | 5 +--- .../sources/juce_AudioSourcePlayer.cpp | 8 ++---- .../format/juce_AudioFormatWriter.cpp | 5 +--- .../format_types/juce_VSTPluginFormat.cpp | 2 ++ .../juce_core/containers/juce_AbstractFifo.h | 2 +- 10 files changed, 36 insertions(+), 34 deletions(-) diff --git a/modules/juce_audio_basics/sources/juce_AudioSource.h b/modules/juce_audio_basics/sources/juce_AudioSource.h index 3fb1fea4c6..0e586e76fe 100644 --- a/modules/juce_audio_basics/sources/juce_AudioSource.h +++ b/modules/juce_audio_basics/sources/juce_AudioSource.h @@ -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 diff --git a/modules/juce_audio_basics/sources/juce_BufferingAudioSource.cpp b/modules/juce_audio_basics/sources/juce_BufferingAudioSource.cpp index e5e466ecf9..d7f627a744 100644 --- a/modules/juce_audio_basics/sources/juce_BufferingAudioSource.cpp +++ b/modules/juce_audio_basics/sources/juce_BufferingAudioSource.cpp @@ -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); } diff --git a/modules/juce_audio_basics/sources/juce_MixerAudioSource.cpp b/modules/juce_audio_basics/sources/juce_MixerAudioSource.cpp index 8858554bbe..243ed51152 100644 --- a/modules/juce_audio_basics/sources/juce_MixerAudioSource.cpp +++ b/modules/juce_audio_basics/sources/juce_MixerAudioSource.cpp @@ -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) { diff --git a/modules/juce_audio_basics/sources/juce_ResamplingAudioSource.cpp b/modules/juce_audio_basics/sources/juce_ResamplingAudioSource.cpp index 65b5d442cd..401462da3b 100644 --- a/modules/juce_audio_basics/sources/juce_ResamplingAudioSource.cpp +++ b/modules/juce_audio_basics/sources/juce_ResamplingAudioSource.cpp @@ -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) diff --git a/modules/juce_audio_devices/native/juce_mac_AudioCDBurner.mm b/modules/juce_audio_devices/native/juce_mac_AudioCDBurner.mm index b4519fb3d4..4fabfa7817 100644 --- a/modules/juce_audio_devices/native/juce_mac_AudioCDBurner.mm +++ b/modules/juce_audio_devices/native/juce_mac_AudioCDBurner.mm @@ -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); diff --git a/modules/juce_audio_devices/native/juce_win32_AudioCDBurner.cpp b/modules/juce_audio_devices/native/juce_win32_AudioCDBurner.cpp index 6f19c87f78..7a83d7aeaa 100644 --- a/modules/juce_audio_devices/native/juce_win32_AudioCDBurner.cpp +++ b/modules/juce_audio_devices/native/juce_win32_AudioCDBurner.cpp @@ -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); diff --git a/modules/juce_audio_devices/sources/juce_AudioSourcePlayer.cpp b/modules/juce_audio_devices/sources/juce_AudioSourcePlayer.cpp index 36e349fb79..f515269688 100644 --- a/modules/juce_audio_devices/sources/juce_AudioSourcePlayer.cpp +++ b/modules/juce_audio_devices/sources/juce_AudioSourcePlayer.cpp @@ -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; } diff --git a/modules/juce_audio_formats/format/juce_AudioFormatWriter.cpp b/modules/juce_audio_formats/format/juce_AudioFormatWriter.cpp index 8e7531f251..85505a5dd8 100644 --- a/modules/juce_audio_formats/format/juce_AudioFormatWriter.cpp +++ b/modules/juce_audio_formats/format/juce_AudioFormatWriter.cpp @@ -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); diff --git a/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp b/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp index 56846d023f..cbc29cb871 100644 --- a/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp +++ b/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp @@ -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 diff --git a/modules/juce_core/containers/juce_AbstractFifo.h b/modules/juce_core/containers/juce_AbstractFifo.h index 3faa5b1493..1a319d41e3 100644 --- a/modules/juce_core/containers/juce_AbstractFifo.h +++ b/modules/juce_core/containers/juce_AbstractFifo.h @@ -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;