diff --git a/libs/audio/source/recorder.cpp b/libs/audio/source/recorder.cpp index b60d5fc1..12a3984b 100644 --- a/libs/audio/source/recorder.cpp +++ b/libs/audio/source/recorder.cpp @@ -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(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 buffer() const override