Chromium Code Reviews| Index: content/common/gpu/media/gpu_video_decode_accelerator.cc |
| diff --git a/content/common/gpu/media/gpu_video_decode_accelerator.cc b/content/common/gpu/media/gpu_video_decode_accelerator.cc |
| index 9ec813983645bef94c86d0470861d9c00ce2ecae..dfce76c6b8aa066a5abfa4ebd83394f523c8c25d 100644 |
| --- a/content/common/gpu/media/gpu_video_decode_accelerator.cc |
| +++ b/content/common/gpu/media/gpu_video_decode_accelerator.cc |
| @@ -130,8 +130,7 @@ GpuVideoDecodeAccelerator::GpuVideoDecodeAccelerator( |
| int32 host_route_id, |
| GpuCommandBufferStub* stub, |
| const scoped_refptr<base::MessageLoopProxy>& io_message_loop) |
| - : init_done_msg_(NULL), |
| - host_route_id_(host_route_id), |
| + : host_route_id_(host_route_id), |
| stub_(stub), |
| texture_target_(0), |
| filter_removed_(true, false), |
| @@ -148,7 +147,7 @@ GpuVideoDecodeAccelerator::GpuVideoDecodeAccelerator( |
| GpuVideoDecodeAccelerator::~GpuVideoDecodeAccelerator() { |
| // This class can only be self-deleted from OnWillDestroyStub(), which means |
| // the VDA has already been destroyed in there. |
| - CHECK(!video_decode_accelerator_.get()); |
| + DCHECK(!video_decode_accelerator_); |
| } |
| bool GpuVideoDecodeAccelerator::OnMessageReceived(const IPC::Message& msg) { |
| @@ -229,16 +228,6 @@ void GpuVideoDecodeAccelerator::PictureReady( |
| void GpuVideoDecodeAccelerator::NotifyError( |
| media::VideoDecodeAccelerator::Error error) { |
| - if (init_done_msg_) { |
| - // If we get an error while we're initializing, NotifyInitializeDone won't |
| - // be called, so we need to send the reply (with an error) here. |
| - GpuCommandBufferMsg_CreateVideoDecoder::WriteReplyParams( |
| - init_done_msg_, -1); |
| - if (!Send(init_done_msg_)) |
| - DLOG(ERROR) << "Send(init_done_msg_) failed"; |
| - init_done_msg_ = NULL; |
| - return; |
| - } |
| if (!Send(new AcceleratedVideoDecoderHostMsg_ErrorNotification( |
| host_route_id_, error))) { |
| DLOG(ERROR) << "Send(AcceleratedVideoDecoderHostMsg_ErrorNotification) " |
| @@ -250,15 +239,13 @@ void GpuVideoDecodeAccelerator::Initialize( |
| const media::VideoCodecProfile profile, |
| IPC::Message* init_done_msg) { |
| DCHECK(!video_decode_accelerator_.get()); |
| - DCHECK(!init_done_msg_); |
| - DCHECK(init_done_msg); |
| - init_done_msg_ = init_done_msg; |
| #if !defined(OS_WIN) |
| // Ensure we will be able to get a GL context at all before initializing |
| // non-Windows VDAs. |
| if (!make_context_current_.Run()) { |
| - NotifyError(media::VideoDecodeAccelerator::PLATFORM_FAILURE); |
| + GpuCommandBufferMsg_CreateVideoDecoder::WriteReplyParams(init_done_msg, -1); |
| + Send(init_done_msg); |
|
Pawel Osciak
2014/03/13 06:18:13
These seem to beg for a common define/method...
sheu
2014/03/13 22:39:52
Guess I could macro-ize this.
|
| return; |
| } |
| #endif |
| @@ -266,7 +253,8 @@ void GpuVideoDecodeAccelerator::Initialize( |
| #if defined(OS_WIN) |
| if (base::win::GetVersion() < base::win::VERSION_WIN7) { |
| NOTIMPLEMENTED() << "HW video decode acceleration not available."; |
| - NotifyError(media::VideoDecodeAccelerator::PLATFORM_FAILURE); |
| + GpuCommandBufferMsg_CreateVideoDecoder::WriteReplyParams(init_done_msg, -1); |
| + Send(init_done_msg); |
| return; |
| } |
| DVLOG(0) << "Initializing DXVA HW decoder for windows."; |
| @@ -275,7 +263,8 @@ void GpuVideoDecodeAccelerator::Initialize( |
| #elif defined(OS_CHROMEOS) && defined(ARCH_CPU_ARMEL) && defined(USE_X11) |
| scoped_ptr<V4L2Device> device = V4L2Device::Create(); |
| if (!device.get()) { |
| - NotifyError(media::VideoDecodeAccelerator::PLATFORM_FAILURE); |
| + GpuCommandBufferMsg_CreateVideoDecoder::WriteReplyParams(init_done_msg, -1); |
| + Send(init_done_msg); |
| return; |
| } |
| video_decode_accelerator_.reset( |
| @@ -288,7 +277,8 @@ void GpuVideoDecodeAccelerator::Initialize( |
| if (gfx::GetGLImplementation() != gfx::kGLImplementationDesktopGL) { |
| VLOG(1) << "HW video decode acceleration not available without " |
| "DesktopGL (GLX)."; |
| - NotifyError(media::VideoDecodeAccelerator::PLATFORM_FAILURE); |
| + GpuCommandBufferMsg_CreateVideoDecoder::WriteReplyParams(init_done_msg, -1); |
| + Send(init_done_msg); |
| return; |
| } |
| gfx::GLContextGLX* glx_context = |
| @@ -301,7 +291,8 @@ void GpuVideoDecodeAccelerator::Initialize( |
| make_context_current_)); |
| #else |
| NOTIMPLEMENTED() << "HW video decode acceleration not available."; |
| - NotifyError(media::VideoDecodeAccelerator::PLATFORM_FAILURE); |
| + GpuCommandBufferMsg_CreateVideoDecoder::WriteReplyParams(init_done_msg, -1); |
| + Send(init_done_msg); |
| return; |
| #endif |
| @@ -310,8 +301,15 @@ void GpuVideoDecodeAccelerator::Initialize( |
| stub_->channel()->AddFilter(filter_.get()); |
| } |
| - if (!video_decode_accelerator_->Initialize(profile, this)) |
| - NotifyError(media::VideoDecodeAccelerator::PLATFORM_FAILURE); |
| + if (!video_decode_accelerator_->Initialize(profile, this)) { |
| + GpuCommandBufferMsg_CreateVideoDecoder::WriteReplyParams(init_done_msg, -1); |
| + Send(init_done_msg); |
| + return; |
| + } |
| + |
| + GpuCommandBufferMsg_CreateVideoDecoder::WriteReplyParams(init_done_msg, |
| + host_route_id_); |
| + Send(init_done_msg); |
| } |
| // Runs on IO thread if video_decode_accelerator_->CanDecodeOnIOThread() is |
| @@ -448,14 +446,6 @@ void GpuVideoDecodeAccelerator::NotifyEndOfBitstreamBuffer( |
| } |
| } |
| -void GpuVideoDecodeAccelerator::NotifyInitializeDone() { |
| - GpuCommandBufferMsg_CreateVideoDecoder::WriteReplyParams( |
| - init_done_msg_, host_route_id_); |
| - if (!Send(init_done_msg_)) |
| - DLOG(ERROR) << "Send(init_done_msg_) failed"; |
| - init_done_msg_ = NULL; |
| -} |
| - |
| void GpuVideoDecodeAccelerator::NotifyFlushDone() { |
| if (!Send(new AcceleratedVideoDecoderHostMsg_FlushDone(host_route_id_))) |
| DLOG(ERROR) << "Send(AcceleratedVideoDecoderHostMsg_FlushDone) failed"; |