Source release v3.4.1
This commit is contained in:
@@ -146,6 +146,10 @@ class CdmImpl : public Cdm,
|
||||
|
||||
virtual Status load(const std::string& session_id) OVERRIDE;
|
||||
|
||||
virtual Status load(const std::string& session_id,
|
||||
InitDataType init_data_type,
|
||||
const std::string& init_data) OVERRIDE;
|
||||
|
||||
virtual Status update(const std::string& session_id,
|
||||
const std::string& response) OVERRIDE;
|
||||
|
||||
@@ -613,6 +617,38 @@ Cdm::Status CdmImpl::load(const std::string& session_id) {
|
||||
return kSuccess;
|
||||
}
|
||||
|
||||
Cdm::Status CdmImpl::load(const std::string& session_id,
|
||||
InitDataType init_data_type,
|
||||
const std::string& init_data) {
|
||||
if (!cdm_engine_.IsOpenSession(session_id)) {
|
||||
LOGE("Session %s does not exist.", session_id.c_str());
|
||||
return kSessionNotFound;
|
||||
}
|
||||
|
||||
if (init_data_type != kCenc) {
|
||||
LOGE("Invalid init data type: %d", init_data_type);
|
||||
return kTypeError;
|
||||
}
|
||||
|
||||
InitializationData init_data_obj(CENC_INIT_DATA_FORMAT, init_data);
|
||||
if (init_data_obj.IsEmpty()) {
|
||||
// Note that InitializationData's idea of "empty" includes "failed to find
|
||||
// and parse a Widevine PSSH". This should not happen for WebM init data,
|
||||
// which requires no parsing.
|
||||
LOGE("Failed to parse init data, may not contain a Widevine PSSH.");
|
||||
return kNotSupported;
|
||||
}
|
||||
|
||||
CdmKeyRequest key_request;
|
||||
CdmResponseType result = cdm_engine_.GenerateKeyRequest(
|
||||
session_id, session_id, init_data_obj, kLicenseTypeSubSession,
|
||||
app_parameters_, &key_request);
|
||||
if (result != KEY_MESSAGE) {
|
||||
return kUnexpectedError;
|
||||
}
|
||||
return kSuccess;
|
||||
}
|
||||
|
||||
Cdm::Status CdmImpl::update(const std::string& session_id,
|
||||
const std::string& response) {
|
||||
if (provision_request_sent_) {
|
||||
|
||||
Reference in New Issue
Block a user