openDecryptSession() should consistently return sp<DecryptHandle>
Test:run cts-dev --module CtsDrmTestCases -t android.drm.cts.DRMTest bug:79378662 Change-Id: Id46e63e3e0faf76ec98a77d7d439e5ccbc85e20f
This commit is contained in:
@@ -79,12 +79,12 @@ int DrmEngineBase::checkRightsStatus(int uniqueId, const String8& path, int acti
|
||||
}
|
||||
|
||||
status_t DrmEngineBase::consumeRights(
|
||||
int uniqueId, DecryptHandle* decryptHandle, int action, bool reserve) {
|
||||
int uniqueId, sp<DecryptHandle>& decryptHandle, int action, bool reserve) {
|
||||
return onConsumeRights(uniqueId, decryptHandle, action, reserve);
|
||||
}
|
||||
|
||||
status_t DrmEngineBase::setPlaybackStatus(
|
||||
int uniqueId, DecryptHandle* decryptHandle, int playbackStatus, int64_t position) {
|
||||
int uniqueId, sp<DecryptHandle>& decryptHandle, int playbackStatus, int64_t position) {
|
||||
return onSetPlaybackStatus(uniqueId, decryptHandle, playbackStatus, position);
|
||||
}
|
||||
|
||||
@@ -120,7 +120,7 @@ DrmSupportInfo* DrmEngineBase::getSupportInfo(int uniqueId) {
|
||||
}
|
||||
|
||||
status_t DrmEngineBase::openDecryptSession(
|
||||
int uniqueId, DecryptHandle* decryptHandle,
|
||||
int uniqueId, sp<DecryptHandle>& decryptHandle,
|
||||
int fd, off64_t offset, off64_t length, const char* mime) {
|
||||
|
||||
if (!mime || mime[0] == '\0') {
|
||||
@@ -131,7 +131,7 @@ status_t DrmEngineBase::openDecryptSession(
|
||||
}
|
||||
|
||||
status_t DrmEngineBase::openDecryptSession(
|
||||
int uniqueId, DecryptHandle* decryptHandle,
|
||||
int uniqueId, sp<DecryptHandle>& decryptHandle,
|
||||
const char* uri, const char* mime) {
|
||||
if (!mime || mime[0] == '\0') {
|
||||
return onOpenDecryptSession(uniqueId, decryptHandle, uri);
|
||||
@@ -139,33 +139,33 @@ status_t DrmEngineBase::openDecryptSession(
|
||||
return onOpenDecryptSession(uniqueId, decryptHandle, uri, mime);
|
||||
}
|
||||
|
||||
status_t DrmEngineBase::openDecryptSession(int uniqueId, DecryptHandle* decryptHandle,
|
||||
status_t DrmEngineBase::openDecryptSession(int uniqueId, sp<DecryptHandle>& decryptHandle,
|
||||
const DrmBuffer& buf, const String8& mimeType) {
|
||||
return onOpenDecryptSession(uniqueId, decryptHandle, buf, mimeType);
|
||||
}
|
||||
|
||||
status_t DrmEngineBase::closeDecryptSession(int uniqueId, DecryptHandle* decryptHandle) {
|
||||
status_t DrmEngineBase::closeDecryptSession(int uniqueId, sp<DecryptHandle>& decryptHandle) {
|
||||
return onCloseDecryptSession(uniqueId, decryptHandle);
|
||||
}
|
||||
|
||||
status_t DrmEngineBase::initializeDecryptUnit(
|
||||
int uniqueId, DecryptHandle* decryptHandle, int decryptUnitId, const DrmBuffer* headerInfo) {
|
||||
int uniqueId, sp<DecryptHandle>& decryptHandle, int decryptUnitId, const DrmBuffer* headerInfo) {
|
||||
return onInitializeDecryptUnit(uniqueId, decryptHandle, decryptUnitId, headerInfo);
|
||||
}
|
||||
|
||||
status_t DrmEngineBase::decrypt(
|
||||
int uniqueId, DecryptHandle* decryptHandle, int decryptUnitId,
|
||||
int uniqueId, sp<DecryptHandle>& decryptHandle, int decryptUnitId,
|
||||
const DrmBuffer* encBuffer, DrmBuffer** decBuffer, DrmBuffer* IV) {
|
||||
return onDecrypt(uniqueId, decryptHandle, decryptUnitId, encBuffer, decBuffer, IV);
|
||||
}
|
||||
|
||||
status_t DrmEngineBase::finalizeDecryptUnit(
|
||||
int uniqueId, DecryptHandle* decryptHandle, int decryptUnitId) {
|
||||
int uniqueId, sp<DecryptHandle>& decryptHandle, int decryptUnitId) {
|
||||
return onFinalizeDecryptUnit(uniqueId, decryptHandle, decryptUnitId);
|
||||
}
|
||||
|
||||
ssize_t DrmEngineBase::pread(
|
||||
int uniqueId, DecryptHandle* decryptHandle, void* buffer, ssize_t numBytes, off64_t offset) {
|
||||
int uniqueId, sp<DecryptHandle>& decryptHandle, void* buffer, ssize_t numBytes, off64_t offset) {
|
||||
return onPread(uniqueId, decryptHandle, buffer, numBytes, offset);
|
||||
}
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
using namespace android;
|
||||
|
||||
static void writeDecryptHandleToParcelData(
|
||||
const DecryptHandle* handle, Parcel* data) {
|
||||
const sp<DecryptHandle>& handle, Parcel* data) {
|
||||
data->writeInt32(handle->decryptId);
|
||||
data->writeString8(handle->mimeType);
|
||||
data->writeInt32(handle->decryptApiType);
|
||||
@@ -67,7 +67,7 @@ static void writeDecryptHandleToParcelData(
|
||||
}
|
||||
|
||||
static void readDecryptHandleFromParcelData(
|
||||
DecryptHandle* handle, const Parcel& data) {
|
||||
sp<DecryptHandle>& handle, const Parcel& data) {
|
||||
if (0 == data.dataAvail()) {
|
||||
return;
|
||||
}
|
||||
@@ -99,7 +99,7 @@ static void readDecryptHandleFromParcelData(
|
||||
}
|
||||
}
|
||||
|
||||
static void clearDecryptHandle(DecryptHandle* handle) {
|
||||
static void clearDecryptHandle(sp<DecryptHandle> &handle) {
|
||||
if (handle == NULL) {
|
||||
return;
|
||||
}
|
||||
@@ -414,7 +414,7 @@ int BpDrmManagerService::checkRightsStatus(int uniqueId, const String8& path, in
|
||||
}
|
||||
|
||||
status_t BpDrmManagerService::consumeRights(
|
||||
int uniqueId, DecryptHandle* decryptHandle, int action, bool reserve) {
|
||||
int uniqueId, sp<DecryptHandle>& decryptHandle, int action, bool reserve) {
|
||||
ALOGV("consumeRights");
|
||||
Parcel data, reply;
|
||||
|
||||
@@ -431,7 +431,7 @@ status_t BpDrmManagerService::consumeRights(
|
||||
}
|
||||
|
||||
status_t BpDrmManagerService::setPlaybackStatus(
|
||||
int uniqueId, DecryptHandle* decryptHandle, int playbackStatus, int64_t position) {
|
||||
int uniqueId, sp<DecryptHandle>& decryptHandle, int playbackStatus, int64_t position) {
|
||||
ALOGV("setPlaybackStatus");
|
||||
Parcel data, reply;
|
||||
|
||||
@@ -603,7 +603,7 @@ status_t BpDrmManagerService::getAllSupportInfo(
|
||||
return reply.readInt32();
|
||||
}
|
||||
|
||||
DecryptHandle* BpDrmManagerService::openDecryptSession(
|
||||
sp<DecryptHandle> BpDrmManagerService::openDecryptSession(
|
||||
int uniqueId, int fd, off64_t offset, off64_t length, const char* mime) {
|
||||
ALOGV("Entering BpDrmManagerService::openDecryptSession");
|
||||
Parcel data, reply;
|
||||
@@ -621,7 +621,7 @@ DecryptHandle* BpDrmManagerService::openDecryptSession(
|
||||
|
||||
remote()->transact(OPEN_DECRYPT_SESSION, data, &reply);
|
||||
|
||||
DecryptHandle* handle = NULL;
|
||||
sp<DecryptHandle> handle;
|
||||
if (0 != reply.dataAvail()) {
|
||||
handle = new DecryptHandle();
|
||||
readDecryptHandleFromParcelData(handle, reply);
|
||||
@@ -629,7 +629,7 @@ DecryptHandle* BpDrmManagerService::openDecryptSession(
|
||||
return handle;
|
||||
}
|
||||
|
||||
DecryptHandle* BpDrmManagerService::openDecryptSession(
|
||||
sp<DecryptHandle> BpDrmManagerService::openDecryptSession(
|
||||
int uniqueId, const char* uri, const char* mime) {
|
||||
|
||||
ALOGV("Entering BpDrmManagerService::openDecryptSession: mime=%s", mime? mime: "NULL");
|
||||
@@ -646,7 +646,7 @@ DecryptHandle* BpDrmManagerService::openDecryptSession(
|
||||
|
||||
remote()->transact(OPEN_DECRYPT_SESSION_FROM_URI, data, &reply);
|
||||
|
||||
DecryptHandle* handle = NULL;
|
||||
sp<DecryptHandle> handle;
|
||||
if (0 != reply.dataAvail()) {
|
||||
handle = new DecryptHandle();
|
||||
readDecryptHandleFromParcelData(handle, reply);
|
||||
@@ -656,7 +656,7 @@ DecryptHandle* BpDrmManagerService::openDecryptSession(
|
||||
return handle;
|
||||
}
|
||||
|
||||
DecryptHandle* BpDrmManagerService::openDecryptSession(
|
||||
sp<DecryptHandle> BpDrmManagerService::openDecryptSession(
|
||||
int uniqueId, const DrmBuffer& buf, const String8& mimeType) {
|
||||
ALOGV("Entering BpDrmManagerService::openDecryptSession");
|
||||
Parcel data, reply;
|
||||
@@ -673,7 +673,7 @@ DecryptHandle* BpDrmManagerService::openDecryptSession(
|
||||
|
||||
remote()->transact(OPEN_DECRYPT_SESSION_FOR_STREAMING, data, &reply);
|
||||
|
||||
DecryptHandle* handle = NULL;
|
||||
sp<DecryptHandle> handle;
|
||||
if (0 != reply.dataAvail()) {
|
||||
handle = new DecryptHandle();
|
||||
readDecryptHandleFromParcelData(handle, reply);
|
||||
@@ -683,7 +683,7 @@ DecryptHandle* BpDrmManagerService::openDecryptSession(
|
||||
return handle;
|
||||
}
|
||||
|
||||
status_t BpDrmManagerService::closeDecryptSession(int uniqueId, DecryptHandle* decryptHandle) {
|
||||
status_t BpDrmManagerService::closeDecryptSession(int uniqueId, sp<DecryptHandle>& decryptHandle) {
|
||||
ALOGV("closeDecryptSession");
|
||||
Parcel data, reply;
|
||||
|
||||
@@ -698,7 +698,7 @@ status_t BpDrmManagerService::closeDecryptSession(int uniqueId, DecryptHandle* d
|
||||
}
|
||||
|
||||
status_t BpDrmManagerService::initializeDecryptUnit(
|
||||
int uniqueId, DecryptHandle* decryptHandle,
|
||||
int uniqueId, sp<DecryptHandle>& decryptHandle,
|
||||
int decryptUnitId, const DrmBuffer* headerInfo) {
|
||||
ALOGV("initializeDecryptUnit");
|
||||
Parcel data, reply;
|
||||
@@ -718,7 +718,7 @@ status_t BpDrmManagerService::initializeDecryptUnit(
|
||||
}
|
||||
|
||||
status_t BpDrmManagerService::decrypt(
|
||||
int uniqueId, DecryptHandle* decryptHandle, int decryptUnitId,
|
||||
int uniqueId, sp<DecryptHandle>& decryptHandle, int decryptUnitId,
|
||||
const DrmBuffer* encBuffer, DrmBuffer** decBuffer, DrmBuffer* IV) {
|
||||
ALOGV("decrypt");
|
||||
Parcel data, reply;
|
||||
@@ -754,7 +754,7 @@ status_t BpDrmManagerService::decrypt(
|
||||
}
|
||||
|
||||
status_t BpDrmManagerService::finalizeDecryptUnit(
|
||||
int uniqueId, DecryptHandle* decryptHandle, int decryptUnitId) {
|
||||
int uniqueId, sp<DecryptHandle>& decryptHandle, int decryptUnitId) {
|
||||
ALOGV("finalizeDecryptUnit");
|
||||
Parcel data, reply;
|
||||
|
||||
@@ -770,7 +770,7 @@ status_t BpDrmManagerService::finalizeDecryptUnit(
|
||||
}
|
||||
|
||||
ssize_t BpDrmManagerService::pread(
|
||||
int uniqueId, DecryptHandle* decryptHandle, void* buffer,
|
||||
int uniqueId, sp<DecryptHandle>& decryptHandle, void* buffer,
|
||||
ssize_t numBytes, off64_t offset) {
|
||||
ALOGV("read");
|
||||
Parcel data, reply;
|
||||
@@ -1128,16 +1128,16 @@ status_t BnDrmManagerService::onTransact(
|
||||
|
||||
const int uniqueId = data.readInt32();
|
||||
|
||||
DecryptHandle handle;
|
||||
readDecryptHandleFromParcelData(&handle, data);
|
||||
sp<DecryptHandle> handle = new DecryptHandle();
|
||||
readDecryptHandleFromParcelData(handle, data);
|
||||
|
||||
const int action = data.readInt32();
|
||||
const bool reserve = static_cast<bool>(data.readInt32());
|
||||
const status_t status
|
||||
= consumeRights(uniqueId, &handle, action, reserve);
|
||||
= consumeRights(uniqueId, handle, action, reserve);
|
||||
reply->writeInt32(status);
|
||||
|
||||
clearDecryptHandle(&handle);
|
||||
clearDecryptHandle(handle);
|
||||
return DRM_NO_ERROR;
|
||||
}
|
||||
|
||||
@@ -1148,16 +1148,16 @@ status_t BnDrmManagerService::onTransact(
|
||||
|
||||
const int uniqueId = data.readInt32();
|
||||
|
||||
DecryptHandle handle;
|
||||
readDecryptHandleFromParcelData(&handle, data);
|
||||
sp<DecryptHandle> handle = new DecryptHandle();
|
||||
readDecryptHandleFromParcelData(handle, data);
|
||||
|
||||
const int playbackStatus = data.readInt32();
|
||||
const int64_t position = data.readInt64();
|
||||
const status_t status
|
||||
= setPlaybackStatus(uniqueId, &handle, playbackStatus, position);
|
||||
= setPlaybackStatus(uniqueId, handle, playbackStatus, position);
|
||||
reply->writeInt32(status);
|
||||
|
||||
clearDecryptHandle(&handle);
|
||||
clearDecryptHandle(handle);
|
||||
return DRM_NO_ERROR;
|
||||
}
|
||||
|
||||
@@ -1329,13 +1329,13 @@ status_t BnDrmManagerService::onTransact(
|
||||
const off64_t length = data.readInt64();
|
||||
const String8 mime = data.readString8();
|
||||
|
||||
DecryptHandle* handle
|
||||
sp<DecryptHandle> handle
|
||||
= openDecryptSession(uniqueId, fd, offset, length, mime.string());
|
||||
|
||||
if (NULL != handle) {
|
||||
writeDecryptHandleToParcelData(handle, reply);
|
||||
if (NULL != handle.get()) {
|
||||
writeDecryptHandleToParcelData(handle.get(), reply);
|
||||
clearDecryptHandle(handle);
|
||||
delete handle; handle = NULL;
|
||||
handle.clear();
|
||||
}
|
||||
return DRM_NO_ERROR;
|
||||
}
|
||||
@@ -1349,13 +1349,13 @@ status_t BnDrmManagerService::onTransact(
|
||||
const String8 uri = data.readString8();
|
||||
const String8 mime = data.readString8();
|
||||
|
||||
DecryptHandle* handle = openDecryptSession(uniqueId, uri.string(), mime.string());
|
||||
sp<DecryptHandle> handle = openDecryptSession(uniqueId, uri.string(), mime.string());
|
||||
|
||||
if (NULL != handle) {
|
||||
writeDecryptHandleToParcelData(handle, reply);
|
||||
if (NULL != handle.get()) {
|
||||
writeDecryptHandleToParcelData(handle.get(), reply);
|
||||
|
||||
clearDecryptHandle(handle);
|
||||
delete handle; handle = NULL;
|
||||
handle.clear();
|
||||
} else {
|
||||
ALOGV("NULL decryptHandle is returned");
|
||||
}
|
||||
@@ -1373,13 +1373,12 @@ status_t BnDrmManagerService::onTransact(
|
||||
bufferSize);
|
||||
const String8 mimeType(data.readString8());
|
||||
|
||||
DecryptHandle* handle = openDecryptSession(uniqueId, buf, mimeType);
|
||||
sp<DecryptHandle> handle = openDecryptSession(uniqueId, buf, mimeType);
|
||||
|
||||
if (handle != NULL) {
|
||||
writeDecryptHandleToParcelData(handle, reply);
|
||||
clearDecryptHandle(handle);
|
||||
delete handle;
|
||||
handle = NULL;
|
||||
handle.clear();
|
||||
} else {
|
||||
ALOGV("NULL decryptHandle is returned");
|
||||
}
|
||||
@@ -1393,7 +1392,7 @@ status_t BnDrmManagerService::onTransact(
|
||||
|
||||
const int uniqueId = data.readInt32();
|
||||
|
||||
DecryptHandle* handle = new DecryptHandle();
|
||||
sp<DecryptHandle> handle = new DecryptHandle();
|
||||
readDecryptHandleFromParcelData(handle, data);
|
||||
|
||||
const status_t status = closeDecryptSession(uniqueId, handle);
|
||||
@@ -1408,8 +1407,8 @@ status_t BnDrmManagerService::onTransact(
|
||||
|
||||
const int uniqueId = data.readInt32();
|
||||
|
||||
DecryptHandle handle;
|
||||
readDecryptHandleFromParcelData(&handle, data);
|
||||
sp<DecryptHandle> handle = new DecryptHandle();
|
||||
readDecryptHandleFromParcelData(handle, data);
|
||||
|
||||
const int decryptUnitId = data.readInt32();
|
||||
|
||||
@@ -1417,17 +1416,17 @@ status_t BnDrmManagerService::onTransact(
|
||||
const uint32_t bufferSize = data.readInt32();
|
||||
if (bufferSize > data.dataAvail()) {
|
||||
reply->writeInt32(BAD_VALUE);
|
||||
clearDecryptHandle(&handle);
|
||||
clearDecryptHandle(handle);
|
||||
return DRM_NO_ERROR;
|
||||
}
|
||||
DrmBuffer* headerInfo = NULL;
|
||||
headerInfo = new DrmBuffer((char *)data.readInplace(bufferSize), bufferSize);
|
||||
|
||||
const status_t status
|
||||
= initializeDecryptUnit(uniqueId, &handle, decryptUnitId, headerInfo);
|
||||
= initializeDecryptUnit(uniqueId, handle, decryptUnitId, headerInfo);
|
||||
reply->writeInt32(status);
|
||||
|
||||
clearDecryptHandle(&handle);
|
||||
clearDecryptHandle(handle);
|
||||
delete headerInfo; headerInfo = NULL;
|
||||
return DRM_NO_ERROR;
|
||||
}
|
||||
@@ -1439,8 +1438,8 @@ status_t BnDrmManagerService::onTransact(
|
||||
|
||||
const int uniqueId = data.readInt32();
|
||||
|
||||
DecryptHandle handle;
|
||||
readDecryptHandleFromParcelData(&handle, data);
|
||||
sp<DecryptHandle> handle = new DecryptHandle;
|
||||
readDecryptHandleFromParcelData(handle, data);
|
||||
|
||||
const int decryptUnitId = data.readInt32();
|
||||
const uint32_t decBufferSize = data.readInt32();
|
||||
@@ -1450,7 +1449,7 @@ status_t BnDrmManagerService::onTransact(
|
||||
decBufferSize > MAX_BINDER_TRANSACTION_SIZE) {
|
||||
reply->writeInt32(BAD_VALUE);
|
||||
reply->writeInt32(0);
|
||||
clearDecryptHandle(&handle);
|
||||
clearDecryptHandle(handle);
|
||||
return DRM_NO_ERROR;
|
||||
}
|
||||
|
||||
@@ -1470,7 +1469,7 @@ status_t BnDrmManagerService::onTransact(
|
||||
}
|
||||
|
||||
const status_t status
|
||||
= decrypt(uniqueId, &handle, decryptUnitId, encBuffer, &decBuffer, IV);
|
||||
= decrypt(uniqueId, handle, decryptUnitId, encBuffer, &decBuffer, IV);
|
||||
|
||||
reply->writeInt32(status);
|
||||
|
||||
@@ -1480,7 +1479,7 @@ status_t BnDrmManagerService::onTransact(
|
||||
reply->write(decBuffer->data, size);
|
||||
}
|
||||
|
||||
clearDecryptHandle(&handle);
|
||||
clearDecryptHandle(handle);
|
||||
delete encBuffer; encBuffer = NULL;
|
||||
delete decBuffer; decBuffer = NULL;
|
||||
delete [] buffer; buffer = NULL;
|
||||
@@ -1495,13 +1494,13 @@ status_t BnDrmManagerService::onTransact(
|
||||
|
||||
const int uniqueId = data.readInt32();
|
||||
|
||||
DecryptHandle handle;
|
||||
readDecryptHandleFromParcelData(&handle, data);
|
||||
sp<DecryptHandle> handle = new DecryptHandle();
|
||||
readDecryptHandleFromParcelData(handle, data);
|
||||
|
||||
const status_t status = finalizeDecryptUnit(uniqueId, &handle, data.readInt32());
|
||||
const status_t status = finalizeDecryptUnit(uniqueId, handle, data.readInt32());
|
||||
reply->writeInt32(status);
|
||||
|
||||
clearDecryptHandle(&handle);
|
||||
clearDecryptHandle(handle);
|
||||
return DRM_NO_ERROR;
|
||||
}
|
||||
|
||||
@@ -1512,8 +1511,8 @@ status_t BnDrmManagerService::onTransact(
|
||||
|
||||
const int uniqueId = data.readInt32();
|
||||
|
||||
DecryptHandle handle;
|
||||
readDecryptHandleFromParcelData(&handle, data);
|
||||
sp<DecryptHandle> handle = new DecryptHandle();
|
||||
readDecryptHandleFromParcelData(handle, data);
|
||||
|
||||
const uint32_t numBytes = data.readInt32();
|
||||
if (numBytes > MAX_BINDER_TRANSACTION_SIZE) {
|
||||
@@ -1524,13 +1523,13 @@ status_t BnDrmManagerService::onTransact(
|
||||
|
||||
const off64_t offset = data.readInt64();
|
||||
|
||||
ssize_t result = pread(uniqueId, &handle, buffer, numBytes, offset);
|
||||
ssize_t result = pread(uniqueId, handle, buffer, numBytes, offset);
|
||||
reply->writeInt32(result);
|
||||
if (0 < result) {
|
||||
reply->write(buffer, result);
|
||||
}
|
||||
|
||||
clearDecryptHandle(&handle);
|
||||
clearDecryptHandle(handle);
|
||||
delete [] buffer, buffer = NULL;
|
||||
return DRM_NO_ERROR;
|
||||
}
|
||||
|
||||
@@ -59,10 +59,11 @@ public:
|
||||
|
||||
int checkRightsStatus(int uniqueId, const String8& path, int action);
|
||||
|
||||
status_t consumeRights(int uniqueId, DecryptHandle* decryptHandle, int action, bool reserve);
|
||||
status_t consumeRights(int uniqueId, sp<DecryptHandle>& decryptHandle, int action,
|
||||
bool reserve);
|
||||
|
||||
status_t setPlaybackStatus(
|
||||
int uniqueId, DecryptHandle* decryptHandle, int playbackStatus, int64_t position);
|
||||
int uniqueId, sp<DecryptHandle>& decryptHandle, int playbackStatus, int64_t position);
|
||||
|
||||
bool validateAction(
|
||||
int uniqueId, const String8& path, int action, const ActionDescription& description);
|
||||
@@ -80,27 +81,28 @@ public:
|
||||
DrmSupportInfo* getSupportInfo(int uniqueId);
|
||||
|
||||
status_t openDecryptSession(
|
||||
int uniqueId, DecryptHandle* decryptHandle,
|
||||
int uniqueId, sp<DecryptHandle>& decryptHandle,
|
||||
int fd, off64_t offset, off64_t length, const char* mime);
|
||||
|
||||
status_t openDecryptSession(
|
||||
int uniqueId, DecryptHandle* decryptHandle,
|
||||
int uniqueId, sp<DecryptHandle>& decryptHandle,
|
||||
const char* uri, const char* mime);
|
||||
|
||||
status_t openDecryptSession(int uniqueId, DecryptHandle* decryptHandle,
|
||||
status_t openDecryptSession(int uniqueId, sp<DecryptHandle>& decryptHandle,
|
||||
const DrmBuffer& buf, const String8& mimeType);
|
||||
|
||||
status_t closeDecryptSession(int uniqueId, DecryptHandle* decryptHandle);
|
||||
status_t closeDecryptSession(int uniqueId, sp<DecryptHandle>& decryptHandle);
|
||||
|
||||
status_t initializeDecryptUnit(int uniqueId, DecryptHandle* decryptHandle,
|
||||
status_t initializeDecryptUnit(int uniqueId, sp<DecryptHandle>& decryptHandle,
|
||||
int decryptUnitId, const DrmBuffer* headerInfo);
|
||||
|
||||
status_t decrypt(int uniqueId, DecryptHandle* decryptHandle, int decryptUnitId,
|
||||
status_t decrypt(int uniqueId, sp<DecryptHandle>& decryptHandle, int decryptUnitId,
|
||||
const DrmBuffer* encBuffer, DrmBuffer** decBuffer, DrmBuffer* IV);
|
||||
|
||||
status_t finalizeDecryptUnit(int uniqueId, DecryptHandle* decryptHandle, int decryptUnitId);
|
||||
status_t finalizeDecryptUnit(int uniqueId, sp<DecryptHandle>& decryptHandle,
|
||||
int decryptUnitId);
|
||||
|
||||
ssize_t pread(int uniqueId, DecryptHandle* decryptHandle,
|
||||
ssize_t pread(int uniqueId, sp<DecryptHandle>& decryptHandle,
|
||||
void* buffer, ssize_t numBytes, off64_t offset);
|
||||
|
||||
protected:
|
||||
@@ -265,7 +267,7 @@ protected:
|
||||
* @return status_t
|
||||
* Returns DRM_NO_ERROR for success, DRM_ERROR_UNKNOWN for failure
|
||||
*/
|
||||
virtual status_t onConsumeRights(int uniqueId, DecryptHandle* decryptHandle,
|
||||
virtual status_t onConsumeRights(int uniqueId, sp<DecryptHandle>& decryptHandle,
|
||||
int action, bool reserve) = 0;
|
||||
|
||||
/**
|
||||
@@ -280,7 +282,8 @@ protected:
|
||||
* Returns DRM_NO_ERROR for success, DRM_ERROR_UNKNOWN for failure
|
||||
*/
|
||||
virtual status_t onSetPlaybackStatus(
|
||||
int uniqueId, DecryptHandle* decryptHandle, int playbackStatus, int64_t position) = 0;
|
||||
int uniqueId, sp<DecryptHandle>& decryptHandle, int playbackStatus,
|
||||
int64_t position) = 0;
|
||||
|
||||
/**
|
||||
* Validates whether an action on the DRM content is allowed or not.
|
||||
@@ -381,7 +384,7 @@ protected:
|
||||
* DRM_ERROR_CANNOT_HANDLE for failure and DRM_NO_ERROR for success
|
||||
*/
|
||||
virtual status_t onOpenDecryptSession(
|
||||
int uniqueId, DecryptHandle* decryptHandle,
|
||||
int uniqueId, sp<DecryptHandle>& decryptHandle,
|
||||
int fd, off64_t offset, off64_t length) = 0;
|
||||
|
||||
/**
|
||||
@@ -398,7 +401,7 @@ protected:
|
||||
* DRM_ERROR_CANNOT_HANDLE for failure and DRM_NO_ERROR for success
|
||||
*/
|
||||
virtual status_t onOpenDecryptSession(
|
||||
int /* uniqueId */, DecryptHandle* /* decryptHandle */,
|
||||
int /* uniqueId */, sp<DecryptHandle>& /* decryptHandle */,
|
||||
int /* fd */, off64_t /* offset */, off64_t /* length */,
|
||||
const char* /* mime */) {
|
||||
|
||||
@@ -415,7 +418,7 @@ protected:
|
||||
* DRM_ERROR_CANNOT_HANDLE for failure and DRM_NO_ERROR for success
|
||||
*/
|
||||
virtual status_t onOpenDecryptSession(
|
||||
int uniqueId, DecryptHandle* decryptHandle,
|
||||
int uniqueId, sp<DecryptHandle>& decryptHandle,
|
||||
const char* uri) = 0;
|
||||
|
||||
/**
|
||||
@@ -430,7 +433,7 @@ protected:
|
||||
* DRM_ERROR_CANNOT_HANDLE for failure and DRM_NO_ERROR for success
|
||||
*/
|
||||
virtual status_t onOpenDecryptSession(
|
||||
int /* uniqueId */, DecryptHandle* /* decryptHandle */,
|
||||
int /* uniqueId */, sp<DecryptHandle>& /* decryptHandle */,
|
||||
const char* /* uri */, const char* /* mime */) {
|
||||
|
||||
return DRM_ERROR_CANNOT_HANDLE;
|
||||
@@ -447,7 +450,7 @@ protected:
|
||||
* DRM_ERROR_CANNOT_HANDLE for failure and DRM_NO_ERROR for success
|
||||
*/
|
||||
virtual status_t onOpenDecryptSession(int /* uniqueId */,
|
||||
DecryptHandle* /* decryptHandle */,
|
||||
sp<DecryptHandle>& /* decryptHandle */,
|
||||
const DrmBuffer& /* buf */,
|
||||
const String8& /* mimeType */) {
|
||||
return DRM_ERROR_CANNOT_HANDLE;
|
||||
@@ -461,7 +464,7 @@ protected:
|
||||
* @return status_t
|
||||
* Returns DRM_NO_ERROR for success, DRM_ERROR_UNKNOWN for failure
|
||||
*/
|
||||
virtual status_t onCloseDecryptSession(int uniqueId, DecryptHandle* decryptHandle) = 0;
|
||||
virtual status_t onCloseDecryptSession(int uniqueId, sp<DecryptHandle>& decryptHandle) = 0;
|
||||
|
||||
/**
|
||||
* Initialize decryption for the given unit of the protected content
|
||||
@@ -473,7 +476,7 @@ protected:
|
||||
* @return status_t
|
||||
* Returns DRM_NO_ERROR for success, DRM_ERROR_UNKNOWN for failure
|
||||
*/
|
||||
virtual status_t onInitializeDecryptUnit(int uniqueId, DecryptHandle* decryptHandle,
|
||||
virtual status_t onInitializeDecryptUnit(int uniqueId, sp<DecryptHandle>& decryptHandle,
|
||||
int decryptUnitId, const DrmBuffer* headerInfo) = 0;
|
||||
|
||||
/**
|
||||
@@ -493,7 +496,7 @@ protected:
|
||||
* DRM_ERROR_SESSION_NOT_OPENED, DRM_ERROR_DECRYPT_UNIT_NOT_INITIALIZED,
|
||||
* DRM_ERROR_DECRYPT for failure.
|
||||
*/
|
||||
virtual status_t onDecrypt(int uniqueId, DecryptHandle* decryptHandle, int decryptUnitId,
|
||||
virtual status_t onDecrypt(int uniqueId, sp<DecryptHandle>& decryptHandle, int decryptUnitId,
|
||||
const DrmBuffer* encBuffer, DrmBuffer** decBuffer, DrmBuffer* IV) = 0;
|
||||
|
||||
/**
|
||||
@@ -506,7 +509,7 @@ protected:
|
||||
* Returns DRM_NO_ERROR for success, DRM_ERROR_UNKNOWN for failure
|
||||
*/
|
||||
virtual status_t onFinalizeDecryptUnit(
|
||||
int uniqueId, DecryptHandle* decryptHandle, int decryptUnitId) = 0;
|
||||
int uniqueId, sp<DecryptHandle>& decryptHandle, int decryptUnitId) = 0;
|
||||
|
||||
/**
|
||||
* Reads the specified number of bytes from an open DRM file.
|
||||
@@ -519,7 +522,7 @@ protected:
|
||||
*
|
||||
* @return Number of bytes read. Returns -1 for Failure.
|
||||
*/
|
||||
virtual ssize_t onPread(int uniqueId, DecryptHandle* decryptHandle,
|
||||
virtual ssize_t onPread(int uniqueId, sp<DecryptHandle>& decryptHandle,
|
||||
void* buffer, ssize_t numBytes, off64_t offset) = 0;
|
||||
};
|
||||
|
||||
|
||||
@@ -210,7 +210,7 @@ public:
|
||||
* Returns DRM_NO_ERROR for success, DRM_ERROR_UNKNOWN for failure
|
||||
*/
|
||||
virtual status_t consumeRights(
|
||||
int uniqueId, DecryptHandle* decryptHandle, int action, bool reserve) = 0;
|
||||
int uniqueId, sp<DecryptHandle>& decryptHandle, int action, bool reserve) = 0;
|
||||
|
||||
/**
|
||||
* Informs the DRM Engine about the playback actions performed on the DRM files.
|
||||
@@ -223,7 +223,7 @@ public:
|
||||
* @return status_t
|
||||
* Returns DRM_NO_ERROR for success, DRM_ERROR_UNKNOWN for failure
|
||||
*/
|
||||
virtual status_t setPlaybackStatus(int uniqueId, DecryptHandle* decryptHandle,
|
||||
virtual status_t setPlaybackStatus(int uniqueId, sp<DecryptHandle>& decryptHandle,
|
||||
int playbackStatus, int64_t position) = 0;
|
||||
|
||||
/**
|
||||
@@ -327,7 +327,7 @@ public:
|
||||
* DRM_ERROR_CANNOT_HANDLE for failure and DRM_NO_ERROR for success
|
||||
*/
|
||||
virtual status_t openDecryptSession(
|
||||
int uniqueId, DecryptHandle* decryptHandle,
|
||||
int uniqueId, sp<DecryptHandle>& decryptHandle,
|
||||
int fd, off64_t offset, off64_t length, const char* mime) = 0;
|
||||
|
||||
/**
|
||||
@@ -342,7 +342,7 @@ public:
|
||||
* DRM_ERROR_CANNOT_HANDLE for failure and DRM_NO_ERROR for success
|
||||
*/
|
||||
virtual status_t openDecryptSession(
|
||||
int uniqueId, DecryptHandle* decryptHandle,
|
||||
int uniqueId, sp<DecryptHandle>& decryptHandle,
|
||||
const char* uri, const char* mime) = 0;
|
||||
|
||||
/**
|
||||
@@ -355,7 +355,7 @@ public:
|
||||
* @return
|
||||
* DRM_ERROR_CANNOT_HANDLE for failure and DRM_NO_ERROR for success
|
||||
*/
|
||||
virtual status_t openDecryptSession(int uniqueId, DecryptHandle* decryptHandle,
|
||||
virtual status_t openDecryptSession(int uniqueId, sp<DecryptHandle>& decryptHandle,
|
||||
const DrmBuffer& buf, const String8& mimeType) = 0;
|
||||
|
||||
/**
|
||||
@@ -366,7 +366,7 @@ public:
|
||||
* @return status_t
|
||||
* Returns DRM_NO_ERROR for success, DRM_ERROR_UNKNOWN for failure
|
||||
*/
|
||||
virtual status_t closeDecryptSession(int uniqueId, DecryptHandle* decryptHandle) = 0;
|
||||
virtual status_t closeDecryptSession(int uniqueId, sp<DecryptHandle>& decryptHandle) = 0;
|
||||
|
||||
/**
|
||||
* Initialize decryption for the given unit of the protected content
|
||||
@@ -378,7 +378,7 @@ public:
|
||||
* @return status_t
|
||||
* Returns DRM_NO_ERROR for success, DRM_ERROR_UNKNOWN for failure
|
||||
*/
|
||||
virtual status_t initializeDecryptUnit(int uniqueId, DecryptHandle* decryptHandle,
|
||||
virtual status_t initializeDecryptUnit(int uniqueId, sp<DecryptHandle>& decryptHandle,
|
||||
int decryptUnitId, const DrmBuffer* headerInfo) = 0;
|
||||
|
||||
/**
|
||||
@@ -398,7 +398,7 @@ public:
|
||||
* DRM_ERROR_SESSION_NOT_OPENED, DRM_ERROR_DECRYPT_UNIT_NOT_INITIALIZED,
|
||||
* DRM_ERROR_DECRYPT for failure.
|
||||
*/
|
||||
virtual status_t decrypt(int uniqueId, DecryptHandle* decryptHandle, int decryptUnitId,
|
||||
virtual status_t decrypt(int uniqueId, sp<DecryptHandle>& decryptHandle, int decryptUnitId,
|
||||
const DrmBuffer* encBuffer, DrmBuffer** decBuffer, DrmBuffer* IV) = 0;
|
||||
|
||||
/**
|
||||
@@ -411,7 +411,7 @@ public:
|
||||
* Returns DRM_NO_ERROR for success, DRM_ERROR_UNKNOWN for failure
|
||||
*/
|
||||
virtual status_t finalizeDecryptUnit(
|
||||
int uniqueId, DecryptHandle* decryptHandle, int decryptUnitId) = 0;
|
||||
int uniqueId, sp<DecryptHandle>& decryptHandle, int decryptUnitId) = 0;
|
||||
|
||||
/**
|
||||
* Reads the specified number of bytes from an open DRM file.
|
||||
@@ -424,7 +424,7 @@ public:
|
||||
*
|
||||
* @return Number of bytes read. Returns -1 for Failure.
|
||||
*/
|
||||
virtual ssize_t pread(int uniqueId, DecryptHandle* decryptHandle,
|
||||
virtual ssize_t pread(int uniqueId, sp<DecryptHandle>& decryptHandle,
|
||||
void* buffer, ssize_t numBytes, off64_t offset) = 0;
|
||||
};
|
||||
|
||||
|
||||
@@ -115,10 +115,11 @@ public:
|
||||
virtual int checkRightsStatus(int uniqueId, const String8& path, int action) = 0;
|
||||
|
||||
virtual status_t consumeRights(
|
||||
int uniqueId, DecryptHandle* decryptHandle, int action, bool reserve) = 0;
|
||||
int uniqueId, sp<DecryptHandle>& decryptHandle, int action, bool reserve) = 0;
|
||||
|
||||
virtual status_t setPlaybackStatus(
|
||||
int uniqueId, DecryptHandle* decryptHandle, int playbackStatus, int64_t position) = 0;
|
||||
int uniqueId, sp<DecryptHandle>& decryptHandle, int playbackStatus,
|
||||
int64_t position) = 0;
|
||||
|
||||
virtual bool validateAction(
|
||||
int uniqueId, const String8& path,
|
||||
@@ -138,28 +139,28 @@ public:
|
||||
virtual status_t getAllSupportInfo(
|
||||
int uniqueId, int* length, DrmSupportInfo** drmSupportInfoArray) = 0;
|
||||
|
||||
virtual DecryptHandle* openDecryptSession(
|
||||
virtual sp<DecryptHandle> openDecryptSession(
|
||||
int uniqueId, int fd, off64_t offset,
|
||||
off64_t length, const char* mime) = 0;
|
||||
|
||||
virtual DecryptHandle* openDecryptSession(
|
||||
virtual sp<DecryptHandle> openDecryptSession(
|
||||
int uniqueId, const char* uri, const char* mime) = 0;
|
||||
|
||||
virtual DecryptHandle* openDecryptSession(
|
||||
virtual sp<DecryptHandle> openDecryptSession(
|
||||
int uniqueId, const DrmBuffer& buf, const String8& mimeType) = 0;
|
||||
|
||||
virtual status_t closeDecryptSession(int uniqueId, DecryptHandle* decryptHandle) = 0;
|
||||
virtual status_t closeDecryptSession(int uniqueId, sp<DecryptHandle>& decryptHandle) = 0;
|
||||
|
||||
virtual status_t initializeDecryptUnit(int uniqueId, DecryptHandle* decryptHandle,
|
||||
virtual status_t initializeDecryptUnit(int uniqueId, sp<DecryptHandle>& decryptHandle,
|
||||
int decryptUnitId, const DrmBuffer* headerInfo) = 0;
|
||||
|
||||
virtual status_t decrypt(int uniqueId, DecryptHandle* decryptHandle, int decryptUnitId,
|
||||
virtual status_t decrypt(int uniqueId, sp<DecryptHandle>& decryptHandle, int decryptUnitId,
|
||||
const DrmBuffer* encBuffer, DrmBuffer** decBuffer, DrmBuffer* IV) = 0;
|
||||
|
||||
virtual status_t finalizeDecryptUnit(
|
||||
int uniqueId, DecryptHandle* decryptHandle, int decryptUnitId) = 0;
|
||||
int uniqueId, sp<DecryptHandle>& decryptHandle, int decryptUnitId) = 0;
|
||||
|
||||
virtual ssize_t pread(int uniqueId, DecryptHandle* decryptHandle,
|
||||
virtual ssize_t pread(int uniqueId, sp<DecryptHandle>& decryptHandle,
|
||||
void* buffer, ssize_t numBytes,off64_t offset) = 0;
|
||||
};
|
||||
|
||||
@@ -203,10 +204,10 @@ public:
|
||||
virtual int checkRightsStatus(int uniqueId, const String8& path, int action);
|
||||
|
||||
virtual status_t consumeRights(
|
||||
int uniqueId, DecryptHandle* decryptHandle, int action, bool reserve);
|
||||
int uniqueId, sp<DecryptHandle>& decryptHandle, int action, bool reserve);
|
||||
|
||||
virtual status_t setPlaybackStatus(
|
||||
int uniqueId, DecryptHandle* decryptHandle, int playbackStatus, int64_t position);
|
||||
int uniqueId, sp<DecryptHandle>& decryptHandle, int playbackStatus, int64_t position);
|
||||
|
||||
virtual bool validateAction(
|
||||
int uniqueId, const String8& path, int action, const ActionDescription& description);
|
||||
@@ -225,28 +226,28 @@ public:
|
||||
virtual status_t getAllSupportInfo(
|
||||
int uniqueId, int* length, DrmSupportInfo** drmSupportInfoArray);
|
||||
|
||||
virtual DecryptHandle* openDecryptSession(
|
||||
virtual sp<DecryptHandle> openDecryptSession(
|
||||
int uniqueId, int fd, off64_t offset, off64_t length,
|
||||
const char* mime);
|
||||
|
||||
virtual DecryptHandle* openDecryptSession(
|
||||
virtual sp<DecryptHandle> openDecryptSession(
|
||||
int uniqueId, const char* uri, const char* mime);
|
||||
|
||||
virtual DecryptHandle* openDecryptSession(
|
||||
virtual sp<DecryptHandle> openDecryptSession(
|
||||
int uniqueId, const DrmBuffer& buf, const String8& mimeType);
|
||||
|
||||
virtual status_t closeDecryptSession(int uniqueId, DecryptHandle* decryptHandle);
|
||||
virtual status_t closeDecryptSession(int uniqueId, sp<DecryptHandle>& decryptHandle);
|
||||
|
||||
virtual status_t initializeDecryptUnit(int uniqueId, DecryptHandle* decryptHandle,
|
||||
virtual status_t initializeDecryptUnit(int uniqueId, sp<DecryptHandle>& decryptHandle,
|
||||
int decryptUnitId, const DrmBuffer* headerInfo);
|
||||
|
||||
virtual status_t decrypt(int uniqueId, DecryptHandle* decryptHandle, int decryptUnitId,
|
||||
virtual status_t decrypt(int uniqueId, sp<DecryptHandle>& decryptHandle, int decryptUnitId,
|
||||
const DrmBuffer* encBuffer, DrmBuffer** decBuffer, DrmBuffer* IV);
|
||||
|
||||
virtual status_t finalizeDecryptUnit(
|
||||
int uniqueId, DecryptHandle* decryptHandle, int decryptUnitId);
|
||||
int uniqueId, sp<DecryptHandle>& decryptHandle, int decryptUnitId);
|
||||
|
||||
virtual ssize_t pread(int uniqueId, DecryptHandle* decryptHandle,
|
||||
virtual ssize_t pread(int uniqueId, sp<DecryptHandle>& decryptHandle,
|
||||
void* buffer, ssize_t numBytes, off64_t offset);
|
||||
};
|
||||
|
||||
|
||||
@@ -267,7 +267,7 @@ int DrmManager::checkRightsStatus(int uniqueId, const String8& path, int action)
|
||||
}
|
||||
|
||||
status_t DrmManager::consumeRights(
|
||||
int uniqueId, DecryptHandle* decryptHandle, int action, bool reserve) {
|
||||
int uniqueId, sp<DecryptHandle>& decryptHandle, int action, bool reserve) {
|
||||
status_t result = DRM_ERROR_UNKNOWN;
|
||||
Mutex::Autolock _l(mDecryptLock);
|
||||
if (mDecryptSessionMap.indexOfKey(decryptHandle->decryptId) != NAME_NOT_FOUND) {
|
||||
@@ -278,7 +278,7 @@ status_t DrmManager::consumeRights(
|
||||
}
|
||||
|
||||
status_t DrmManager::setPlaybackStatus(
|
||||
int uniqueId, DecryptHandle* decryptHandle, int playbackStatus, int64_t position) {
|
||||
int uniqueId, sp<DecryptHandle>& decryptHandle, int playbackStatus, int64_t position) {
|
||||
status_t result = DRM_ERROR_UNKNOWN;
|
||||
Mutex::Autolock _l(mDecryptLock);
|
||||
if (mDecryptSessionMap.indexOfKey(decryptHandle->decryptId) != NAME_NOT_FOUND) {
|
||||
@@ -396,15 +396,15 @@ status_t DrmManager::getAllSupportInfo(
|
||||
return DRM_NO_ERROR;
|
||||
}
|
||||
|
||||
DecryptHandle* DrmManager::openDecryptSession(
|
||||
sp<DecryptHandle> DrmManager::openDecryptSession(
|
||||
int uniqueId, int fd, off64_t offset, off64_t length, const char* mime) {
|
||||
|
||||
Mutex::Autolock _l(mDecryptLock);
|
||||
status_t result = DRM_ERROR_CANNOT_HANDLE;
|
||||
Vector<String8> plugInIdList = mPlugInManager.getPlugInIdList();
|
||||
|
||||
DecryptHandle* handle = new DecryptHandle();
|
||||
if (NULL != handle) {
|
||||
sp<DecryptHandle> handle = new DecryptHandle();
|
||||
if (NULL != handle.get()) {
|
||||
handle->decryptId = mDecryptSessionId + 1;
|
||||
|
||||
for (size_t index = 0; index < plugInIdList.size(); index++) {
|
||||
@@ -420,19 +420,19 @@ DecryptHandle* DrmManager::openDecryptSession(
|
||||
}
|
||||
}
|
||||
if (DRM_NO_ERROR != result) {
|
||||
delete handle; handle = NULL;
|
||||
handle.clear();
|
||||
}
|
||||
return handle;
|
||||
}
|
||||
|
||||
DecryptHandle* DrmManager::openDecryptSession(
|
||||
sp<DecryptHandle> DrmManager::openDecryptSession(
|
||||
int uniqueId, const char* uri, const char* mime) {
|
||||
Mutex::Autolock _l(mDecryptLock);
|
||||
status_t result = DRM_ERROR_CANNOT_HANDLE;
|
||||
Vector<String8> plugInIdList = mPlugInManager.getPlugInIdList();
|
||||
|
||||
DecryptHandle* handle = new DecryptHandle();
|
||||
if (NULL != handle) {
|
||||
sp<DecryptHandle> handle = new DecryptHandle();
|
||||
if (NULL != handle.get()) {
|
||||
handle->decryptId = mDecryptSessionId + 1;
|
||||
|
||||
for (size_t index = 0; index < plugInIdList.size(); index++) {
|
||||
@@ -448,20 +448,20 @@ DecryptHandle* DrmManager::openDecryptSession(
|
||||
}
|
||||
}
|
||||
if (DRM_NO_ERROR != result) {
|
||||
delete handle; handle = NULL;
|
||||
handle.clear();
|
||||
ALOGV("DrmManager::openDecryptSession: no capable plug-in found");
|
||||
}
|
||||
return handle;
|
||||
}
|
||||
|
||||
DecryptHandle* DrmManager::openDecryptSession(
|
||||
sp<DecryptHandle> DrmManager::openDecryptSession(
|
||||
int uniqueId, const DrmBuffer& buf, const String8& mimeType) {
|
||||
Mutex::Autolock _l(mDecryptLock);
|
||||
status_t result = DRM_ERROR_CANNOT_HANDLE;
|
||||
Vector<String8> plugInIdList = mPlugInManager.getPlugInIdList();
|
||||
|
||||
DecryptHandle* handle = new DecryptHandle();
|
||||
if (NULL != handle) {
|
||||
sp<DecryptHandle> handle = new DecryptHandle();
|
||||
if (NULL != handle.get()) {
|
||||
handle->decryptId = mDecryptSessionId + 1;
|
||||
|
||||
for (size_t index = 0; index < plugInIdList.size(); index++) {
|
||||
@@ -477,20 +477,19 @@ DecryptHandle* DrmManager::openDecryptSession(
|
||||
}
|
||||
}
|
||||
if (DRM_NO_ERROR != result) {
|
||||
delete handle;
|
||||
handle = NULL;
|
||||
handle.clear();
|
||||
ALOGV("DrmManager::openDecryptSession: no capable plug-in found");
|
||||
}
|
||||
return handle;
|
||||
}
|
||||
|
||||
status_t DrmManager::closeDecryptSession(int uniqueId, DecryptHandle* decryptHandle) {
|
||||
status_t DrmManager::closeDecryptSession(int uniqueId, sp<DecryptHandle>& decryptHandle) {
|
||||
Mutex::Autolock _l(mDecryptLock);
|
||||
status_t result = DRM_ERROR_UNKNOWN;
|
||||
if (mDecryptSessionMap.indexOfKey(decryptHandle->decryptId) != NAME_NOT_FOUND) {
|
||||
IDrmEngine* drmEngine = mDecryptSessionMap.valueFor(decryptHandle->decryptId);
|
||||
result = drmEngine->closeDecryptSession(uniqueId, decryptHandle);
|
||||
if (DRM_NO_ERROR == result) {
|
||||
if (DRM_NO_ERROR == result && NULL != decryptHandle.get()) {
|
||||
mDecryptSessionMap.removeItem(decryptHandle->decryptId);
|
||||
}
|
||||
}
|
||||
@@ -498,7 +497,8 @@ status_t DrmManager::closeDecryptSession(int uniqueId, DecryptHandle* decryptHan
|
||||
}
|
||||
|
||||
status_t DrmManager::initializeDecryptUnit(
|
||||
int uniqueId, DecryptHandle* decryptHandle, int decryptUnitId, const DrmBuffer* headerInfo) {
|
||||
int uniqueId, sp<DecryptHandle>& decryptHandle, int decryptUnitId,
|
||||
const DrmBuffer* headerInfo) {
|
||||
status_t result = DRM_ERROR_UNKNOWN;
|
||||
Mutex::Autolock _l(mDecryptLock);
|
||||
if (mDecryptSessionMap.indexOfKey(decryptHandle->decryptId) != NAME_NOT_FOUND) {
|
||||
@@ -508,7 +508,7 @@ status_t DrmManager::initializeDecryptUnit(
|
||||
return result;
|
||||
}
|
||||
|
||||
status_t DrmManager::decrypt(int uniqueId, DecryptHandle* decryptHandle, int decryptUnitId,
|
||||
status_t DrmManager::decrypt(int uniqueId, sp<DecryptHandle>& decryptHandle, int decryptUnitId,
|
||||
const DrmBuffer* encBuffer, DrmBuffer** decBuffer, DrmBuffer* IV) {
|
||||
status_t result = DRM_ERROR_UNKNOWN;
|
||||
|
||||
@@ -522,7 +522,7 @@ status_t DrmManager::decrypt(int uniqueId, DecryptHandle* decryptHandle, int dec
|
||||
}
|
||||
|
||||
status_t DrmManager::finalizeDecryptUnit(
|
||||
int uniqueId, DecryptHandle* decryptHandle, int decryptUnitId) {
|
||||
int uniqueId, sp<DecryptHandle>& decryptHandle, int decryptUnitId) {
|
||||
status_t result = DRM_ERROR_UNKNOWN;
|
||||
Mutex::Autolock _l(mDecryptLock);
|
||||
if (mDecryptSessionMap.indexOfKey(decryptHandle->decryptId) != NAME_NOT_FOUND) {
|
||||
@@ -532,7 +532,7 @@ status_t DrmManager::finalizeDecryptUnit(
|
||||
return result;
|
||||
}
|
||||
|
||||
ssize_t DrmManager::pread(int uniqueId, DecryptHandle* decryptHandle,
|
||||
ssize_t DrmManager::pread(int uniqueId, sp<DecryptHandle>& decryptHandle,
|
||||
void* buffer, ssize_t numBytes, off64_t offset) {
|
||||
ssize_t result = DECRYPT_FILE_ERROR;
|
||||
|
||||
|
||||
@@ -89,10 +89,11 @@ public:
|
||||
|
||||
int checkRightsStatus(int uniqueId, const String8& path, int action);
|
||||
|
||||
status_t consumeRights(int uniqueId, DecryptHandle* decryptHandle, int action, bool reserve);
|
||||
status_t consumeRights(int uniqueId, sp<DecryptHandle>& decryptHandle, int action,
|
||||
bool reserve);
|
||||
|
||||
status_t setPlaybackStatus(
|
||||
int uniqueId, DecryptHandle* decryptHandle, int playbackStatus, int64_t position);
|
||||
int uniqueId, sp<DecryptHandle>& decryptHandle, int playbackStatus, int64_t position);
|
||||
|
||||
bool validateAction(
|
||||
int uniqueId, const String8& path, int action, const ActionDescription& description);
|
||||
@@ -109,25 +110,26 @@ public:
|
||||
|
||||
status_t getAllSupportInfo(int uniqueId, int* length, DrmSupportInfo** drmSupportInfoArray);
|
||||
|
||||
DecryptHandle* openDecryptSession(
|
||||
sp<DecryptHandle> openDecryptSession(
|
||||
int uniqueId, int fd, off64_t offset, off64_t length, const char* mime);
|
||||
|
||||
DecryptHandle* openDecryptSession(int uniqueId, const char* uri, const char* mime);
|
||||
sp<DecryptHandle> openDecryptSession(int uniqueId, const char* uri, const char* mime);
|
||||
|
||||
DecryptHandle* openDecryptSession(int uniqueId, const DrmBuffer& buf,
|
||||
sp<DecryptHandle> openDecryptSession(int uniqueId, const DrmBuffer& buf,
|
||||
const String8& mimeType);
|
||||
|
||||
status_t closeDecryptSession(int uniqueId, DecryptHandle* decryptHandle);
|
||||
status_t closeDecryptSession(int uniqueId, sp<DecryptHandle>& decryptHandle);
|
||||
|
||||
status_t initializeDecryptUnit(int uniqueId, DecryptHandle* decryptHandle,
|
||||
status_t initializeDecryptUnit(int uniqueId, sp<DecryptHandle>& decryptHandle,
|
||||
int decryptUnitId, const DrmBuffer* headerInfo);
|
||||
|
||||
status_t decrypt(int uniqueId, DecryptHandle* decryptHandle, int decryptUnitId,
|
||||
status_t decrypt(int uniqueId, sp<DecryptHandle>& decryptHandle, int decryptUnitId,
|
||||
const DrmBuffer* encBuffer, DrmBuffer** decBuffer, DrmBuffer* IV);
|
||||
|
||||
status_t finalizeDecryptUnit(int uniqueId, DecryptHandle* decryptHandle, int decryptUnitId);
|
||||
status_t finalizeDecryptUnit(int uniqueId, sp<DecryptHandle>& decryptHandle,
|
||||
int decryptUnitId);
|
||||
|
||||
ssize_t pread(int uniqueId, DecryptHandle* decryptHandle,
|
||||
ssize_t pread(int uniqueId, sp<DecryptHandle>& decryptHandle,
|
||||
void* buffer, ssize_t numBytes, off64_t offset);
|
||||
|
||||
void onInfo(const DrmInfoEvent& event);
|
||||
|
||||
@@ -206,7 +206,7 @@ int DrmManagerService::checkRightsStatus(
|
||||
}
|
||||
|
||||
status_t DrmManagerService::consumeRights(
|
||||
int uniqueId, DecryptHandle* decryptHandle, int action, bool reserve) {
|
||||
int uniqueId, sp<DecryptHandle>& decryptHandle, int action, bool reserve) {
|
||||
ALOGV("Entering consumeRights");
|
||||
if (!isProtectedCallAllowed(CONSUME_RIGHTS)) {
|
||||
return DRM_ERROR_NO_PERMISSION;
|
||||
@@ -215,7 +215,7 @@ status_t DrmManagerService::consumeRights(
|
||||
}
|
||||
|
||||
status_t DrmManagerService::setPlaybackStatus(
|
||||
int uniqueId, DecryptHandle* decryptHandle, int playbackStatus, int64_t position) {
|
||||
int uniqueId, sp<DecryptHandle>& decryptHandle, int playbackStatus, int64_t position) {
|
||||
ALOGV("Entering setPlaybackStatus");
|
||||
if (!isProtectedCallAllowed(SET_PLAYBACK_STATUS)) {
|
||||
return DRM_ERROR_NO_PERMISSION;
|
||||
@@ -262,7 +262,7 @@ status_t DrmManagerService::getAllSupportInfo(
|
||||
return mDrmManager->getAllSupportInfo(uniqueId, length, drmSupportInfoArray);
|
||||
}
|
||||
|
||||
DecryptHandle* DrmManagerService::openDecryptSession(
|
||||
sp<DecryptHandle> DrmManagerService::openDecryptSession(
|
||||
int uniqueId, int fd, off64_t offset, off64_t length, const char* mime) {
|
||||
ALOGV("Entering DrmManagerService::openDecryptSession");
|
||||
if (isProtectedCallAllowed(OPEN_DECRYPT_SESSION)) {
|
||||
@@ -272,7 +272,7 @@ DecryptHandle* DrmManagerService::openDecryptSession(
|
||||
return NULL;
|
||||
}
|
||||
|
||||
DecryptHandle* DrmManagerService::openDecryptSession(
|
||||
sp<DecryptHandle> DrmManagerService::openDecryptSession(
|
||||
int uniqueId, const char* uri, const char* mime) {
|
||||
ALOGV("Entering DrmManagerService::openDecryptSession with uri");
|
||||
if (isProtectedCallAllowed(OPEN_DECRYPT_SESSION)) {
|
||||
@@ -282,7 +282,7 @@ DecryptHandle* DrmManagerService::openDecryptSession(
|
||||
return NULL;
|
||||
}
|
||||
|
||||
DecryptHandle* DrmManagerService::openDecryptSession(
|
||||
sp<DecryptHandle> DrmManagerService::openDecryptSession(
|
||||
int uniqueId, const DrmBuffer& buf, const String8& mimeType) {
|
||||
ALOGV("Entering DrmManagerService::openDecryptSession for streaming");
|
||||
if (isProtectedCallAllowed(OPEN_DECRYPT_SESSION)) {
|
||||
@@ -292,7 +292,7 @@ DecryptHandle* DrmManagerService::openDecryptSession(
|
||||
return NULL;
|
||||
}
|
||||
|
||||
status_t DrmManagerService::closeDecryptSession(int uniqueId, DecryptHandle* decryptHandle) {
|
||||
status_t DrmManagerService::closeDecryptSession(int uniqueId, sp<DecryptHandle>& decryptHandle) {
|
||||
ALOGV("Entering closeDecryptSession");
|
||||
if (!isProtectedCallAllowed(CLOSE_DECRYPT_SESSION)) {
|
||||
return DRM_ERROR_NO_PERMISSION;
|
||||
@@ -300,7 +300,7 @@ status_t DrmManagerService::closeDecryptSession(int uniqueId, DecryptHandle* dec
|
||||
return mDrmManager->closeDecryptSession(uniqueId, decryptHandle);
|
||||
}
|
||||
|
||||
status_t DrmManagerService::initializeDecryptUnit(int uniqueId, DecryptHandle* decryptHandle,
|
||||
status_t DrmManagerService::initializeDecryptUnit(int uniqueId, sp<DecryptHandle>& decryptHandle,
|
||||
int decryptUnitId, const DrmBuffer* headerInfo) {
|
||||
ALOGV("Entering initializeDecryptUnit");
|
||||
if (!isProtectedCallAllowed(INITIALIZE_DECRYPT_UNIT)) {
|
||||
@@ -310,7 +310,7 @@ status_t DrmManagerService::initializeDecryptUnit(int uniqueId, DecryptHandle* d
|
||||
}
|
||||
|
||||
status_t DrmManagerService::decrypt(
|
||||
int uniqueId, DecryptHandle* decryptHandle, int decryptUnitId,
|
||||
int uniqueId, sp<DecryptHandle>& decryptHandle, int decryptUnitId,
|
||||
const DrmBuffer* encBuffer, DrmBuffer** decBuffer, DrmBuffer* IV) {
|
||||
ALOGV("Entering decrypt");
|
||||
if (!isProtectedCallAllowed(DECRYPT)) {
|
||||
@@ -320,7 +320,7 @@ status_t DrmManagerService::decrypt(
|
||||
}
|
||||
|
||||
status_t DrmManagerService::finalizeDecryptUnit(
|
||||
int uniqueId, DecryptHandle* decryptHandle, int decryptUnitId) {
|
||||
int uniqueId, sp<DecryptHandle>& decryptHandle, int decryptUnitId) {
|
||||
ALOGV("Entering finalizeDecryptUnit");
|
||||
if (!isProtectedCallAllowed(FINALIZE_DECRYPT_UNIT)) {
|
||||
return DRM_ERROR_NO_PERMISSION;
|
||||
@@ -328,7 +328,7 @@ status_t DrmManagerService::finalizeDecryptUnit(
|
||||
return mDrmManager->finalizeDecryptUnit(uniqueId, decryptHandle, decryptUnitId);
|
||||
}
|
||||
|
||||
ssize_t DrmManagerService::pread(int uniqueId, DecryptHandle* decryptHandle,
|
||||
ssize_t DrmManagerService::pread(int uniqueId, sp<DecryptHandle>& decryptHandle,
|
||||
void* buffer, ssize_t numBytes, off64_t offset) {
|
||||
ALOGV("Entering pread");
|
||||
if (!isProtectedCallAllowed(PREAD)) {
|
||||
|
||||
@@ -95,10 +95,11 @@ public:
|
||||
|
||||
int checkRightsStatus(int uniqueId, const String8& path,int action);
|
||||
|
||||
status_t consumeRights(int uniqueId, DecryptHandle* decryptHandle, int action, bool reserve);
|
||||
status_t consumeRights(int uniqueId, sp<DecryptHandle>& decryptHandle, int action,
|
||||
bool reserve);
|
||||
|
||||
status_t setPlaybackStatus(
|
||||
int uniqueId, DecryptHandle* decryptHandle, int playbackStatus, int64_t position);
|
||||
int uniqueId, sp<DecryptHandle>& decryptHandle, int playbackStatus, int64_t position);
|
||||
|
||||
bool validateAction(int uniqueId, const String8& path,
|
||||
int action, const ActionDescription& description);
|
||||
@@ -115,26 +116,27 @@ public:
|
||||
|
||||
status_t getAllSupportInfo(int uniqueId, int* length, DrmSupportInfo** drmSupportInfoArray);
|
||||
|
||||
DecryptHandle* openDecryptSession(
|
||||
sp<DecryptHandle> openDecryptSession(
|
||||
int uniqueId, int fd, off64_t offset, off64_t length, const char *mime);
|
||||
|
||||
DecryptHandle* openDecryptSession(
|
||||
sp<DecryptHandle> openDecryptSession(
|
||||
int uniqueId, const char* uri, const char* mime);
|
||||
|
||||
DecryptHandle* openDecryptSession(int uniqueId, const DrmBuffer& buf,
|
||||
sp<DecryptHandle> openDecryptSession(int uniqueId, const DrmBuffer& buf,
|
||||
const String8& mimeType);
|
||||
|
||||
status_t closeDecryptSession(int uniqueId, DecryptHandle* decryptHandle);
|
||||
status_t closeDecryptSession(int uniqueId, sp<DecryptHandle>& decryptHandle);
|
||||
|
||||
status_t initializeDecryptUnit(int uniqueId, DecryptHandle* decryptHandle,
|
||||
status_t initializeDecryptUnit(int uniqueId, sp<DecryptHandle>& decryptHandle,
|
||||
int decryptUnitId, const DrmBuffer* headerInfo);
|
||||
|
||||
status_t decrypt(int uniqueId, DecryptHandle* decryptHandle, int decryptUnitId,
|
||||
status_t decrypt(int uniqueId, sp<DecryptHandle>& decryptHandle, int decryptUnitId,
|
||||
const DrmBuffer* encBuffer, DrmBuffer** decBuffer, DrmBuffer* IV);
|
||||
|
||||
status_t finalizeDecryptUnit(int uniqueId, DecryptHandle* decryptHandle, int decryptUnitId);
|
||||
status_t finalizeDecryptUnit(int uniqueId, sp<DecryptHandle>& decryptHandle,
|
||||
int decryptUnitId);
|
||||
|
||||
ssize_t pread(int uniqueId, DecryptHandle* decryptHandle,
|
||||
ssize_t pread(int uniqueId, sp<DecryptHandle>& decryptHandle,
|
||||
void* buffer, ssize_t numBytes, off64_t offset);
|
||||
|
||||
virtual status_t dump(int fd, const Vector<String16>& args);
|
||||
|
||||
@@ -183,7 +183,7 @@ status_t DrmManagerClientImpl::consumeRights(
|
||||
status_t status = DRM_ERROR_UNKNOWN;
|
||||
if (NULL != decryptHandle.get()) {
|
||||
status = getDrmManagerService()->consumeRights(
|
||||
uniqueId, decryptHandle.get(), action, reserve);
|
||||
uniqueId, decryptHandle, action, reserve);
|
||||
}
|
||||
return status;
|
||||
}
|
||||
@@ -194,7 +194,7 @@ status_t DrmManagerClientImpl::setPlaybackStatus(
|
||||
status_t status = DRM_ERROR_UNKNOWN;
|
||||
if (NULL != decryptHandle.get()) {
|
||||
status = getDrmManagerService()->setPlaybackStatus(
|
||||
uniqueId, decryptHandle.get(), playbackStatus, position);
|
||||
uniqueId, decryptHandle, playbackStatus, position);
|
||||
}
|
||||
return status;
|
||||
}
|
||||
@@ -267,7 +267,7 @@ sp<DecryptHandle> DrmManagerClientImpl::openDecryptSession(
|
||||
sp<DecryptHandle> DrmManagerClientImpl::openDecryptSession(
|
||||
int uniqueId, const char* uri, const char* mime) {
|
||||
|
||||
DecryptHandle* handle = NULL;
|
||||
sp<DecryptHandle> handle;
|
||||
if (NULL != uri) {
|
||||
handle = getDrmManagerService()->openDecryptSession(uniqueId, uri, mime);
|
||||
}
|
||||
@@ -284,7 +284,7 @@ status_t DrmManagerClientImpl::closeDecryptSession(
|
||||
status_t status = DRM_ERROR_UNKNOWN;
|
||||
if (NULL != decryptHandle.get()) {
|
||||
status = getDrmManagerService()->closeDecryptSession(
|
||||
uniqueId, decryptHandle.get());
|
||||
uniqueId, decryptHandle);
|
||||
}
|
||||
return status;
|
||||
}
|
||||
@@ -295,7 +295,7 @@ status_t DrmManagerClientImpl::initializeDecryptUnit(
|
||||
status_t status = DRM_ERROR_UNKNOWN;
|
||||
if ((NULL != decryptHandle.get()) && (NULL != headerInfo)) {
|
||||
status = getDrmManagerService()->initializeDecryptUnit(
|
||||
uniqueId, decryptHandle.get(), decryptUnitId, headerInfo);
|
||||
uniqueId, decryptHandle, decryptUnitId, headerInfo);
|
||||
}
|
||||
return status;
|
||||
}
|
||||
@@ -308,7 +308,7 @@ status_t DrmManagerClientImpl::decrypt(
|
||||
if ((NULL != decryptHandle.get()) && (NULL != encBuffer)
|
||||
&& (NULL != decBuffer) && (NULL != *decBuffer)) {
|
||||
status = getDrmManagerService()->decrypt(
|
||||
uniqueId, decryptHandle.get(), decryptUnitId,
|
||||
uniqueId, decryptHandle, decryptUnitId,
|
||||
encBuffer, decBuffer, IV);
|
||||
}
|
||||
return status;
|
||||
@@ -319,7 +319,7 @@ status_t DrmManagerClientImpl::finalizeDecryptUnit(
|
||||
status_t status = DRM_ERROR_UNKNOWN;
|
||||
if (NULL != decryptHandle.get()) {
|
||||
status = getDrmManagerService()->finalizeDecryptUnit(
|
||||
uniqueId, decryptHandle.get(), decryptUnitId);
|
||||
uniqueId, decryptHandle, decryptUnitId);
|
||||
}
|
||||
return status;
|
||||
}
|
||||
@@ -329,7 +329,7 @@ ssize_t DrmManagerClientImpl::pread(int uniqueId, sp<DecryptHandle> &decryptHand
|
||||
ssize_t retCode = INVALID_VALUE;
|
||||
if ((NULL != decryptHandle.get()) && (NULL != buffer) && (0 < numBytes)) {
|
||||
retCode = getDrmManagerService()->pread(
|
||||
uniqueId, decryptHandle.get(), buffer, numBytes, offset);
|
||||
uniqueId, decryptHandle, buffer, numBytes, offset);
|
||||
}
|
||||
return retCode;
|
||||
}
|
||||
|
||||
@@ -198,7 +198,7 @@ int onCheckRightsStatus(int uniqueId,
|
||||
* Returns DRM_NO_ERROR for success, DRM_ERROR_UNKNOWN for failure
|
||||
*/
|
||||
status_t onConsumeRights(int uniqueId,
|
||||
DecryptHandle* decryptHandle,
|
||||
sp<DecryptHandle>& decryptHandle,
|
||||
int action,
|
||||
bool reserve);
|
||||
|
||||
@@ -215,12 +215,12 @@ status_t onConsumeRights(int uniqueId,
|
||||
*/
|
||||
#ifdef USE_64BIT_DRM_API
|
||||
status_t onSetPlaybackStatus(int uniqueId,
|
||||
DecryptHandle* decryptHandle,
|
||||
sp<DecryptHandle>& decryptHandle,
|
||||
int playbackStatus,
|
||||
int64_t position);
|
||||
#else
|
||||
status_t onSetPlaybackStatus(int uniqueId,
|
||||
DecryptHandle* decryptHandle,
|
||||
sp<DecryptHandle>& decryptHandle,
|
||||
int playbackStatus,
|
||||
int position);
|
||||
#endif
|
||||
@@ -330,11 +330,11 @@ DrmSupportInfo* onGetSupportInfo(int uniqueId);
|
||||
*/
|
||||
#ifdef USE_64BIT_DRM_API
|
||||
status_t onOpenDecryptSession(int uniqueId,
|
||||
DecryptHandle* decryptHandle,
|
||||
sp<DecryptHandle>& decryptHandle,
|
||||
int fd, off64_t offset, off64_t length);
|
||||
#else
|
||||
status_t onOpenDecryptSession(int uniqueId,
|
||||
DecryptHandle* decryptHandle,
|
||||
sp<DecryptHandle>& decryptHandle,
|
||||
int fd, int offset, int length);
|
||||
#endif
|
||||
|
||||
@@ -348,7 +348,7 @@ status_t onOpenDecryptSession(int uniqueId,
|
||||
* DRM_ERROR_CANNOT_HANDLE for failure and DRM_NO_ERROR for success
|
||||
*/
|
||||
status_t onOpenDecryptSession(int uniqueId,
|
||||
DecryptHandle* decryptHandle,
|
||||
sp<DecryptHandle>& decryptHandle,
|
||||
const char* uri);
|
||||
|
||||
/**
|
||||
@@ -360,7 +360,7 @@ status_t onOpenDecryptSession(int uniqueId,
|
||||
* Returns DRM_NO_ERROR for success, DRM_ERROR_UNKNOWN for failure
|
||||
*/
|
||||
status_t onCloseDecryptSession(int uniqueId,
|
||||
DecryptHandle* decryptHandle);
|
||||
sp<DecryptHandle>& decryptHandle);
|
||||
|
||||
/**
|
||||
* Initialize decryption for the given unit of the protected content.
|
||||
@@ -373,7 +373,7 @@ status_t onCloseDecryptSession(int uniqueId,
|
||||
* DRM_ERROR_CANNOT_HANDLE for failure and DRM_NO_ERROR for success
|
||||
*/
|
||||
status_t onInitializeDecryptUnit(int uniqueId,
|
||||
DecryptHandle* decryptHandle,
|
||||
sp<DecryptHandle>& decryptHandle,
|
||||
int decryptUnitId,
|
||||
const DrmBuffer* headerInfo);
|
||||
|
||||
@@ -394,7 +394,7 @@ status_t onInitializeDecryptUnit(int uniqueId,
|
||||
* DRM_ERROR_DECRYPT for failure.
|
||||
*/
|
||||
status_t onDecrypt(int uniqueId,
|
||||
DecryptHandle* decryptHandle,
|
||||
sp<DecryptHandle>& decryptHandle,
|
||||
int decryptUnitId,
|
||||
const DrmBuffer* encBuffer,
|
||||
DrmBuffer** decBuffer);
|
||||
@@ -416,7 +416,7 @@ status_t onDecrypt(int uniqueId,
|
||||
* DRM_ERROR_SESSION_NOT_OPENED, DRM_ERROR_DECRYPT_UNIT_NOT_INITIALIZED,
|
||||
* DRM_ERROR_DECRYPT for failure.
|
||||
*/
|
||||
status_t onDecrypt(int uniqueId, DecryptHandle* decryptHandle,
|
||||
status_t onDecrypt(int uniqueId, sp<DecryptHandle>& decryptHandle,
|
||||
int decryptUnitId, const DrmBuffer* encBuffer,
|
||||
DrmBuffer** decBuffer, DrmBuffer* IV);
|
||||
|
||||
@@ -430,7 +430,7 @@ status_t onDecrypt(int uniqueId, DecryptHandle* decryptHandle,
|
||||
* DRM_ERROR_CANNOT_HANDLE for failure and DRM_NO_ERROR for success
|
||||
*/
|
||||
status_t onFinalizeDecryptUnit(int uniqueId,
|
||||
DecryptHandle* decryptHandle,
|
||||
sp<DecryptHandle>& decryptHandle,
|
||||
int decryptUnitId);
|
||||
|
||||
/**
|
||||
@@ -445,7 +445,7 @@ status_t onFinalizeDecryptUnit(int uniqueId,
|
||||
* @retval -1 Failure.
|
||||
*/
|
||||
ssize_t onRead(int uniqueId,
|
||||
DecryptHandle* decryptHandle,
|
||||
sp<DecryptHandle>& decryptHandle,
|
||||
void* pBuffer,
|
||||
int numBytes);
|
||||
|
||||
@@ -463,12 +463,12 @@ ssize_t onRead(int uniqueId,
|
||||
*/
|
||||
#ifdef USE_64BIT_DRM_API
|
||||
off64_t onLseek(int uniqueId,
|
||||
DecryptHandle* decryptHandle,
|
||||
sp<DecryptHandle>& decryptHandle,
|
||||
off64_t offset,
|
||||
int whence);
|
||||
#else
|
||||
off_t onLseek(int uniqueId,
|
||||
DecryptHandle* decryptHandle,
|
||||
sp<DecryptHandle>& decryptHandle,
|
||||
off_t offset,
|
||||
int whence);
|
||||
#endif
|
||||
@@ -486,13 +486,13 @@ off_t onLseek(int uniqueId,
|
||||
*/
|
||||
#ifdef USE_64BIT_DRM_API
|
||||
ssize_t onPread(int uniqueId,
|
||||
DecryptHandle* decryptHandle,
|
||||
sp<DecryptHandle>& decryptHandle,
|
||||
void* buffer,
|
||||
ssize_t numBytes,
|
||||
off64_t offset);
|
||||
#else
|
||||
ssize_t onPread(int uniqueId,
|
||||
DecryptHandle* decryptHandle,
|
||||
sp<DecryptHandle>& decryptHandle,
|
||||
void* buffer,
|
||||
ssize_t numBytes,
|
||||
off_t offset);
|
||||
|
||||
@@ -294,7 +294,7 @@ int FwdLockEngine::onCheckRightsStatus(int uniqueId,
|
||||
}
|
||||
|
||||
status_t FwdLockEngine::onConsumeRights(int /* uniqueId */,
|
||||
DecryptHandle* /* decryptHandle */,
|
||||
sp<DecryptHandle>& /* decryptHandle */,
|
||||
int /* action */,
|
||||
bool /* reserve */) {
|
||||
// No rights consumption
|
||||
@@ -372,11 +372,13 @@ status_t FwdLockEngine::onRemoveAllRights(int /* uniqueId */) {
|
||||
}
|
||||
|
||||
#ifdef USE_64BIT_DRM_API
|
||||
status_t FwdLockEngine::onSetPlaybackStatus(int /* uniqueId */, DecryptHandle* /* decryptHandle */,
|
||||
int /* playbackStatus */, int64_t /* position */) {
|
||||
status_t FwdLockEngine::onSetPlaybackStatus(int /* uniqueId */,
|
||||
sp<DecryptHandle>& /* decryptHandle */, int /* playbackStatus */,
|
||||
int64_t /* position */) {
|
||||
#else
|
||||
status_t FwdLockEngine::onSetPlaybackStatus(int /* uniqueId */, DecryptHandle* /* decryptHandle */,
|
||||
int /* playbackStatus */, int /* position */) {
|
||||
status_t FwdLockEngine::onSetPlaybackStatus(int /* uniqueId */,
|
||||
sp<DecryptHandle>& /* decryptHandle */,
|
||||
int /* playbackStatus */, int /* position */) {
|
||||
#endif
|
||||
// Not used
|
||||
LOG_VERBOSE("FwdLockEngine::onSetPlaybackStatus");
|
||||
@@ -470,13 +472,13 @@ DrmConvertedStatus* FwdLockEngine::onCloseConvertSession(int /* uniqueId */,
|
||||
|
||||
#ifdef USE_64BIT_DRM_API
|
||||
status_t FwdLockEngine::onOpenDecryptSession(int /* uniqueId */,
|
||||
DecryptHandle* decryptHandle,
|
||||
sp<DecryptHandle>& decryptHandle,
|
||||
int fd,
|
||||
off64_t offset,
|
||||
off64_t /* length */) {
|
||||
#else
|
||||
status_t FwdLockEngine::onOpenDecryptSession(int /* uniqueId */,
|
||||
DecryptHandle* decryptHandle,
|
||||
sp<DecryptHandle>& decryptHandle,
|
||||
int fd,
|
||||
int offset,
|
||||
int /* length */) {
|
||||
@@ -487,7 +489,7 @@ status_t FwdLockEngine::onOpenDecryptSession(int /* uniqueId */,
|
||||
LOG_VERBOSE("FwdLockEngine::onOpenDecryptSession");
|
||||
|
||||
if ((-1 < fd) &&
|
||||
(NULL != decryptHandle) &&
|
||||
(NULL != decryptHandle.get()) &&
|
||||
(!decodeSessionMap.isCreated(decryptHandle->decryptId))) {
|
||||
fileDesc = dup(fd);
|
||||
} else {
|
||||
@@ -533,12 +535,12 @@ status_t FwdLockEngine::onOpenDecryptSession(int /* uniqueId */,
|
||||
}
|
||||
|
||||
status_t FwdLockEngine::onOpenDecryptSession(int uniqueId,
|
||||
DecryptHandle* decryptHandle,
|
||||
sp<DecryptHandle>& decryptHandle,
|
||||
const char* uri) {
|
||||
status_t result = DRM_ERROR_CANNOT_HANDLE;
|
||||
const char fileTag [] = "file://";
|
||||
|
||||
if (NULL != decryptHandle && NULL != uri && strlen(uri) > sizeof(fileTag)) {
|
||||
if (NULL != decryptHandle.get() && NULL != uri && strlen(uri) > sizeof(fileTag)) {
|
||||
String8 uriTag = String8(uri);
|
||||
uriTag.toLower();
|
||||
|
||||
@@ -562,11 +564,11 @@ status_t FwdLockEngine::onOpenDecryptSession(int uniqueId,
|
||||
}
|
||||
|
||||
status_t FwdLockEngine::onCloseDecryptSession(int /* uniqueId */,
|
||||
DecryptHandle* decryptHandle) {
|
||||
sp<DecryptHandle>& decryptHandle) {
|
||||
status_t result = DRM_ERROR_UNKNOWN;
|
||||
LOG_VERBOSE("FwdLockEngine::onCloseDecryptSession");
|
||||
|
||||
if (NULL != decryptHandle && decodeSessionMap.isCreated(decryptHandle->decryptId)) {
|
||||
if (NULL != decryptHandle.get() && decodeSessionMap.isCreated(decryptHandle->decryptId)) {
|
||||
DecodeSession* session = decodeSessionMap.getValue(decryptHandle->decryptId);
|
||||
if (NULL != session && session->fileDesc > -1) {
|
||||
FwdLockFile_detach(session->fileDesc);
|
||||
@@ -576,7 +578,7 @@ status_t FwdLockEngine::onCloseDecryptSession(int /* uniqueId */,
|
||||
}
|
||||
}
|
||||
|
||||
if (NULL != decryptHandle) {
|
||||
if (NULL != decryptHandle.get()) {
|
||||
if (NULL != decryptHandle->decryptInfo) {
|
||||
delete decryptHandle->decryptInfo;
|
||||
decryptHandle->decryptInfo = NULL;
|
||||
@@ -584,9 +586,7 @@ status_t FwdLockEngine::onCloseDecryptSession(int /* uniqueId */,
|
||||
|
||||
decryptHandle->copyControlVector.clear();
|
||||
decryptHandle->extendedData.clear();
|
||||
|
||||
delete decryptHandle;
|
||||
decryptHandle = NULL;
|
||||
decryptHandle.clear();
|
||||
}
|
||||
|
||||
LOG_VERBOSE("FwdLockEngine::onCloseDecryptSession Exit");
|
||||
@@ -594,7 +594,7 @@ status_t FwdLockEngine::onCloseDecryptSession(int /* uniqueId */,
|
||||
}
|
||||
|
||||
status_t FwdLockEngine::onInitializeDecryptUnit(int /* uniqueId */,
|
||||
DecryptHandle* /* decryptHandle */,
|
||||
sp<DecryptHandle>& /* decryptHandle */,
|
||||
int /* decryptUnitId */,
|
||||
const DrmBuffer* /* headerInfo */) {
|
||||
ALOGE("FwdLockEngine::onInitializeDecryptUnit is not supported for this DRM scheme");
|
||||
@@ -603,7 +603,7 @@ status_t FwdLockEngine::onInitializeDecryptUnit(int /* uniqueId */,
|
||||
|
||||
status_t FwdLockEngine::onDecrypt(
|
||||
int /* uniqueId */,
|
||||
DecryptHandle* /* decryptHandle */,
|
||||
sp<DecryptHandle>& /* decryptHandle */,
|
||||
int /* decryptUnitId */,
|
||||
const DrmBuffer* /* encBuffer */,
|
||||
DrmBuffer** /* decBuffer */,
|
||||
@@ -613,7 +613,7 @@ status_t FwdLockEngine::onDecrypt(
|
||||
}
|
||||
|
||||
status_t FwdLockEngine::onDecrypt(int /* uniqueId */,
|
||||
DecryptHandle* /* decryptHandle */,
|
||||
sp<DecryptHandle>& /* decryptHandle */,
|
||||
int /* decryptUnitId */,
|
||||
const DrmBuffer* /* encBuffer */,
|
||||
DrmBuffer** /* decBuffer */) {
|
||||
@@ -622,19 +622,19 @@ status_t FwdLockEngine::onDecrypt(int /* uniqueId */,
|
||||
}
|
||||
|
||||
status_t FwdLockEngine::onFinalizeDecryptUnit(int /* uniqueId */,
|
||||
DecryptHandle* /* decryptHandle */,
|
||||
sp<DecryptHandle>& /* decryptHandle */,
|
||||
int /* decryptUnitId */) {
|
||||
ALOGE("FwdLockEngine::onFinalizeDecryptUnit is not supported for this DRM scheme");
|
||||
return DRM_ERROR_UNKNOWN;
|
||||
}
|
||||
|
||||
ssize_t FwdLockEngine::onRead(int /* uniqueId */,
|
||||
DecryptHandle* decryptHandle,
|
||||
sp<DecryptHandle>& decryptHandle,
|
||||
void* buffer,
|
||||
int numBytes) {
|
||||
ssize_t size = -1;
|
||||
|
||||
if (NULL != decryptHandle &&
|
||||
if (NULL != decryptHandle.get() &&
|
||||
decodeSessionMap.isCreated(decryptHandle->decryptId) &&
|
||||
NULL != buffer &&
|
||||
numBytes > -1) {
|
||||
@@ -654,15 +654,15 @@ ssize_t FwdLockEngine::onRead(int /* uniqueId */,
|
||||
}
|
||||
|
||||
#ifdef USE_64BIT_DRM_API
|
||||
off64_t FwdLockEngine::onLseek(int /* uniqueId */, DecryptHandle* decryptHandle,
|
||||
off64_t FwdLockEngine::onLseek(int /* uniqueId */, sp<DecryptHandle>& decryptHandle,
|
||||
off64_t offset, int whence) {
|
||||
#else
|
||||
off_t FwdLockEngine::onLseek(int /* uniqueId */, DecryptHandle* decryptHandle,
|
||||
off_t FwdLockEngine::onLseek(int /* uniqueId */, sp<DecryptHandle>& decryptHandle,
|
||||
off_t offset, int whence) {
|
||||
#endif
|
||||
off_t offval = -1;
|
||||
|
||||
if (NULL != decryptHandle && decodeSessionMap.isCreated(decryptHandle->decryptId)) {
|
||||
if (NULL != decryptHandle.get() && decodeSessionMap.isCreated(decryptHandle->decryptId)) {
|
||||
DecodeSession* session = decodeSessionMap.getValue(decryptHandle->decryptId);
|
||||
if (NULL != session && session->fileDesc > -1) {
|
||||
offval = FwdLockFile_lseek(session->fileDesc, offset, whence);
|
||||
@@ -675,13 +675,13 @@ off_t FwdLockEngine::onLseek(int /* uniqueId */, DecryptHandle* decryptHandle,
|
||||
|
||||
#ifdef USE_64BIT_DRM_API
|
||||
ssize_t FwdLockEngine::onPread(int uniqueId,
|
||||
DecryptHandle* decryptHandle,
|
||||
sp<DecryptHandle>& decryptHandle,
|
||||
void* buffer,
|
||||
ssize_t numBytes,
|
||||
off64_t offset) {
|
||||
#else
|
||||
ssize_t FwdLockEngine::onPread(int uniqueId,
|
||||
DecryptHandle* decryptHandle,
|
||||
sp<DecryptHandle>& decryptHandle,
|
||||
void* buffer,
|
||||
ssize_t numBytes,
|
||||
off_t offset) {
|
||||
@@ -690,7 +690,7 @@ ssize_t FwdLockEngine::onPread(int uniqueId,
|
||||
|
||||
DecodeSession* decoderSession = NULL;
|
||||
|
||||
if ((NULL != decryptHandle) &&
|
||||
if ((NULL != decryptHandle.get()) &&
|
||||
(NULL != (decoderSession = decodeSessionMap.getValue(decryptHandle->decryptId))) &&
|
||||
(NULL != buffer) &&
|
||||
(numBytes > -1) &&
|
||||
|
||||
@@ -53,10 +53,11 @@ protected:
|
||||
|
||||
int onCheckRightsStatus(int uniqueId, const String8& path, int action);
|
||||
|
||||
status_t onConsumeRights(int uniqueId, DecryptHandle* decryptHandle, int action, bool reserve);
|
||||
status_t onConsumeRights(int uniqueId, sp<DecryptHandle>& decryptHandle,
|
||||
int action, bool reserve);
|
||||
|
||||
status_t onSetPlaybackStatus(
|
||||
int uniqueId, DecryptHandle* decryptHandle, int playbackStatus, int64_t position);
|
||||
int uniqueId, sp<DecryptHandle>& decryptHandle, int playbackStatus, int64_t position);
|
||||
|
||||
bool onValidateAction(
|
||||
int uniqueId, const String8& path, int action, const ActionDescription& description);
|
||||
@@ -74,26 +75,25 @@ protected:
|
||||
DrmSupportInfo* onGetSupportInfo(int uniqueId);
|
||||
|
||||
status_t onOpenDecryptSession(
|
||||
int uniqueId, DecryptHandle* decryptHandle, int fd, off64_t offset, off64_t length);
|
||||
int uniqueId, sp<DecryptHandle>& decryptHandle, int fd, off64_t offset,
|
||||
off64_t length);
|
||||
|
||||
status_t onOpenDecryptSession(
|
||||
int uniqueId, DecryptHandle* decryptHandle, const char* uri);
|
||||
int uniqueId, sp<DecryptHandle>& decryptHandle, const char* uri);
|
||||
|
||||
status_t onCloseDecryptSession(int uniqueId, DecryptHandle* decryptHandle);
|
||||
status_t onCloseDecryptSession(int uniqueId, sp<DecryptHandle>& decryptHandle);
|
||||
|
||||
status_t onInitializeDecryptUnit(int uniqueId, DecryptHandle* decryptHandle,
|
||||
status_t onInitializeDecryptUnit(int uniqueId, sp<DecryptHandle>& decryptHandle,
|
||||
int decryptUnitId, const DrmBuffer* headerInfo);
|
||||
|
||||
status_t onDecrypt(int uniqueId, DecryptHandle* decryptHandle, int decryptUnitId,
|
||||
status_t onDecrypt(int uniqueId, sp<DecryptHandle>& decryptHandle, int decryptUnitId,
|
||||
const DrmBuffer* encBuffer, DrmBuffer** decBuffer, DrmBuffer* IV);
|
||||
|
||||
status_t onFinalizeDecryptUnit(int uniqueId, DecryptHandle* decryptHandle, int decryptUnitId);
|
||||
status_t onFinalizeDecryptUnit(int uniqueId, sp<DecryptHandle>& decryptHandle,
|
||||
int decryptUnitId);
|
||||
|
||||
ssize_t onPread(int uniqueId, DecryptHandle* decryptHandle,
|
||||
ssize_t onPread(int uniqueId, sp<DecryptHandle>& decryptHandle,
|
||||
void* buffer, ssize_t numBytes, off64_t offset);
|
||||
|
||||
private:
|
||||
DecryptHandle* openDecryptSessionImpl();
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
@@ -183,13 +183,13 @@ int DrmPassthruPlugIn::onCheckRightsStatus(int uniqueId, const String8& /*path*/
|
||||
}
|
||||
|
||||
status_t DrmPassthruPlugIn::onConsumeRights(int uniqueId,
|
||||
DecryptHandle* /*decryptHandle*/, int /*action*/, bool /*reserve*/) {
|
||||
sp<DecryptHandle>& /*decryptHandle*/, int /*action*/, bool /*reserve*/) {
|
||||
ALOGV("DrmPassthruPlugIn::onConsumeRights() : %d", uniqueId);
|
||||
return DRM_NO_ERROR;
|
||||
}
|
||||
|
||||
status_t DrmPassthruPlugIn::onSetPlaybackStatus(int uniqueId,
|
||||
DecryptHandle* /*decryptHandle*/, int /*playbackStatus*/, int64_t /*position*/) {
|
||||
sp<DecryptHandle>& /*decryptHandle*/, int /*playbackStatus*/, int64_t /*position*/) {
|
||||
ALOGV("DrmPassthruPlugIn::onSetPlaybackStatus() : %d", uniqueId);
|
||||
return DRM_NO_ERROR;
|
||||
}
|
||||
@@ -236,7 +236,8 @@ DrmConvertedStatus* DrmPassthruPlugIn::onCloseConvertSession(int uniqueId, int /
|
||||
}
|
||||
|
||||
status_t DrmPassthruPlugIn::onOpenDecryptSession(
|
||||
int uniqueId, DecryptHandle* decryptHandle, int /*fd*/, off64_t /*offset*/, off64_t /*length*/) {
|
||||
int uniqueId, sp<DecryptHandle>& decryptHandle, int /*fd*/, off64_t /*offset*/,
|
||||
off64_t /*length*/) {
|
||||
ALOGV("DrmPassthruPlugIn::onOpenDecryptSession() : %d", uniqueId);
|
||||
|
||||
#ifdef ENABLE_PASSTHRU_DECRYPTION
|
||||
@@ -246,36 +247,38 @@ status_t DrmPassthruPlugIn::onOpenDecryptSession(
|
||||
decryptHandle->decryptInfo = NULL;
|
||||
return DRM_NO_ERROR;
|
||||
#else
|
||||
(void)(decryptHandle); // unused
|
||||
(void)(decryptHandle.get()); // unused
|
||||
#endif
|
||||
|
||||
return DRM_ERROR_CANNOT_HANDLE;
|
||||
}
|
||||
|
||||
status_t DrmPassthruPlugIn::onOpenDecryptSession(
|
||||
int /*uniqueId*/, DecryptHandle* /*decryptHandle*/, const char* /*uri*/) {
|
||||
int /*uniqueId*/, sp<DecryptHandle>& /*decryptHandle*/, const char* /*uri*/) {
|
||||
return DRM_ERROR_CANNOT_HANDLE;
|
||||
}
|
||||
|
||||
status_t DrmPassthruPlugIn::onCloseDecryptSession(int uniqueId, DecryptHandle* decryptHandle) {
|
||||
status_t DrmPassthruPlugIn::onCloseDecryptSession(int uniqueId, sp<DecryptHandle>& decryptHandle) {
|
||||
ALOGV("DrmPassthruPlugIn::onCloseDecryptSession() : %d", uniqueId);
|
||||
if (NULL != decryptHandle) {
|
||||
if (NULL != decryptHandle.get()) {
|
||||
if (NULL != decryptHandle->decryptInfo) {
|
||||
delete decryptHandle->decryptInfo; decryptHandle->decryptInfo = NULL;
|
||||
}
|
||||
delete decryptHandle; decryptHandle = NULL;
|
||||
decryptHandle.clear();
|
||||
}
|
||||
return DRM_NO_ERROR;
|
||||
}
|
||||
|
||||
status_t DrmPassthruPlugIn::onInitializeDecryptUnit(int uniqueId, DecryptHandle* /*decryptHandle*/,
|
||||
int /*decryptUnitId*/, const DrmBuffer* /*headerInfo*/) {
|
||||
status_t DrmPassthruPlugIn::onInitializeDecryptUnit(int uniqueId,
|
||||
sp<DecryptHandle>& /*decryptHandle*/,
|
||||
int /*decryptUnitId*/, const DrmBuffer* /*headerInfo*/) {
|
||||
ALOGV("DrmPassthruPlugIn::onInitializeDecryptUnit() : %d", uniqueId);
|
||||
return DRM_NO_ERROR;
|
||||
}
|
||||
|
||||
status_t DrmPassthruPlugIn::onDecrypt(int uniqueId, DecryptHandle* /*decryptHandle*/,
|
||||
int /*decryptUnitId*/, const DrmBuffer* encBuffer, DrmBuffer** decBuffer, DrmBuffer* /*IV*/) {
|
||||
status_t DrmPassthruPlugIn::onDecrypt(int uniqueId, sp<DecryptHandle>& /*decryptHandle*/,
|
||||
int /*decryptUnitId*/, const DrmBuffer* encBuffer, DrmBuffer** decBuffer,
|
||||
DrmBuffer* /*IV*/) {
|
||||
ALOGV("DrmPassthruPlugIn::onDecrypt() : %d", uniqueId);
|
||||
/**
|
||||
* As a workaround implementation passthru would copy the given
|
||||
@@ -296,12 +299,12 @@ status_t DrmPassthruPlugIn::onDecrypt(int uniqueId, DecryptHandle* /*decryptHand
|
||||
}
|
||||
|
||||
status_t DrmPassthruPlugIn::onFinalizeDecryptUnit(
|
||||
int uniqueId, DecryptHandle* /*decryptHandle*/, int /*decryptUnitId*/) {
|
||||
int uniqueId, sp<DecryptHandle>& /*decryptHandle*/, int /*decryptUnitId*/) {
|
||||
ALOGV("DrmPassthruPlugIn::onFinalizeDecryptUnit() : %d", uniqueId);
|
||||
return DRM_NO_ERROR;
|
||||
}
|
||||
|
||||
ssize_t DrmPassthruPlugIn::onPread(int uniqueId, DecryptHandle* /*decryptHandle*/,
|
||||
ssize_t DrmPassthruPlugIn::onPread(int uniqueId, sp<DecryptHandle>& /*decryptHandle*/,
|
||||
void* /*buffer*/, ssize_t /*numBytes*/, off64_t /*offset*/) {
|
||||
ALOGV("DrmPassthruPlugIn::onPread() : %d", uniqueId);
|
||||
return 0;
|
||||
|
||||
Reference in New Issue
Block a user