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

Side by Side Diff: webkit/media/crypto/ppapi/cdm_wrapper.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
« no previous file with comments | « ppapi/thunk/ppb_instance_api.h ('k') | webkit/media/crypto/ppapi/clear_key_cdm.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 <cstring> 5 #include <cstring>
6 #include <string> 6 #include <string>
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/compiler_specific.h" 10 #include "base/compiler_specific.h"
(...skipping 389 matching lines...) Expand 10 before | Expand all | Expand 10 after
400 virtual void AddKey(const std::string& session_id, 400 virtual void AddKey(const std::string& session_id,
401 pp::VarArrayBuffer key, 401 pp::VarArrayBuffer key,
402 pp::VarArrayBuffer init_data) OVERRIDE; 402 pp::VarArrayBuffer init_data) OVERRIDE;
403 virtual void CancelKeyRequest(const std::string& session_id) OVERRIDE; 403 virtual void CancelKeyRequest(const std::string& session_id) OVERRIDE;
404 virtual void Decrypt( 404 virtual void Decrypt(
405 pp::Buffer_Dev encrypted_buffer, 405 pp::Buffer_Dev encrypted_buffer,
406 const PP_EncryptedBlockInfo& encrypted_block_info) OVERRIDE; 406 const PP_EncryptedBlockInfo& encrypted_block_info) OVERRIDE;
407 virtual void InitializeVideoDecoder( 407 virtual void InitializeVideoDecoder(
408 const PP_VideoDecoderConfig& decoder_config, 408 const PP_VideoDecoderConfig& decoder_config,
409 pp::Buffer_Dev extra_data_buffer) OVERRIDE; 409 pp::Buffer_Dev extra_data_buffer) OVERRIDE;
410 virtual void DeinitializeDecoder(PP_DecryptorStreamType decoder_type,
411 uint32_t request_id) OVERRIDE;
412 virtual void ResetDecoder(PP_DecryptorStreamType decoder_type,
413 uint32_t request_id) OVERRIDE;
410 virtual void DecryptAndDecodeFrame( 414 virtual void DecryptAndDecodeFrame(
411 pp::Buffer_Dev encrypted_frame, 415 pp::Buffer_Dev encrypted_frame,
412 const PP_EncryptedVideoFrameInfo& encrypted_video_frame_info) OVERRIDE; 416 const PP_EncryptedVideoFrameInfo& encrypted_video_frame_info) OVERRIDE;
413 417
414 // CdmHost methods. 418 // CdmHost methods.
415 virtual void SetTimer(int64 delay_ms) OVERRIDE; 419 virtual void SetTimer(int64 delay_ms) OVERRIDE;
416 virtual double GetCurrentWallTimeMs() OVERRIDE; 420 virtual double GetCurrentWallTimeMs() OVERRIDE;
417 421
418 private: 422 private:
419 typedef linked_ptr<DecryptedBlockImpl> LinkedDecryptedBlock; 423 typedef linked_ptr<DecryptedBlockImpl> LinkedDecryptedBlock;
420 typedef linked_ptr<KeyMessageImpl> LinkedKeyMessage; 424 typedef linked_ptr<KeyMessageImpl> LinkedKeyMessage;
421 typedef linked_ptr<VideoFrameImpl> LinkedVideoFrame; 425 typedef linked_ptr<VideoFrameImpl> LinkedVideoFrame;
422 426
423 // <code>PPB_ContentDecryptor_Private</code> dispatchers. These are passed to 427 // <code>PPB_ContentDecryptor_Private</code> dispatchers. These are passed to
424 // <code>callback_factory_</code> to ensure that calls into 428 // <code>callback_factory_</code> to ensure that calls into
425 // <code>PPP_ContentDecryptor_Private</code> are asynchronous. 429 // <code>PPP_ContentDecryptor_Private</code> are asynchronous.
426 void KeyAdded(int32_t result, const std::string& session_id); 430 void KeyAdded(int32_t result, const std::string& session_id);
427 void KeyMessage(int32_t result, const LinkedKeyMessage& message); 431 void KeyMessage(int32_t result, const LinkedKeyMessage& message);
428 void KeyError(int32_t result, const std::string& session_id); 432 void KeyError(int32_t result, const std::string& session_id);
429 void DeliverBlock(int32_t result, 433 void DeliverBlock(int32_t result,
430 const cdm::Status& status, 434 const cdm::Status& status,
431 const LinkedDecryptedBlock& decrypted_block, 435 const LinkedDecryptedBlock& decrypted_block,
432 const PP_DecryptTrackingInfo& tracking_info); 436 const PP_DecryptTrackingInfo& tracking_info);
433 void DecoderInitialized(int32_t result, 437 void DecoderInitialized(int32_t result,
434 bool success, 438 bool success,
435 uint32_t request_id); 439 uint32_t request_id);
440 void DecoderDeinitializeDone(int32_t result,
441 PP_DecryptorStreamType decoder_type,
442 uint32_t request_id);
443 void DecoderResetDone(int32_t result,
444 PP_DecryptorStreamType decoder_type,
445 uint32_t request_id);
436 void DeliverFrame(int32_t result, 446 void DeliverFrame(int32_t result,
437 const cdm::Status& status, 447 const cdm::Status& status,
438 const LinkedVideoFrame& video_frame, 448 const LinkedVideoFrame& video_frame,
439 const PP_DecryptTrackingInfo& tracking_info); 449 const PP_DecryptTrackingInfo& tracking_info);
440 450
441 // Helper for SetTimer(). 451 // Helper for SetTimer().
442 void TimerExpired(int32 result); 452 void TimerExpired(int32 result);
443 453
444 PpbBufferAllocator allocator_; 454 PpbBufferAllocator allocator_;
445 pp::CompletionCallbackFactory<CdmWrapper> callback_factory_; 455 pp::CompletionCallbackFactory<CdmWrapper> callback_factory_;
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
587 static_cast<int32_t>(extra_data_buffer.size()); 597 static_cast<int32_t>(extra_data_buffer.size());
588 cdm::Status status = cdm_->InitializeVideoDecoder(cdm_decoder_config); 598 cdm::Status status = cdm_->InitializeVideoDecoder(cdm_decoder_config);
589 599
590 CallOnMain(callback_factory_.NewCallback( 600 CallOnMain(callback_factory_.NewCallback(
591 &CdmWrapper::DecoderInitialized, 601 &CdmWrapper::DecoderInitialized,
592 status == cdm::kSuccess, 602 status == cdm::kSuccess,
593 decoder_config.request_id)); 603 decoder_config.request_id));
594 604
595 } 605 }
596 606
607 void CdmWrapper::DeinitializeDecoder(PP_DecryptorStreamType decoder_type,
608 uint32_t request_id) {
609 // TODO(tomfinegan): Implement DeinitializeDecoder in clear key CDM, and call
610 // it here.
611 CallOnMain(callback_factory_.NewCallback(
612 &CdmWrapper::DecoderDeinitializeDone,
613 decoder_type,
614 request_id));
615 }
616
617 void CdmWrapper::ResetDecoder(PP_DecryptorStreamType decoder_type,
618 uint32_t request_id) {
619 // TODO(tomfinegan): Implement ResetDecoder in clear key CDM, and call it
620 // here.
621 CallOnMain(callback_factory_.NewCallback(&CdmWrapper::DecoderResetDone,
622 decoder_type,
623 request_id));
624 }
625
597 void CdmWrapper::DecryptAndDecodeFrame( 626 void CdmWrapper::DecryptAndDecodeFrame(
598 pp::Buffer_Dev encrypted_frame, 627 pp::Buffer_Dev encrypted_frame,
599 const PP_EncryptedVideoFrameInfo& encrypted_video_frame_info) { 628 const PP_EncryptedVideoFrameInfo& encrypted_video_frame_info) {
600 PP_DCHECK(!encrypted_frame.is_null()); 629 PP_DCHECK(!encrypted_frame.is_null());
601 PP_DCHECK(cdm_); 630 PP_DCHECK(cdm_);
602 631
603 cdm::InputBuffer input_buffer; 632 cdm::InputBuffer input_buffer;
604 std::vector<cdm::SubsampleEntry> subsamples; 633 std::vector<cdm::SubsampleEntry> subsamples;
605 ConfigureInputBuffer(encrypted_frame, 634 ConfigureInputBuffer(encrypted_frame,
606 encrypted_video_frame_info.encryption_info, 635 encrypted_video_frame_info.encryption_info,
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
705 734
706 pp::ContentDecryptor_Private::DeliverBlock(buffer, decrypted_block_info); 735 pp::ContentDecryptor_Private::DeliverBlock(buffer, decrypted_block_info);
707 } 736 }
708 737
709 void CdmWrapper::DecoderInitialized(int32_t result, 738 void CdmWrapper::DecoderInitialized(int32_t result,
710 bool success, 739 bool success,
711 uint32_t request_id) { 740 uint32_t request_id) {
712 pp::ContentDecryptor_Private::DecoderInitialized(success, request_id); 741 pp::ContentDecryptor_Private::DecoderInitialized(success, request_id);
713 } 742 }
714 743
744 void CdmWrapper::DecoderDeinitializeDone(int32_t result,
745 PP_DecryptorStreamType decoder_type,
746 uint32_t request_id) {
747 pp::ContentDecryptor_Private::DecoderDeinitializeDone(decoder_type,
748 request_id);
749 }
750
751 void CdmWrapper::DecoderResetDone(int32_t result,
752 PP_DecryptorStreamType decoder_type,
753 uint32_t request_id) {
754 pp::ContentDecryptor_Private::DecoderResetDone(decoder_type, request_id);
755 }
756
715 void CdmWrapper::DeliverFrame( 757 void CdmWrapper::DeliverFrame(
716 int32_t result, 758 int32_t result,
717 const cdm::Status& status, 759 const cdm::Status& status,
718 const LinkedVideoFrame& video_frame, 760 const LinkedVideoFrame& video_frame,
719 const PP_DecryptTrackingInfo& tracking_info) { 761 const PP_DecryptTrackingInfo& tracking_info) {
720 PP_DCHECK(result == PP_OK); 762 PP_DCHECK(result == PP_OK);
721 PP_DecryptedFrameInfo decrypted_frame_info; 763 PP_DecryptedFrameInfo decrypted_frame_info;
722 decrypted_frame_info.tracking_info = tracking_info; 764 decrypted_frame_info.tracking_info = tracking_info;
723 765
724 switch (status) { 766 switch (status) {
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
781 } // namespace webkit_media 823 } // namespace webkit_media
782 824
783 namespace pp { 825 namespace pp {
784 826
785 // Factory function for your specialization of the Module object. 827 // Factory function for your specialization of the Module object.
786 Module* CreateModule() { 828 Module* CreateModule() {
787 return new webkit_media::CdmWrapperModule(); 829 return new webkit_media::CdmWrapperModule();
788 } 830 }
789 831
790 } // namespace pp 832 } // namespace pp
OLDNEW
« no previous file with comments | « ppapi/thunk/ppb_instance_api.h ('k') | webkit/media/crypto/ppapi/clear_key_cdm.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698