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

Unified Diff: media/filters/decoder_stream.cc

Issue 2110463003: Remove pending demuxer read state, prefer flag, it's not stable. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Use expect. Created 4 years, 6 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
« no previous file with comments | « media/filters/decoder_stream.h ('k') | media/filters/video_frame_stream_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/filters/decoder_stream.cc
diff --git a/media/filters/decoder_stream.cc b/media/filters/decoder_stream.cc
index 481b5be380cc26a9894315de16c68ae8b2d995a2..1b5adafd06c8b4bff94ad3f6ba1d6767374676b5 100644
--- a/media/filters/decoder_stream.cc
+++ b/media/filters/decoder_stream.cc
@@ -397,7 +397,7 @@ void DecoderStream<StreamType>::OnDecodeDone(int buffer_size,
DecodeStatus status) {
FUNCTION_DVLOG(2) << ": " << status;
DCHECK(state_ == STATE_NORMAL || state_ == STATE_FLUSHING_DECODER ||
- state_ == STATE_PENDING_DEMUXER_READ || state_ == STATE_ERROR)
+ state_ == STATE_ERROR)
<< state_;
DCHECK_GT(pending_decode_requests_, 0);
@@ -481,7 +481,7 @@ void DecoderStream<StreamType>::OnDecodeOutputReady(
FUNCTION_DVLOG(2) << ": " << output->timestamp().InMilliseconds() << " ms";
DCHECK(output.get());
DCHECK(state_ == STATE_NORMAL || state_ == STATE_FLUSHING_DECODER ||
- state_ == STATE_PENDING_DEMUXER_READ || state_ == STATE_ERROR)
+ state_ == STATE_ERROR)
<< state_;
if (state_ == STATE_ERROR) {
@@ -539,12 +539,11 @@ void DecoderStream<StreamType>::ReadFromDemuxerStream() {
return;
}
- // Set a flag in addition to the state, because the state can be overwritten
- // when encountering an error. See crbug.com/597605.
- DCHECK(!pending_demuxer_read_);
- pending_demuxer_read_ = true;
+ // We may get here when a read is already pending, ignore this.
+ if (pending_demuxer_read_)
+ return;
- state_ = STATE_PENDING_DEMUXER_READ;
+ pending_demuxer_read_ = true;
stream_->Read(base::Bind(&DecoderStream<StreamType>::OnBufferReady,
weak_factory_.GetWeakPtr()));
}
@@ -560,17 +559,13 @@ void DecoderStream<StreamType>::OnBufferReady(
DCHECK(task_runner_->BelongsToCurrentThread());
DCHECK(pending_demuxer_read_);
if (decoded_frames_since_fallback_) {
- DCHECK(state_ == STATE_PENDING_DEMUXER_READ || state_ == STATE_ERROR)
- << state_;
+ DCHECK(pending_demuxer_read_ || state_ == STATE_ERROR) << state_;
} else {
- DCHECK(state_ == STATE_PENDING_DEMUXER_READ || state_ == STATE_ERROR ||
- state_ == STATE_REINITIALIZING_DECODER || state_ == STATE_NORMAL)
+ DCHECK(state_ == STATE_ERROR || state_ == STATE_REINITIALIZING_DECODER ||
+ state_ == STATE_NORMAL)
<< state_;
}
DCHECK_EQ(buffer.get() != NULL, status == DemuxerStream::kOk) << status;
-
- // Unset the flag. STATE_PENDING_DEMUXER_READ might have been overwritten.
- // See crbug.com/597605.
pending_demuxer_read_ = false;
// If parallel decode requests are supported, multiple read requests might
« no previous file with comments | « media/filters/decoder_stream.h ('k') | media/filters/video_frame_stream_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698