Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(415)

Side by Side Diff: content/renderer/gpu/gpu_video_decode_accelerator_host.cc

Issue 7292010: Delete GpuVideoService and move GpuVideoDecodeAccelerator ownership to stubs (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase ToT Created 9 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/renderer/gpu/gpu_video_decode_accelerator_host.h" 5 #include "content/renderer/gpu/gpu_video_decode_accelerator_host.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/message_loop.h" 9 #include "base/message_loop.h"
10 #include "base/shared_memory.h" 10 #include "base/shared_memory.h"
(...skipping 12 matching lines...) Expand all
23 GpuVideoDecodeAcceleratorHost::GpuVideoDecodeAcceleratorHost( 23 GpuVideoDecodeAcceleratorHost::GpuVideoDecodeAcceleratorHost(
24 MessageRouter* router, 24 MessageRouter* router,
25 IPC::Message::Sender* ipc_sender, 25 IPC::Message::Sender* ipc_sender,
26 int32 decoder_host_id, 26 int32 decoder_host_id,
27 int32 command_buffer_route_id, 27 int32 command_buffer_route_id,
28 gpu::CommandBufferHelper* cmd_buffer_helper, 28 gpu::CommandBufferHelper* cmd_buffer_helper,
29 VideoDecodeAccelerator::Client* client) 29 VideoDecodeAccelerator::Client* client)
30 : router_(router), 30 : router_(router),
31 ipc_sender_(ipc_sender), 31 ipc_sender_(ipc_sender),
32 decoder_host_id_(decoder_host_id), 32 decoder_host_id_(decoder_host_id),
33 decoder_id_(-1),
34 command_buffer_route_id_(command_buffer_route_id), 33 command_buffer_route_id_(command_buffer_route_id),
35 cmd_buffer_helper_(cmd_buffer_helper), 34 cmd_buffer_helper_(cmd_buffer_helper),
36 client_(client) { 35 client_(client) {
37 DCHECK(RenderThread::current()); 36 DCHECK(RenderThread::current());
38 DCHECK_EQ(RenderThread::current()->message_loop(), MessageLoop::current()); 37 DCHECK_EQ(RenderThread::current()->message_loop(), MessageLoop::current());
39 } 38 }
40 39
41 GpuVideoDecodeAcceleratorHost::~GpuVideoDecodeAcceleratorHost() {} 40 GpuVideoDecodeAcceleratorHost::~GpuVideoDecodeAcceleratorHost() {}
42 41
43 void GpuVideoDecodeAcceleratorHost::OnChannelConnected(int32 peer_pid) { 42 void GpuVideoDecodeAcceleratorHost::OnChannelConnected(int32 peer_pid) {
44 } 43 }
45 44
46 void GpuVideoDecodeAcceleratorHost::OnChannelError() { 45 void GpuVideoDecodeAcceleratorHost::OnChannelError() {
47 ipc_sender_ = NULL; 46 ipc_sender_ = NULL;
48 } 47 }
49 48
50 bool GpuVideoDecodeAcceleratorHost::OnMessageReceived(const IPC::Message& msg) { 49 bool GpuVideoDecodeAcceleratorHost::OnMessageReceived(const IPC::Message& msg) {
51 DCHECK(CalledOnValidThread()); 50 DCHECK(CalledOnValidThread());
52 bool handled = true; 51 bool handled = true;
53 IPC_BEGIN_MESSAGE_MAP(GpuVideoDecodeAcceleratorHost, msg) 52 IPC_BEGIN_MESSAGE_MAP(GpuVideoDecodeAcceleratorHost, msg)
54 IPC_MESSAGE_HANDLER(AcceleratedVideoDecoderHostMsg_BitstreamBufferProcessed, 53 IPC_MESSAGE_HANDLER(AcceleratedVideoDecoderHostMsg_BitstreamBufferProcessed,
55 OnBitstreamBufferProcessed) 54 OnBitstreamBufferProcessed)
56 IPC_MESSAGE_HANDLER(AcceleratedVideoDecoderHostMsg_ProvidePictureBuffers, 55 IPC_MESSAGE_HANDLER(AcceleratedVideoDecoderHostMsg_ProvidePictureBuffers,
57 OnProvidePictureBuffer) 56 OnProvidePictureBuffer)
58 IPC_MESSAGE_HANDLER(AcceleratedVideoDecoderHostMsg_CreateDone,
59 OnCreateDone)
60 IPC_MESSAGE_HANDLER(AcceleratedVideoDecoderHostMsg_InitializeDone, 57 IPC_MESSAGE_HANDLER(AcceleratedVideoDecoderHostMsg_InitializeDone,
61 OnInitializeDone) 58 OnInitializeDone)
62 IPC_MESSAGE_HANDLER(AcceleratedVideoDecoderHostMsg_PictureReady, 59 IPC_MESSAGE_HANDLER(AcceleratedVideoDecoderHostMsg_PictureReady,
63 OnPictureReady) 60 OnPictureReady)
64 IPC_MESSAGE_HANDLER(AcceleratedVideoDecoderHostMsg_FlushDone, 61 IPC_MESSAGE_HANDLER(AcceleratedVideoDecoderHostMsg_FlushDone,
65 OnFlushDone) 62 OnFlushDone)
66 IPC_MESSAGE_HANDLER(AcceleratedVideoDecoderHostMsg_AbortDone, 63 IPC_MESSAGE_HANDLER(AcceleratedVideoDecoderHostMsg_AbortDone,
67 OnAbortDone) 64 OnAbortDone)
68 IPC_MESSAGE_HANDLER(AcceleratedVideoDecoderHostMsg_EndOfStream, 65 IPC_MESSAGE_HANDLER(AcceleratedVideoDecoderHostMsg_EndOfStream,
69 OnEndOfStream) 66 OnEndOfStream)
(...skipping 21 matching lines...) Expand all
91 // TODO(vrk): Need to rethink GetConfigs. 88 // TODO(vrk): Need to rethink GetConfigs.
92 NOTIMPLEMENTED(); 89 NOTIMPLEMENTED();
93 return true; 90 return true;
94 } 91 }
95 92
96 bool GpuVideoDecodeAcceleratorHost::Initialize( 93 bool GpuVideoDecodeAcceleratorHost::Initialize(
97 const std::vector<uint32>& configs) { 94 const std::vector<uint32>& configs) {
98 DCHECK(CalledOnValidThread()); 95 DCHECK(CalledOnValidThread());
99 router_->AddRoute(decoder_host_id_, this); 96 router_->AddRoute(decoder_host_id_, this);
100 97
101 // Temporarily save configs for after create is done and we're 98 // Tell GPU Channel to create and initialize a video decoder.
102 // ready to initialize. 99 if (!ipc_sender_->Send(new GpuCommandBufferMsg_CreateVideoDecoder(
103 configs_ = configs; 100 command_buffer_route_id_, decoder_host_id_, configs))) {
104 if (!ipc_sender_->Send(new GpuChannelMsg_CreateVideoDecoder(
105 decoder_host_id_, command_buffer_route_id_, configs))) {
106 LOG(ERROR) << "Send(GpuChannelMsg_CreateVideoDecoder) failed"; 101 LOG(ERROR) << "Send(GpuChannelMsg_CreateVideoDecoder) failed";
107 return false; 102 return false;
108 } 103 }
109 return true; 104 return true;
110 } 105 }
111 106
112 void GpuVideoDecodeAcceleratorHost::Decode( 107 void GpuVideoDecodeAcceleratorHost::Decode(
113 const media::BitstreamBuffer& bitstream_buffer) { 108 const media::BitstreamBuffer& bitstream_buffer) {
114 DCHECK(CalledOnValidThread()); 109 DCHECK(CalledOnValidThread());
115 if (!ipc_sender_->Send(new AcceleratedVideoDecoderMsg_Decode( 110 if (!ipc_sender_->Send(new AcceleratedVideoDecoderMsg_Decode(
116 decoder_id_, SyncTokens(), bitstream_buffer.handle(), 111 command_buffer_route_id_, SyncTokens(), bitstream_buffer.handle(),
117 bitstream_buffer.id(), bitstream_buffer.size()))) { 112 bitstream_buffer.id(), bitstream_buffer.size()))) {
118 DLOG(ERROR) << "Send(AcceleratedVideoDecoderMsg_Decode) failed"; 113 DLOG(ERROR) << "Send(AcceleratedVideoDecoderMsg_Decode) failed";
119 // TODO(fischman/vrk): signal error to client. 114 // TODO(fischman/vrk): signal error to client.
120 return; 115 return;
121 } 116 }
122 } 117 }
123 118
124 void GpuVideoDecodeAcceleratorHost::AssignGLESBuffers( 119 void GpuVideoDecodeAcceleratorHost::AssignGLESBuffers(
125 const std::vector<media::GLESBuffer>& buffers) { 120 const std::vector<media::GLESBuffer>& buffers) {
126 DCHECK(CalledOnValidThread()); 121 DCHECK(CalledOnValidThread());
127 // Rearrange data for IPC command. 122 // Rearrange data for IPC command.
128 std::vector<int32> buffer_ids; 123 std::vector<int32> buffer_ids;
129 std::vector<uint32> texture_ids; 124 std::vector<uint32> texture_ids;
130 std::vector<gfx::Size> sizes; 125 std::vector<gfx::Size> sizes;
131 for (uint32 i = 0; i < buffers.size(); i++) { 126 for (uint32 i = 0; i < buffers.size(); i++) {
132 const media::GLESBuffer& buffer = buffers[i]; 127 const media::GLESBuffer& buffer = buffers[i];
133 texture_ids.push_back(buffer.texture_id()); 128 texture_ids.push_back(buffer.texture_id());
134 buffer_ids.push_back(buffer.id()); 129 buffer_ids.push_back(buffer.id());
135 sizes.push_back(buffer.size()); 130 sizes.push_back(buffer.size());
136 } 131 }
137 if (!ipc_sender_->Send(new AcceleratedVideoDecoderMsg_AssignTextures( 132 if (!ipc_sender_->Send(new AcceleratedVideoDecoderMsg_AssignGLESBuffers(
138 decoder_id_, SyncTokens(), buffer_ids, texture_ids, sizes))) { 133 command_buffer_route_id_, SyncTokens(), buffer_ids, texture_ids,
134 sizes))) {
139 LOG(ERROR) << "Send(AcceleratedVideoDecoderMsg_AssignGLESBuffers) failed"; 135 LOG(ERROR) << "Send(AcceleratedVideoDecoderMsg_AssignGLESBuffers) failed";
140 } 136 }
141 } 137 }
142 138
143 void GpuVideoDecodeAcceleratorHost::AssignSysmemBuffers( 139 void GpuVideoDecodeAcceleratorHost::AssignSysmemBuffers(
144 const std::vector<media::SysmemBuffer>& buffers) { 140 const std::vector<media::SysmemBuffer>& buffers) {
145 DCHECK(CalledOnValidThread()); 141 DCHECK(CalledOnValidThread());
146 // TODO(vrk): Implement. 142 // TODO(vrk): Implement.
147 NOTIMPLEMENTED(); 143 NOTIMPLEMENTED();
148 } 144 }
149 145
150 void GpuVideoDecodeAcceleratorHost::ReusePictureBuffer( 146 void GpuVideoDecodeAcceleratorHost::ReusePictureBuffer(
151 int32 picture_buffer_id) { 147 int32 picture_buffer_id) {
152 DCHECK(CalledOnValidThread()); 148 DCHECK(CalledOnValidThread());
153 if (!ipc_sender_->Send(new AcceleratedVideoDecoderMsg_ReusePictureBuffer( 149 if (!ipc_sender_->Send(new AcceleratedVideoDecoderMsg_ReusePictureBuffer(
154 decoder_id_, SyncTokens(), picture_buffer_id))) { 150 command_buffer_route_id_, SyncTokens(), picture_buffer_id))) {
155 LOG(ERROR) << "Send(AcceleratedVideoDecoderMsg_ReusePictureBuffer) failed"; 151 LOG(ERROR) << "Send(AcceleratedVideoDecoderMsg_ReusePictureBuffer) failed";
156 } 152 }
157 } 153 }
158 154
159 void GpuVideoDecodeAcceleratorHost::Flush() { 155 void GpuVideoDecodeAcceleratorHost::Flush() {
160 DCHECK(CalledOnValidThread()); 156 DCHECK(CalledOnValidThread());
161 if (!ipc_sender_->Send(new AcceleratedVideoDecoderMsg_Flush( 157 if (!ipc_sender_->Send(new AcceleratedVideoDecoderMsg_Flush(
162 decoder_id_, SyncTokens()))) { 158 command_buffer_route_id_, SyncTokens()))) {
163 LOG(ERROR) << "Send(AcceleratedVideoDecoderMsg_Flush) failed"; 159 LOG(ERROR) << "Send(AcceleratedVideoDecoderMsg_Flush) failed";
164 // TODO(fischman/vrk): signal error to client. 160 // TODO(fischman/vrk): signal error to client.
165 return; 161 return;
166 } 162 }
167 } 163 }
168 164
169 void GpuVideoDecodeAcceleratorHost::Abort() { 165 void GpuVideoDecodeAcceleratorHost::Abort() {
170 DCHECK(CalledOnValidThread()); 166 DCHECK(CalledOnValidThread());
171 if (!ipc_sender_->Send(new AcceleratedVideoDecoderMsg_Abort( 167 if (!ipc_sender_->Send(new AcceleratedVideoDecoderMsg_Abort(
172 decoder_id_, SyncTokens()))) { 168 command_buffer_route_id_, SyncTokens()))) {
173 LOG(ERROR) << "Send(AcceleratedVideoDecoderMsg_Abort) failed"; 169 LOG(ERROR) << "Send(AcceleratedVideoDecoderMsg_Abort) failed";
174 // TODO(fischman/vrk): signal error to client. 170 // TODO(fischman/vrk): signal error to client.
175 return; 171 return;
176 } 172 }
177 } 173 }
178 174
179 void GpuVideoDecodeAcceleratorHost::OnBitstreamBufferProcessed( 175 void GpuVideoDecodeAcceleratorHost::OnBitstreamBufferProcessed(
180 int32 bitstream_buffer_id) { 176 int32 bitstream_buffer_id) {
181 DCHECK(CalledOnValidThread()); 177 DCHECK(CalledOnValidThread());
182 client_->NotifyEndOfBitstreamBuffer(bitstream_buffer_id); 178 client_->NotifyEndOfBitstreamBuffer(bitstream_buffer_id);
183 } 179 }
184 180
185 void GpuVideoDecodeAcceleratorHost::OnProvidePictureBuffer( 181 void GpuVideoDecodeAcceleratorHost::OnProvidePictureBuffer(
186 uint32 num_requested_buffers, 182 uint32 num_requested_buffers,
187 const gfx::Size& buffer_size, 183 const gfx::Size& buffer_size,
188 int32 mem_type) { 184 int32 mem_type) {
189 DCHECK(CalledOnValidThread()); 185 DCHECK(CalledOnValidThread());
190 media::VideoDecodeAccelerator::MemoryType converted_mem_type = 186 media::VideoDecodeAccelerator::MemoryType converted_mem_type =
191 static_cast<media::VideoDecodeAccelerator::MemoryType>(mem_type); 187 static_cast<media::VideoDecodeAccelerator::MemoryType>(mem_type);
192 client_->ProvidePictureBuffers( 188 client_->ProvidePictureBuffers(
193 num_requested_buffers, buffer_size, converted_mem_type); 189 num_requested_buffers, buffer_size, converted_mem_type);
194 } 190 }
195 191
196 void GpuVideoDecodeAcceleratorHost::OnDismissPictureBuffer( 192 void GpuVideoDecodeAcceleratorHost::OnDismissPictureBuffer(
197 int32 picture_buffer_id) { 193 int32 picture_buffer_id) {
198 DCHECK(CalledOnValidThread()); 194 DCHECK(CalledOnValidThread());
199 client_->DismissPictureBuffer(picture_buffer_id); 195 client_->DismissPictureBuffer(picture_buffer_id);
200 } 196 }
201 197
202 void GpuVideoDecodeAcceleratorHost::OnCreateDone(int32 decoder_id) {
203 DCHECK(CalledOnValidThread());
204 decoder_id_ = decoder_id;
205 if (!ipc_sender_->Send(new AcceleratedVideoDecoderMsg_Initialize(
206 decoder_id_, SyncTokens(), configs_))) {
207 LOG(ERROR) << "Send(AcceleratedVideoDecoderMsg_Initialize) failed";
208 }
209 }
210
211 void GpuVideoDecodeAcceleratorHost::OnInitializeDone() { 198 void GpuVideoDecodeAcceleratorHost::OnInitializeDone() {
212 DCHECK(CalledOnValidThread()); 199 DCHECK(CalledOnValidThread());
213 client_->NotifyInitializeDone(); 200 client_->NotifyInitializeDone();
214 } 201 }
215 202
216 void GpuVideoDecodeAcceleratorHost::OnPictureReady( 203 void GpuVideoDecodeAcceleratorHost::OnPictureReady(
217 int32 picture_buffer_id, int32 bitstream_buffer_id, 204 int32 picture_buffer_id, int32 bitstream_buffer_id,
218 const gfx::Size& visible_size, const gfx::Size& decoded_size) { 205 const gfx::Size& visible_size, const gfx::Size& decoded_size) {
219 DCHECK(CalledOnValidThread()); 206 DCHECK(CalledOnValidThread());
220 media::Picture picture( 207 media::Picture picture(
(...skipping 14 matching lines...) Expand all
235 void GpuVideoDecodeAcceleratorHost::OnEndOfStream() { 222 void GpuVideoDecodeAcceleratorHost::OnEndOfStream() {
236 DCHECK(CalledOnValidThread()); 223 DCHECK(CalledOnValidThread());
237 client_->NotifyEndOfStream(); 224 client_->NotifyEndOfStream();
238 } 225 }
239 226
240 void GpuVideoDecodeAcceleratorHost::OnErrorNotification(uint32 error) { 227 void GpuVideoDecodeAcceleratorHost::OnErrorNotification(uint32 error) {
241 DCHECK(CalledOnValidThread()); 228 DCHECK(CalledOnValidThread());
242 client_->NotifyError( 229 client_->NotifyError(
243 static_cast<media::VideoDecodeAccelerator::Error>(error)); 230 static_cast<media::VideoDecodeAccelerator::Error>(error));
244 } 231 }
OLDNEW
« no previous file with comments | « content/renderer/gpu/gpu_video_decode_accelerator_host.h ('k') | content/renderer/gpu/gpu_video_service_host.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698