Browse Source

Added better constructors for AudioSourceChannelInfo.

tags/2021-05-28
jules 13 years ago
parent
commit
4f590f036d
10 changed files with 36 additions and 34 deletions
  1. +25
    -0
      modules/juce_audio_basics/sources/juce_AudioSource.h
  2. +1
    -5
      modules/juce_audio_basics/sources/juce_BufferingAudioSource.cpp
  3. +1
    -4
      modules/juce_audio_basics/sources/juce_MixerAudioSource.cpp
  4. +1
    -5
      modules/juce_audio_basics/sources/juce_ResamplingAudioSource.cpp
  5. +1
    -5
      modules/juce_audio_devices/native/juce_mac_AudioCDBurner.mm
  6. +1
    -4
      modules/juce_audio_devices/native/juce_win32_AudioCDBurner.cpp
  7. +2
    -6
      modules/juce_audio_devices/sources/juce_AudioSourcePlayer.cpp
  8. +1
    -4
      modules/juce_audio_formats/format/juce_AudioFormatWriter.cpp
  9. +2
    -0
      modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp
  10. +1
    -1
      modules/juce_core/containers/juce_AbstractFifo.h

+ 25
- 0
modules/juce_audio_basics/sources/juce_AudioSource.h 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


+ 1
- 5
modules/juce_audio_basics/sources/juce_BufferingAudioSource.cpp 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);
}


+ 1
- 4
modules/juce_audio_basics/sources/juce_MixerAudioSource.cpp 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)
{


+ 1
- 5
modules/juce_audio_basics/sources/juce_ResamplingAudioSource.cpp 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)


+ 1
- 5
modules/juce_audio_devices/native/juce_mac_AudioCDBurner.mm 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);


+ 1
- 4
modules/juce_audio_devices/native/juce_win32_AudioCDBurner.cpp 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);


+ 2
- 6
modules/juce_audio_devices/sources/juce_AudioSourcePlayer.cpp 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;
}


+ 1
- 4
modules/juce_audio_formats/format/juce_AudioFormatWriter.cpp 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);


+ 2
- 0
modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp 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


+ 1
- 1
modules/juce_core/containers/juce_AbstractFifo.h 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;


Loading…
Cancel
Save