Chromium Code Reviews| Index: content/common/gpu/client/gpu_channel_host.cc |
| diff --git a/content/common/gpu/client/gpu_channel_host.cc b/content/common/gpu/client/gpu_channel_host.cc |
| index b4460bbb56e3d1e999349bca9e972f756bc3612b..45081e7cff24ea4de44ed0ae8057ff5c6b775ad7 100644 |
| --- a/content/common/gpu/client/gpu_channel_host.cc |
| +++ b/content/common/gpu/client/gpu_channel_host.cc |
| @@ -14,6 +14,7 @@ |
| #include "base/threading/thread_restrictions.h" |
| #include "base/trace_event/trace_event.h" |
| #include "content/common/gpu/client/command_buffer_proxy_impl.h" |
| +#include "content/common/gpu/client/gpu_jpeg_decode_accelerator_host.h" |
| #include "content/common/gpu/gpu_messages.h" |
| #include "ipc/ipc_sync_message_filter.h" |
| #include "url/gurl.h" |
| @@ -258,6 +259,28 @@ scoped_ptr<media::VideoEncodeAccelerator> GpuChannelHost::CreateVideoEncoder( |
| return it->second->CreateVideoEncoder(); |
| } |
| +scoped_ptr<media::JpegDecodeAccelerator> GpuChannelHost::CreateJpegDecoder( |
| + media::JpegDecodeAccelerator::Client* client) { |
| + TRACE_EVENT0("gpu", "GpuChannelHost::CreateJpegDecoder"); |
| + |
| + scoped_refptr<base::SingleThreadTaskRunner> io_task_runner = |
| + factory_->GetIOThreadTaskRunner(); |
| + int32 route_id = GenerateRouteID(); |
| + scoped_ptr<GpuJpegDecodeAcceleratorHost> decoder( |
| + new GpuJpegDecodeAcceleratorHost(this, route_id, io_task_runner)); |
| + if (!decoder->Initialize(client)) { |
| + return nullptr; |
| + } |
| + |
| + // The reply message of jpeg decoder should run on IO thread. |
| + io_task_runner->PostTask(FROM_HERE, |
| + base::Bind(&GpuChannelHost::MessageFilter::AddRoute, |
| + channel_filter_.get(), route_id, |
| + decoder->AsWeakPtr(), io_task_runner)); |
|
piman
2015/06/05 21:49:39
Mmh, it's not valid to dereference the weak pointe
kcwu
2015/06/08 19:28:48
Done.
|
| + |
| + return decoder.Pass(); |
| +} |
| + |
| void GpuChannelHost::DestroyCommandBuffer( |
| CommandBufferProxyImpl* command_buffer) { |
| TRACE_EVENT0("gpu", "GpuChannelHost::DestroyCommandBuffer"); |