Index: content/renderer/pepper_platform_video_decoder_impl.cc |
diff --git a/content/renderer/pepper_platform_video_decoder_impl.cc b/content/renderer/pepper_platform_video_decoder_impl.cc |
index 1217bb97e2fb42a8e45d67f8ae2aa15ed353cbb4..8e186c89beb30b2156cb23996f56af6de74fa118 100644 |
--- a/content/renderer/pepper_platform_video_decoder_impl.cc |
+++ b/content/renderer/pepper_platform_video_decoder_impl.cc |
@@ -17,11 +17,13 @@ |
using media::BitstreamBuffer; |
PlatformVideoDecoderImpl::PlatformVideoDecoderImpl( |
- VideoDecodeAccelerator::Client* client, uint32 command_buffer_route_id) |
+ VideoDecodeAccelerator::Client* client, |
+ int32 command_buffer_route_id, |
+ gpu::CommandBufferHelper* cmd_buffer_helper) |
: client_(client), |
command_buffer_route_id_(command_buffer_route_id), |
- decoder_(NULL), |
- message_loop_(NULL) { |
+ cmd_buffer_helper_(cmd_buffer_helper), |
+ decoder_(NULL) { |
DCHECK(client); |
} |
@@ -42,8 +44,6 @@ bool PlatformVideoDecoderImpl::Initialize(const std::vector<uint32>& config) { |
RenderThread* render_thread = RenderThread::current(); |
DCHECK(render_thread); |
- message_loop_ = MessageLoop::current(); |
- DCHECK(message_loop_); |
channel_ = render_thread->EstablishGpuChannelSync( |
content::CAUSE_FOR_GPU_LAUNCH_VIDEODECODEACCELERATOR_INITIALIZE); |
@@ -67,26 +67,18 @@ bool PlatformVideoDecoderImpl::Initialize(const std::vector<uint32>& config) { |
void PlatformVideoDecoderImpl::InitializeDecoder( |
const std::vector<uint32>& configs) { |
- // Only create GpuVideoDecodeAcceleratorHost on IO thread. |
- if (ChildProcess::current()->io_message_loop() != MessageLoop::current() ) { |
- ChildProcess::current()->io_message_loop()-> |
- PostTask(FROM_HERE, base::Bind( |
- &PlatformVideoDecoderImpl::InitializeDecoder, |
- base::Unretained(this), |
- configs)); |
- return; |
- } |
+ DCHECK_EQ(RenderThread::current()->message_loop(), MessageLoop::current()); |
GpuVideoServiceHost* video_service = channel_->gpu_video_service_host(); |
decoder_.reset(video_service->CreateVideoAccelerator( |
- this, command_buffer_route_id_)); |
+ this, command_buffer_route_id_, cmd_buffer_helper_)); |
// Send IPC message to initialize decoder in GPU process. |
decoder_->Initialize(configs); |
} |
-bool PlatformVideoDecoderImpl::Decode(const BitstreamBuffer& bitstream_buffer) { |
+void PlatformVideoDecoderImpl::Decode(const BitstreamBuffer& bitstream_buffer) { |
DCHECK(decoder_.get()); |
- return decoder_->Decode(bitstream_buffer); |
+ decoder_->Decode(bitstream_buffer); |
} |
void PlatformVideoDecoderImpl::AssignGLESBuffers( |
@@ -107,96 +99,62 @@ void PlatformVideoDecoderImpl::ReusePictureBuffer( |
decoder_->ReusePictureBuffer(picture_buffer_id); |
} |
-bool PlatformVideoDecoderImpl::Flush() { |
+void PlatformVideoDecoderImpl::Flush() { |
DCHECK(decoder_.get()); |
- return decoder_->Flush(); |
+ decoder_->Flush(); |
} |
-bool PlatformVideoDecoderImpl::Abort() { |
+void PlatformVideoDecoderImpl::Abort() { |
DCHECK(decoder_.get()); |
- return decoder_->Abort(); |
+ decoder_->Abort(); |
} |
void PlatformVideoDecoderImpl::NotifyEndOfStream() { |
- DCHECK(message_loop_); |
- message_loop_-> |
- PostTask(FROM_HERE, base::Bind( |
- &VideoDecodeAccelerator::Client::NotifyEndOfStream, |
- base::Unretained(client_))); |
+ DCHECK_EQ(RenderThread::current()->message_loop(), MessageLoop::current()); |
+ client_->NotifyEndOfStream(); |
} |
void PlatformVideoDecoderImpl::NotifyError( |
VideoDecodeAccelerator::Error error) { |
- DCHECK(message_loop_); |
- message_loop_-> |
- PostTask(FROM_HERE, base::Bind( |
- &VideoDecodeAccelerator::Client::NotifyError, |
- base::Unretained(client_), |
- error)); |
+ DCHECK_EQ(RenderThread::current()->message_loop(), MessageLoop::current()); |
+ client_->NotifyError(error); |
} |
void PlatformVideoDecoderImpl::ProvidePictureBuffers( |
uint32 requested_num_of_buffers, |
const gfx::Size& dimensions, |
media::VideoDecodeAccelerator::MemoryType type) { |
- DCHECK(message_loop_); |
- message_loop_-> |
- PostTask(FROM_HERE, base::Bind( |
- &VideoDecodeAccelerator::Client::ProvidePictureBuffers, |
- base::Unretained(client_), |
- requested_num_of_buffers, |
- dimensions, |
- type)); |
+ DCHECK_EQ(RenderThread::current()->message_loop(), MessageLoop::current()); |
+ client_->ProvidePictureBuffers(requested_num_of_buffers, dimensions, type); |
} |
void PlatformVideoDecoderImpl::DismissPictureBuffer(int32 picture_buffer_id) { |
- DCHECK(message_loop_); |
- message_loop_-> |
- PostTask(FROM_HERE, base::Bind( |
- &VideoDecodeAccelerator::Client::DismissPictureBuffer, |
- base::Unretained(client_), |
- picture_buffer_id)); |
+ DCHECK_EQ(RenderThread::current()->message_loop(), MessageLoop::current()); |
+ client_->DismissPictureBuffer(picture_buffer_id); |
} |
void PlatformVideoDecoderImpl::PictureReady(const media::Picture& picture) { |
- DCHECK(message_loop_); |
- message_loop_-> |
- PostTask(FROM_HERE, base::Bind( |
- &VideoDecodeAccelerator::Client::PictureReady, |
- base::Unretained(client_), |
- picture)); |
+ DCHECK_EQ(RenderThread::current()->message_loop(), MessageLoop::current()); |
+ client_->PictureReady(picture); |
} |
void PlatformVideoDecoderImpl::NotifyInitializeDone() { |
- DCHECK(message_loop_); |
- message_loop_-> |
- PostTask(FROM_HERE, base::Bind( |
- &VideoDecodeAccelerator::Client::NotifyInitializeDone, |
- base::Unretained(client_))); |
+ DCHECK_EQ(RenderThread::current()->message_loop(), MessageLoop::current()); |
+ client_->NotifyInitializeDone(); |
} |
void PlatformVideoDecoderImpl::NotifyEndOfBitstreamBuffer( |
int32 bitstream_buffer_id) { |
- DCHECK(message_loop_); |
- message_loop_-> |
- PostTask(FROM_HERE, base::Bind( |
- &VideoDecodeAccelerator::Client::NotifyEndOfBitstreamBuffer, |
- base::Unretained(client_), |
- bitstream_buffer_id)); |
+ DCHECK_EQ(RenderThread::current()->message_loop(), MessageLoop::current()); |
+ client_->NotifyEndOfBitstreamBuffer(bitstream_buffer_id); |
} |
void PlatformVideoDecoderImpl::NotifyFlushDone() { |
- DCHECK(message_loop_); |
- message_loop_-> |
- PostTask(FROM_HERE, base::Bind( |
- &VideoDecodeAccelerator::Client::NotifyFlushDone, |
- base::Unretained(client_))); |
+ DCHECK_EQ(RenderThread::current()->message_loop(), MessageLoop::current()); |
+ client_->NotifyFlushDone(); |
} |
void PlatformVideoDecoderImpl::NotifyAbortDone() { |
- DCHECK(message_loop_); |
- message_loop_-> |
- PostTask(FROM_HERE, base::Bind( |
- &VideoDecodeAccelerator::Client::NotifyAbortDone, |
- base::Unretained(client_))); |
+ DCHECK_EQ(RenderThread::current()->message_loop(), MessageLoop::current()); |
+ client_->NotifyAbortDone(); |
} |