From d70c64db9f67dbe8f888de6b1bdcc835226ec526 Mon Sep 17 00:00:00 2001 From: James Dong Date: Wed, 14 Dec 2011 10:57:05 -0800 Subject: Revert the following patches because they may lead to power regression because SHA/MD5 module is stuck 1. Revert "Fix drm flag setting missed in false drm recognition fix." This reverts commit 9f704f6c46a171357e49c411c83458b9d4565f3b. 2. Revert "Fixed the false drm recognition." This reverts commit aadbd80b307c817698ce5110ff8e002804d1b230. 3. Revert "Fix drm enumeration order, resolves failure to play forward lock ringtones" This reverts commit a5cbf023e349f2394ba6fc58d73b4375cfec4369. 4. Revert "Fix ANRs due to Widevine DRM plugin sniff taking too long." This reverts commit d0d19db1ca1c289b069db33f4665bcb9386064e9. As a result of the reverting, many ANRs from WV sniffing are back. related-to-bug: 5739618 --- media/libstagefright/AwesomePlayer.cpp | 29 ++++++--------- media/libstagefright/DRMExtractor.cpp | 8 ++--- media/libstagefright/DataSource.cpp | 2 -- media/libstagefright/MediaExtractor.cpp | 3 -- media/libstagefright/WVMExtractor.cpp | 56 ++++++----------------------- media/libstagefright/include/WVMExtractor.h | 8 ----- 6 files changed, 25 insertions(+), 81 deletions(-) (limited to 'media') diff --git a/media/libstagefright/AwesomePlayer.cpp b/media/libstagefright/AwesomePlayer.cpp index ba6ff10..50c264e 100644 --- a/media/libstagefright/AwesomePlayer.cpp +++ b/media/libstagefright/AwesomePlayer.cpp @@ -335,13 +335,11 @@ status_t AwesomePlayer::setDataSource_l( return UNKNOWN_ERROR; } - if (extractor->getDrmFlag()) { - dataSource->getDrmInfo(mDecryptHandle, &mDrmManagerClient); - if (mDecryptHandle != NULL) { - CHECK(mDrmManagerClient); - if (RightsStatus::RIGHTS_VALID != mDecryptHandle->status) { - notifyListener_l(MEDIA_ERROR, MEDIA_ERROR_UNKNOWN, ERROR_DRM_NO_LICENSE); - } + dataSource->getDrmInfo(mDecryptHandle, &mDrmManagerClient); + if (mDecryptHandle != NULL) { + CHECK(mDrmManagerClient); + if (RightsStatus::RIGHTS_VALID != mDecryptHandle->status) { + notifyListener_l(MEDIA_ERROR, MEDIA_ERROR_UNKNOWN, ERROR_DRM_NO_LICENSE); } } @@ -2093,7 +2091,7 @@ status_t AwesomePlayer::finishSetDataSource_l() { String8 mimeType; float confidence; sp dummy; - bool success = SniffWVM(dataSource, &mimeType, &confidence, &dummy); + bool success = SniffDRM(dataSource, &mimeType, &confidence, &dummy); if (!success || strcasecmp( @@ -2101,11 +2099,8 @@ status_t AwesomePlayer::finishSetDataSource_l() { return ERROR_UNSUPPORTED; } - dataSource->DrmInitialization(); - mWVMExtractor = new WVMExtractor(dataSource); mWVMExtractor->setAdaptiveStreamingMode(true); - mWVMExtractor->setDrmFlag(true); extractor = mWVMExtractor; } else { extractor = MediaExtractor::Create( @@ -2116,14 +2111,12 @@ status_t AwesomePlayer::finishSetDataSource_l() { } } - if (extractor->getDrmFlag()) { - dataSource->getDrmInfo(mDecryptHandle, &mDrmManagerClient); + dataSource->getDrmInfo(mDecryptHandle, &mDrmManagerClient); - if (mDecryptHandle != NULL) { - CHECK(mDrmManagerClient); - if (RightsStatus::RIGHTS_VALID != mDecryptHandle->status) { - notifyListener_l(MEDIA_ERROR, MEDIA_ERROR_UNKNOWN, ERROR_DRM_NO_LICENSE); - } + if (mDecryptHandle != NULL) { + CHECK(mDrmManagerClient); + if (RightsStatus::RIGHTS_VALID != mDecryptHandle->status) { + notifyListener_l(MEDIA_ERROR, MEDIA_ERROR_UNKNOWN, ERROR_DRM_NO_LICENSE); } } diff --git a/media/libstagefright/DRMExtractor.cpp b/media/libstagefright/DRMExtractor.cpp index afc4a80..1f3d581 100644 --- a/media/libstagefright/DRMExtractor.cpp +++ b/media/libstagefright/DRMExtractor.cpp @@ -282,13 +282,13 @@ bool SniffDRM( if (decryptHandle != NULL) { if (decryptHandle->decryptApiType == DecryptApiType::CONTAINER_BASED) { *mimeType = String8("drm+container_based+") + decryptHandle->mimeType; - *confidence = 10.0f; } else if (decryptHandle->decryptApiType == DecryptApiType::ELEMENTARY_STREAM_BASED) { *mimeType = String8("drm+es_based+") + decryptHandle->mimeType; - *confidence = 10.0f; - } else { - return false; + } else if (decryptHandle->decryptApiType == DecryptApiType::WV_BASED) { + *mimeType = MEDIA_MIMETYPE_CONTAINER_WVM; + LOGW("SniffWVM: found match\n"); } + *confidence = 10.0f; return true; } diff --git a/media/libstagefright/DataSource.cpp b/media/libstagefright/DataSource.cpp index 6134344..43539bb 100644 --- a/media/libstagefright/DataSource.cpp +++ b/media/libstagefright/DataSource.cpp @@ -26,7 +26,6 @@ #include "include/DRMExtractor.h" #include "include/FLACExtractor.h" #include "include/AACExtractor.h" -#include "include/WVMExtractor.h" #include "matroska/MatroskaExtractor.h" @@ -114,7 +113,6 @@ void DataSource::RegisterDefaultSniffers() { RegisterSniffer(SniffMP3); RegisterSniffer(SniffAAC); RegisterSniffer(SniffMPEG2PS); - RegisterSniffer(SniffWVM); char value[PROPERTY_VALUE_MAX]; if (property_get("drm.service.enabled", value, NULL) diff --git a/media/libstagefright/MediaExtractor.cpp b/media/libstagefright/MediaExtractor.cpp index 9eee6aa..374ecf7 100644 --- a/media/libstagefright/MediaExtractor.cpp +++ b/media/libstagefright/MediaExtractor.cpp @@ -111,9 +111,6 @@ sp MediaExtractor::Create( ret = new MPEG2TSExtractor(source); } else if (!strcasecmp(mime, MEDIA_MIMETYPE_CONTAINER_WVM)) { ret = new WVMExtractor(source); - if (ret != NULL) { - isDrm = true; - } } else if (!strcasecmp(mime, MEDIA_MIMETYPE_AUDIO_AAC_ADTS)) { ret = new AACExtractor(source); } else if (!strcasecmp(mime, MEDIA_MIMETYPE_CONTAINER_MPEG2PS)) { diff --git a/media/libstagefright/WVMExtractor.cpp b/media/libstagefright/WVMExtractor.cpp index 79dedca..26eda0c 100644 --- a/media/libstagefright/WVMExtractor.cpp +++ b/media/libstagefright/WVMExtractor.cpp @@ -45,12 +45,17 @@ namespace android { static Mutex gWVMutex; WVMExtractor::WVMExtractor(const sp &source) - : mDataSource(source) -{ - Mutex::Autolock autoLock(gWVMutex); + : mDataSource(source) { + { + Mutex::Autolock autoLock(gWVMutex); + if (gVendorLibHandle == NULL) { + gVendorLibHandle = dlopen("libwvm.so", RTLD_NOW); + } - if (!getVendorLibHandle()) { - return; + if (gVendorLibHandle == NULL) { + LOGE("Failed to open libwvm.so"); + return; + } } typedef WVMLoadableExtractor *(*GetInstanceFunc)(sp); @@ -66,19 +71,6 @@ WVMExtractor::WVMExtractor(const sp &source) } } -bool WVMExtractor::getVendorLibHandle() -{ - if (gVendorLibHandle == NULL) { - gVendorLibHandle = dlopen("libwvm.so", RTLD_NOW); - } - - if (gVendorLibHandle == NULL) { - LOGE("Failed to open libwvm.so"); - } - - return gVendorLibHandle != NULL; -} - WVMExtractor::~WVMExtractor() { } @@ -121,33 +113,5 @@ void WVMExtractor::setAdaptiveStreamingMode(bool adaptive) { } } -bool SniffWVM( - const sp &source, String8 *mimeType, float *confidence, - sp *) { - - Mutex::Autolock autoLock(gWVMutex); - - if (!WVMExtractor::getVendorLibHandle()) { - return false; - } - - typedef WVMLoadableExtractor *(*SnifferFunc)(sp); - SnifferFunc snifferFunc = - (SnifferFunc) dlsym(gVendorLibHandle, - "_ZN7android15IsWidevineMediaENS_2spINS_10DataSourceEEE"); - - if (snifferFunc) { - if ((*snifferFunc)(source)) { - *mimeType = MEDIA_MIMETYPE_CONTAINER_WVM; - *confidence = 10.0f; - return true; - } - } else { - LOGE("IsWidevineMedia not found in libwvm.so"); - } - - return false; -} - } //namespace android diff --git a/media/libstagefright/include/WVMExtractor.h b/media/libstagefright/include/WVMExtractor.h index 9f763f9..deecd25 100644 --- a/media/libstagefright/include/WVMExtractor.h +++ b/media/libstagefright/include/WVMExtractor.h @@ -23,8 +23,6 @@ namespace android { -struct AMessage; -class String8; class DataSource; class WVMLoadableExtractor : public MediaExtractor { @@ -60,8 +58,6 @@ public: // is used. void setAdaptiveStreamingMode(bool adaptive); - static bool getVendorLibHandle(); - protected: virtual ~WVMExtractor(); @@ -73,10 +69,6 @@ private: WVMExtractor &operator=(const WVMExtractor &); }; -bool SniffWVM( - const sp &source, String8 *mimeType, float *confidence, - sp *); - } // namespace android #endif // DRM_EXTRACTOR_H_ -- cgit v1.1