// Copyright 2017 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef MEDIA_CDM_CDM_AUXILIARY_HELPER_H_ #define MEDIA_CDM_CDM_AUXILIARY_HELPER_H_ #include #include #include #include "base/callback.h" #include "base/macros.h" #include "media/base/media_export.h" #include "media/cdm/cdm_allocator.h" #include "media/cdm/output_protection.h" #include "media/cdm/platform_verification.h" namespace cdm { class FileIO; class FileIOClient; class CdmProxy; class CdmProxyClient; } // namespace cdm namespace media { // Provides a wrapper on the auxiliary functions (CdmAllocator, CdmFileIO, // OutputProtection, PlatformVerification) needed by the library CDM. The // default implementation does nothing -- it simply returns nullptr, false, 0, // etc. as required to meet the interface. class MEDIA_EXPORT CdmAuxiliaryHelper : public CdmAllocator, public OutputProtection, public PlatformVerification { public: CdmAuxiliaryHelper(); ~CdmAuxiliaryHelper() override; // Callback to report the size of file read by cdm::FileIO created by |this|. using FileReadCB = base::RepeatingCallback; virtual void SetFileReadCB(FileReadCB file_read_cb); // Given |client|, creates a cdm::FileIO object and returns it. // The caller does not own the returned object and should not delete it // directly. Instead, it should call cdm::FileIO::Close() after it's not // needed anymore. virtual cdm::FileIO* CreateCdmFileIO(cdm::FileIOClient* client); // Creates a cdm::CdmProxy object and returns it. // The caller does not own the returned object and should not delete it // directly. Instead, it should call cdm::CdmProxy::Destroy() after it's not // needed anymore. virtual cdm::CdmProxy* CreateCdmProxy(cdm::CdmProxyClient* client); // Returns a CDM ID associated with the last returned CdmProxy. Should only // be called after the CdmProxy has been initialized. virtual int GetCdmProxyCdmId(); // CdmAllocator implementation. cdm::Buffer* CreateCdmBuffer(size_t capacity) override; std::unique_ptr CreateCdmVideoFrame() override; // OutputProtection implementation. void QueryStatus(QueryStatusCB callback) override; void EnableProtection(uint32_t desired_protection_mask, EnableProtectionCB callback) override; // PlatformVerification implementation. void ChallengePlatform(const std::string& service_id, const std::string& challenge, ChallengePlatformCB callback) override; void GetStorageId(uint32_t version, StorageIdCB callback) override; private: DISALLOW_COPY_AND_ASSIGN(CdmAuxiliaryHelper); }; } // namespace media #endif // MEDIA_CDM_CDM_AUXILIARY_HELPER_H_