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 || |