Commit 706252f6 authored by Ken MacKay's avatar Ken MacKay Committed by Commit Bot

[Chromecast] Make sure used audio buffers are always freed

Bug: internal b/138104456
Change-Id: I8d68f1b9cae2bab415ca0093ac8b94268d3efe2f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1729512Reviewed-by: default avatarSergey Volk <servolk@chromium.org>
Commit-Queue: Kenneth MacKay <kmackay@chromium.org>
Cr-Commit-Position: refs/heads/master@{#682843}
parent 769b0a2b
......@@ -299,20 +299,25 @@ void BufferingMixerSource::WritePcm(scoped_refptr<DecoderBufferBase> data) {
DCHECK(caller_task_runner_->BelongsToCurrentThread());
RenderingDelay delay;
bool queued;
{
auto locked = locked_members_.Lock();
old_buffers_to_be_freed_.swap(locked->buffers_to_be_freed_);
if (locked->state_ == State::kUninitialized ||
locked->queued_frames_ + locked->fader_.buffered_frames() >=
max_queued_frames_) {
DCHECK(!locked->pending_data_);
locked->pending_data_ = std::move(data);
return;
queued = false;
} else {
delay = QueueData(std::move(data));
queued = true;
}
old_buffers_to_be_freed_.swap(locked->buffers_to_be_freed_);
delay = QueueData(std::move(data));
}
old_buffers_to_be_freed_.clear();
delegate_->OnWritePcmCompletion(delay);
if (queued) {
delegate_->OnWritePcmCompletion(delay);
}
}
BufferingMixerSource::RenderingDelay BufferingMixerSource::QueueData(
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment