67 lines
2.2 KiB
C++
67 lines
2.2 KiB
C++
/* 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 <vector>
|
|
|
|
#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<uint8_t> 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
|