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:
@@ -30,7 +30,9 @@ LOCAL_MODULE := libdrmwvmplugin
|
||||
LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/drm
|
||||
|
||||
LOCAL_STATIC_LIBRARIES := \
|
||||
libdrmframeworkcommon
|
||||
libdrmframeworkcommon \
|
||||
libwvocs \
|
||||
liboemcrypto
|
||||
|
||||
LOCAL_SHARED_LIBRARIES := \
|
||||
libutils \
|
||||
@@ -40,6 +42,12 @@ LOCAL_SHARED_LIBRARIES := \
|
||||
libwvdrm \
|
||||
libWVStreamControlAPI
|
||||
|
||||
ifeq ($(TARGET_DEVICE),stingray)
|
||||
LOCAL_SHARED_LIBRARIES += \
|
||||
libtpa \
|
||||
libtpa_core
|
||||
endif
|
||||
|
||||
ifeq ($(TARGET_SIMULATOR),true)
|
||||
LOCAL_LDLIBS += -ldl
|
||||
else
|
||||
|
||||
Binary file not shown.
@@ -66,7 +66,8 @@ WVMDrmPlugin::~WVMDrmPlugin() {
|
||||
*/
|
||||
status_t WVMDrmPlugin::onInitialize(int uniqueId) {
|
||||
//LOGD("WVMDrmPlugin::onInitialize : %d", uniqueId);
|
||||
AndroidSetLogCallout(android_printbuf);
|
||||
_ah006(android_printbuf);
|
||||
libocs_setup();
|
||||
return DRM_NO_ERROR;
|
||||
}
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ LOCAL_SRC_FILES:= \
|
||||
|
||||
LOCAL_C_INCLUDES+= \
|
||||
bionic \
|
||||
vendor/widevine/proprietary/include \
|
||||
vendor/widevine/proprietary/drmwvmplugin/include \
|
||||
vendor/widevine/proprietary/streamcontrol/include \
|
||||
external/stlport/stlport \
|
||||
|
||||
@@ -1,35 +1,13 @@
|
||||
/*
|
||||
* Copyright (C) 2011 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef ANDROID_HOOKS_H
|
||||
#define ANDROID_HOOKS_H
|
||||
|
||||
typedef void (*AndroidEcmCallout)(char* ecm, unsigned long size);
|
||||
|
||||
void AndroidSetEcmCallout(AndroidEcmCallout callout);
|
||||
void AndroidProcessEcm(char* ecm, unsigned long size);
|
||||
|
||||
typedef int (*AndroidDecryptCallout)(char *in, char *out, int length, char *iv);
|
||||
|
||||
void AndroidSetDecryptCallout(AndroidDecryptCallout callout);
|
||||
int AndroidDecrypt(char *in, char *out, int length, char *iv);
|
||||
bool AndroidHaveKey();
|
||||
|
||||
typedef void (*AndroidLogCallout)(const char *msg);
|
||||
void AndroidSetLogCallout(AndroidLogCallout callout);
|
||||
void AndroidLogDebug(const char *msg);
|
||||
|
||||
#endif // ANDROID_HOOKS_H
|
||||
typedef void (*_ah001)(char* , unsigned long );
|
||||
void _ah002(_ah001 );
|
||||
void _ah007(char* , unsigned long );
|
||||
typedef int (*_ah003)(char * , char * , int , char * );
|
||||
void _ah004(_ah003 );
|
||||
void _ah008(char * , char * , int , char * );
|
||||
bool _ah009();
|
||||
typedef void (*_ah005)(const char * );
|
||||
void _ah006(_ah005 );
|
||||
void AndroidLogDebug(const char * );
|
||||
typedef void (*_ah011)(int );
|
||||
void _ah010(_ah011 );
|
||||
void libocs_setup();
|
||||
|
||||
@@ -11,3 +11,12 @@ LOCAL_MODULE_CLASS := SHARED_LIBRARIES
|
||||
LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)
|
||||
OVERRIDE_BUILT_MODULE_PATH := $(TARGET_OUT_INTERMEDIATE_LIBRARIES)
|
||||
include $(BUILD_PREBUILT)
|
||||
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE := libwvocs
|
||||
LOCAL_SRC_FILES := \
|
||||
libwvocs.a
|
||||
LOCAL_MODULE_TAGS := optional
|
||||
LOCAL_MODULE_SUFFIX := .a
|
||||
LOCAL_MODULE_CLASS := STATIC_LIBRARIES
|
||||
include $(BUILD_PREBUILT)
|
||||
|
||||
Binary file not shown.
BIN
proprietary/streamcontrol/lib/libwvocs.a
Normal file
BIN
proprietary/streamcontrol/lib/libwvocs.a
Normal file
Binary file not shown.
@@ -6,6 +6,7 @@ LOCAL_SRC_FILES:= \
|
||||
|
||||
LOCAL_C_INCLUDES+= \
|
||||
bionic \
|
||||
vendor/widevine/proprietary/include \
|
||||
external/stlport/stlport \
|
||||
vendor/widevine/proprietary/streamcontrol/include \
|
||||
vendor/widevine/proprietary/drmwvmplugin/include
|
||||
@@ -17,7 +18,8 @@ LOCAL_SHARED_LIBRARIES := \
|
||||
libwvdrm \
|
||||
liblog \
|
||||
libutils \
|
||||
libz
|
||||
libz \
|
||||
libcutils
|
||||
|
||||
LOCAL_MODULE:=test-wvplayer
|
||||
|
||||
|
||||
@@ -200,8 +200,7 @@ int main( int argc, char *argv[] )
|
||||
bool ptsToMediaTime = false;
|
||||
string drmUrl = DEFAULT_DRM_URL;
|
||||
|
||||
// Set up callouts
|
||||
AndroidSetLogCallout(PrintMessage);
|
||||
_ah006(PrintMessage);
|
||||
|
||||
// Create DRM plugin object
|
||||
sDrmPlugin = WVDRMPluginAPI::create();
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
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