Integration with moto secure keybox storage and add obfuscation of security-related symbols (3513413, 4083757). Also 3481645 - log spam and 3302187 - error handling

Change-Id: Ic11ed7ad57717e88b6f0f2991d8bbb9e1251d546
This commit is contained in:
Jeffrey Tinker
2011-03-11 13:33:13 -08:00
parent 007788f060
commit 3a1e0f3768
15 changed files with 72 additions and 55 deletions

View File

@@ -36,16 +36,15 @@ static DecryptHandle *sDecryptHandle;
static DrmManagerClient *sDrmManagerClient;
// Android integration callout hooks
static void HandleEcmCallout(char *ecm, unsigned long size)
static void _cb1(char *data, unsigned long size)
{
DrmBuffer buf(ecm, size);
DrmBuffer buf(data, size);
if (sDrmManagerClient != NULL) {
sDrmManagerClient->initializeDecryptUnit(sDecryptHandle, 0, &buf);
}
}
static int HandleDecryptCallout(char *in, char *out, int length, char *iv)
static int _cb2(char *in, char *out, int length, char *iv)
{
int status = -1;
@@ -71,7 +70,6 @@ static int HandleDecryptCallout(char *in, char *out, int length, char *iv)
return status;
}
namespace android {
// DLL entry - construct an extractor and return it
@@ -88,10 +86,9 @@ WVMExtractorImpl::WVMExtractorImpl(sp<DataSource> dataSource)
{
dataSource->getDrmInfo(&sDecryptHandle, &sDrmManagerClient);
// Set up callouts
AndroidSetLogCallout(android_printbuf);
AndroidSetEcmCallout(HandleEcmCallout);
AndroidSetDecryptCallout(HandleDecryptCallout);
_ah006(android_printbuf);
_ah002(_cb1);
_ah004(_cb2);
if (sDecryptHandle != NULL) {
if (sDecryptHandle->status != RightsStatus::RIGHTS_VALID) {

View File

@@ -19,14 +19,23 @@
#include "WVMMediaSource.h"
#include "WVMFileSource.h"
#include "WVMExtractorImpl.h"
#include "media/stagefright/MediaErrors.h"
#include "media/stagefright/MediaDefs.h"
#include "media/stagefright/MediaDebug.h"
#include "AndroidHooks.h"
namespace android {
static void _cb(int code)
{
WVMMediaSource::sLastError = (status_t)code;
}
extern DrmManagerClient *gDrmManagerClient;
status_t WVMMediaSource::sLastError = NO_ERROR;
WVMMediaSource::WVMMediaSource(WVSession *session, WVEsSelector esSelector,
const sp<MetaData> &metaData)
: mSession(session),
@@ -37,6 +46,7 @@ WVMMediaSource::WVMMediaSource(WVSession *session, WVEsSelector esSelector,
mDts(0),
mPts(0)
{
_ah010(_cb);
}
// Since the WVMExtractor lifetime is short, we delegate ownership of some resources
@@ -80,6 +90,7 @@ status_t WVMMediaSource::start(MetaData *)
allocBufferGroup();
mStarted = true;
mLogOnce = true;
// Let video stream control play/pause
if (mESSelector == WV_EsSelector_Video) {
@@ -191,13 +202,21 @@ status_t WVMMediaSource::read(MediaBuffer **buffer, const ReadOptions *options)
if (result != WV_Status_Warning_Need_Key &&
result != WV_Status_Warning_Download_Stalled)
{
LOGE("WV_GetEsData returned ERROR %d in WVMMediaSource::read\n", result);
if (mLogOnce) {
LOGE("WV_GetEsData returned ERROR %d in WVMMediaSource::read\n", result);
mLogOnce = false;
}
mediaBuf->release();
return ERROR_IO;
} else
LOGW("WV_GetEsData returned WARNING %d in WVMMediaSource::read\n", result);
}
}
if (sLastError != NO_ERROR) {
mediaBuf->release();
status_t status = sLastError;
sLastError = NO_ERROR;
return status;
}
if (bytesRead == 0) {
// Didn't get anything, sleep a bit so we don't hog the CPU then

View File

@@ -45,6 +45,8 @@ public:
virtual status_t read(MediaBuffer **buffer, const ReadOptions *options = NULL);
static int sLastError;
protected:
virtual ~WVMMediaSource();
@@ -57,6 +59,7 @@ private:
sp<MetaData> mTrackMetaData;
bool mStarted;
bool mLogOnce;
MediaBufferGroup *mGroup;

View File

@@ -6,7 +6,7 @@ LOCAL_SRC_FILES:= \
LOCAL_C_INCLUDES+= \
bionic \
vendor/widevine/proprietary/wvm/include \
vendor/widevine/proprietary/include \
external/stlport/stlport \
frameworks/base/media/libstagefright

View File

@@ -53,7 +53,7 @@ void TestLibWVM::Load()
const char *path = "/system/lib/libwvm.so";
void *handle = dlopen(path, RTLD_NOW);
if (handle == NULL) {
fprintf(stderr, "Can't open plugin: %s\n", path);
fprintf(stderr, "Can't open plugin: %s: %s\n", path, dlerror());
exit(-1);
}