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 9f704f6c46.

2. Revert "Fixed the false drm recognition."
   This reverts commit aadbd80b30.

3. Revert "Fix drm enumeration order, resolves failure to play forward lock ringtones"
   This reverts commit a5cbf023e3.

4. Revert "Fix ANRs due to Widevine DRM plugin sniff taking too long."
   This reverts commit d0d19db1ca.

As a result of the reverting, many ANRs from WV sniffing are back.

related-to-bug: 5739618
This commit is contained in:
James Dong
2011-12-14 10:57:05 -08:00
parent 2e335cb028
commit d70c64db9f
7 changed files with 27 additions and 84 deletions

View File

@ -99,12 +99,11 @@ void DrmManager::removeUniqueId(int uniqueId) {
status_t DrmManager::loadPlugIns() {
String8 pluginDirPath("/system/lib/drm");
loadPlugIns(pluginDirPath);
String8 vendorPluginDirPath("/vendor/lib/drm");
loadPlugIns(vendorPluginDirPath);
String8 pluginDirPath("/system/lib/drm");
loadPlugIns(pluginDirPath);
return DRM_NO_ERROR;
}

View File

@ -335,7 +335,6 @@ status_t AwesomePlayer::setDataSource_l(
return UNKNOWN_ERROR;
}
if (extractor->getDrmFlag()) {
dataSource->getDrmInfo(mDecryptHandle, &mDrmManagerClient);
if (mDecryptHandle != NULL) {
CHECK(mDrmManagerClient);
@ -343,7 +342,6 @@ status_t AwesomePlayer::setDataSource_l(
notifyListener_l(MEDIA_ERROR, MEDIA_ERROR_UNKNOWN, ERROR_DRM_NO_LICENSE);
}
}
}
return setDataSource_l(extractor);
}
@ -2093,7 +2091,7 @@ status_t AwesomePlayer::finishSetDataSource_l() {
String8 mimeType;
float confidence;
sp<AMessage> 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,7 +2111,6 @@ status_t AwesomePlayer::finishSetDataSource_l() {
}
}
if (extractor->getDrmFlag()) {
dataSource->getDrmInfo(mDecryptHandle, &mDrmManagerClient);
if (mDecryptHandle != NULL) {
@ -2125,7 +2119,6 @@ status_t AwesomePlayer::finishSetDataSource_l() {
notifyListener_l(MEDIA_ERROR, MEDIA_ERROR_UNKNOWN, ERROR_DRM_NO_LICENSE);
}
}
}
status_t err = setDataSource_l(extractor);

View File

@ -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;
}

View File

@ -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)

View File

@ -111,9 +111,6 @@ sp<MediaExtractor> 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)) {

View File

@ -45,13 +45,18 @@ namespace android {
static Mutex gWVMutex;
WVMExtractor::WVMExtractor(const sp<DataSource> &source)
: mDataSource(source)
: mDataSource(source) {
{
Mutex::Autolock autoLock(gWVMutex);
if (gVendorLibHandle == NULL) {
gVendorLibHandle = dlopen("libwvm.so", RTLD_NOW);
}
if (!getVendorLibHandle()) {
if (gVendorLibHandle == NULL) {
LOGE("Failed to open libwvm.so");
return;
}
}
typedef WVMLoadableExtractor *(*GetInstanceFunc)(sp<DataSource>);
GetInstanceFunc getInstanceFunc =
@ -66,19 +71,6 @@ WVMExtractor::WVMExtractor(const sp<DataSource> &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<DataSource> &source, String8 *mimeType, float *confidence,
sp<AMessage> *) {
Mutex::Autolock autoLock(gWVMutex);
if (!WVMExtractor::getVendorLibHandle()) {
return false;
}
typedef WVMLoadableExtractor *(*SnifferFunc)(sp<DataSource>);
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

View File

@ -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<DataSource> &source, String8 *mimeType, float *confidence,
sp<AMessage> *);
} // namespace android
#endif // DRM_EXTRACTOR_H_