Index: content/common/gpu/gpu_channel_manager.cc |
diff --git a/content/common/gpu/gpu_channel_manager.cc b/content/common/gpu/gpu_channel_manager.cc |
index 60dbd9c2a58bdc7d1ba705bb8de4a1b6ee78ac24..cad870c58a3c71e5c6e1146436ad2adfd89fc693 100644 |
--- a/content/common/gpu/gpu_channel_manager.cc |
+++ b/content/common/gpu/gpu_channel_manager.cc |
@@ -15,6 +15,7 @@ |
#include "content/common/gpu/gpu_memory_buffer_factory.h" |
#include "content/common/gpu/gpu_memory_manager.h" |
#include "content/common/gpu/gpu_messages.h" |
+#include "content/common/gpu/media/gpu_arc_video_service.h" |
#include "content/common/message_router.h" |
#include "content/public/common/content_switches.h" |
#include "gpu/command_buffer/common/value_state.h" |
@@ -135,6 +136,8 @@ bool GpuChannelManager::OnControlMessageReceived(const IPC::Message& msg) { |
IPC_MESSAGE_HANDLER(GpuMsg_CreateViewCommandBuffer, |
OnCreateViewCommandBuffer) |
IPC_MESSAGE_HANDLER(GpuMsg_DestroyGpuMemoryBuffer, OnDestroyGpuMemoryBuffer) |
+ IPC_MESSAGE_HANDLER(GpuMsg_CreateArcVideoAcceleratorChannel, |
+ OnCreateArcVideoAcceleratorChannel) |
IPC_MESSAGE_HANDLER(GpuMsg_LoadedShader, OnLoadedShader) |
IPC_MESSAGE_HANDLER(GpuMsg_UpdateValueState, OnUpdateValueState) |
#if defined(OS_ANDROID) |
@@ -244,6 +247,27 @@ void GpuChannelManager::OnDestroyGpuMemoryBuffer( |
DestroyGpuMemoryBuffer(id, client_id); |
} |
+void GpuChannelManager::OnCreateArcVideoAcceleratorChannel() { |
+ if (!arc_video_service_) { |
+ arc_video_service_.reset( |
+ new GpuArcVideoService(shutdown_event_, io_task_runner_)); |
+ arc_video_service_->Initialize(); |
+ } |
+ |
+ arc_video_service_->CreateChannel( |
+ base::Bind(&GpuChannelManager::ArcVideoAcceleratorChannelCreated, |
+ weak_factory_.GetWeakPtr())); |
+} |
+ |
+void GpuChannelManager::ArcVideoAcceleratorChannelCreated( |
+ const IPC::ChannelHandle& handle) { |
+ Send(new GpuHostMsg_ArcVideoAcceleratorChannelCreated(handle)); |
+} |
+ |
+void GpuChannelManager::OnShutdownArcVideoService() { |
+ arc_video_service_.reset(); |
+} |
+ |
void GpuChannelManager::OnUpdateValueState( |
int client_id, unsigned int target, const gpu::ValueState& state) { |
// Only pass updated state to the channel corresponding to the |