summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorfischman@chromium.org <fischman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-04-06 23:24:35 +0000
committerfischman@chromium.org <fischman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-04-06 23:24:35 +0000
commit4fc6ea91eee533e1e7e06c7f96134085276a11ec (patch)
tree0b8c2b784b77736d8845b7ac482d72e7fdabc66e /media
parente2ae1f7ab1a6ad10e4f440fce3fb197f569305c2 (diff)
downloadchromium_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.cc20
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) {