resolved conflicts for merge of 66cadaa9 to master
Change-Id: I2a052d56516f0e246d77148a38191430ff139c3e
This commit is contained in:
@@ -149,36 +149,22 @@ status_t WVDrmPlugin::getKeyRequest(
|
||||
return android::ERROR_DRM_CANNOT_HANDLE;
|
||||
}
|
||||
|
||||
string cdmMimeType = mimeType.string();
|
||||
|
||||
CdmInitData processedInitData;
|
||||
if (cdmMimeType == wvcdm::ISO_BMFF_MIME_TYPE) {
|
||||
// For ISO-BMFF, we need to wrap the init data in a new PSSH header.
|
||||
static const char psshPrefix[] = {
|
||||
0, 0, 0, 0, // Total size
|
||||
'p', 's', 's', 'h', // "PSSH"
|
||||
0, 0, 0, 0, // Flags - must be zero
|
||||
0xED, 0xEF, 0x8B, 0xA9, 0x79, 0xD6, 0x4A, 0xCE, // Widevine UUID
|
||||
0xA3, 0xC8, 0x27, 0xDC, 0xD5, 0x1D, 0x21, 0xED,
|
||||
0, 0, 0, 0 // Size of initData
|
||||
};
|
||||
processedInitData.assign(psshPrefix, sizeof(psshPrefix) / sizeof(char));
|
||||
processedInitData.append(reinterpret_cast<const char*>(initData.array()),
|
||||
initData.size());
|
||||
const size_t kPsshBoxSizeLocation = 0;
|
||||
const size_t kInitDataSizeLocation =
|
||||
sizeof(psshPrefix) - sizeof(uint32_t);
|
||||
uint32_t psshBoxSize = htonl(processedInitData.size());
|
||||
uint32_t initDataSize = htonl(initData.size());
|
||||
memcpy(&processedInitData[kPsshBoxSizeLocation], &psshBoxSize,
|
||||
sizeof(uint32_t));
|
||||
memcpy(&processedInitData[kInitDataSizeLocation], &initDataSize,
|
||||
sizeof(uint32_t));
|
||||
} else {
|
||||
// For other formats, we can pass the init data through unmodified.
|
||||
processedInitData.assign(reinterpret_cast<const char*>(initData.array()),
|
||||
initData.size());
|
||||
}
|
||||
// Build PSSH box for PSSH data in initData.
|
||||
static const char psshPrefix[] = {
|
||||
0, 0, 0, 0, // Total size
|
||||
'p', 's', 's', 'h', // "PSSH"
|
||||
0, 0, 0, 0, // Flags - must be zero
|
||||
0xED, 0xEF, 0x8B, 0xA9, 0x79, 0xD6, 0x4A, 0xCE, // Widevine UUID
|
||||
0xA3, 0xC8, 0x27, 0xDC, 0xD5, 0x1D, 0x21, 0xED,
|
||||
0, 0, 0, 0 // Size of initData
|
||||
};
|
||||
CdmInitData psshBox(psshPrefix, sizeof(psshPrefix) / sizeof(uint8_t));
|
||||
psshBox.append(reinterpret_cast<const char*>(initData.array()),
|
||||
initData.size());
|
||||
uint32_t* psshBoxSize = reinterpret_cast<uint32_t*>(&psshBox[0]);
|
||||
uint32_t* initDataSize = reinterpret_cast<uint32_t*>(&psshBox[28]);
|
||||
*initDataSize = htonl(initData.size());
|
||||
*psshBoxSize = htonl(psshBox.size());
|
||||
|
||||
CdmAppParameterMap cdmParameters;
|
||||
for (size_t i = 0; i < optionalParameters.size(); ++i) {
|
||||
@@ -193,10 +179,11 @@ status_t WVDrmPlugin::getKeyRequest(
|
||||
|
||||
CdmKeyMessage keyRequest;
|
||||
string cdmDefaultUrl;
|
||||
|
||||
CdmResponseType res = mCDM->GenerateKeyRequest(cdmSessionId, cdmKeySetId,
|
||||
cdmMimeType, processedInitData,
|
||||
cdmLicenseType, cdmParameters,
|
||||
&keyRequest, &cdmDefaultUrl);
|
||||
psshBox, cdmLicenseType,
|
||||
cdmParameters, &keyRequest,
|
||||
&cdmDefaultUrl);
|
||||
|
||||
if (isCdmResponseTypeSuccess(res)) {
|
||||
defaultUrl.clear();
|
||||
|
||||
Reference in New Issue
Block a user