diff options
author | Andreas Huber <andih@google.com> | 2012-04-13 14:54:36 -0700 |
---|---|---|
committer | Andreas Huber <andih@google.com> | 2012-04-17 11:22:11 -0700 |
commit | 1608735ef488ecd8c3c012a3b0d4b1d4ef3d93c7 (patch) | |
tree | c77756706095cdb6852e56392e8365bcaa7d9232 /media/libstagefright/NuMediaExtractor.cpp | |
parent | a98db787397633155fd71b06ecaa765a7ad20cf2 (diff) | |
download | frameworks_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.cpp | 24 |
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; |