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

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

Issue 11028087: Add decoder de-initialize and reset to the Pepper CDM API. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address comments with the exception of renaming Deinit Created 8 years, 2 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) 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/ppp_content_decryptor_private_proxy.h" 5 #include "ppapi/proxy/ppp_content_decryptor_private_proxy.h"
6 6
7 #include "base/platform_file.h" 7 #include "base/platform_file.h"
8 #include "ppapi/c/pp_bool.h" 8 #include "ppapi/c/pp_bool.h"
9 #include "ppapi/c/ppb_core.h" 9 #include "ppapi/c/ppb_core.h"
10 #include "ppapi/proxy/content_decryptor_private_serializer.h" 10 #include "ppapi/proxy/content_decryptor_private_serializer.h"
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after
231 231
232 dispatcher->Send( 232 dispatcher->Send(
233 new PpapiMsg_PPPContentDecryptor_InitializeVideoDecoder( 233 new PpapiMsg_PPPContentDecryptor_InitializeVideoDecoder(
234 API_ID_PPP_CONTENT_DECRYPTOR_PRIVATE, 234 API_ID_PPP_CONTENT_DECRYPTOR_PRIVATE,
235 instance, 235 instance,
236 serialized_decoder_config, 236 serialized_decoder_config,
237 buffer)); 237 buffer));
238 } 238 }
239 239
240 240
241 void DeinitializeDecoder(PP_Instance instance,
242 PP_DecryptorStreamType decoder_type,
243 uint32_t request_id) {
244 HostDispatcher* dispatcher = HostDispatcher::GetForInstance(instance);
245 if (!dispatcher) {
246 NOTREACHED();
247 return;
248 }
249
250 dispatcher->Send(
251 new PpapiMsg_PPPContentDecryptor_DeinitializeDecoder(
252 API_ID_PPP_CONTENT_DECRYPTOR_PRIVATE,
253 instance,
254 decoder_type,
255 request_id));
256 }
257
258 void ResetDecoder(PP_Instance instance,
259 PP_DecryptorStreamType decoder_type,
260 uint32_t request_id) {
261 HostDispatcher* dispatcher = HostDispatcher::GetForInstance(instance);
262 if (!dispatcher) {
263 NOTREACHED();
264 return;
265 }
266
267 dispatcher->Send(
268 new PpapiMsg_PPPContentDecryptor_ResetDecoder(
269 API_ID_PPP_CONTENT_DECRYPTOR_PRIVATE,
270 instance,
271 decoder_type,
272 request_id));
273 }
274
241 void DecryptAndDecodeFrame( 275 void DecryptAndDecodeFrame(
242 PP_Instance instance, 276 PP_Instance instance,
243 PP_Resource encrypted_frame, 277 PP_Resource encrypted_frame,
244 const PP_EncryptedVideoFrameInfo* encrypted_video_frame_info) { 278 const PP_EncryptedVideoFrameInfo* encrypted_video_frame_info) {
245 HostDispatcher* dispatcher = HostDispatcher::GetForInstance(instance); 279 HostDispatcher* dispatcher = HostDispatcher::GetForInstance(instance);
246 if (!dispatcher) { 280 if (!dispatcher) {
247 NOTREACHED(); 281 NOTREACHED();
248 return; 282 return;
249 } 283 }
250 284
(...skipping 20 matching lines...) Expand all
271 buffer, 305 buffer,
272 serialized_frame_info)); 306 serialized_frame_info));
273 } 307 }
274 308
275 static const PPP_ContentDecryptor_Private content_decryptor_interface = { 309 static const PPP_ContentDecryptor_Private content_decryptor_interface = {
276 &GenerateKeyRequest, 310 &GenerateKeyRequest,
277 &AddKey, 311 &AddKey,
278 &CancelKeyRequest, 312 &CancelKeyRequest,
279 &Decrypt, 313 &Decrypt,
280 &InitializeVideoDecoder, 314 &InitializeVideoDecoder,
315 &DeinitializeDecoder,
316 &ResetDecoder,
281 &DecryptAndDecodeFrame 317 &DecryptAndDecodeFrame
282 }; 318 };
283 319
284 } // namespace 320 } // namespace
285 321
286 PPP_ContentDecryptor_Private_Proxy::PPP_ContentDecryptor_Private_Proxy( 322 PPP_ContentDecryptor_Private_Proxy::PPP_ContentDecryptor_Private_Proxy(
287 Dispatcher* dispatcher) 323 Dispatcher* dispatcher)
288 : InterfaceProxy(dispatcher), 324 : InterfaceProxy(dispatcher),
289 ppp_decryptor_impl_(NULL) { 325 ppp_decryptor_impl_(NULL) {
290 if (dispatcher->IsPlugin()) { 326 if (dispatcher->IsPlugin()) {
(...skipping 19 matching lines...) Expand all
310 IPC_MESSAGE_HANDLER(PpapiMsg_PPPContentDecryptor_GenerateKeyRequest, 346 IPC_MESSAGE_HANDLER(PpapiMsg_PPPContentDecryptor_GenerateKeyRequest,
311 OnMsgGenerateKeyRequest) 347 OnMsgGenerateKeyRequest)
312 IPC_MESSAGE_HANDLER(PpapiMsg_PPPContentDecryptor_AddKey, 348 IPC_MESSAGE_HANDLER(PpapiMsg_PPPContentDecryptor_AddKey,
313 OnMsgAddKey) 349 OnMsgAddKey)
314 IPC_MESSAGE_HANDLER(PpapiMsg_PPPContentDecryptor_CancelKeyRequest, 350 IPC_MESSAGE_HANDLER(PpapiMsg_PPPContentDecryptor_CancelKeyRequest,
315 OnMsgCancelKeyRequest) 351 OnMsgCancelKeyRequest)
316 IPC_MESSAGE_HANDLER(PpapiMsg_PPPContentDecryptor_Decrypt, 352 IPC_MESSAGE_HANDLER(PpapiMsg_PPPContentDecryptor_Decrypt,
317 OnMsgDecrypt) 353 OnMsgDecrypt)
318 IPC_MESSAGE_HANDLER(PpapiMsg_PPPContentDecryptor_InitializeVideoDecoder, 354 IPC_MESSAGE_HANDLER(PpapiMsg_PPPContentDecryptor_InitializeVideoDecoder,
319 OnMsgInitializeVideoDecoder) 355 OnMsgInitializeVideoDecoder)
356 IPC_MESSAGE_HANDLER(PpapiMsg_PPPContentDecryptor_DeinitializeDecoder,
357 OnMsgDeinitializeDecoder)
358 IPC_MESSAGE_HANDLER(PpapiMsg_PPPContentDecryptor_ResetDecoder,
359 OnMsgResetDecoder)
320 IPC_MESSAGE_HANDLER(PpapiMsg_PPPContentDecryptor_DecryptAndDecodeFrame, 360 IPC_MESSAGE_HANDLER(PpapiMsg_PPPContentDecryptor_DecryptAndDecodeFrame,
321 OnMsgDecryptAndDecodeFrame) 361 OnMsgDecryptAndDecodeFrame)
322 IPC_MESSAGE_UNHANDLED(handled = false) 362 IPC_MESSAGE_UNHANDLED(handled = false)
323 IPC_END_MESSAGE_MAP() 363 IPC_END_MESSAGE_MAP()
324 DCHECK(handled); 364 DCHECK(handled);
325 return handled; 365 return handled;
326 } 366 }
327 367
328 void PPP_ContentDecryptor_Private_Proxy::OnMsgGenerateKeyRequest( 368 void PPP_ContentDecryptor_Private_Proxy::OnMsgGenerateKeyRequest(
329 PP_Instance instance, 369 PP_Instance instance,
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
399 } 439 }
400 440
401 CallWhileUnlocked( 441 CallWhileUnlocked(
402 ppp_decryptor_impl_->InitializeVideoDecoder, 442 ppp_decryptor_impl_->InitializeVideoDecoder,
403 instance, 443 instance,
404 const_cast<const PP_VideoDecoderConfig*>(&decoder_config), 444 const_cast<const PP_VideoDecoderConfig*>(&decoder_config),
405 plugin_resource); 445 plugin_resource);
406 } 446 }
407 } 447 }
408 448
449 void PPP_ContentDecryptor_Private_Proxy::OnMsgDeinitializeDecoder(
450 PP_Instance instance,
451 PP_DecryptorStreamType decoder_type,
452 uint32_t request_id) {
453 if (ppp_decryptor_impl_) {
454 CallWhileUnlocked(
455 ppp_decryptor_impl_->DeinitializeDecoder,
456 instance,
457 decoder_type,
458 request_id);
459 }
460 }
461
462 void PPP_ContentDecryptor_Private_Proxy::OnMsgResetDecoder(
463 PP_Instance instance,
464 PP_DecryptorStreamType decoder_type,
465 uint32_t request_id) {
466 if (ppp_decryptor_impl_) {
467 CallWhileUnlocked(
468 ppp_decryptor_impl_->ResetDecoder,
469 instance,
470 decoder_type,
471 request_id);
472 }
473 }
474
409 void PPP_ContentDecryptor_Private_Proxy::OnMsgDecryptAndDecodeFrame( 475 void PPP_ContentDecryptor_Private_Proxy::OnMsgDecryptAndDecodeFrame(
410 PP_Instance instance, 476 PP_Instance instance,
411 const PPPDecryptor_Buffer& encrypted_frame, 477 const PPPDecryptor_Buffer& encrypted_frame,
412 const std::string& serialized_frame_info) { 478 const std::string& serialized_frame_info) {
413 if (ppp_decryptor_impl_) { 479 if (ppp_decryptor_impl_) {
414 PP_Resource plugin_resource = 480 PP_Resource plugin_resource =
415 PPB_Buffer_Proxy::AddProxyResource(encrypted_frame.resource, 481 PPB_Buffer_Proxy::AddProxyResource(encrypted_frame.resource,
416 encrypted_frame.handle, 482 encrypted_frame.handle,
417 encrypted_frame.size); 483 encrypted_frame.size);
418 PP_EncryptedVideoFrameInfo frame_info; 484 PP_EncryptedVideoFrameInfo frame_info;
419 if (!DeserializeBlockInfo(serialized_frame_info, &frame_info)) 485 if (!DeserializeBlockInfo(serialized_frame_info, &frame_info))
420 return; 486 return;
421 CallWhileUnlocked( 487 CallWhileUnlocked(
422 ppp_decryptor_impl_->DecryptAndDecodeFrame, 488 ppp_decryptor_impl_->DecryptAndDecodeFrame,
423 instance, 489 instance,
424 plugin_resource, 490 plugin_resource,
425 const_cast<const PP_EncryptedVideoFrameInfo*>(&frame_info)); 491 const_cast<const PP_EncryptedVideoFrameInfo*>(&frame_info));
426 } 492 }
427 } 493 }
428 494
429 } // namespace proxy 495 } // namespace proxy
430 } // namespace ppapi 496 } // namespace ppapi
OLDNEW
« no previous file with comments | « ppapi/proxy/ppp_content_decryptor_private_proxy.h ('k') | ppapi/thunk/ppb_content_decryptor_private_thunk.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698