Loading drm/drmserver/DrmManagerService.cpp +1 −15 Original line number Diff line number Diff line Loading @@ -34,21 +34,7 @@ using namespace android; static Vector<uid_t> trustedUids; static bool isProtectedCallAllowed() { // TODO // Following implementation is just for reference. // Each OEM manufacturer should implement/replace with their own solutions. bool result = false; IPCThreadState* ipcState = IPCThreadState::self(); uid_t uid = ipcState->getCallingUid(); for (unsigned int i = 0; i < trustedUids.size(); ++i) { if (trustedUids[i] == uid) { result = true; break; } } return result; return true; } void DrmManagerService::instantiate() { Loading media/libmediaplayerservice/Crypto.cpp +9 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ namespace android { Crypto::Crypto() : mInitCheck(NO_INIT), mLibHandle(NULL), mFactory(NULL), mPlugin(NULL) { mInitCheck = init(); } Loading @@ -57,6 +58,8 @@ status_t Crypto::init() { mLibHandle = dlopen("libdrmdecrypt.so", RTLD_NOW); if (mLibHandle == NULL) { ALOGE("Unable to locate libdrmdecrypt.so"); return ERROR_UNSUPPORTED; } Loading @@ -66,6 +69,12 @@ status_t Crypto::init() { if (createCryptoFactory == NULL || ((mFactory = createCryptoFactory()) == NULL)) { if (createCryptoFactory == NULL) { ALOGE("Unable to find symbol 'createCryptoFactory'."); } else { ALOGE("createCryptoFactory() failed."); } dlclose(mLibHandle); mLibHandle = NULL; Loading media/libstagefright/DataSource.cpp +29 −11 Original line number Diff line number Diff line Loading @@ -133,16 +133,29 @@ void DataSource::RegisterDefaultSniffers() { // static sp<DataSource> DataSource::CreateFromURI( const char *uri, const KeyedVector<String8, String8> *headers) { bool isWidevine = !strncasecmp("widevine://", uri, 11); sp<DataSource> source; if (!strncasecmp("file://", uri, 7)) { source = new FileSource(uri + 7); } else if (!strncasecmp("http://", uri, 7) || !strncasecmp("https://", uri, 8)) { || !strncasecmp("https://", uri, 8) || isWidevine) { sp<HTTPBase> httpSource = HTTPBase::Create(); String8 tmp; if (isWidevine) { tmp = String8("http://"); tmp.append(uri + 11); uri = tmp.string(); } if (httpSource->connect(uri, headers) != OK) { return NULL; } if (!isWidevine) { String8 cacheConfig; bool disconnectAtHighwatermark; if (headers != NULL) { Loading @@ -154,6 +167,11 @@ sp<DataSource> DataSource::CreateFromURI( source = new NuCachedSource2( httpSource, cacheConfig.isEmpty() ? NULL : cacheConfig.string()); } else { // We do not want that prefetching, caching, datasource wrapper // in the widevine:// case. source = httpSource; } # if CHROMIUM_AVAILABLE } else if (!strncasecmp("data:", uri, 5)) { Loading media/libstagefright/NuMediaExtractor.cpp +22 −2 Original line number Diff line number Diff line Loading @@ -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> Loading Loading @@ -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; } 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; Loading media/libstagefright/WVMExtractor.cpp +8 −4 Original line number Diff line number Diff line Loading @@ -59,10 +59,14 @@ WVMExtractor::WVMExtractor(const sp<DataSource> &source) "_ZN7android11GetInstanceENS_2spINS_10DataSourceEEE"); if (getInstanceFunc) { CHECK(source->DrmInitialization(MEDIA_MIMETYPE_CONTAINER_WVM) != NULL); if (source->DrmInitialization( MEDIA_MIMETYPE_CONTAINER_WVM) != NULL) { mImpl = (*getInstanceFunc)(source); CHECK(mImpl != NULL); setDrmFlag(true); } else { ALOGE("Drm manager failed to initialize."); } } else { ALOGE("Failed to locate GetInstance in libwvm.so"); } Loading Loading
drm/drmserver/DrmManagerService.cpp +1 −15 Original line number Diff line number Diff line Loading @@ -34,21 +34,7 @@ using namespace android; static Vector<uid_t> trustedUids; static bool isProtectedCallAllowed() { // TODO // Following implementation is just for reference. // Each OEM manufacturer should implement/replace with their own solutions. bool result = false; IPCThreadState* ipcState = IPCThreadState::self(); uid_t uid = ipcState->getCallingUid(); for (unsigned int i = 0; i < trustedUids.size(); ++i) { if (trustedUids[i] == uid) { result = true; break; } } return result; return true; } void DrmManagerService::instantiate() { Loading
media/libmediaplayerservice/Crypto.cpp +9 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ namespace android { Crypto::Crypto() : mInitCheck(NO_INIT), mLibHandle(NULL), mFactory(NULL), mPlugin(NULL) { mInitCheck = init(); } Loading @@ -57,6 +58,8 @@ status_t Crypto::init() { mLibHandle = dlopen("libdrmdecrypt.so", RTLD_NOW); if (mLibHandle == NULL) { ALOGE("Unable to locate libdrmdecrypt.so"); return ERROR_UNSUPPORTED; } Loading @@ -66,6 +69,12 @@ status_t Crypto::init() { if (createCryptoFactory == NULL || ((mFactory = createCryptoFactory()) == NULL)) { if (createCryptoFactory == NULL) { ALOGE("Unable to find symbol 'createCryptoFactory'."); } else { ALOGE("createCryptoFactory() failed."); } dlclose(mLibHandle); mLibHandle = NULL; Loading
media/libstagefright/DataSource.cpp +29 −11 Original line number Diff line number Diff line Loading @@ -133,16 +133,29 @@ void DataSource::RegisterDefaultSniffers() { // static sp<DataSource> DataSource::CreateFromURI( const char *uri, const KeyedVector<String8, String8> *headers) { bool isWidevine = !strncasecmp("widevine://", uri, 11); sp<DataSource> source; if (!strncasecmp("file://", uri, 7)) { source = new FileSource(uri + 7); } else if (!strncasecmp("http://", uri, 7) || !strncasecmp("https://", uri, 8)) { || !strncasecmp("https://", uri, 8) || isWidevine) { sp<HTTPBase> httpSource = HTTPBase::Create(); String8 tmp; if (isWidevine) { tmp = String8("http://"); tmp.append(uri + 11); uri = tmp.string(); } if (httpSource->connect(uri, headers) != OK) { return NULL; } if (!isWidevine) { String8 cacheConfig; bool disconnectAtHighwatermark; if (headers != NULL) { Loading @@ -154,6 +167,11 @@ sp<DataSource> DataSource::CreateFromURI( source = new NuCachedSource2( httpSource, cacheConfig.isEmpty() ? NULL : cacheConfig.string()); } else { // We do not want that prefetching, caching, datasource wrapper // in the widevine:// case. source = httpSource; } # if CHROMIUM_AVAILABLE } else if (!strncasecmp("data:", uri, 5)) { Loading
media/libstagefright/NuMediaExtractor.cpp +22 −2 Original line number Diff line number Diff line Loading @@ -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> Loading Loading @@ -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; } 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; Loading
media/libstagefright/WVMExtractor.cpp +8 −4 Original line number Diff line number Diff line Loading @@ -59,10 +59,14 @@ WVMExtractor::WVMExtractor(const sp<DataSource> &source) "_ZN7android11GetInstanceENS_2spINS_10DataSourceEEE"); if (getInstanceFunc) { CHECK(source->DrmInitialization(MEDIA_MIMETYPE_CONTAINER_WVM) != NULL); if (source->DrmInitialization( MEDIA_MIMETYPE_CONTAINER_WVM) != NULL) { mImpl = (*getInstanceFunc)(source); CHECK(mImpl != NULL); setDrmFlag(true); } else { ALOGE("Drm manager failed to initialize."); } } else { ALOGE("Failed to locate GetInstance in libwvm.so"); } Loading