diff options
author | Lajos Molnar <lajos@google.com> | 2014-12-09 23:18:17 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2014-12-09 23:18:17 +0000 |
commit | dd6d93e245d53519465e6c050c57e5f0ea179e27 (patch) | |
tree | e2a935357fd4df4c6b9819f0e0a476b43f696f15 /media/libmediaplayerservice | |
parent | ccc3113681e2878e9c3ef98215f51db79ac034cc (diff) | |
parent | 3ca2794ed49b683ea2a8239b2eea301483ec196b (diff) | |
download | frameworks_av-dd6d93e245d53519465e6c050c57e5f0ea179e27.zip frameworks_av-dd6d93e245d53519465e6c050c57e5f0ea179e27.tar.gz frameworks_av-dd6d93e245d53519465e6c050c57e5f0ea179e27.tar.bz2 |
am 3ca2794e: am 0b672c8b: am ca7b4bc4: mediaplayerservice: add support for legacy DRM
* commit '3ca2794ed49b683ea2a8239b2eea301483ec196b':
mediaplayerservice: add support for legacy DRM
Diffstat (limited to 'media/libmediaplayerservice')
-rw-r--r-- | media/libmediaplayerservice/MediaPlayerFactory.cpp | 35 |
1 files changed, 32 insertions, 3 deletions
diff --git a/media/libmediaplayerservice/MediaPlayerFactory.cpp b/media/libmediaplayerservice/MediaPlayerFactory.cpp index 3e0fc0d..aeefb4c 100644 --- a/media/libmediaplayerservice/MediaPlayerFactory.cpp +++ b/media/libmediaplayerservice/MediaPlayerFactory.cpp @@ -20,9 +20,12 @@ #include <cutils/properties.h> #include <media/IMediaPlayer.h> +#include <media/stagefright/DataSource.h> +#include <media/stagefright/FileSource.h> #include <media/stagefright/foundation/ADebug.h> #include <utils/Errors.h> #include <utils/misc.h> +#include <../libstagefright/include/WVMExtractor.h> #include "MediaPlayerFactory.h" @@ -179,10 +182,18 @@ class StagefrightPlayerFactory : virtual float scoreFactory(const sp<IMediaPlayer>& /*client*/, int fd, int64_t offset, - int64_t /*length*/, + int64_t length, float /*curScore*/) { - if (getDefaultPlayerType() - == STAGEFRIGHT_PLAYER) { + if (legacyDrm()) { + sp<DataSource> source = new FileSource(dup(fd), offset, length); + String8 mimeType; + float confidence; + if (SniffWVM(source, &mimeType, &confidence, NULL /* format */)) { + return 1.0; + } + } + + if (getDefaultPlayerType() == STAGEFRIGHT_PLAYER) { char buf[20]; lseek(fd, offset, SEEK_SET); read(fd, buf, sizeof(buf)); @@ -198,10 +209,28 @@ class StagefrightPlayerFactory : return 0.0; } + virtual float scoreFactory(const sp<IMediaPlayer>& /*client*/, + const char* url, + float /*curScore*/) { + if (legacyDrm() && !strncasecmp("widevine://", url, 11)) { + return 1.0; + } + return 0.0; + } + virtual sp<MediaPlayerBase> createPlayer() { ALOGV(" create StagefrightPlayer"); return new StagefrightPlayer(); } + private: + bool legacyDrm() { + char value[PROPERTY_VALUE_MAX]; + if (property_get("persist.sys.media.legacy-drm", value, NULL) + && (!strcmp("1", value) || !strcasecmp("true", value))) { + return true; + } + return false; + } }; class NuPlayerFactory : public MediaPlayerFactory::IFactory { |