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

Unified Diff: media/filters/video_renderer_base.cc

Issue 10248002: Report VideoDecoder status through ReadCB instead of through FilterHost. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 8 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/video_renderer_base.cc
diff --git a/media/filters/video_renderer_base.cc b/media/filters/video_renderer_base.cc
index 51c51b03c7a018d1dd8440ccaa580261124e3f8b..c8c2e184418e674c45a5e46db052ad5ae5c95722 100644
--- a/media/filters/video_renderer_base.cc
+++ b/media/filters/video_renderer_base.cc
@@ -359,13 +359,26 @@ void VideoRendererBase::PutCurrentFrame(scoped_refptr<VideoFrame> frame) {
}
}
-void VideoRendererBase::FrameReady(scoped_refptr<VideoFrame> frame) {
+void VideoRendererBase::FrameReady(scoped_refptr<VideoFrame> frame,
+ VideoDecoder::Status status) {
base::AutoLock auto_lock(lock_);
DCHECK_NE(state_, kUninitialized);
CHECK(pending_read_);
pending_read_ = false;
+ if (status == VideoDecoder::kDecodeError) {
+ DCHECK(!frame);
+ host()->SetError(PIPELINE_ERROR_DECODE);
+ return;
+ }
+
+ if (status == VideoDecoder::kDecryptError) {
+ DCHECK(!frame);
+ host()->SetError(PIPELINE_ERROR_DECRYPT);
+ return;
+ }
Ami GONE FROM CHROMIUM 2012/04/27 16:49:14 DCHECK_EQ(status, VideoDecoder::kOk); ?
xhwang 2012/04/27 23:22:30 Done.
+
// Already-queued Decoder ReadCB's can fire after various state transitions
// have happened; in that case just drop those frames immediately.
if (state_ == kStopped || state_ == kError || state_ == kFlushed ||

Powered by Google App Engine
This is Rietveld 408576698