Loading drm/mediadrm/plugins/clearkey/default/DrmPlugin.cpp +1 −0 Original line number Diff line number Diff line Loading @@ -207,6 +207,7 @@ status_t DrmPlugin::queryKeyStatus( } infoMap.clear(); android::Mutex::Autolock lock(mPlayPolicyLock); for (size_t i = 0; i < mPlayPolicy.size(); ++i) { infoMap.add(mPlayPolicy.keyAt(i), mPlayPolicy.valueAt(i)); } Loading drm/mediadrm/plugins/clearkey/default/include/DrmPlugin.h +1 −1 Original line number Diff line number Diff line Loading @@ -262,7 +262,7 @@ private: void initProperties(); void setPlayPolicy(); android::Mutex mPlayPolicyLock; mutable android::Mutex mPlayPolicyLock; android::KeyedVector<String8, String8> mPlayPolicy; android::KeyedVector<String8, String8> mStringProperties; android::KeyedVector<String8, Vector<uint8_t>> mByteArrayProperties; Loading drm/mediadrm/plugins/clearkey/hidl/CryptoPlugin.cpp +6 −1 Original line number Diff line number Diff line Loading @@ -37,6 +37,8 @@ Return<void> CryptoPlugin::setSharedBufferBase( sp<IMemory> hidlMemory = mapMemory(base); ALOGE_IF(hidlMemory == nullptr, "mapMemory returns nullptr"); std::lock_guard<std::mutex> shared_buffer_lock(mSharedBufferLock); // allow mapMemory to return nullptr mSharedBufferMap[bufferId] = hidlMemory; return Void(); Loading Loading @@ -94,6 +96,7 @@ Return<void> CryptoPlugin::decrypt_1_2( return Void(); } std::unique_lock<std::mutex> shared_buffer_lock(mSharedBufferLock); if (mSharedBufferMap.find(source.bufferId) == mSharedBufferMap.end()) { _hidl_cb(Status_V1_2::ERROR_DRM_CANNOT_HANDLE, 0, "source decrypt buffer base not set"); Loading Loading @@ -148,6 +151,8 @@ Return<void> CryptoPlugin::decrypt_1_2( } destPtr = static_cast<void*>(base + destination.nonsecureMemory.offset); // release mSharedBufferLock shared_buffer_lock.unlock(); // Calculate the output buffer size and determine if any subsamples are // encrypted. Loading drm/mediadrm/plugins/clearkey/hidl/DrmPlugin.cpp +2 −1 Original line number Diff line number Diff line Loading @@ -581,7 +581,6 @@ Return<Status> DrmPlugin::setPropertyByteArray( Return<void> DrmPlugin::queryKeyStatus( const hidl_vec<uint8_t>& sessionId, queryKeyStatus_cb _hidl_cb) { if (sessionId.size() == 0) { // Returns empty key status KeyValue pair _hidl_cb(Status::BAD_VALUE, hidl_vec<KeyValue>()); Loading @@ -591,12 +590,14 @@ Return<void> DrmPlugin::queryKeyStatus( std::vector<KeyValue> infoMapVec; infoMapVec.clear(); mPlayPolicyLock.lock(); KeyValue keyValuePair; for (size_t i = 0; i < mPlayPolicy.size(); ++i) { keyValuePair.key = mPlayPolicy[i].key; keyValuePair.value = mPlayPolicy[i].value; infoMapVec.push_back(keyValuePair); } mPlayPolicyLock.unlock(); _hidl_cb(Status::OK, toHidlVec(infoMapVec)); return Void(); } Loading drm/mediadrm/plugins/clearkey/hidl/include/CryptoPlugin.h +5 −2 Original line number Diff line number Diff line Loading @@ -20,6 +20,8 @@ #include <android/hardware/drm/1.2/ICryptoPlugin.h> #include <android/hidl/memory/1.0/IMemory.h> #include <mutex> #include "ClearKeyTypes.h" #include "Session.h" #include "Utils.h" Loading Loading @@ -93,7 +95,7 @@ struct CryptoPlugin : public drm::V1_2::ICryptoPlugin { const SharedBuffer& source, uint64_t offset, const DestinationBuffer& destination, decrypt_1_2_cb _hidl_cb); decrypt_1_2_cb _hidl_cb) NO_THREAD_SAFETY_ANALYSIS; // use unique_lock Return<void> setSharedBufferBase(const hidl_memory& base, uint32_t bufferId); Loading @@ -105,7 +107,8 @@ struct CryptoPlugin : public drm::V1_2::ICryptoPlugin { private: CLEARKEY_DISALLOW_COPY_AND_ASSIGN(CryptoPlugin); std::map<uint32_t, sp<IMemory> > mSharedBufferMap; std::mutex mSharedBufferLock; std::map<uint32_t, sp<IMemory>> mSharedBufferMap GUARDED_BY(mSharedBufferLock); sp<Session> mSession; Status mInitStatus; }; Loading Loading
drm/mediadrm/plugins/clearkey/default/DrmPlugin.cpp +1 −0 Original line number Diff line number Diff line Loading @@ -207,6 +207,7 @@ status_t DrmPlugin::queryKeyStatus( } infoMap.clear(); android::Mutex::Autolock lock(mPlayPolicyLock); for (size_t i = 0; i < mPlayPolicy.size(); ++i) { infoMap.add(mPlayPolicy.keyAt(i), mPlayPolicy.valueAt(i)); } Loading
drm/mediadrm/plugins/clearkey/default/include/DrmPlugin.h +1 −1 Original line number Diff line number Diff line Loading @@ -262,7 +262,7 @@ private: void initProperties(); void setPlayPolicy(); android::Mutex mPlayPolicyLock; mutable android::Mutex mPlayPolicyLock; android::KeyedVector<String8, String8> mPlayPolicy; android::KeyedVector<String8, String8> mStringProperties; android::KeyedVector<String8, Vector<uint8_t>> mByteArrayProperties; Loading
drm/mediadrm/plugins/clearkey/hidl/CryptoPlugin.cpp +6 −1 Original line number Diff line number Diff line Loading @@ -37,6 +37,8 @@ Return<void> CryptoPlugin::setSharedBufferBase( sp<IMemory> hidlMemory = mapMemory(base); ALOGE_IF(hidlMemory == nullptr, "mapMemory returns nullptr"); std::lock_guard<std::mutex> shared_buffer_lock(mSharedBufferLock); // allow mapMemory to return nullptr mSharedBufferMap[bufferId] = hidlMemory; return Void(); Loading Loading @@ -94,6 +96,7 @@ Return<void> CryptoPlugin::decrypt_1_2( return Void(); } std::unique_lock<std::mutex> shared_buffer_lock(mSharedBufferLock); if (mSharedBufferMap.find(source.bufferId) == mSharedBufferMap.end()) { _hidl_cb(Status_V1_2::ERROR_DRM_CANNOT_HANDLE, 0, "source decrypt buffer base not set"); Loading Loading @@ -148,6 +151,8 @@ Return<void> CryptoPlugin::decrypt_1_2( } destPtr = static_cast<void*>(base + destination.nonsecureMemory.offset); // release mSharedBufferLock shared_buffer_lock.unlock(); // Calculate the output buffer size and determine if any subsamples are // encrypted. Loading
drm/mediadrm/plugins/clearkey/hidl/DrmPlugin.cpp +2 −1 Original line number Diff line number Diff line Loading @@ -581,7 +581,6 @@ Return<Status> DrmPlugin::setPropertyByteArray( Return<void> DrmPlugin::queryKeyStatus( const hidl_vec<uint8_t>& sessionId, queryKeyStatus_cb _hidl_cb) { if (sessionId.size() == 0) { // Returns empty key status KeyValue pair _hidl_cb(Status::BAD_VALUE, hidl_vec<KeyValue>()); Loading @@ -591,12 +590,14 @@ Return<void> DrmPlugin::queryKeyStatus( std::vector<KeyValue> infoMapVec; infoMapVec.clear(); mPlayPolicyLock.lock(); KeyValue keyValuePair; for (size_t i = 0; i < mPlayPolicy.size(); ++i) { keyValuePair.key = mPlayPolicy[i].key; keyValuePair.value = mPlayPolicy[i].value; infoMapVec.push_back(keyValuePair); } mPlayPolicyLock.unlock(); _hidl_cb(Status::OK, toHidlVec(infoMapVec)); return Void(); } Loading
drm/mediadrm/plugins/clearkey/hidl/include/CryptoPlugin.h +5 −2 Original line number Diff line number Diff line Loading @@ -20,6 +20,8 @@ #include <android/hardware/drm/1.2/ICryptoPlugin.h> #include <android/hidl/memory/1.0/IMemory.h> #include <mutex> #include "ClearKeyTypes.h" #include "Session.h" #include "Utils.h" Loading Loading @@ -93,7 +95,7 @@ struct CryptoPlugin : public drm::V1_2::ICryptoPlugin { const SharedBuffer& source, uint64_t offset, const DestinationBuffer& destination, decrypt_1_2_cb _hidl_cb); decrypt_1_2_cb _hidl_cb) NO_THREAD_SAFETY_ANALYSIS; // use unique_lock Return<void> setSharedBufferBase(const hidl_memory& base, uint32_t bufferId); Loading @@ -105,7 +107,8 @@ struct CryptoPlugin : public drm::V1_2::ICryptoPlugin { private: CLEARKEY_DISALLOW_COPY_AND_ASSIGN(CryptoPlugin); std::map<uint32_t, sp<IMemory> > mSharedBufferMap; std::mutex mSharedBufferLock; std::map<uint32_t, sp<IMemory>> mSharedBufferMap GUARDED_BY(mSharedBufferLock); sp<Session> mSession; Status mInitStatus; }; Loading