Clean up DRM handling
Avoid calling SniffDrm twice, and remove [gs]etDrmFlag methods
since they serve no purpose anymore.
Test: ran forward lock CTS test, and played protected content in Play Movies
Change-Id: I8313d2dae459151bf965a76ac1125d36ce8176e6
diff --git a/include/media/IMediaExtractor.h b/include/media/IMediaExtractor.h
index 34b15e9..e0a81f1 100644
--- a/include/media/IMediaExtractor.h
+++ b/include/media/IMediaExtractor.h
@@ -54,8 +54,6 @@
virtual uint32_t flags() const = 0;
// for DRM
- virtual void setDrmFlag(bool flag) = 0;
- virtual bool getDrmFlag() = 0;
virtual char* getDrmTrackInfo(size_t trackID, int *len) = 0;
virtual void setUID(uid_t uid) = 0;
diff --git a/include/media/stagefright/MediaExtractor.h b/include/media/stagefright/MediaExtractor.h
index e5ee72e..4de1521 100644
--- a/include/media/stagefright/MediaExtractor.h
+++ b/include/media/stagefright/MediaExtractor.h
@@ -59,12 +59,6 @@
virtual uint32_t flags() const;
// for DRM
- void setDrmFlag(bool flag) {
- mIsDrm = flag;
- };
- bool getDrmFlag() {
- return mIsDrm;
- }
virtual char* getDrmTrackInfo(size_t trackID, int *len) {
return NULL;
}
diff --git a/media/libmedia/IMediaExtractor.cpp b/media/libmedia/IMediaExtractor.cpp
index 94c96f6..7776313 100644
--- a/media/libmedia/IMediaExtractor.cpp
+++ b/media/libmedia/IMediaExtractor.cpp
@@ -34,8 +34,6 @@
GETTRACKMETADATA,
GETMETADATA,
FLAGS,
- SETDRMFLAG,
- GETDRMFLAG,
GETDRMTRACKINFO,
SETUID,
NAME
@@ -101,13 +99,6 @@
return 0;
}
- virtual void setDrmFlag(bool flag __unused) {
- ALOGV("setDrmFlag NOT IMPLEMENTED");
- }
- virtual bool getDrmFlag() {
- ALOGV("getDrmFlag NOT IMPLEMENTED");
- return false;
- }
virtual char* getDrmTrackInfo(size_t trackID __unused, int *len __unused) {
ALOGV("getDrmTrackInfo NOT IMPLEMENTED");
return NULL;
diff --git a/media/libmediaplayerservice/nuplayer/GenericSource.cpp b/media/libmediaplayerservice/nuplayer/GenericSource.cpp
index 8761e9d..d1d1077 100644
--- a/media/libmediaplayerservice/nuplayer/GenericSource.cpp
+++ b/media/libmediaplayerservice/nuplayer/GenericSource.cpp
@@ -145,10 +145,6 @@
return UNKNOWN_ERROR;
}
- if (extractor->getDrmFlag()) {
- checkDrmStatus(mDataSource);
- }
-
mFileMeta = extractor->getMetaData();
if (mFileMeta != NULL) {
int64_t duration;
@@ -262,18 +258,6 @@
return OK;
}
-void NuPlayer::GenericSource::checkDrmStatus(const sp<DataSource>& dataSource) {
- dataSource->getDrmInfo(mDecryptHandle, &mDrmManagerClient);
- if (mDecryptHandle != NULL) {
- CHECK(mDrmManagerClient);
- if (RightsStatus::RIGHTS_VALID != mDecryptHandle->status) {
- sp<AMessage> msg = dupNotify();
- msg->setInt32("what", kWhatDrmNoLicense);
- msg->post();
- }
- }
-}
-
int64_t NuPlayer::GenericSource::getLastReadPosition() {
if (mAudioTrack.mSource != NULL) {
return mAudioTimeUs;
diff --git a/media/libmediaplayerservice/nuplayer/GenericSource.h b/media/libmediaplayerservice/nuplayer/GenericSource.h
index 38d8616..a14056f 100644
--- a/media/libmediaplayerservice/nuplayer/GenericSource.h
+++ b/media/libmediaplayerservice/nuplayer/GenericSource.h
@@ -234,7 +234,6 @@
void resetDataSource();
status_t initFromDataSource();
- void checkDrmStatus(const sp<DataSource>& dataSource);
int64_t getLastReadPosition();
void setDrmPlaybackStatusIfNeeded(int playbackStatus, int64_t position);
diff --git a/media/libstagefright/DRMExtractor.cpp b/media/libstagefright/DRMExtractor.cpp
index d36ac65..8ba36d5 100644
--- a/media/libstagefright/DRMExtractor.cpp
+++ b/media/libstagefright/DRMExtractor.cpp
@@ -244,7 +244,6 @@
mDecryptHandle(NULL),
mDrmManagerClient(NULL) {
mOriginalExtractor = MediaExtractor::Create(source, mime);
- mOriginalExtractor->setDrmFlag(true);
mOriginalExtractor->getMetaData()->setInt32(kKeyIsDRM, 1);
source->getDrmInfo(mDecryptHandle, &mDrmManagerClient);
diff --git a/media/libstagefright/MediaExtractor.cpp b/media/libstagefright/MediaExtractor.cpp
index aeaead5..49f480d 100644
--- a/media/libstagefright/MediaExtractor.cpp
+++ b/media/libstagefright/MediaExtractor.cpp
@@ -160,6 +160,8 @@
if (!strncmp(drmMime, "drm+es_based+", 13)) {
// DRMExtractor sets container metadata kKeyIsDRM to 1
return new DRMExtractor(source, drmMime + 14);
+ } else {
+ mime = drmMime + 20; // get real mimetype after "drm+container_based+" prefix
}
}
@@ -201,28 +203,6 @@
mime, confidence);
}
- bool isDrm = false;
- // DRM MIME type syntax is "drm+type+original" where
- // type is "es_based" or "container_based" and
- // original is the content's cleartext MIME type
- if (!strncmp(mime, "drm+", 4)) {
- const char *originalMime = strchr(mime+4, '+');
- if (originalMime == NULL) {
- // second + not found
- return NULL;
- }
- ++originalMime;
- if (!strncmp(mime, "drm+es_based+", 13)) {
- // DRMExtractor sets container metadata kKeyIsDRM to 1
- return new DRMExtractor(source, originalMime);
- } else if (!strncmp(mime, "drm+container_based+", 20)) {
- mime = originalMime;
- isDrm = true;
- } else {
- return NULL;
- }
- }
-
MediaExtractor *ret = NULL;
if (!strcasecmp(mime, MEDIA_MIMETYPE_CONTAINER_MPEG4)
|| !strcasecmp(mime, "audio/mp4")) {
@@ -250,14 +230,6 @@
ret = new MidiExtractor(source);
}
- if (ret != NULL) {
- if (isDrm) {
- ret->setDrmFlag(true);
- } else {
- ret->setDrmFlag(false);
- }
- }
-
return ret;
}
diff --git a/media/libstagefright/NuMediaExtractor.cpp b/media/libstagefright/NuMediaExtractor.cpp
index 6f8220f..d25ce6c 100644
--- a/media/libstagefright/NuMediaExtractor.cpp
+++ b/media/libstagefright/NuMediaExtractor.cpp
@@ -82,14 +82,6 @@
return ERROR_UNSUPPORTED;
}
- sp<MetaData> fileMeta = mImpl->getMetaData();
- if (mImpl->getDrmFlag()) {
- // Don't expose decrypted content to Java application
- mImpl.clear();
- mImpl = NULL;
- return ERROR_UNSUPPORTED;
- }
-
status_t err = updateDurationAndBitrate();
if (err == OK) {
mDataSource = dataSource;
diff --git a/media/libstagefright/StagefrightMetadataRetriever.cpp b/media/libstagefright/StagefrightMetadataRetriever.cpp
index 5e00c44..883a4dd 100644
--- a/media/libstagefright/StagefrightMetadataRetriever.cpp
+++ b/media/libstagefright/StagefrightMetadataRetriever.cpp
@@ -783,11 +783,6 @@
}
}
}
-
- // To check whether the media file is drm-protected
- if (mExtractor->getDrmFlag()) {
- mMetaData.add(METADATA_KEY_IS_DRM, String8("1"));
- }
}
void StagefrightMetadataRetriever::clearMetadata() {