summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/NuMediaExtractor.cpp
diff options
context:
space:
mode:
authorAndreas Huber <andih@google.com>2012-04-13 14:54:36 -0700
committerAndreas Huber <andih@google.com>2012-04-17 11:22:11 -0700
commit1608735ef488ecd8c3c012a3b0d4b1d4ef3d93c7 (patch)
treec77756706095cdb6852e56392e8365bcaa7d9232 /media/libstagefright/NuMediaExtractor.cpp
parenta98db787397633155fd71b06ecaa765a7ad20cf2 (diff)
downloadframeworks_av-1608735ef488ecd8c3c012a3b0d4b1d4ef3d93c7.zip
frameworks_av-1608735ef488ecd8c3c012a3b0d4b1d4ef3d93c7.tar.gz
frameworks_av-1608735ef488ecd8c3c012a3b0d4b1d4ef3d93c7.tar.bz2
Support widevine:// URLs in NuMediaExtractor / java MediaExtractor.
Allow anyone to talk to drm services. Change-Id: I5c2f3c419d01de30c3d6e2bc85b1fe5c9c37b392 related-to-bug: 6276111
Diffstat (limited to 'media/libstagefright/NuMediaExtractor.cpp')
-rw-r--r--media/libstagefright/NuMediaExtractor.cpp24
1 files changed, 22 insertions, 2 deletions
diff --git a/media/libstagefright/NuMediaExtractor.cpp b/media/libstagefright/NuMediaExtractor.cpp
index 8758c93..a1d95e6 100644
--- a/media/libstagefright/NuMediaExtractor.cpp
+++ b/media/libstagefright/NuMediaExtractor.cpp
@@ -21,6 +21,7 @@
#include <media/stagefright/NuMediaExtractor.h>
#include "include/ESDS.h"
+#include "include/WVMExtractor.h"
#include <media/stagefright/foundation/ABuffer.h>
#include <media/stagefright/foundation/ADebug.h>
@@ -58,13 +59,32 @@ status_t NuMediaExtractor::setDataSource(
return -EINVAL;
}
- sp<DataSource> dataSource = DataSource::CreateFromURI(path, headers);
+ sp<DataSource> dataSource =
+ DataSource::CreateFromURI(path, headers);
if (dataSource == NULL) {
return -ENOENT;
}
- mImpl = MediaExtractor::Create(dataSource);
+ if (!strncasecmp("widevine://", path, 11)) {
+ String8 mimeType;
+ float confidence;
+ sp<AMessage> dummy;
+ bool success = SniffWVM(dataSource, &mimeType, &confidence, &dummy);
+
+ if (!success
+ || strcasecmp(
+ mimeType.string(), MEDIA_MIMETYPE_CONTAINER_WVM)) {
+ return ERROR_UNSUPPORTED;
+ }
+
+ sp<WVMExtractor> extractor = new WVMExtractor(dataSource);
+ extractor->setAdaptiveStreamingMode(true);
+
+ mImpl = extractor;
+ } else {
+ mImpl = MediaExtractor::Create(dataSource);
+ }
if (mImpl == NULL) {
return ERROR_UNSUPPORTED;