Add Support for Audio MIME Types
The EME spec technically requires CDMs to treat audio/mp4 and video/mp4 equivalently, as well as audio/webm and video/webm. We had only been accepting video/mp4 and video/webm up until now. This change also centralizes handling of init data types in the shared CDM code instead of having it spread across multiple places in the codebase. (This is a merge of https://widevine-internal-review.googlesource.com/9532/ from the Widevine CDM repo.) Bug: 13564917 Change-Id: Ib8bdfb2b003ffb00e8f0559561335abb3c5778b0
This commit is contained in:
@@ -128,7 +128,7 @@ status_t WVDrmPlugin::closeSession(const Vector<uint8_t>& sessionId) {
|
||||
status_t WVDrmPlugin::getKeyRequest(
|
||||
const Vector<uint8_t>& scope,
|
||||
const Vector<uint8_t>& initData,
|
||||
const String8& mimeType,
|
||||
const String8& initDataType,
|
||||
KeyType keyType,
|
||||
const KeyedVector<String8, String8>& optionalParameters,
|
||||
Vector<uint8_t>& request,
|
||||
@@ -149,17 +149,20 @@ status_t WVDrmPlugin::getKeyRequest(
|
||||
return android::ERROR_DRM_CANNOT_HANDLE;
|
||||
}
|
||||
|
||||
string cdmMimeType = mimeType.string();
|
||||
string cdmMimeType = initDataType.string();
|
||||
|
||||
// Provide backwards-compatibility for apps that pass non-EME-compatible MIME
|
||||
// types.
|
||||
if (cdmMimeType != wvcdm::ISO_BMFF_MIME_TYPE &&
|
||||
cdmMimeType != wvcdm::WEBM_MIME_TYPE) {
|
||||
cdmMimeType = wvcdm::ISO_BMFF_MIME_TYPE;
|
||||
if (cdmMimeType != wvcdm::ISO_BMFF_VIDEO_MIME_TYPE &&
|
||||
cdmMimeType != wvcdm::ISO_BMFF_AUDIO_MIME_TYPE &&
|
||||
cdmMimeType != wvcdm::WEBM_VIDEO_MIME_TYPE &&
|
||||
cdmMimeType != wvcdm::WEBM_AUDIO_MIME_TYPE) {
|
||||
cdmMimeType = wvcdm::ISO_BMFF_VIDEO_MIME_TYPE;
|
||||
}
|
||||
|
||||
CdmInitData processedInitData;
|
||||
if (cdmMimeType == wvcdm::ISO_BMFF_MIME_TYPE) {
|
||||
if (cdmMimeType == wvcdm::ISO_BMFF_VIDEO_MIME_TYPE ||
|
||||
cdmMimeType == wvcdm::ISO_BMFF_AUDIO_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
|
||||
|
||||
Reference in New Issue
Block a user