|
|
@@ -341,12 +341,11 @@ public: |
|
|
|
size_t numElements = std::numeric_limits<size_t>::max()) const
|
|
|
|
{
|
|
|
|
auto dstlen = static_cast<size_t> (dst.getNumSamples()) / sizeFactor;
|
|
|
|
auto n = static_cast<int> (jmin (numSamples - srcPos, dstlen - dstPos, numElements) * sizeFactor);
|
|
|
|
auto n = jmin (numSamples - srcPos, dstlen - dstPos, numElements) * sizeFactor;
|
|
|
|
auto maxChannels = jmin (static_cast<size_t> (dst.getNumChannels()), static_cast<size_t> (numChannels));
|
|
|
|
|
|
|
|
for (size_t ch = 0; ch < maxChannels; ++ch)
|
|
|
|
FloatVectorOperations::copy (dst.getWritePointer (static_cast<int> (ch),
|
|
|
|
static_cast<int> (dstPos * sizeFactor)),
|
|
|
|
FloatVectorOperations::copy (dst.getWritePointer ((int) ch, (int) (dstPos * sizeFactor)),
|
|
|
|
getDataPointer (ch) + (srcPos * sizeFactor),
|
|
|
|
n);
|
|
|
|
}
|
|
|
@@ -524,7 +523,7 @@ public: |
|
|
|
if (numChannels == 0)
|
|
|
|
return {};
|
|
|
|
|
|
|
|
auto n = static_cast<int> (numSamples * sizeFactor);
|
|
|
|
auto n = numSamples * sizeFactor;
|
|
|
|
auto minmax = FloatVectorOperations::findMinAndMax (getDataPointer (0), n);
|
|
|
|
|
|
|
|
for (size_t ch = 1; ch < numChannels; ++ch)
|
|
|
@@ -601,7 +600,7 @@ private: |
|
|
|
//==============================================================================
|
|
|
|
void JUCE_VECTOR_CALLTYPE clearInternal() const noexcept
|
|
|
|
{
|
|
|
|
auto n = static_cast<int> (numSamples * sizeFactor);
|
|
|
|
auto n = numSamples * sizeFactor;
|
|
|
|
|
|
|
|
for (size_t ch = 0; ch < numChannels; ++ch)
|
|
|
|
FloatVectorOperations::clear (getDataPointer (ch), n);
|
|
|
@@ -609,7 +608,7 @@ private: |
|
|
|
|
|
|
|
void JUCE_VECTOR_CALLTYPE fillInternal (NumericType value) const noexcept
|
|
|
|
{
|
|
|
|
auto n = static_cast<int> (numSamples * sizeFactor);
|
|
|
|
auto n = numSamples * sizeFactor;
|
|
|
|
|
|
|
|
for (size_t ch = 0; ch < numChannels; ++ch)
|
|
|
|
FloatVectorOperations::fill (getDataPointer (ch), value, n);
|
|
|
@@ -619,8 +618,7 @@ private: |
|
|
|
void copyFromInternal (const AudioBlock<OtherSampleType>& src) const noexcept
|
|
|
|
{
|
|
|
|
auto maxChannels = jmin (src.numChannels, numChannels);
|
|
|
|
auto n = static_cast<int> (jmin (src.numSamples * src.sizeFactor,
|
|
|
|
numSamples * sizeFactor));
|
|
|
|
auto n = jmin (src.numSamples * src.sizeFactor, numSamples * sizeFactor);
|
|
|
|
|
|
|
|
for (size_t ch = 0; ch < maxChannels; ++ch)
|
|
|
|
FloatVectorOperations::copy (getDataPointer (ch), src.getDataPointer (ch), n);
|
|
|
@@ -630,13 +628,12 @@ private: |
|
|
|
void copyFromInternal (const AudioBuffer<OtherNumericType>& src, size_t srcPos, size_t dstPos, size_t numElements) const
|
|
|
|
{
|
|
|
|
auto srclen = static_cast<size_t> (src.getNumSamples()) / sizeFactor;
|
|
|
|
auto n = static_cast<int> (jmin (srclen - srcPos, numSamples - dstPos, numElements) * sizeFactor);
|
|
|
|
auto n = jmin (srclen - srcPos, numSamples - dstPos, numElements) * sizeFactor;
|
|
|
|
auto maxChannels = jmin (static_cast<size_t> (src.getNumChannels()), static_cast<size_t> (numChannels));
|
|
|
|
|
|
|
|
for (size_t ch = 0; ch < maxChannels; ++ch)
|
|
|
|
FloatVectorOperations::copy (getDataPointer (ch) + (dstPos * sizeFactor),
|
|
|
|
src.getReadPointer (static_cast<int> (ch),
|
|
|
|
static_cast<int> (srcPos * sizeFactor)),
|
|
|
|
src.getReadPointer ((int) ch, (int) (srcPos * sizeFactor)),
|
|
|
|
n);
|
|
|
|
}
|
|
|
|
|
|
|
@@ -655,7 +652,7 @@ private: |
|
|
|
//==============================================================================
|
|
|
|
void JUCE_VECTOR_CALLTYPE addInternal (NumericType value) const noexcept
|
|
|
|
{
|
|
|
|
auto n = static_cast<int> (numSamples * sizeFactor);
|
|
|
|
auto n = numSamples * sizeFactor;
|
|
|
|
|
|
|
|
for (size_t ch = 0; ch < numChannels; ++ch)
|
|
|
|
FloatVectorOperations::add (getDataPointer (ch), value, n);
|
|
|
@@ -665,7 +662,7 @@ private: |
|
|
|
void addInternal (AudioBlock<OtherSampleType> src) const noexcept
|
|
|
|
{
|
|
|
|
jassert (numChannels == src.numChannels);
|
|
|
|
auto n = static_cast<int> (jmin (numSamples, src.numSamples) * sizeFactor);
|
|
|
|
auto n = jmin (numSamples, src.numSamples) * sizeFactor;
|
|
|
|
|
|
|
|
for (size_t ch = 0; ch < numChannels; ++ch)
|
|
|
|
FloatVectorOperations::add (getDataPointer (ch), src.getDataPointer (ch), n);
|
|
|
@@ -675,7 +672,7 @@ private: |
|
|
|
void JUCE_VECTOR_CALLTYPE replaceWithSumOfInternal (AudioBlock<OtherSampleType> src, NumericType value) const noexcept
|
|
|
|
{
|
|
|
|
jassert (numChannels == src.numChannels);
|
|
|
|
auto n = static_cast<int> (jmin (numSamples, src.numSamples) * sizeFactor);
|
|
|
|
auto n = jmin (numSamples, src.numSamples) * sizeFactor;
|
|
|
|
|
|
|
|
for (size_t ch = 0; ch < numChannels; ++ch)
|
|
|
|
FloatVectorOperations::add (getDataPointer (ch), src.getDataPointer (ch), value, n);
|
|
|
@@ -685,7 +682,7 @@ private: |
|
|
|
void replaceWithSumOfInternal (AudioBlock<Src1SampleType> src1, AudioBlock<Src2SampleType> src2) const noexcept
|
|
|
|
{
|
|
|
|
jassert (numChannels == src1.numChannels && src1.numChannels == src2.numChannels);
|
|
|
|
auto n = static_cast<int> (jmin (numSamples, src1.numSamples, src2.numSamples) * sizeFactor);
|
|
|
|
auto n = jmin (numSamples, src1.numSamples, src2.numSamples) * sizeFactor;
|
|
|
|
|
|
|
|
for (size_t ch = 0; ch < numChannels; ++ch)
|
|
|
|
FloatVectorOperations::add (getDataPointer (ch), src1.getDataPointer (ch), src2.getDataPointer (ch), n);
|
|
|
@@ -701,7 +698,7 @@ private: |
|
|
|
void subtractInternal (AudioBlock<OtherSampleType> src) const noexcept
|
|
|
|
{
|
|
|
|
jassert (numChannels == src.numChannels);
|
|
|
|
auto n = static_cast<int> (jmin (numSamples, src.numSamples) * sizeFactor);
|
|
|
|
auto n = jmin (numSamples, src.numSamples) * sizeFactor;
|
|
|
|
|
|
|
|
for (size_t ch = 0; ch < numChannels; ++ch)
|
|
|
|
FloatVectorOperations::subtract (getDataPointer (ch), src.getDataPointer (ch), n);
|
|
|
@@ -717,7 +714,7 @@ private: |
|
|
|
void replaceWithDifferenceOfInternal (AudioBlock<Src1SampleType> src1, AudioBlock<Src2SampleType> src2) const noexcept
|
|
|
|
{
|
|
|
|
jassert (numChannels == src1.numChannels && src1.numChannels == src2.numChannels);
|
|
|
|
auto n = static_cast<int> (jmin (numSamples, src1.numSamples, src2.numSamples) * sizeFactor);
|
|
|
|
auto n = jmin (numSamples, src1.numSamples, src2.numSamples) * sizeFactor;
|
|
|
|
|
|
|
|
for (size_t ch = 0; ch < numChannels; ++ch)
|
|
|
|
FloatVectorOperations::subtract (getDataPointer (ch), src1.getDataPointer (ch), src2.getDataPointer (ch), n);
|
|
|
@@ -726,7 +723,7 @@ private: |
|
|
|
//==============================================================================
|
|
|
|
void JUCE_VECTOR_CALLTYPE multiplyByInternal (NumericType value) const noexcept
|
|
|
|
{
|
|
|
|
auto n = static_cast<int> (numSamples * sizeFactor);
|
|
|
|
auto n = numSamples * sizeFactor;
|
|
|
|
|
|
|
|
for (size_t ch = 0; ch < numChannels; ++ch)
|
|
|
|
FloatVectorOperations::multiply (getDataPointer (ch), value, n);
|
|
|
@@ -736,7 +733,7 @@ private: |
|
|
|
void multiplyByInternal (AudioBlock<OtherSampleType> src) const noexcept
|
|
|
|
{
|
|
|
|
jassert (numChannels == src.numChannels);
|
|
|
|
auto n = static_cast<int> (jmin (numSamples, src.numSamples) * sizeFactor);
|
|
|
|
auto n = jmin (numSamples, src.numSamples) * sizeFactor;
|
|
|
|
|
|
|
|
for (size_t ch = 0; ch < numChannels; ++ch)
|
|
|
|
FloatVectorOperations::multiply (getDataPointer (ch), src.getDataPointer (ch), n);
|
|
|
@@ -746,7 +743,7 @@ private: |
|
|
|
void JUCE_VECTOR_CALLTYPE replaceWithProductOfInternal (AudioBlock<OtherSampleType> src, NumericType value) const noexcept
|
|
|
|
{
|
|
|
|
jassert (numChannels == src.numChannels);
|
|
|
|
auto n = static_cast<int> (jmin (numSamples, src.numSamples) * sizeFactor);
|
|
|
|
auto n = jmin (numSamples, src.numSamples) * sizeFactor;
|
|
|
|
|
|
|
|
for (size_t ch = 0; ch < numChannels; ++ch)
|
|
|
|
FloatVectorOperations::multiply (getDataPointer (ch), src.getDataPointer (ch), value, n);
|
|
|
@@ -756,7 +753,7 @@ private: |
|
|
|
void replaceWithProductOfInternal (AudioBlock<Src1SampleType> src1, AudioBlock<Src2SampleType> src2) const noexcept
|
|
|
|
{
|
|
|
|
jassert (numChannels == src1.numChannels && src1.numChannels == src2.numChannels);
|
|
|
|
auto n = static_cast<int> (jmin (numSamples, src1.numSamples, src2.numSamples) * sizeFactor);
|
|
|
|
auto n = jmin (numSamples, src1.numSamples, src2.numSamples) * sizeFactor;
|
|
|
|
|
|
|
|
for (size_t ch = 0; ch < numChannels; ++ch)
|
|
|
|
FloatVectorOperations::multiply (getDataPointer (ch), src1.getDataPointer (ch), src2.getDataPointer (ch), n);
|
|
|
@@ -809,7 +806,7 @@ private: |
|
|
|
void JUCE_VECTOR_CALLTYPE addProductOfInternal (AudioBlock<OtherSampleType> src, NumericType factor) const noexcept
|
|
|
|
{
|
|
|
|
jassert (numChannels == src.numChannels);
|
|
|
|
auto n = static_cast<int> (jmin (numSamples, src.numSamples) * sizeFactor);
|
|
|
|
auto n = jmin (numSamples, src.numSamples) * sizeFactor;
|
|
|
|
|
|
|
|
for (size_t ch = 0; ch < numChannels; ++ch)
|
|
|
|
FloatVectorOperations::addWithMultiply (getDataPointer (ch), src.getDataPointer (ch), factor, n);
|
|
|
@@ -819,7 +816,7 @@ private: |
|
|
|
void addProductOfInternal (AudioBlock<Src1SampleType> src1, AudioBlock<Src2SampleType> src2) const noexcept
|
|
|
|
{
|
|
|
|
jassert (numChannels == src1.numChannels && src1.numChannels == src2.numChannels);
|
|
|
|
auto n = static_cast<int> (jmin (numSamples, src1.numSamples, src2.numSamples) * sizeFactor);
|
|
|
|
auto n = jmin (numSamples, src1.numSamples, src2.numSamples) * sizeFactor;
|
|
|
|
|
|
|
|
for (size_t ch = 0; ch < numChannels; ++ch)
|
|
|
|
FloatVectorOperations::addWithMultiply (getDataPointer (ch), src1.getDataPointer (ch), src2.getDataPointer (ch), n);
|
|
|
@@ -835,7 +832,7 @@ private: |
|
|
|
void replaceWithNegativeOfInternal (AudioBlock<OtherSampleType> src) const noexcept
|
|
|
|
{
|
|
|
|
jassert (numChannels == src.numChannels);
|
|
|
|
auto n = static_cast<int> (jmin (numSamples, src.numSamples) * sizeFactor);
|
|
|
|
auto n = jmin (numSamples, src.numSamples) * sizeFactor;
|
|
|
|
|
|
|
|
for (size_t ch = 0; ch < numChannels; ++ch)
|
|
|
|
FloatVectorOperations::negate (getDataPointer (ch), src.getDataPointer (ch), n);
|
|
|
@@ -845,7 +842,7 @@ private: |
|
|
|
void replaceWithAbsoluteValueOfInternal (AudioBlock<OtherSampleType> src) const noexcept
|
|
|
|
{
|
|
|
|
jassert (numChannels == src.numChannels);
|
|
|
|
auto n = static_cast<int> (jmin (numSamples, src.numSamples) * sizeFactor);
|
|
|
|
auto n = jmin (numSamples, src.numSamples) * sizeFactor;
|
|
|
|
|
|
|
|
for (size_t ch = 0; ch < numChannels; ++ch)
|
|
|
|
FloatVectorOperations::abs (getDataPointer (ch), src.getDataPointer (ch), n);
|
|
|
@@ -856,7 +853,7 @@ private: |
|
|
|
void replaceWithMinOfInternal (AudioBlock<Src1SampleType> src1, AudioBlock<Src2SampleType> src2) const noexcept
|
|
|
|
{
|
|
|
|
jassert (numChannels == src1.numChannels && src1.numChannels == src2.numChannels);
|
|
|
|
auto n = static_cast<int> (jmin (src1.numSamples, src2.numSamples, numSamples) * sizeFactor);
|
|
|
|
auto n = jmin (src1.numSamples, src2.numSamples, numSamples) * sizeFactor;
|
|
|
|
|
|
|
|
for (size_t ch = 0; ch < numChannels; ++ch)
|
|
|
|
FloatVectorOperations::min (getDataPointer (ch), src1.getDataPointer (ch), src2.getDataPointer (ch), n);
|
|
|
@@ -866,7 +863,7 @@ private: |
|
|
|
void replaceWithMaxOfInternal (AudioBlock<Src1SampleType> src1, AudioBlock<Src2SampleType> src2) const noexcept
|
|
|
|
{
|
|
|
|
jassert (numChannels == src1.numChannels && src1.numChannels == src2.numChannels);
|
|
|
|
auto n = static_cast<int> (jmin (src1.numSamples, src2.numSamples, numSamples) * sizeFactor);
|
|
|
|
auto n = jmin (src1.numSamples, src2.numSamples, numSamples) * sizeFactor;
|
|
|
|
|
|
|
|
for (size_t ch = 0; ch < numChannels; ++ch)
|
|
|
|
FloatVectorOperations::max (getDataPointer (ch), src1.getDataPointer (ch), src2.getDataPointer (ch), n);
|
|
|
|