Migration from jb-mr2 to master for Widevine CDM
Android development of the widevine CDM has been done on the jb-mr2 branch of the cdm code base. This CL contains a merge of that jb-mr2 work to CDM master, and also reflects the evolution of the common Modular DRM code base since jb-mr2 branched. Change-Id: I1d7e1a12d092c00044a4298261146cb97808d4ef
This commit is contained in:
@@ -6,25 +6,27 @@
|
||||
#include <set>
|
||||
|
||||
#include "crypto_session.h"
|
||||
#include "device_files.h"
|
||||
#include "license.h"
|
||||
#include "policy_engine.h"
|
||||
#include "wv_cdm_event_listener.h"
|
||||
#include "scoped_ptr.h"
|
||||
#include "wv_cdm_types.h"
|
||||
|
||||
namespace wvcdm {
|
||||
|
||||
// TODO(kqyang): Do we need it? CdmKey not defined yet
|
||||
// typedef std::map<KeyId, CdmKey*> CdmSessionKeys;
|
||||
class WvCdmEventListener;
|
||||
|
||||
class CdmSession {
|
||||
public:
|
||||
CdmSession() : session_id_(GenerateSessionId()), license_received_(false),
|
||||
reinitialize_session_(false), license_type_(kLicenseTypeStreaming) {}
|
||||
CdmSession()
|
||||
: session_id_(GenerateSessionId()),
|
||||
crypto_session_(NULL),
|
||||
license_received_(false),
|
||||
reinitialize_session_(false),
|
||||
license_type_(kLicenseTypeStreaming) {}
|
||||
~CdmSession() {}
|
||||
|
||||
CdmResponseType Init();
|
||||
CdmResponseType ReInit();
|
||||
bool DestroySession();
|
||||
|
||||
CdmResponseType RestoreOfflineSession(const CdmKeySetId& key_set_id,
|
||||
const CdmLicenseType license_type);
|
||||
@@ -57,16 +59,11 @@ class CdmSession {
|
||||
CdmResponseType QueryKeyControlInfo(CdmQueryMap* key_info);
|
||||
|
||||
// Decrypt() - Accept encrypted buffer and return decrypted data.
|
||||
CdmResponseType Decrypt(bool is_encrypted,
|
||||
bool is_secure,
|
||||
const KeyId& key_id,
|
||||
const uint8_t* encrypt_buffer,
|
||||
size_t encrypt_length,
|
||||
const std::vector<uint8_t>& iv,
|
||||
size_t block_offset,
|
||||
void* decrypt_buffer,
|
||||
size_t decrypt_buffer_offset,
|
||||
bool is_video);
|
||||
CdmResponseType Decrypt(bool is_encrypted, bool is_secure,
|
||||
const KeyId& key_id, const uint8_t* encrypt_buffer,
|
||||
size_t encrypt_length, const std::vector<uint8_t>& iv,
|
||||
size_t block_offset, void* decrypt_buffer,
|
||||
size_t decrypt_buffer_offset, bool is_video);
|
||||
|
||||
// License renewal
|
||||
// GenerateRenewalRequest() - Construct valid renewal request for the current
|
||||
@@ -83,7 +80,7 @@ class CdmSession {
|
||||
CdmResponseType GenerateReleaseRequest(CdmKeyMessage* key_request,
|
||||
std::string* server_url);
|
||||
|
||||
// RenewKey() - Accept renewal response and update key info.
|
||||
// ReleaseKey() - Accept response and release key.
|
||||
CdmResponseType ReleaseKey(const CdmKeyResponse& key_response);
|
||||
|
||||
bool IsKeyValid(const KeyId& key_id);
|
||||
@@ -92,22 +89,22 @@ class CdmSession {
|
||||
bool DetachEventListener(WvCdmEventListener* listener);
|
||||
|
||||
void OnTimerEvent();
|
||||
void OnKeyReleaseEvent(CdmKeySetId key_set_id);
|
||||
void OnKeyReleaseEvent(const CdmKeySetId& key_set_id);
|
||||
|
||||
private:
|
||||
|
||||
// Generate unique ID for each new session.
|
||||
CdmSessionId GenerateSessionId();
|
||||
CdmKeySetId GenerateKeySetId(CdmInitData& pssh_data);
|
||||
bool GenerateKeySetId(CdmKeySetId* key_set_id);
|
||||
|
||||
bool LoadDeviceCertificate(std::string* cert, std::string* wrapped_key);
|
||||
bool StoreLicense(bool active);
|
||||
bool StoreLicense(DeviceFiles::LicenseState state);
|
||||
|
||||
// instance variables
|
||||
const CdmSessionId session_id_;
|
||||
CdmKeySystem key_system_;
|
||||
CdmLicense license_parser_;
|
||||
CryptoSession* crypto_session_;
|
||||
scoped_ptr<CryptoSession> crypto_session_;
|
||||
PolicyEngine policy_engine_;
|
||||
bool license_received_;
|
||||
bool reinitialize_session_;
|
||||
@@ -132,9 +129,6 @@ class CdmSession {
|
||||
|
||||
std::set<WvCdmEventListener*> listeners_;
|
||||
|
||||
// TODO(kqyang): CdmKey not defined yet
|
||||
// CdmSessionKeys session_keys_;
|
||||
|
||||
CORE_DISALLOW_COPY_AND_ASSIGN(CdmSession);
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user