Commit e08f39a0 authored by Sergey Volk's avatar Sergey Volk Committed by Commit Bot

Fix excessive memory consumption in FFmpegDemuxer

Previously FFmpegDemuxer would release all unnecessary audio/video
streams. But with multi-track support unused a/v streams are disabled
instead of being released. So now we need to exclude disabled streams
in FFmpegDemuxer::StreamsHaveAvailableCapacity, otherwise it will
always return true (since disabled streams always have available
capacity), causing FFmpegDemuxer memory usage to grow unbounded.

BUG=740138

Change-Id: I4f2c990232a01988f66ff475bbb8b9970aff742f
Reviewed-on: https://chromium-review.googlesource.com/572231
Commit-Queue: Sergey Volk <servolk@chromium.org>
Reviewed-by: default avatarDale Curtis <dalecurtis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#486957}
parent 77d740e3
...@@ -1850,7 +1850,7 @@ void FFmpegDemuxer::OnReadFrameDone(ScopedAVPacket packet, int result) { ...@@ -1850,7 +1850,7 @@ void FFmpegDemuxer::OnReadFrameDone(ScopedAVPacket packet, int result) {
bool FFmpegDemuxer::StreamsHaveAvailableCapacity() { bool FFmpegDemuxer::StreamsHaveAvailableCapacity() {
DCHECK(task_runner_->BelongsToCurrentThread()); DCHECK(task_runner_->BelongsToCurrentThread());
for (const auto& stream : streams_) { for (const auto& stream : streams_) {
if (stream && stream->HasAvailableCapacity()) if (stream && stream->IsEnabled() && stream->HasAvailableCapacity())
return true; return true;
} }
return false; return false;
......
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