| 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 aa47e2fd677bad9d115abb27209433292689fe57..623c818666d970f2fa1b5554bed635b18b749bd8 100644
|
| --- a/content/common/gpu/client/gpu_channel_host.cc
|
| +++ b/content/common/gpu/client/gpu_channel_host.cc
|
| @@ -13,6 +13,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"
|
| @@ -256,6 +257,28 @@ scoped_ptr<media::VideoEncodeAccelerator> GpuChannelHost::CreateVideoEncoder(
|
| return it->second->CreateVideoEncoder();
|
| }
|
|
|
| +scoped_ptr<media::JpegDecodeAccelerator> GpuChannelHost::CreateJpegDecoder(
|
| + scoped_refptr<base::MessageLoopProxy> reply_loop) {
|
| + TRACE_EVENT0("gpu", "GpuChannelHost::CreateJpegDecoder");
|
| + // This function is called from GpuJpegDecodeAcceleratorAdapter's device
|
| + // thread, which is not main thread.
|
| +
|
| + int32 route_id = GenerateRouteID();
|
| + GpuJpegDecodeAcceleratorHost* decoder(
|
| + new GpuJpegDecodeAcceleratorHost(this, route_id,
|
| + factory_->GetIOLoopProxy()));
|
| +
|
| + // GpuJpegDecodeAcceleratorAdapter's device thread is usually blocking wait
|
| + // for next frame, so it expects decoder responses are send to |reply_loop|
|
| + // directly.
|
| + scoped_refptr<base::MessageLoopProxy> io_loop = factory_->GetIOLoopProxy();
|
| + io_loop->PostTask(FROM_HERE,
|
| + base::Bind(&GpuChannelHost::MessageFilter::AddRoute,
|
| + channel_filter_.get(), route_id,
|
| + decoder->AsWeakPtr(), reply_loop));
|
| + return scoped_ptr<media::JpegDecodeAccelerator>(decoder);
|
| +}
|
| +
|
| void GpuChannelHost::DestroyCommandBuffer(
|
| CommandBufferProxyImpl* command_buffer) {
|
| TRACE_EVENT0("gpu", "GpuChannelHost::DestroyCommandBuffer");
|
|
|