summaryrefslogtreecommitdiffstats
path: root/drm/drmserver/DrmManager.cpp
diff options
context:
space:
mode:
authorJames Dong <jdong@google.com>2012-01-10 08:24:37 -0800
committerJames Dong <jdong@google.com>2012-01-12 16:25:12 -0800
commitd1ba6ed94543b6d2af666e01f4ffd29412511400 (patch)
tree10d0b29f0a9b7b08cccae0a907595cc8f96f3d4a /drm/drmserver/DrmManager.cpp
parent1f7b23dda211f419f0a140b871de44339c4a10c7 (diff)
downloadframeworks_base-d1ba6ed94543b6d2af666e01f4ffd29412511400.zip
frameworks_base-d1ba6ed94543b6d2af666e01f4ffd29412511400.tar.gz
frameworks_base-d1ba6ed94543b6d2af666e01f4ffd29412511400.tar.bz2
Separate sniffing from session initialization
This avoid lengthy/duplicate sniffing for drm plugins when a decrypt session is opened o The change is backward compatibile in that no update is required for existing drm plug-ins if they do not plan to provide separate sniffer/extractor related-to-bug: 5725548 Change-Id: I7fc4caf82d77472da4e2bc7b5d31060fb54fd84c
Diffstat (limited to 'drm/drmserver/DrmManager.cpp')
-rw-r--r--drm/drmserver/DrmManager.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/drm/drmserver/DrmManager.cpp b/drm/drmserver/DrmManager.cpp
index 3abf3d3..999295a 100644
--- a/drm/drmserver/DrmManager.cpp
+++ b/drm/drmserver/DrmManager.cpp
@@ -426,7 +426,9 @@ status_t DrmManager::getAllSupportInfo(
return DRM_NO_ERROR;
}
-DecryptHandle* DrmManager::openDecryptSession(int uniqueId, int fd, off64_t offset, off64_t length) {
+DecryptHandle* DrmManager::openDecryptSession(
+ int uniqueId, int fd, off64_t offset, off64_t length, const char* mime) {
+
Mutex::Autolock _l(mDecryptLock);
status_t result = DRM_ERROR_CANNOT_HANDLE;
Vector<String8> plugInIdList = mPlugInManager.getPlugInIdList();
@@ -438,7 +440,7 @@ DecryptHandle* DrmManager::openDecryptSession(int uniqueId, int fd, off64_t offs
for (unsigned int index = 0; index < plugInIdList.size(); index++) {
String8 plugInId = plugInIdList.itemAt(index);
IDrmEngine& rDrmEngine = mPlugInManager.getPlugIn(plugInId);
- result = rDrmEngine.openDecryptSession(uniqueId, handle, fd, offset, length);
+ result = rDrmEngine.openDecryptSession(uniqueId, handle, fd, offset, length, mime);
if (DRM_NO_ERROR == result) {
++mDecryptSessionId;
@@ -453,7 +455,8 @@ DecryptHandle* DrmManager::openDecryptSession(int uniqueId, int fd, off64_t offs
return handle;
}
-DecryptHandle* DrmManager::openDecryptSession(int uniqueId, const char* uri) {
+DecryptHandle* DrmManager::openDecryptSession(
+ int uniqueId, const char* uri, const char* mime) {
Mutex::Autolock _l(mDecryptLock);
status_t result = DRM_ERROR_CANNOT_HANDLE;
Vector<String8> plugInIdList = mPlugInManager.getPlugInIdList();
@@ -465,7 +468,7 @@ DecryptHandle* DrmManager::openDecryptSession(int uniqueId, const char* uri) {
for (unsigned int index = 0; index < plugInIdList.size(); index++) {
String8 plugInId = plugInIdList.itemAt(index);
IDrmEngine& rDrmEngine = mPlugInManager.getPlugIn(plugInId);
- result = rDrmEngine.openDecryptSession(uniqueId, handle, uri);
+ result = rDrmEngine.openDecryptSession(uniqueId, handle, uri, mime);
if (DRM_NO_ERROR == result) {
++mDecryptSessionId;