Upload files to "Source"
This commit is contained in:
@@ -1,49 +1,49 @@
|
||||
#pragma once
|
||||
|
||||
//==============================================================================
|
||||
template <typename SampleType>
|
||||
class AudioBufferQueue
|
||||
{
|
||||
public:
|
||||
//==============================================================================
|
||||
static constexpr size_t order = 9;
|
||||
static constexpr size_t bufferSize = 1U << order;
|
||||
static constexpr size_t numBuffers = 5;
|
||||
|
||||
//==============================================================================
|
||||
void push(const SampleType* dataToPush, size_t numSamples)
|
||||
{
|
||||
jassert(numSamples <= bufferSize);
|
||||
|
||||
int start1, size1, start2, size2;
|
||||
abstractFifo.prepareToWrite(1, start1, size1, start2, size2);
|
||||
|
||||
jassert(size1 <= 1);
|
||||
jassert(size2 == 0);
|
||||
|
||||
if (size1 > 0)
|
||||
juce::FloatVectorOperations::copy(buffers[(size_t)start1].data(), dataToPush, (int)juce::jmin(bufferSize, numSamples));
|
||||
|
||||
abstractFifo.finishedWrite(size1);
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void pop(SampleType* outputBuffer)
|
||||
{
|
||||
int start1, size1, start2, size2;
|
||||
abstractFifo.prepareToRead(1, start1, size1, start2, size2);
|
||||
|
||||
jassert(size1 <= 1);
|
||||
jassert(size2 == 0);
|
||||
|
||||
if (size1 > 0)
|
||||
juce::FloatVectorOperations::copy(outputBuffer, buffers[(size_t)start1].data(), (int)bufferSize);
|
||||
|
||||
abstractFifo.finishedRead(size1);
|
||||
}
|
||||
|
||||
private:
|
||||
//==============================================================================
|
||||
juce::AbstractFifo abstractFifo{ numBuffers };
|
||||
std::array<std::array<SampleType, bufferSize>, numBuffers> buffers;
|
||||
#pragma once
|
||||
|
||||
//==============================================================================
|
||||
template <typename SampleType>
|
||||
class AudioBufferQueue
|
||||
{
|
||||
public:
|
||||
//==============================================================================
|
||||
static constexpr size_t order = 9;
|
||||
static constexpr size_t bufferSize = 1U << order;
|
||||
static constexpr size_t numBuffers = 5;
|
||||
|
||||
//==============================================================================
|
||||
void push(const SampleType* dataToPush, size_t numSamples)
|
||||
{
|
||||
jassert(numSamples <= bufferSize);
|
||||
|
||||
int start1, size1, start2, size2;
|
||||
abstractFifo.prepareToWrite(1, start1, size1, start2, size2);
|
||||
|
||||
jassert(size1 <= 1);
|
||||
jassert(size2 == 0);
|
||||
|
||||
if (size1 > 0)
|
||||
juce::FloatVectorOperations::copy(buffers[(size_t)start1].data(), dataToPush, (int)juce::jmin(bufferSize, numSamples));
|
||||
|
||||
abstractFifo.finishedWrite(size1);
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void pop(SampleType* outputBuffer)
|
||||
{
|
||||
int start1, size1, start2, size2;
|
||||
abstractFifo.prepareToRead(1, start1, size1, start2, size2);
|
||||
|
||||
jassert(size1 <= 1);
|
||||
jassert(size2 == 0);
|
||||
|
||||
if (size1 > 0)
|
||||
juce::FloatVectorOperations::copy(outputBuffer, buffers[(size_t)start1].data(), (int)bufferSize);
|
||||
|
||||
abstractFifo.finishedRead(size1);
|
||||
}
|
||||
|
||||
private:
|
||||
//==============================================================================
|
||||
juce::AbstractFifo abstractFifo{ numBuffers };
|
||||
std::array<std::array<SampleType, bufferSize>, numBuffers> buffers;
|
||||
};
|
||||
Reference in New Issue
Block a user