ChromiumCDMCompat.h (5018B)
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 2 /* This Source Code Form is subject to the terms of the Mozilla Public 3 * License, v. 2.0. If a copy of the MPL was not distributed with this 4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 5 6 #ifndef ChromiumCDMCompat_h_ 7 #define ChromiumCDMCompat_h_ 8 9 #include "content_decryption_module.h" 10 11 namespace mozilla::gmp { 12 13 class ChromiumCDMCompat final : public cdm::ContentDecryptionModule_11 { 14 public: 15 explicit ChromiumCDMCompat(cdm::ContentDecryptionModule_10* aCDM) 16 : mCDM(aCDM) {} 17 18 void Initialize(bool aAllowDistinctiveIdentifier, bool aAllowPersistentState, 19 bool aUseHwSecureCodecs) override { 20 mCDM->Initialize(aAllowDistinctiveIdentifier, aAllowPersistentState, 21 aUseHwSecureCodecs); 22 } 23 24 void GetStatusForPolicy(uint32_t aPromiseId, 25 const cdm::Policy& aPolicy) override { 26 mCDM->GetStatusForPolicy(aPromiseId, aPolicy); 27 } 28 29 void SetServerCertificate(uint32_t aPromiseId, 30 const uint8_t* aServerCertificateData, 31 uint32_t aServerCertificateDataSize) override { 32 mCDM->SetServerCertificate(aPromiseId, aServerCertificateData, 33 aServerCertificateDataSize); 34 } 35 36 void CreateSessionAndGenerateRequest(uint32_t aPromiseId, 37 cdm::SessionType aSessionType, 38 cdm::InitDataType aInitDataType, 39 const uint8_t* aInitData, 40 uint32_t aInitDataSize) override { 41 mCDM->CreateSessionAndGenerateRequest( 42 aPromiseId, aSessionType, aInitDataType, aInitData, aInitDataSize); 43 }; 44 45 void LoadSession(uint32_t aPromiseId, cdm::SessionType aSessionType, 46 const char* aSessionId, uint32_t aSessionIdSize) override { 47 mCDM->LoadSession(aPromiseId, aSessionType, aSessionId, aSessionIdSize); 48 }; 49 50 void UpdateSession(uint32_t aPromiseId, const char* aSessionId, 51 uint32_t aSessionIdSize, const uint8_t* aResponse, 52 uint32_t aResponseSize) override { 53 mCDM->UpdateSession(aPromiseId, aSessionId, aSessionIdSize, aResponse, 54 aResponseSize); 55 }; 56 57 void CloseSession(uint32_t aPromiseId, const char* aSessionId, 58 uint32_t aSessionIdSize) override { 59 mCDM->CloseSession(aPromiseId, aSessionId, aSessionIdSize); 60 }; 61 62 void RemoveSession(uint32_t aPromiseId, const char* aSessionId, 63 uint32_t aSessionIdSize) override { 64 mCDM->RemoveSession(aPromiseId, aSessionId, aSessionIdSize); 65 }; 66 67 void TimerExpired(void* aContext) override { mCDM->TimerExpired(aContext); }; 68 69 cdm::Status Decrypt(const cdm::InputBuffer_2& aEncryptedBuffer, 70 cdm::DecryptedBlock* aDecryptedBuffer) override { 71 return mCDM->Decrypt(aEncryptedBuffer, aDecryptedBuffer); 72 }; 73 74 cdm::Status InitializeAudioDecoder( 75 const cdm::AudioDecoderConfig_2& aAudioDecoderConfig) override { 76 return mCDM->InitializeAudioDecoder(aAudioDecoderConfig); 77 }; 78 79 cdm::Status InitializeVideoDecoder( 80 const cdm::VideoDecoderConfig_2& aVideoDecoderConfig) override { 81 return mCDM->InitializeVideoDecoder(aVideoDecoderConfig); 82 }; 83 84 void DeinitializeDecoder(cdm::StreamType aDecoderType) override { 85 mCDM->DeinitializeDecoder(aDecoderType); 86 }; 87 88 void ResetDecoder(cdm::StreamType aDecoderType) override { 89 mCDM->ResetDecoder(aDecoderType); 90 }; 91 92 cdm::Status DecryptAndDecodeFrame(const cdm::InputBuffer_2& aEncryptedBuffer, 93 cdm::VideoFrame* aVideoFrame) override { 94 return mCDM->DecryptAndDecodeFrame(aEncryptedBuffer, aVideoFrame); 95 }; 96 97 cdm::Status DecryptAndDecodeSamples( 98 const cdm::InputBuffer_2& aEncryptedBuffer, 99 cdm::AudioFrames* aAudioFrames) override { 100 return mCDM->DecryptAndDecodeSamples(aEncryptedBuffer, aAudioFrames); 101 }; 102 103 void OnPlatformChallengeResponse( 104 const cdm::PlatformChallengeResponse& aResponse) override { 105 mCDM->OnPlatformChallengeResponse(aResponse); 106 }; 107 108 void OnQueryOutputProtectionStatus(cdm::QueryResult aResult, 109 uint32_t aLinkMask, 110 uint32_t aOutputProtectionMask) override { 111 mCDM->OnQueryOutputProtectionStatus(aResult, aLinkMask, 112 aOutputProtectionMask); 113 }; 114 115 void OnStorageId(uint32_t aVersion, const uint8_t* aStorageId, 116 uint32_t aStorageIdSize) override { 117 mCDM->OnStorageId(aVersion, aStorageId, aStorageIdSize); 118 } 119 120 // Destroys the object in the same aContext as it was created. 121 void Destroy() override { 122 mCDM->Destroy(); 123 delete this; 124 } 125 126 protected: 127 virtual ~ChromiumCDMCompat() = default; 128 129 cdm::ContentDecryptionModule_10* mCDM; 130 }; 131 132 } // namespace mozilla::gmp 133 134 #endif // ChromiumCDMCompat_h_