Fix audio::recorder::request
This commit is contained in:
parent
ae2efc94fb
commit
99b103b267
1 changed files with 6 additions and 5 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue