Fix audio::recorder::request

This commit is contained in:
Nikita Lisitsa 2026-07-19 19:39:45 +03:00
parent ae2efc94fb
commit 99b103b267

View file

@ -23,25 +23,26 @@ namespace psemek::audio
std::size_t request(std::size_t sample_count) override
{
std::size_t count = 0;
if (storage_.size() < samples_.size() + sample_count)
{
storage_.resize(std::max<std::size_t>(samples_.size() + sample_count, storage_.size() * 2));
samples_ = {storage_.data(), storage_.data() + samples_.size()};
}
std::size_t count = 0;
if (auto stream = channel_->stream())
{
count = stream->read({storage_.data() + samples_.size(), sample_count});
if (count < sample_count)
{
channel_->stop();
}
}
std::fill(storage_.data() + samples_.size() + count, storage_.data() + samples_.size() + sample_count, 0.f);
samples_ = {storage_.data(), storage_.data() + samples_.size() + sample_count};
std::fill(storage_.data() + samples_.size() + count, storage_.data() + samples_.size() + count, 0.f);
samples_ = {storage_.data(), storage_.data() + samples_.size() + count};
return sample_count;
return count;
}
util::span<float const> buffer() const override