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:
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user