psemek/libs/audio/source/wave/silence.cpp

40 lines
586 B
C++

#include <psemek/audio/wave/silence.hpp>
namespace psemek::audio
{
namespace
{
struct silence_impl
: stream
{
std::size_t read(float * data, std::size_t sample_count) override
{
std::fill(data, data + sample_count, 0.f);
played_ += sample_count;
return sample_count;
}
std::optional<std::size_t> length() const override
{
return std::nullopt;
}
std::size_t played() const override
{
return played_;
}
private:
std::size_t played_ = 0;
};
}
stream_ptr silence()
{
return std::make_shared<silence_impl>();
}
}