diff options
author | fischman@chromium.org <fischman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-04-06 23:24:35 +0000 |
---|---|---|
committer | fischman@chromium.org <fischman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-04-06 23:24:35 +0000 |
commit | 4fc6ea91eee533e1e7e06c7f96134085276a11ec (patch) | |
tree | 0b8c2b784b77736d8845b7ac482d72e7fdabc66e /media | |
parent | e2ae1f7ab1a6ad10e4f440fce3fb197f569305c2 (diff) | |
download | chromium_src-4fc6ea91eee533e1e7e06c7f96134085276a11ec.zip chromium_src-4fc6ea91eee533e1e7e06c7f96134085276a11ec.tar.gz chromium_src-4fc6ea91eee533e1e7e06c7f96134085276a11ec.tar.bz2 |
Clarify possible states in FFmpegDemuxerStream::Read().
TEST=none (pure refactoring)
Review URL: http://codereview.chromium.org/10006035
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@131209 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media')
-rw-r--r-- | media/filters/ffmpeg_demuxer.cc | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/media/filters/ffmpeg_demuxer.cc b/media/filters/ffmpeg_demuxer.cc index 4a7631b..67448cb 100644 --- a/media/filters/ffmpeg_demuxer.cc +++ b/media/filters/ffmpeg_demuxer.cc @@ -169,21 +169,19 @@ void FFmpegDemuxerStream::Read(const ReadCB& read_cb) { return; } - if (!buffer_queue_.empty()) { - // Dequeue a buffer send back. - scoped_refptr<Buffer> buffer = buffer_queue_.front(); - buffer_queue_.pop_front(); + // Buffers are only queued when there are no pending reads. + DCHECK(buffer_queue_.empty() || read_queue_.empty()); - // Execute the callback. - read_cb.Run(buffer); - - if (!read_queue_.empty()) - demuxer_->PostDemuxTask(); - - } else { + if (buffer_queue_.empty()) { demuxer_->message_loop()->PostTask(FROM_HERE, base::Bind( &FFmpegDemuxerStream::ReadTask, this, read_cb)); + return; } + + // Send the oldest buffer back. + scoped_refptr<Buffer> buffer = buffer_queue_.front(); + buffer_queue_.pop_front(); + read_cb.Run(buffer); } void FFmpegDemuxerStream::ReadTask(const ReadCB& read_cb) { |