/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef DOM_MEDIA_PLATFORM_WMF_CLEARKEY_WMFDECRYPTEDBLOCK_H #define DOM_MEDIA_PLATFORM_WMF_CLEARKEY_WMFDECRYPTEDBLOCK_H #include #include "WMFClearKeyUtils.h" #include "content_decryption_module.h" namespace mozilla { // This class is used to store the decrypted data. It will be allocated by // `SessionManagerWrapper::Allocate`. class WMFDecryptedBuffer : public cdm::Buffer { public: explicit WMFDecryptedBuffer(size_t aSize) { SetSize(aSize); LOG("WMFDecryptedBuffer ctor %p, sz=%u", this, Size()); } ~WMFDecryptedBuffer() override { LOG("WMFDecryptedBuffer dtor %p, sz=%u", this, Size()); } WMFDecryptedBuffer(const WMFDecryptedBuffer&) = delete; WMFDecryptedBuffer& operator=(const WMFDecryptedBuffer&) = delete; // This is not good, but that is how cdm::buffer works. void Destroy() override { delete this; } uint32_t Capacity() const override { return mBuffer.size(); } uint8_t* Data() override { return mBuffer.data(); } void SetSize(uint32_t aSize) override { return mBuffer.resize(aSize); } uint32_t Size() const override { return mBuffer.size(); } private: std::vector mBuffer; }; class WMFDecryptedBlock : public cdm::DecryptedBlock { public: WMFDecryptedBlock() : mBuffer(nullptr), mTimestamp(0) { LOG("WMFDecryptedBlock ctor %p", this); } ~WMFDecryptedBlock() override { LOG("WMFDecryptedBlock dtor %p", this); if (mBuffer) { mBuffer->Destroy(); mBuffer = nullptr; } } void SetDecryptedBuffer(cdm::Buffer* aBuffer) override { LOG("WMFDecryptedBlock(%p)::SetDecryptedBuffer, buffer=%p", this, aBuffer); mBuffer = aBuffer; } cdm::Buffer* DecryptedBuffer() override { return mBuffer; } void SetTimestamp(int64_t aTimestamp) override { mTimestamp = aTimestamp; } int64_t Timestamp() const override { return mTimestamp; } private: cdm::Buffer* mBuffer; int64_t mTimestamp; }; } // namespace mozilla #endif // DOM_MEDIA_PLATFORM_WMF_CLEARKEY_WMFDECRYPTEDBLOCK_H