| Index: media/filters/gpu_video_decoder.cc
|
| diff --git a/media/filters/gpu_video_decoder.cc b/media/filters/gpu_video_decoder.cc
|
| index 7ce3df75e74feaf68d9a6fbdf1ef9f3bcda8bd01..547d36114c28a624c40db610f7f29deac6f9b73a 100644
|
| --- a/media/filters/gpu_video_decoder.cc
|
| +++ b/media/filters/gpu_video_decoder.cc
|
| @@ -53,7 +53,8 @@ GpuVideoDecoder::GpuVideoDecoder(
|
| decoder_texture_target_(0),
|
| next_picture_buffer_id_(0),
|
| next_bitstream_buffer_id_(0),
|
| - shutting_down_(false) {
|
| + shutting_down_(false),
|
| + error_occured_(false) {
|
| DCHECK(gvd_loop_proxy_ && factories_);
|
| }
|
|
|
| @@ -192,8 +193,13 @@ void GpuVideoDecoder::Read(const ReadCB& read_cb) {
|
| return;
|
| }
|
|
|
| + if (error_occured_) {
|
| + read_cb.Run(kDecodeError, NULL);
|
| + return;
|
| + }
|
| +
|
| if (!vda_) {
|
| - read_cb.Run(VideoFrame::CreateEmptyFrame());
|
| + read_cb.Run(kOk, VideoFrame::CreateEmptyFrame());
|
| return;
|
| }
|
|
|
| @@ -233,7 +239,7 @@ void GpuVideoDecoder::RequestBufferDecode(const scoped_refptr<Buffer>& buffer) {
|
| return;
|
|
|
| gvd_loop_proxy_->PostTask(FROM_HERE, base::Bind(
|
| - pending_read_cb_, scoped_refptr<VideoFrame>()));
|
| + pending_read_cb_, kOk, scoped_refptr<VideoFrame>()));
|
| pending_read_cb_.Reset();
|
| return;
|
| }
|
| @@ -415,7 +421,7 @@ void GpuVideoDecoder::EnqueueFrameAndTriggerFrameDelivery(
|
| return;
|
|
|
| gvd_loop_proxy_->PostTask(FROM_HERE, base::Bind(
|
| - pending_read_cb_, ready_video_frames_.front()));
|
| + pending_read_cb_, kOk, ready_video_frames_.front()));
|
| pending_read_cb_.Reset();
|
| ready_video_frames_.pop_front();
|
| }
|
| @@ -536,8 +542,13 @@ void GpuVideoDecoder::NotifyError(media::VideoDecodeAccelerator::Error error) {
|
| return;
|
| vda_ = NULL;
|
| DLOG(ERROR) << "VDA Error: " << error;
|
| - if (host())
|
| - host()->SetError(PIPELINE_ERROR_DECODE);
|
| +
|
| + error_occured_ = true;
|
| +
|
| + if (!pending_read_cb_.is_null()) {
|
| + base::ResetAndReturn(&pending_read_cb_).Run(kDecodeError, NULL);
|
| + return;
|
| + }
|
| }
|
|
|
| } // namespace media
|
|
|