| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "base/macros.h" |
| 8 #include "base/numerics/safe_conversions.h" | 9 #include "base/numerics/safe_conversions.h" |
| 9 #include "gpu/command_buffer/client/gles2_implementation.h" | 10 #include "gpu/command_buffer/client/gles2_implementation.h" |
| 10 #include "ppapi/proxy/enter_proxy.h" | 11 #include "ppapi/proxy/enter_proxy.h" |
| 11 #include "ppapi/proxy/plugin_dispatcher.h" | 12 #include "ppapi/proxy/plugin_dispatcher.h" |
| 12 #include "ppapi/proxy/ppapi_messages.h" | 13 #include "ppapi/proxy/ppapi_messages.h" |
| 13 #include "ppapi/proxy/ppb_buffer_proxy.h" | 14 #include "ppapi/proxy/ppb_buffer_proxy.h" |
| 14 #include "ppapi/proxy/ppb_graphics_3d_proxy.h" | 15 #include "ppapi/proxy/ppb_graphics_3d_proxy.h" |
| 15 #include "ppapi/thunk/enter.h" | 16 #include "ppapi/thunk/enter.h" |
| 16 #include "ppapi/thunk/resource_creation_api.h" | 17 #include "ppapi/thunk/resource_creation_api.h" |
| 17 #include "ppapi/thunk/thunk.h" | 18 #include "ppapi/thunk/thunk.h" |
| (...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 223 thunk::EnterResourceCreation resource_creation(instance); | 224 thunk::EnterResourceCreation resource_creation(instance); |
| 224 if (resource_creation.failed()) | 225 if (resource_creation.failed()) |
| 225 return; | 226 return; |
| 226 | 227 |
| 227 // Make the resource and get the API pointer to its interface. | 228 // Make the resource and get the API pointer to its interface. |
| 228 result->SetHostResource( | 229 result->SetHostResource( |
| 229 instance, resource_creation.functions()->CreateVideoDecoderDev( | 230 instance, resource_creation.functions()->CreateVideoDecoderDev( |
| 230 instance, graphics_context.host_resource(), profile)); | 231 instance, graphics_context.host_resource(), profile)); |
| 231 } | 232 } |
| 232 | 233 |
| 233 void PPB_VideoDecoder_Proxy::OnMsgDecode( | 234 void PPB_VideoDecoder_Proxy::OnMsgDecode(const HostResource& decoder, |
| 234 const HostResource& decoder, | 235 const HostResource& buffer, |
| 235 const HostResource& buffer, int32 id, uint32 size) { | 236 int32_t id, |
| 237 uint32_t size) { |
| 236 EnterHostFromHostResourceForceCallback<PPB_VideoDecoder_Dev_API> enter( | 238 EnterHostFromHostResourceForceCallback<PPB_VideoDecoder_Dev_API> enter( |
| 237 decoder, callback_factory_, | 239 decoder, callback_factory_, |
| 238 &PPB_VideoDecoder_Proxy::SendMsgEndOfBitstreamACKToPlugin, decoder, id); | 240 &PPB_VideoDecoder_Proxy::SendMsgEndOfBitstreamACKToPlugin, decoder, id); |
| 239 if (enter.failed()) | 241 if (enter.failed()) |
| 240 return; | 242 return; |
| 241 PP_VideoBitstreamBuffer_Dev bitstream = { id, buffer.host_resource(), size }; | 243 PP_VideoBitstreamBuffer_Dev bitstream = { id, buffer.host_resource(), size }; |
| 242 enter.SetResult(enter.object()->Decode(&bitstream, enter.callback())); | 244 enter.SetResult(enter.object()->Decode(&bitstream, enter.callback())); |
| 243 } | 245 } |
| 244 | 246 |
| 245 void PPB_VideoDecoder_Proxy::OnMsgAssignPictureBuffers( | 247 void PPB_VideoDecoder_Proxy::OnMsgAssignPictureBuffers( |
| 246 const HostResource& decoder, | 248 const HostResource& decoder, |
| 247 const std::vector<PP_PictureBuffer_Dev>& buffers) { | 249 const std::vector<PP_PictureBuffer_Dev>& buffers) { |
| 248 EnterHostFromHostResource<PPB_VideoDecoder_Dev_API> enter(decoder); | 250 EnterHostFromHostResource<PPB_VideoDecoder_Dev_API> enter(decoder); |
| 249 if (enter.succeeded() && !buffers.empty()) { | 251 if (enter.succeeded() && !buffers.empty()) { |
| 250 const PP_PictureBuffer_Dev* buffer_array = &buffers.front(); | 252 const PP_PictureBuffer_Dev* buffer_array = &buffers.front(); |
| 251 enter.object()->AssignPictureBuffers( | 253 enter.object()->AssignPictureBuffers( |
| 252 base::checked_cast<uint32_t>(buffers.size()), buffer_array); | 254 base::checked_cast<uint32_t>(buffers.size()), buffer_array); |
| 253 } | 255 } |
| 254 } | 256 } |
| 255 | 257 |
| 256 void PPB_VideoDecoder_Proxy::OnMsgReusePictureBuffer( | 258 void PPB_VideoDecoder_Proxy::OnMsgReusePictureBuffer( |
| 257 const HostResource& decoder, int32 picture_buffer_id) { | 259 const HostResource& decoder, |
| 260 int32_t picture_buffer_id) { |
| 258 EnterHostFromHostResource<PPB_VideoDecoder_Dev_API> enter(decoder); | 261 EnterHostFromHostResource<PPB_VideoDecoder_Dev_API> enter(decoder); |
| 259 if (enter.succeeded()) | 262 if (enter.succeeded()) |
| 260 enter.object()->ReusePictureBuffer(picture_buffer_id); | 263 enter.object()->ReusePictureBuffer(picture_buffer_id); |
| 261 } | 264 } |
| 262 | 265 |
| 263 void PPB_VideoDecoder_Proxy::OnMsgFlush(const HostResource& decoder) { | 266 void PPB_VideoDecoder_Proxy::OnMsgFlush(const HostResource& decoder) { |
| 264 EnterHostFromHostResourceForceCallback<PPB_VideoDecoder_Dev_API> enter( | 267 EnterHostFromHostResourceForceCallback<PPB_VideoDecoder_Dev_API> enter( |
| 265 decoder, callback_factory_, | 268 decoder, callback_factory_, |
| 266 &PPB_VideoDecoder_Proxy::SendMsgFlushACKToPlugin, decoder); | 269 &PPB_VideoDecoder_Proxy::SendMsgFlushACKToPlugin, decoder); |
| 267 if (enter.succeeded()) | 270 if (enter.succeeded()) |
| 268 enter.SetResult(enter.object()->Flush(enter.callback())); | 271 enter.SetResult(enter.object()->Flush(enter.callback())); |
| 269 } | 272 } |
| 270 | 273 |
| 271 void PPB_VideoDecoder_Proxy::OnMsgReset(const HostResource& decoder) { | 274 void PPB_VideoDecoder_Proxy::OnMsgReset(const HostResource& decoder) { |
| 272 EnterHostFromHostResourceForceCallback<PPB_VideoDecoder_Dev_API> enter( | 275 EnterHostFromHostResourceForceCallback<PPB_VideoDecoder_Dev_API> enter( |
| 273 decoder, callback_factory_, | 276 decoder, callback_factory_, |
| 274 &PPB_VideoDecoder_Proxy::SendMsgResetACKToPlugin, decoder); | 277 &PPB_VideoDecoder_Proxy::SendMsgResetACKToPlugin, decoder); |
| 275 if (enter.succeeded()) | 278 if (enter.succeeded()) |
| 276 enter.SetResult(enter.object()->Reset(enter.callback())); | 279 enter.SetResult(enter.object()->Reset(enter.callback())); |
| 277 } | 280 } |
| 278 | 281 |
| 279 void PPB_VideoDecoder_Proxy::OnMsgDestroy(const HostResource& decoder) { | 282 void PPB_VideoDecoder_Proxy::OnMsgDestroy(const HostResource& decoder) { |
| 280 EnterHostFromHostResource<PPB_VideoDecoder_Dev_API> enter(decoder); | 283 EnterHostFromHostResource<PPB_VideoDecoder_Dev_API> enter(decoder); |
| 281 if (enter.succeeded()) | 284 if (enter.succeeded()) |
| 282 enter.object()->Destroy(); | 285 enter.object()->Destroy(); |
| 283 } | 286 } |
| 284 | 287 |
| 285 void PPB_VideoDecoder_Proxy::SendMsgEndOfBitstreamACKToPlugin( | 288 void PPB_VideoDecoder_Proxy::SendMsgEndOfBitstreamACKToPlugin( |
| 286 int32_t result, const HostResource& decoder, int32 id) { | 289 int32_t result, |
| 290 const HostResource& decoder, |
| 291 int32_t id) { |
| 287 dispatcher()->Send(new PpapiMsg_PPBVideoDecoder_EndOfBitstreamACK( | 292 dispatcher()->Send(new PpapiMsg_PPBVideoDecoder_EndOfBitstreamACK( |
| 288 API_ID_PPB_VIDEO_DECODER_DEV, decoder, id, result)); | 293 API_ID_PPB_VIDEO_DECODER_DEV, decoder, id, result)); |
| 289 } | 294 } |
| 290 | 295 |
| 291 void PPB_VideoDecoder_Proxy::SendMsgFlushACKToPlugin( | 296 void PPB_VideoDecoder_Proxy::SendMsgFlushACKToPlugin( |
| 292 int32_t result, const HostResource& decoder) { | 297 int32_t result, const HostResource& decoder) { |
| 293 dispatcher()->Send(new PpapiMsg_PPBVideoDecoder_FlushACK( | 298 dispatcher()->Send(new PpapiMsg_PPBVideoDecoder_FlushACK( |
| 294 API_ID_PPB_VIDEO_DECODER_DEV, decoder, result)); | 299 API_ID_PPB_VIDEO_DECODER_DEV, decoder, result)); |
| 295 } | 300 } |
| 296 | 301 |
| (...skipping 19 matching lines...) Expand all Loading... |
| 316 | 321 |
| 317 void PPB_VideoDecoder_Proxy::OnMsgResetACK( | 322 void PPB_VideoDecoder_Proxy::OnMsgResetACK( |
| 318 const HostResource& decoder, int32_t result) { | 323 const HostResource& decoder, int32_t result) { |
| 319 EnterPluginFromHostResource<PPB_VideoDecoder_Dev_API> enter(decoder); | 324 EnterPluginFromHostResource<PPB_VideoDecoder_Dev_API> enter(decoder); |
| 320 if (enter.succeeded()) | 325 if (enter.succeeded()) |
| 321 static_cast<VideoDecoder*>(enter.object())->ResetACK(result); | 326 static_cast<VideoDecoder*>(enter.object())->ResetACK(result); |
| 322 } | 327 } |
| 323 | 328 |
| 324 } // namespace proxy | 329 } // namespace proxy |
| 325 } // namespace ppapi | 330 } // namespace ppapi |
| OLD | NEW |