21 : fifo (numSamples), buffer (channels, numSamples)
25 void setSize (
int numChannels,
int numSamples)
28 buffer.
setSize (numChannels, numSamples);
31 int getFreeSpace()
const noexcept {
return fifo.
getFreeSpace(); }
32 int getNumReady()
const noexcept {
return fifo.
getNumReady(); }
33 int getNumChannels()
const noexcept {
return buffer.
getNumChannels(); }
34 void reset()
noexcept { fifo.
reset(); }
36 void ensureFreeSpace (
int numSamples)
38 const int freeSpace = getFreeSpace();
40 if (numSamples > freeSpace)
42 const int samplesRequired = numSamples - freeSpace;
43 jassert (samplesRequired <= getNumReady());
50 return write (src.getArrayOfReadPointers(), src.getNumSamples());
58 int start1, size1, start2, size2;
61 if (size1 + size2 < numSamples)
66 buffer.
copyFrom (i, start1, src.getReadPointer (i, startSample), size1);
67 buffer.
copyFrom (i, start2, src.getReadPointer (i, startSample) + size1, size2);
70 for (
int i = buffer.
getNumChannels(); --i >= src.getNumChannels();)
72 buffer.
clear (i, start1, size1);
73 buffer.
clear (i, start2, size1 + size2);
80 bool write (
const float*
const* data,
int numSamples)
85 int start1, size1, start2, size2;
88 if (size1 + size2 < numSamples)
93 buffer.
copyFrom (i, start1, data[i], size1);
94 buffer.
copyFrom (i, start2, data[i] + size1, size2);
101 bool writeSilence (
int numSamples)
106 int start1, size1, start2, size2;
109 if (size1 + size2 < numSamples)
112 buffer.
clear (start1, size1);
113 buffer.
clear (start2, size2);
122 return read (dest, startSampleInDestBuffer, dest.
getNumSamples());
127 int start1, size1, start2, size2;
128 fifo.
prepareToRead (numSamples, start1, size1, start2, size2);
130 if (size1 + size2 < numSamples)
135 dest.
copyFrom (i, startSampleInDestBuffer, buffer, i, start1, size1);
136 dest.
copyFrom (i, startSampleInDestBuffer + size1, buffer, i, start2, size2);
150 return readAdding (dest, startSampleInDestBuffer, dest.
getNumSamples());
155 int start1, size1, start2, size2;
156 fifo.
prepareToRead (numSamples, start1, size1, start2, size2);
158 if ((size1 + size2) < numSamples)
163 dest.
addFrom (i, startSampleInDestBuffer, buffer, i, start1, size1);
164 dest.
addFrom (i, startSampleInDestBuffer + size1, buffer, i, start2, size2);
170 dest.
addFrom (i, startSampleInDestBuffer + size1, buffer, buffer.
getNumChannels() - 1, start2, size2);