tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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_