Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(389)

Unified Diff: media/filters/fake_demuxer_stream.cc

Issue 15085011: Add FakeVideoDecoder. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: media/filters/fake_demuxer_stream.cc
diff --git a/media/filters/fake_demuxer_stream.cc b/media/filters/fake_demuxer_stream.cc
index 3cc7fa666659735715142351482b1868583eb52d..8fdd5d3686305e4e14c67883e24d7a533300530a 100644
--- a/media/filters/fake_demuxer_stream.cc
+++ b/media/filters/fake_demuxer_stream.cc
@@ -34,10 +34,12 @@ FakeDemuxerStream::FakeDemuxerStream(int num_configs,
num_buffers_in_one_config_(num_buffers_in_one_config),
is_encrypted_(is_encrypted),
num_buffers_left_in_current_config_(num_buffers_in_one_config),
+ num_buffers_returned_(0),
current_timestamp_(base::TimeDelta::FromMilliseconds(kStartTimestampMs)),
duration_(base::TimeDelta::FromMilliseconds(kDurationMs)),
next_coded_size_(kStartWidth, kStartHeight),
- hold_next_read_(false) {
+ next_read_num_(0),
+ read_to_hold_(-1) {
DCHECK_GT(num_configs_left_, 0);
DCHECK_GT(num_buffers_in_one_config_, 0);
UpdateVideoDecoderConfig();
@@ -51,8 +53,11 @@ void FakeDemuxerStream::Read(const ReadCB& read_cb) {
read_cb_ = BindToCurrentLoop(read_cb);
- if (!hold_next_read_)
- DoRead();
+ if (read_to_hold_ == next_read_num_)
+ return;
+
+ DCHECK(read_to_hold_ == -1 || read_to_hold_ > next_read_num_);
+ DoRead();
}
const AudioDecoderConfig& FakeDemuxerStream::audio_decoder_config() {
@@ -78,19 +83,27 @@ void FakeDemuxerStream::EnableBitstreamConverter() {
void FakeDemuxerStream::HoldNextRead() {
DCHECK(message_loop_->BelongsToCurrentThread());
- hold_next_read_ = true;
+ read_to_hold_ = next_read_num_;
+}
+
+void FakeDemuxerStream::HoldNextConfigChangeRead() {
+ DCHECK(message_loop_->BelongsToCurrentThread());
+ // Set |read_to_hold_| to be the next config change read.
+ read_to_hold_ = next_read_num_ + num_buffers_in_one_config_ -
+ next_read_num_ % (num_buffers_in_one_config_ + 1);
}
void FakeDemuxerStream::SatisfyRead() {
DCHECK(message_loop_->BelongsToCurrentThread());
- DCHECK(hold_next_read_);
+ DCHECK_EQ(read_to_hold_, next_read_num_);
DCHECK(!read_cb_.is_null());
+ read_to_hold_ = -1;
DoRead();
}
void FakeDemuxerStream::Reset() {
- hold_next_read_ = false;
+ read_to_hold_ = -1;
if (!read_cb_.is_null())
base::ResetAndReturn(&read_cb_).Run(kAborted, NULL);
@@ -109,6 +122,8 @@ void FakeDemuxerStream::DoRead() {
DCHECK(message_loop_->BelongsToCurrentThread());
DCHECK(!read_cb_.is_null());
+ next_read_num_++;
+
if (num_buffers_left_in_current_config_ == 0) {
// End of stream.
if (num_configs_left_ == 0) {
@@ -143,6 +158,7 @@ void FakeDemuxerStream::DoRead() {
if (num_buffers_left_in_current_config_ == 0)
num_configs_left_--;
+ num_buffers_returned_++;
base::ResetAndReturn(&read_cb_).Run(kOk, buffer);
}

Powered by Google App Engine
This is Rietveld 408576698