| 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..c222d7fcee2fc686ac94cc3d6029035bf82dab7d 100644
|
| --- a/media/filters/video_renderer_base.cc
|
| +++ b/media/filters/video_renderer_base.cc
|
| @@ -359,13 +359,28 @@ void VideoRendererBase::PutCurrentFrame(scoped_refptr<VideoFrame> frame) {
|
| }
|
| }
|
|
|
| -void VideoRendererBase::FrameReady(scoped_refptr<VideoFrame> frame) {
|
| +void VideoRendererBase::FrameReady(VideoDecoder::Status status,
|
| + scoped_refptr<VideoFrame> frame) {
|
| 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;
|
| + }
|
| +
|
| + DCHECK_EQ(status, VideoDecoder::kOk);
|
| +
|
| // 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 ||
|
|
|