1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
/* SPDX-License-Identifier: GPL-2.0-or-later */
/*!********************************************************************
Audacity: A Digital Audio Editor
SilenceSegment.cpp
Matthieu Hodgkinson
**********************************************************************/
#include "SilenceSegment.h"
#include <algorithm>
#include <cassert>
SilenceSegment::SilenceSegment(size_t numChannels, sampleCount numSamples)
: mNumChannels { numChannels }
, mNumRemainingSamples { numSamples }
{
}
size_t
SilenceSegment::GetFloats(float *const *buffers, size_t numSamples)
{
const size_t numSamplesToProduce =
std::min<long long>(mNumRemainingSamples.as_long_long(), numSamples);
for (auto i = 0u; i < mNumChannels; ++i)
{
auto buffer = buffers[i];
std::fill(buffer, buffer + numSamplesToProduce, 0.f);
}
mNumRemainingSamples -= numSamplesToProduce;
return numSamplesToProduce;
}
bool SilenceSegment::Empty() const
{
return mNumRemainingSamples == 0u;
}
size_t SilenceSegment::NChannels() const
{
return mNumChannels;
}
|