summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/NuMediaExtractor.cpp
diff options
context:
space:
mode:
authorAndreas Huber <andih@google.com>2012-04-17 11:25:29 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-04-17 11:25:29 -0700
commit183058b1515e276a03d5aae28c7814f367a7b330 (patch)
treea014f4c46ed4fd5048b0b4ef2f475dc58c13c4f1 /media/libstagefright/NuMediaExtractor.cpp
parenteee482b84bb456e87fa42e8ad02fd2d803839586 (diff)
parent1608735ef488ecd8c3c012a3b0d4b1d4ef3d93c7 (diff)
downloadframeworks_av-183058b1515e276a03d5aae28c7814f367a7b330.zip
frameworks_av-183058b1515e276a03d5aae28c7814f367a7b330.tar.gz
frameworks_av-183058b1515e276a03d5aae28c7814f367a7b330.tar.bz2
Merge "Support widevine:// URLs in NuMediaExtractor / java MediaExtractor."
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;