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

Side by Side Diff: ppapi/proxy/ppb_video_decoder_proxy.cc

Issue 7655002: Convert the pp::proxy namespace to the ppapi::proxy namespace. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 4 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 "ppapi/proxy/ppb_video_decoder_proxy.h" 5 #include "ppapi/proxy/ppb_video_decoder_proxy.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "gpu/command_buffer/client/gles2_implementation.h" 8 #include "gpu/command_buffer/client/gles2_implementation.h"
9 #include "ppapi/proxy/enter_proxy.h" 9 #include "ppapi/proxy/enter_proxy.h"
10 #include "ppapi/proxy/plugin_dispatcher.h" 10 #include "ppapi/proxy/plugin_dispatcher.h"
11 #include "ppapi/proxy/ppapi_messages.h" 11 #include "ppapi/proxy/ppapi_messages.h"
12 #include "ppapi/proxy/ppb_buffer_proxy.h" 12 #include "ppapi/proxy/ppb_buffer_proxy.h"
13 #include "ppapi/proxy/ppb_context_3d_proxy.h" 13 #include "ppapi/proxy/ppb_context_3d_proxy.h"
14 #include "ppapi/thunk/enter.h" 14 #include "ppapi/thunk/enter.h"
15 #include "ppapi/thunk/resource_creation_api.h" 15 #include "ppapi/thunk/resource_creation_api.h"
16 #include "ppapi/thunk/thunk.h" 16 #include "ppapi/thunk/thunk.h"
17 17
18 using ppapi::HostResource;
19 using ppapi::Resource;
20 using ppapi::thunk::EnterResourceNoLock; 18 using ppapi::thunk::EnterResourceNoLock;
21 using ppapi::thunk::PPB_Buffer_API; 19 using ppapi::thunk::PPB_Buffer_API;
22 using ppapi::thunk::PPB_Context3D_API; 20 using ppapi::thunk::PPB_Context3D_API;
23 using ppapi::thunk::PPB_VideoDecoder_API; 21 using ppapi::thunk::PPB_VideoDecoder_API;
bbudge 2011/08/16 22:40:49 There are lots of explicitly qualified 'thunk' typ
24 22
25 namespace pp { 23 namespace ppapi {
26 namespace proxy { 24 namespace proxy {
27 25
28 class VideoDecoder : public Resource, 26 class VideoDecoder : public Resource, public VideoDecoderImpl {
29 public ::ppapi::VideoDecoderImpl {
30 public: 27 public:
31 // You must call Init() before using this class. 28 // You must call Init() before using this class.
32 explicit VideoDecoder(const HostResource& resource); 29 explicit VideoDecoder(const HostResource& resource);
33 virtual ~VideoDecoder(); 30 virtual ~VideoDecoder();
34 31
35 static VideoDecoder* Create(const HostResource& resource, 32 static VideoDecoder* Create(const HostResource& resource,
36 PP_Resource context3d_id, 33 PP_Resource context3d_id,
37 const PP_VideoConfigElement* config); 34 const PP_VideoConfigElement* config);
38 35
39 // Resource overrides. 36 // Resource overrides.
(...skipping 21 matching lines...) Expand all
61 58
62 DISALLOW_COPY_AND_ASSIGN(VideoDecoder); 59 DISALLOW_COPY_AND_ASSIGN(VideoDecoder);
63 }; 60 };
64 61
65 VideoDecoder::VideoDecoder(const HostResource& decoder) : Resource(decoder) { 62 VideoDecoder::VideoDecoder(const HostResource& decoder) : Resource(decoder) {
66 } 63 }
67 64
68 VideoDecoder::~VideoDecoder() { 65 VideoDecoder::~VideoDecoder() {
69 } 66 }
70 67
71 ::ppapi::thunk::PPB_VideoDecoder_API* VideoDecoder::AsPPB_VideoDecoder_API() { 68 thunk::PPB_VideoDecoder_API* VideoDecoder::AsPPB_VideoDecoder_API() {
72 return this; 69 return this;
73 } 70 }
74 71
75 int32_t VideoDecoder::Decode( 72 int32_t VideoDecoder::Decode(
76 const PP_VideoBitstreamBuffer_Dev* bitstream_buffer, 73 const PP_VideoBitstreamBuffer_Dev* bitstream_buffer,
77 PP_CompletionCallback callback) { 74 PP_CompletionCallback callback) {
78 ppapi::thunk::EnterResourceNoLock<PPB_Buffer_API> 75 thunk::EnterResourceNoLock<PPB_Buffer_API>
79 enter_buffer(bitstream_buffer->data, true); 76 enter_buffer(bitstream_buffer->data, true);
80 if (enter_buffer.failed()) 77 if (enter_buffer.failed())
81 return PP_ERROR_BADRESOURCE; 78 return PP_ERROR_BADRESOURCE;
82 79
83 if (!SetBitstreamBufferCallback(bitstream_buffer->id, callback)) 80 if (!SetBitstreamBufferCallback(bitstream_buffer->id, callback))
84 return PP_ERROR_BADARGUMENT; 81 return PP_ERROR_BADARGUMENT;
85 82
86 Buffer* ppb_buffer = 83 Buffer* ppb_buffer =
87 static_cast<Buffer*>(enter_buffer.object()); 84 static_cast<Buffer*>(enter_buffer.object());
88 HostResource host_buffer = ppb_buffer->host_resource(); 85 HostResource host_buffer = ppb_buffer->host_resource();
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
128 FlushCommandBuffer(); 125 FlushCommandBuffer();
129 GetDispatcher()->Send(new PpapiHostMsg_PPBVideoDecoder_Reset( 126 GetDispatcher()->Send(new PpapiHostMsg_PPBVideoDecoder_Reset(
130 INTERFACE_ID_PPB_VIDEO_DECODER_DEV, host_resource())); 127 INTERFACE_ID_PPB_VIDEO_DECODER_DEV, host_resource()));
131 return PP_OK_COMPLETIONPENDING; 128 return PP_OK_COMPLETIONPENDING;
132 } 129 }
133 130
134 void VideoDecoder::Destroy() { 131 void VideoDecoder::Destroy() {
135 FlushCommandBuffer(); 132 FlushCommandBuffer();
136 GetDispatcher()->Send(new PpapiHostMsg_PPBVideoDecoder_Destroy( 133 GetDispatcher()->Send(new PpapiHostMsg_PPBVideoDecoder_Destroy(
137 INTERFACE_ID_PPB_VIDEO_DECODER_DEV, host_resource())); 134 INTERFACE_ID_PPB_VIDEO_DECODER_DEV, host_resource()));
138 ::ppapi::VideoDecoderImpl::Destroy(); 135 VideoDecoderImpl::Destroy();
139 } 136 }
140 137
141 PluginDispatcher* VideoDecoder::GetDispatcher() const { 138 PluginDispatcher* VideoDecoder::GetDispatcher() const {
142 return PluginDispatcher::GetForResource(this); 139 return PluginDispatcher::GetForResource(this);
143 } 140 }
144 141
145 void VideoDecoder::ResetACK(int32_t result) { 142 void VideoDecoder::ResetACK(int32_t result) {
146 RunResetCallback(result); 143 RunResetCallback(result);
147 } 144 }
148 145
(...skipping 20 matching lines...) Expand all
169 : InterfaceProxy(dispatcher, target_interface), 166 : InterfaceProxy(dispatcher, target_interface),
170 callback_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) { 167 callback_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) {
171 } 168 }
172 169
173 PPB_VideoDecoder_Proxy::~PPB_VideoDecoder_Proxy() { 170 PPB_VideoDecoder_Proxy::~PPB_VideoDecoder_Proxy() {
174 } 171 }
175 172
176 // static 173 // static
177 const InterfaceProxy::Info* PPB_VideoDecoder_Proxy::GetInfo() { 174 const InterfaceProxy::Info* PPB_VideoDecoder_Proxy::GetInfo() {
178 static const Info info = { 175 static const Info info = {
179 ::ppapi::thunk::GetPPB_VideoDecoder_Thunk(), 176 thunk::GetPPB_VideoDecoder_Thunk(),
180 PPB_VIDEODECODER_DEV_INTERFACE, 177 PPB_VIDEODECODER_DEV_INTERFACE,
181 INTERFACE_ID_PPB_VIDEO_DECODER_DEV, 178 INTERFACE_ID_PPB_VIDEO_DECODER_DEV,
182 false, 179 false,
183 &CreateVideoDecoderProxy, 180 &CreateVideoDecoderProxy,
184 }; 181 };
185 return &info; 182 return &info;
186 } 183 }
187 184
188 bool PPB_VideoDecoder_Proxy::OnMessageReceived(const IPC::Message& msg) { 185 bool PPB_VideoDecoder_Proxy::OnMessageReceived(const IPC::Message& msg) {
189 bool handled = true; 186 bool handled = true;
(...skipping 21 matching lines...) Expand all
211 PP_Resource PPB_VideoDecoder_Proxy::CreateProxyResource( 208 PP_Resource PPB_VideoDecoder_Proxy::CreateProxyResource(
212 PP_Instance instance, PP_Resource context3d_id, 209 PP_Instance instance, PP_Resource context3d_id,
213 const PP_VideoConfigElement* config) { 210 const PP_VideoConfigElement* config) {
214 PluginDispatcher* dispatcher = PluginDispatcher::GetForInstance(instance); 211 PluginDispatcher* dispatcher = PluginDispatcher::GetForInstance(instance);
215 // Dispatcher is null if it cannot find the instance passed to it (i.e. if the 212 // Dispatcher is null if it cannot find the instance passed to it (i.e. if the
216 // client passes in an invalid instance). 213 // client passes in an invalid instance).
217 if (!dispatcher) 214 if (!dispatcher)
218 return 0; 215 return 0;
219 216
220 std::vector<PP_VideoConfigElement> copied; 217 std::vector<PP_VideoConfigElement> copied;
221 if (!ppapi::VideoDecoderImpl::CopyConfigsToVector(config, &copied)) 218 if (!VideoDecoderImpl::CopyConfigsToVector(config, &copied))
222 return 0; 219 return 0;
223 220
224 ppapi::thunk::EnterResourceNoLock<PPB_Context3D_API> 221 thunk::EnterResourceNoLock<PPB_Context3D_API> enter_context(context3d_id,
225 enter_context(context3d_id, true); 222 true);
226 if (enter_context.failed()) 223 if (enter_context.failed())
227 return 0; 224 return 0;
228 Context3D* ppb_context = 225 Context3D* ppb_context =
229 static_cast<Context3D*>(enter_context.object()); 226 static_cast<Context3D*>(enter_context.object());
230 HostResource host_context = ppb_context->host_resource(); 227 HostResource host_context = ppb_context->host_resource();
231 228
232 HostResource result; 229 HostResource result;
233 dispatcher->Send(new PpapiHostMsg_PPBVideoDecoder_Create( 230 dispatcher->Send(new PpapiHostMsg_PPBVideoDecoder_Create(
234 INTERFACE_ID_PPB_VIDEO_DECODER_DEV, instance, 231 INTERFACE_ID_PPB_VIDEO_DECODER_DEV, instance,
235 host_context, copied, &result)); 232 host_context, copied, &result));
236 if (result.is_null()) 233 if (result.is_null())
237 return 0; 234 return 0;
238 235
239 scoped_refptr<VideoDecoder> decoder(new VideoDecoder(result)); 236 scoped_refptr<VideoDecoder> decoder(new VideoDecoder(result));
240 if (!decoder->Init(context3d_id, enter_context.object(), config)) 237 if (!decoder->Init(context3d_id, enter_context.object(), config))
241 return 0; 238 return 0;
242 return decoder->GetReference(); 239 return decoder->GetReference();
243 } 240 }
244 241
245 void PPB_VideoDecoder_Proxy::OnMsgCreate( 242 void PPB_VideoDecoder_Proxy::OnMsgCreate(
246 PP_Instance instance, const HostResource& context3d_id, 243 PP_Instance instance, const HostResource& context3d_id,
247 const std::vector<PP_VideoConfigElement>& config, 244 const std::vector<PP_VideoConfigElement>& config,
248 HostResource* result) { 245 HostResource* result) {
249 ::ppapi::thunk::EnterFunction< ::ppapi::thunk::ResourceCreationAPI> 246 thunk::EnterFunction<thunk::ResourceCreationAPI> resource_creation(instance,
250 resource_creation(instance, true); 247 true);
251 if (resource_creation.failed()) 248 if (resource_creation.failed())
252 return; 249 return;
253 250
254 std::vector<PP_VideoConfigElement> copied = config; 251 std::vector<PP_VideoConfigElement> copied = config;
255 copied.push_back(PP_VIDEOATTR_DICTIONARY_TERMINATOR); 252 copied.push_back(PP_VIDEOATTR_DICTIONARY_TERMINATOR);
256 253
257 // Make the resource and get the API pointer to its interface. 254 // Make the resource and get the API pointer to its interface.
258 result->SetHostResource( 255 result->SetHostResource(
259 instance, resource_creation.functions()->CreateVideoDecoder( 256 instance, resource_creation.functions()->CreateVideoDecoder(
260 instance, context3d_id.host_resource(), &copied.front())); 257 instance, context3d_id.host_resource(), &copied.front()));
261 } 258 }
262 259
263 void PPB_VideoDecoder_Proxy::OnMsgDecode( 260 void PPB_VideoDecoder_Proxy::OnMsgDecode(
264 const HostResource& decoder, 261 const HostResource& decoder,
265 const HostResource& buffer, int32 id, int32 size) { 262 const HostResource& buffer, int32 id, int32 size) {
266 CompletionCallback callback = callback_factory_.NewRequiredCallback( 263 pp::CompletionCallback callback = callback_factory_.NewRequiredCallback(
267 &PPB_VideoDecoder_Proxy::SendMsgEndOfBitstreamACKToPlugin, decoder, id); 264 &PPB_VideoDecoder_Proxy::SendMsgEndOfBitstreamACKToPlugin, decoder, id);
268 265
269 PP_VideoBitstreamBuffer_Dev bitstream = { id, buffer.host_resource(), size }; 266 PP_VideoBitstreamBuffer_Dev bitstream = { id, buffer.host_resource(), size };
270 ppb_video_decoder_target()->Decode( 267 ppb_video_decoder_target()->Decode(
271 decoder.host_resource(), &bitstream, callback.pp_completion_callback()); 268 decoder.host_resource(), &bitstream, callback.pp_completion_callback());
272 } 269 }
273 270
274 void PPB_VideoDecoder_Proxy::OnMsgAssignPictureBuffers( 271 void PPB_VideoDecoder_Proxy::OnMsgAssignPictureBuffers(
275 const HostResource& decoder, 272 const HostResource& decoder,
276 const std::vector<PP_PictureBuffer_Dev>& buffers) { 273 const std::vector<PP_PictureBuffer_Dev>& buffers) {
277 DCHECK(!buffers.empty()); 274 DCHECK(!buffers.empty());
278 const PP_PictureBuffer_Dev* buffer_array = &buffers.front(); 275 const PP_PictureBuffer_Dev* buffer_array = &buffers.front();
279 276
280 ppb_video_decoder_target()->AssignPictureBuffers( 277 ppb_video_decoder_target()->AssignPictureBuffers(
281 decoder.host_resource(), buffers.size(), buffer_array); 278 decoder.host_resource(), buffers.size(), buffer_array);
282 } 279 }
283 280
284 void PPB_VideoDecoder_Proxy::OnMsgReusePictureBuffer( 281 void PPB_VideoDecoder_Proxy::OnMsgReusePictureBuffer(
285 const HostResource& decoder, int32 picture_buffer_id) { 282 const HostResource& decoder, int32 picture_buffer_id) {
286 ppb_video_decoder_target()->ReusePictureBuffer( 283 ppb_video_decoder_target()->ReusePictureBuffer(
287 decoder.host_resource(), picture_buffer_id); 284 decoder.host_resource(), picture_buffer_id);
288 } 285 }
289 286
290 void PPB_VideoDecoder_Proxy::OnMsgFlush(const HostResource& decoder) { 287 void PPB_VideoDecoder_Proxy::OnMsgFlush(const HostResource& decoder) {
291 CompletionCallback callback = callback_factory_.NewRequiredCallback( 288 pp::CompletionCallback callback = callback_factory_.NewRequiredCallback(
292 &PPB_VideoDecoder_Proxy::SendMsgFlushACKToPlugin, decoder); 289 &PPB_VideoDecoder_Proxy::SendMsgFlushACKToPlugin, decoder);
293 ppb_video_decoder_target()->Flush( 290 ppb_video_decoder_target()->Flush(
294 decoder.host_resource(), callback.pp_completion_callback()); 291 decoder.host_resource(), callback.pp_completion_callback());
295 } 292 }
296 293
297 void PPB_VideoDecoder_Proxy::OnMsgReset(const HostResource& decoder) { 294 void PPB_VideoDecoder_Proxy::OnMsgReset(const HostResource& decoder) {
298 CompletionCallback callback = callback_factory_.NewRequiredCallback( 295 pp::CompletionCallback callback = callback_factory_.NewRequiredCallback(
299 &PPB_VideoDecoder_Proxy::SendMsgResetACKToPlugin, decoder); 296 &PPB_VideoDecoder_Proxy::SendMsgResetACKToPlugin, decoder);
300 ppb_video_decoder_target()->Reset( 297 ppb_video_decoder_target()->Reset(
301 decoder.host_resource(), callback.pp_completion_callback()); 298 decoder.host_resource(), callback.pp_completion_callback());
302 } 299 }
303 300
304 void PPB_VideoDecoder_Proxy::OnMsgDestroy(const HostResource& decoder) { 301 void PPB_VideoDecoder_Proxy::OnMsgDestroy(const HostResource& decoder) {
305 ppb_video_decoder_target()->Destroy(decoder.host_resource()); 302 ppb_video_decoder_target()->Destroy(decoder.host_resource());
306 } 303 }
307 304
308 void PPB_VideoDecoder_Proxy::SendMsgEndOfBitstreamACKToPlugin( 305 void PPB_VideoDecoder_Proxy::SendMsgEndOfBitstreamACKToPlugin(
(...skipping 29 matching lines...) Expand all
338 } 335 }
339 336
340 void PPB_VideoDecoder_Proxy::OnMsgResetACK( 337 void PPB_VideoDecoder_Proxy::OnMsgResetACK(
341 const HostResource& decoder, int32_t result) { 338 const HostResource& decoder, int32_t result) {
342 EnterPluginFromHostResource<PPB_VideoDecoder_API> enter(decoder); 339 EnterPluginFromHostResource<PPB_VideoDecoder_API> enter(decoder);
343 if (enter.succeeded()) 340 if (enter.succeeded())
344 static_cast<VideoDecoder*>(enter.object())->ResetACK(result); 341 static_cast<VideoDecoder*>(enter.object())->ResetACK(result);
345 } 342 }
346 343
347 } // namespace proxy 344 } // namespace proxy
348 } // namespace pp 345 } // namespace ppapi
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698