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