diff --git a/drm/common/DrmEngineBase.cpp b/drm/common/DrmEngineBase.cpp index f734905b78..aec5959d82 100644 --- a/drm/common/DrmEngineBase.cpp +++ b/drm/common/DrmEngineBase.cpp @@ -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, 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, 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, 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, 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, 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) { return onCloseDecryptSession(uniqueId, decryptHandle); } status_t DrmEngineBase::initializeDecryptUnit( - int uniqueId, DecryptHandle* decryptHandle, int decryptUnitId, const DrmBuffer* headerInfo) { + int uniqueId, sp& 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, 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, 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, void* buffer, ssize_t numBytes, off64_t offset) { return onPread(uniqueId, decryptHandle, buffer, numBytes, offset); } diff --git a/drm/common/IDrmManagerService.cpp b/drm/common/IDrmManagerService.cpp index 44f98dd3ce..a6d33b0fa4 100644 --- a/drm/common/IDrmManagerService.cpp +++ b/drm/common/IDrmManagerService.cpp @@ -39,7 +39,7 @@ using namespace android; static void writeDecryptHandleToParcelData( - const DecryptHandle* handle, Parcel* data) { + const sp& 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& 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 &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, 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, 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 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 handle; if (0 != reply.dataAvail()) { handle = new DecryptHandle(); readDecryptHandleFromParcelData(handle, reply); @@ -629,7 +629,7 @@ DecryptHandle* BpDrmManagerService::openDecryptSession( return handle; } -DecryptHandle* BpDrmManagerService::openDecryptSession( +sp 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 handle; if (0 != reply.dataAvail()) { handle = new DecryptHandle(); readDecryptHandleFromParcelData(handle, reply); @@ -656,7 +656,7 @@ DecryptHandle* BpDrmManagerService::openDecryptSession( return handle; } -DecryptHandle* BpDrmManagerService::openDecryptSession( +sp 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 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) { 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, 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, 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, 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, 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 handle = new DecryptHandle(); + readDecryptHandleFromParcelData(handle, data); const int action = data.readInt32(); const bool reserve = static_cast(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 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 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 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 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 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 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 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 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 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; } diff --git a/drm/common/include/DrmEngineBase.h b/drm/common/include/DrmEngineBase.h index 417107f1bd..73f11a4d2b 100644 --- a/drm/common/include/DrmEngineBase.h +++ b/drm/common/include/DrmEngineBase.h @@ -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, int action, + bool reserve); status_t setPlaybackStatus( - int uniqueId, DecryptHandle* decryptHandle, int playbackStatus, int64_t position); + int uniqueId, sp& 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, int fd, off64_t offset, off64_t length, const char* mime); status_t openDecryptSession( - int uniqueId, DecryptHandle* decryptHandle, + int uniqueId, sp& decryptHandle, const char* uri, const char* mime); - status_t openDecryptSession(int uniqueId, DecryptHandle* decryptHandle, + status_t openDecryptSession(int uniqueId, sp& decryptHandle, const DrmBuffer& buf, const String8& mimeType); - status_t closeDecryptSession(int uniqueId, DecryptHandle* decryptHandle); + status_t closeDecryptSession(int uniqueId, sp& decryptHandle); - status_t initializeDecryptUnit(int uniqueId, DecryptHandle* decryptHandle, + status_t initializeDecryptUnit(int uniqueId, sp& decryptHandle, int decryptUnitId, const DrmBuffer* headerInfo); - status_t decrypt(int uniqueId, DecryptHandle* decryptHandle, int decryptUnitId, + status_t decrypt(int uniqueId, sp& 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, + int decryptUnitId); - ssize_t pread(int uniqueId, DecryptHandle* decryptHandle, + ssize_t pread(int uniqueId, sp& 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, 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, 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, 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 */, 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, 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 */, 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 */, 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) = 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, 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, 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, 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, void* buffer, ssize_t numBytes, off64_t offset) = 0; }; diff --git a/drm/common/include/IDrmEngine.h b/drm/common/include/IDrmEngine.h index acc8ed9433..1837a116d2 100644 --- a/drm/common/include/IDrmEngine.h +++ b/drm/common/include/IDrmEngine.h @@ -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, 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, 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, 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, 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, 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) = 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, 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, 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, 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, void* buffer, ssize_t numBytes, off64_t offset) = 0; }; diff --git a/drm/common/include/IDrmManagerService.h b/drm/common/include/IDrmManagerService.h index 0376b492d8..836ae0a428 100644 --- a/drm/common/include/IDrmManagerService.h +++ b/drm/common/include/IDrmManagerService.h @@ -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, int action, bool reserve) = 0; virtual status_t setPlaybackStatus( - int uniqueId, DecryptHandle* decryptHandle, int playbackStatus, int64_t position) = 0; + int uniqueId, sp& 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 openDecryptSession( int uniqueId, int fd, off64_t offset, off64_t length, const char* mime) = 0; - virtual DecryptHandle* openDecryptSession( + virtual sp openDecryptSession( int uniqueId, const char* uri, const char* mime) = 0; - virtual DecryptHandle* openDecryptSession( + virtual sp 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) = 0; - virtual status_t initializeDecryptUnit(int uniqueId, DecryptHandle* decryptHandle, + virtual status_t initializeDecryptUnit(int uniqueId, sp& 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, 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, int decryptUnitId) = 0; - virtual ssize_t pread(int uniqueId, DecryptHandle* decryptHandle, + virtual ssize_t pread(int uniqueId, sp& 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, int action, bool reserve); virtual status_t setPlaybackStatus( - int uniqueId, DecryptHandle* decryptHandle, int playbackStatus, int64_t position); + int uniqueId, sp& 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 openDecryptSession( int uniqueId, int fd, off64_t offset, off64_t length, const char* mime); - virtual DecryptHandle* openDecryptSession( + virtual sp openDecryptSession( int uniqueId, const char* uri, const char* mime); - virtual DecryptHandle* openDecryptSession( + virtual sp 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); - virtual status_t initializeDecryptUnit(int uniqueId, DecryptHandle* decryptHandle, + virtual status_t initializeDecryptUnit(int uniqueId, sp& decryptHandle, int decryptUnitId, const DrmBuffer* headerInfo); - virtual status_t decrypt(int uniqueId, DecryptHandle* decryptHandle, int decryptUnitId, + virtual status_t decrypt(int uniqueId, sp& decryptHandle, int decryptUnitId, const DrmBuffer* encBuffer, DrmBuffer** decBuffer, DrmBuffer* IV); virtual status_t finalizeDecryptUnit( - int uniqueId, DecryptHandle* decryptHandle, int decryptUnitId); + int uniqueId, sp& decryptHandle, int decryptUnitId); - virtual ssize_t pread(int uniqueId, DecryptHandle* decryptHandle, + virtual ssize_t pread(int uniqueId, sp& decryptHandle, void* buffer, ssize_t numBytes, off64_t offset); }; diff --git a/drm/drmserver/DrmManager.cpp b/drm/drmserver/DrmManager.cpp index bf04a893a6..afbcb3940e 100644 --- a/drm/drmserver/DrmManager.cpp +++ b/drm/drmserver/DrmManager.cpp @@ -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, 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, 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 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 plugInIdList = mPlugInManager.getPlugInIdList(); - DecryptHandle* handle = new DecryptHandle(); - if (NULL != handle) { + sp 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 DrmManager::openDecryptSession( int uniqueId, const char* uri, const char* mime) { Mutex::Autolock _l(mDecryptLock); status_t result = DRM_ERROR_CANNOT_HANDLE; Vector plugInIdList = mPlugInManager.getPlugInIdList(); - DecryptHandle* handle = new DecryptHandle(); - if (NULL != handle) { + sp 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 DrmManager::openDecryptSession( int uniqueId, const DrmBuffer& buf, const String8& mimeType) { Mutex::Autolock _l(mDecryptLock); status_t result = DRM_ERROR_CANNOT_HANDLE; Vector plugInIdList = mPlugInManager.getPlugInIdList(); - DecryptHandle* handle = new DecryptHandle(); - if (NULL != handle) { + sp 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) { 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, 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, 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, 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, void* buffer, ssize_t numBytes, off64_t offset) { ssize_t result = DECRYPT_FILE_ERROR; diff --git a/drm/drmserver/DrmManager.h b/drm/drmserver/DrmManager.h index e7cdd36b76..26222bca3f 100644 --- a/drm/drmserver/DrmManager.h +++ b/drm/drmserver/DrmManager.h @@ -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, int action, + bool reserve); status_t setPlaybackStatus( - int uniqueId, DecryptHandle* decryptHandle, int playbackStatus, int64_t position); + int uniqueId, sp& 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 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 openDecryptSession(int uniqueId, const char* uri, const char* mime); - DecryptHandle* openDecryptSession(int uniqueId, const DrmBuffer& buf, + sp openDecryptSession(int uniqueId, const DrmBuffer& buf, const String8& mimeType); - status_t closeDecryptSession(int uniqueId, DecryptHandle* decryptHandle); + status_t closeDecryptSession(int uniqueId, sp& decryptHandle); - status_t initializeDecryptUnit(int uniqueId, DecryptHandle* decryptHandle, + status_t initializeDecryptUnit(int uniqueId, sp& decryptHandle, int decryptUnitId, const DrmBuffer* headerInfo); - status_t decrypt(int uniqueId, DecryptHandle* decryptHandle, int decryptUnitId, + status_t decrypt(int uniqueId, sp& 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, + int decryptUnitId); - ssize_t pread(int uniqueId, DecryptHandle* decryptHandle, + ssize_t pread(int uniqueId, sp& decryptHandle, void* buffer, ssize_t numBytes, off64_t offset); void onInfo(const DrmInfoEvent& event); diff --git a/drm/drmserver/DrmManagerService.cpp b/drm/drmserver/DrmManagerService.cpp index dad599b42e..2532275119 100644 --- a/drm/drmserver/DrmManagerService.cpp +++ b/drm/drmserver/DrmManagerService.cpp @@ -206,7 +206,7 @@ int DrmManagerService::checkRightsStatus( } status_t DrmManagerService::consumeRights( - int uniqueId, DecryptHandle* decryptHandle, int action, bool reserve) { + int uniqueId, sp& 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, 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 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 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 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) { 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, 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, 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, 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, void* buffer, ssize_t numBytes, off64_t offset) { ALOGV("Entering pread"); if (!isProtectedCallAllowed(PREAD)) { diff --git a/drm/drmserver/DrmManagerService.h b/drm/drmserver/DrmManagerService.h index 45cee2e203..7aaeab5f64 100644 --- a/drm/drmserver/DrmManagerService.h +++ b/drm/drmserver/DrmManagerService.h @@ -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, int action, + bool reserve); status_t setPlaybackStatus( - int uniqueId, DecryptHandle* decryptHandle, int playbackStatus, int64_t position); + int uniqueId, sp& 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 openDecryptSession( int uniqueId, int fd, off64_t offset, off64_t length, const char *mime); - DecryptHandle* openDecryptSession( + sp openDecryptSession( int uniqueId, const char* uri, const char* mime); - DecryptHandle* openDecryptSession(int uniqueId, const DrmBuffer& buf, + sp openDecryptSession(int uniqueId, const DrmBuffer& buf, const String8& mimeType); - status_t closeDecryptSession(int uniqueId, DecryptHandle* decryptHandle); + status_t closeDecryptSession(int uniqueId, sp& decryptHandle); - status_t initializeDecryptUnit(int uniqueId, DecryptHandle* decryptHandle, + status_t initializeDecryptUnit(int uniqueId, sp& decryptHandle, int decryptUnitId, const DrmBuffer* headerInfo); - status_t decrypt(int uniqueId, DecryptHandle* decryptHandle, int decryptUnitId, + status_t decrypt(int uniqueId, sp& 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, + int decryptUnitId); - ssize_t pread(int uniqueId, DecryptHandle* decryptHandle, + ssize_t pread(int uniqueId, sp& decryptHandle, void* buffer, ssize_t numBytes, off64_t offset); virtual status_t dump(int fd, const Vector& args); diff --git a/drm/libdrmframework/DrmManagerClientImpl.cpp b/drm/libdrmframework/DrmManagerClientImpl.cpp index c047eb13b1..b0a441b556 100644 --- a/drm/libdrmframework/DrmManagerClientImpl.cpp +++ b/drm/libdrmframework/DrmManagerClientImpl.cpp @@ -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 DrmManagerClientImpl::openDecryptSession( sp DrmManagerClientImpl::openDecryptSession( int uniqueId, const char* uri, const char* mime) { - DecryptHandle* handle = NULL; + sp 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 &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; } diff --git a/drm/libdrmframework/plugins/forward-lock/FwdLockEngine/include/FwdLockEngine.h b/drm/libdrmframework/plugins/forward-lock/FwdLockEngine/include/FwdLockEngine.h index a571b3aa1f..b62ddb9296 100644 --- a/drm/libdrmframework/plugins/forward-lock/FwdLockEngine/include/FwdLockEngine.h +++ b/drm/libdrmframework/plugins/forward-lock/FwdLockEngine/include/FwdLockEngine.h @@ -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, 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, int playbackStatus, int64_t position); #else status_t onSetPlaybackStatus(int uniqueId, - DecryptHandle* decryptHandle, + sp& 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, int fd, off64_t offset, off64_t length); #else status_t onOpenDecryptSession(int uniqueId, - DecryptHandle* decryptHandle, + sp& 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, 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); /** * 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, 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, 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, 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, int decryptUnitId); /** @@ -445,7 +445,7 @@ status_t onFinalizeDecryptUnit(int uniqueId, * @retval -1 Failure. */ ssize_t onRead(int uniqueId, - DecryptHandle* decryptHandle, + sp& 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, off64_t offset, int whence); #else off_t onLseek(int uniqueId, - DecryptHandle* decryptHandle, + sp& 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, void* buffer, ssize_t numBytes, off64_t offset); #else ssize_t onPread(int uniqueId, - DecryptHandle* decryptHandle, + sp& decryptHandle, void* buffer, ssize_t numBytes, off_t offset); diff --git a/drm/libdrmframework/plugins/forward-lock/FwdLockEngine/src/FwdLockEngine.cpp b/drm/libdrmframework/plugins/forward-lock/FwdLockEngine/src/FwdLockEngine.cpp index 73eea89249..769de0c801 100644 --- a/drm/libdrmframework/plugins/forward-lock/FwdLockEngine/src/FwdLockEngine.cpp +++ b/drm/libdrmframework/plugins/forward-lock/FwdLockEngine/src/FwdLockEngine.cpp @@ -294,7 +294,7 @@ int FwdLockEngine::onCheckRightsStatus(int uniqueId, } status_t FwdLockEngine::onConsumeRights(int /* uniqueId */, - DecryptHandle* /* decryptHandle */, + sp& /* 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 */, 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 */, + 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, int fd, off64_t offset, off64_t /* length */) { #else status_t FwdLockEngine::onOpenDecryptSession(int /* uniqueId */, - DecryptHandle* decryptHandle, + sp& 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, 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) { 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 */, 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 */, 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 */, 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 */, 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, 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, off64_t offset, int whence) { #else -off_t FwdLockEngine::onLseek(int /* uniqueId */, DecryptHandle* decryptHandle, +off_t FwdLockEngine::onLseek(int /* uniqueId */, sp& 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, void* buffer, ssize_t numBytes, off64_t offset) { #else ssize_t FwdLockEngine::onPread(int uniqueId, - DecryptHandle* decryptHandle, + sp& 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) && diff --git a/drm/libdrmframework/plugins/passthru/include/DrmPassthruPlugIn.h b/drm/libdrmframework/plugins/passthru/include/DrmPassthruPlugIn.h index 7b66dc7dbd..4ab52729a3 100644 --- a/drm/libdrmframework/plugins/passthru/include/DrmPassthruPlugIn.h +++ b/drm/libdrmframework/plugins/passthru/include/DrmPassthruPlugIn.h @@ -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, + int action, bool reserve); status_t onSetPlaybackStatus( - int uniqueId, DecryptHandle* decryptHandle, int playbackStatus, int64_t position); + int uniqueId, sp& 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, int fd, off64_t offset, + off64_t length); status_t onOpenDecryptSession( - int uniqueId, DecryptHandle* decryptHandle, const char* uri); + int uniqueId, sp& decryptHandle, const char* uri); - status_t onCloseDecryptSession(int uniqueId, DecryptHandle* decryptHandle); + status_t onCloseDecryptSession(int uniqueId, sp& decryptHandle); - status_t onInitializeDecryptUnit(int uniqueId, DecryptHandle* decryptHandle, + status_t onInitializeDecryptUnit(int uniqueId, sp& decryptHandle, int decryptUnitId, const DrmBuffer* headerInfo); - status_t onDecrypt(int uniqueId, DecryptHandle* decryptHandle, int decryptUnitId, + status_t onDecrypt(int uniqueId, sp& 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, + int decryptUnitId); - ssize_t onPread(int uniqueId, DecryptHandle* decryptHandle, + ssize_t onPread(int uniqueId, sp& decryptHandle, void* buffer, ssize_t numBytes, off64_t offset); - -private: - DecryptHandle* openDecryptSessionImpl(); }; }; diff --git a/drm/libdrmframework/plugins/passthru/src/DrmPassthruPlugIn.cpp b/drm/libdrmframework/plugins/passthru/src/DrmPassthruPlugIn.cpp index d7f2d287c0..0fa34786db 100644 --- a/drm/libdrmframework/plugins/passthru/src/DrmPassthruPlugIn.cpp +++ b/drm/libdrmframework/plugins/passthru/src/DrmPassthruPlugIn.cpp @@ -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*/, 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*/, 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, 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*/, const char* /*uri*/) { return DRM_ERROR_CANNOT_HANDLE; } -status_t DrmPassthruPlugIn::onCloseDecryptSession(int uniqueId, DecryptHandle* decryptHandle) { +status_t DrmPassthruPlugIn::onCloseDecryptSession(int uniqueId, sp& 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*/, + 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*/, + 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*/, 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*/, void* /*buffer*/, ssize_t /*numBytes*/, off64_t /*offset*/) { ALOGV("DrmPassthruPlugIn::onPread() : %d", uniqueId); return 0;