Loading drm/mediadrm/plugins/clearkey/DrmPlugin.cpp +44 −0 Original line number Diff line number Diff line Loading @@ -25,10 +25,28 @@ #include "Session.h" namespace { const android::String8 kStreaming("Streaming"); const android::String8 kOffline("Offline"); const android::String8 kTrue("True"); const android::String8 kQueryKeyLicenseType("LicenseType"); // Value: "Streaming" or "Offline" const android::String8 kQueryKeyPlayAllowed("PlayAllowed"); // Value: "True" or "False" const android::String8 kQueryKeyRenewAllowed("RenewAllowed"); // Value: "True" or "False" }; namespace clearkeydrm { using android::sp; DrmPlugin::DrmPlugin(SessionLibrary* sessionLibrary) : mSessionLibrary(sessionLibrary) { mPlayPolicy.clear(); } status_t DrmPlugin::openSession(Vector<uint8_t>& sessionId) { sp<Session> session = mSessionLibrary->createSession(); sessionId = session->sessionId(); Loading Loading @@ -60,18 +78,28 @@ status_t DrmPlugin::getKeyRequest( if (scope.size() == 0) { return android::BAD_VALUE; } if (keyType != kKeyType_Streaming) { return android::ERROR_DRM_CANNOT_HANDLE; } *keyRequestType = DrmPlugin::kKeyRequestType_Initial; defaultUrl.clear(); sp<Session> session = mSessionLibrary->findSession(scope); if (!session.get()) { return android::ERROR_DRM_SESSION_NOT_OPENED; } return session->getKeyRequest(initData, mimeType, &request); } void DrmPlugin::setPlayPolicy() { mPlayPolicy.clear(); mPlayPolicy.add(kQueryKeyLicenseType, kStreaming); mPlayPolicy.add(kQueryKeyPlayAllowed, kTrue); mPlayPolicy.add(kQueryKeyRenewAllowed, kTrue); } status_t DrmPlugin::provideKeyResponse( const Vector<uint8_t>& scope, const Vector<uint8_t>& response, Loading @@ -83,6 +111,8 @@ status_t DrmPlugin::provideKeyResponse( if (!session.get()) { return android::ERROR_DRM_SESSION_NOT_OPENED; } setPlayPolicy(); status_t res = session->provideKeyResponse(response); if (res == android::OK) { // This is for testing AMediaDrm_setOnEventListener only. Loading Loading @@ -111,4 +141,18 @@ status_t DrmPlugin::getPropertyString( return android::OK; } status_t DrmPlugin::queryKeyStatus( const Vector<uint8_t>& sessionId, KeyedVector<String8, String8>& infoMap) const { if (sessionId.size() == 0) { return android::BAD_VALUE; } infoMap.clear(); for (size_t i = 0; i < mPlayPolicy.size(); ++i) { infoMap.add(mPlayPolicy.keyAt(i), mPlayPolicy.valueAt(i)); } return android::OK; } } // namespace clearkeydrm drm/mediadrm/plugins/clearkey/DrmPlugin.h +7 −10 Original line number Diff line number Diff line Loading @@ -39,8 +39,8 @@ using android::Vector; class DrmPlugin : public android::DrmPlugin { public: explicit DrmPlugin(SessionLibrary* sessionLibrary) : mSessionLibrary(sessionLibrary) {} explicit DrmPlugin(SessionLibrary* sessionLibrary); virtual ~DrmPlugin() {} virtual status_t openSession(Vector<uint8_t>& sessionId); Loading Loading @@ -81,13 +81,7 @@ public: virtual status_t queryKeyStatus( const Vector<uint8_t>& sessionId, KeyedVector<String8, String8>& infoMap) const { if (sessionId.size() == 0) { return android::BAD_VALUE; } UNUSED(infoMap); return android::ERROR_DRM_CANNOT_HANDLE; } KeyedVector<String8, String8>& infoMap) const; virtual status_t getProvisionRequest( const String8& cert_type, Loading Loading @@ -248,9 +242,12 @@ public: } private: DISALLOW_EVIL_CONSTRUCTORS(DrmPlugin); void setPlayPolicy(); android::KeyedVector<android::String8, android::String8> mPlayPolicy; SessionLibrary* mSessionLibrary; DISALLOW_EVIL_CONSTRUCTORS(DrmPlugin); }; } // namespace clearkeydrm Loading media/ndk/NdkMediaDrm.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -421,7 +421,7 @@ media_status_t AMediaDrm_queryKeyStatus(AMediaDrm *mObj, const AMediaDrmSessionI for (size_t i = 0; i < mObj->mQueryResults.size(); i++) { keyValuePairs[i].mKey = mObj->mQueryResults.keyAt(i).string(); keyValuePairs[i].mValue = mObj->mQueryResults.keyAt(i).string(); keyValuePairs[i].mValue = mObj->mQueryResults.valueAt(i).string(); } *numPairs = mObj->mQueryResults.size(); return AMEDIA_OK; Loading Loading
drm/mediadrm/plugins/clearkey/DrmPlugin.cpp +44 −0 Original line number Diff line number Diff line Loading @@ -25,10 +25,28 @@ #include "Session.h" namespace { const android::String8 kStreaming("Streaming"); const android::String8 kOffline("Offline"); const android::String8 kTrue("True"); const android::String8 kQueryKeyLicenseType("LicenseType"); // Value: "Streaming" or "Offline" const android::String8 kQueryKeyPlayAllowed("PlayAllowed"); // Value: "True" or "False" const android::String8 kQueryKeyRenewAllowed("RenewAllowed"); // Value: "True" or "False" }; namespace clearkeydrm { using android::sp; DrmPlugin::DrmPlugin(SessionLibrary* sessionLibrary) : mSessionLibrary(sessionLibrary) { mPlayPolicy.clear(); } status_t DrmPlugin::openSession(Vector<uint8_t>& sessionId) { sp<Session> session = mSessionLibrary->createSession(); sessionId = session->sessionId(); Loading Loading @@ -60,18 +78,28 @@ status_t DrmPlugin::getKeyRequest( if (scope.size() == 0) { return android::BAD_VALUE; } if (keyType != kKeyType_Streaming) { return android::ERROR_DRM_CANNOT_HANDLE; } *keyRequestType = DrmPlugin::kKeyRequestType_Initial; defaultUrl.clear(); sp<Session> session = mSessionLibrary->findSession(scope); if (!session.get()) { return android::ERROR_DRM_SESSION_NOT_OPENED; } return session->getKeyRequest(initData, mimeType, &request); } void DrmPlugin::setPlayPolicy() { mPlayPolicy.clear(); mPlayPolicy.add(kQueryKeyLicenseType, kStreaming); mPlayPolicy.add(kQueryKeyPlayAllowed, kTrue); mPlayPolicy.add(kQueryKeyRenewAllowed, kTrue); } status_t DrmPlugin::provideKeyResponse( const Vector<uint8_t>& scope, const Vector<uint8_t>& response, Loading @@ -83,6 +111,8 @@ status_t DrmPlugin::provideKeyResponse( if (!session.get()) { return android::ERROR_DRM_SESSION_NOT_OPENED; } setPlayPolicy(); status_t res = session->provideKeyResponse(response); if (res == android::OK) { // This is for testing AMediaDrm_setOnEventListener only. Loading Loading @@ -111,4 +141,18 @@ status_t DrmPlugin::getPropertyString( return android::OK; } status_t DrmPlugin::queryKeyStatus( const Vector<uint8_t>& sessionId, KeyedVector<String8, String8>& infoMap) const { if (sessionId.size() == 0) { return android::BAD_VALUE; } infoMap.clear(); for (size_t i = 0; i < mPlayPolicy.size(); ++i) { infoMap.add(mPlayPolicy.keyAt(i), mPlayPolicy.valueAt(i)); } return android::OK; } } // namespace clearkeydrm
drm/mediadrm/plugins/clearkey/DrmPlugin.h +7 −10 Original line number Diff line number Diff line Loading @@ -39,8 +39,8 @@ using android::Vector; class DrmPlugin : public android::DrmPlugin { public: explicit DrmPlugin(SessionLibrary* sessionLibrary) : mSessionLibrary(sessionLibrary) {} explicit DrmPlugin(SessionLibrary* sessionLibrary); virtual ~DrmPlugin() {} virtual status_t openSession(Vector<uint8_t>& sessionId); Loading Loading @@ -81,13 +81,7 @@ public: virtual status_t queryKeyStatus( const Vector<uint8_t>& sessionId, KeyedVector<String8, String8>& infoMap) const { if (sessionId.size() == 0) { return android::BAD_VALUE; } UNUSED(infoMap); return android::ERROR_DRM_CANNOT_HANDLE; } KeyedVector<String8, String8>& infoMap) const; virtual status_t getProvisionRequest( const String8& cert_type, Loading Loading @@ -248,9 +242,12 @@ public: } private: DISALLOW_EVIL_CONSTRUCTORS(DrmPlugin); void setPlayPolicy(); android::KeyedVector<android::String8, android::String8> mPlayPolicy; SessionLibrary* mSessionLibrary; DISALLOW_EVIL_CONSTRUCTORS(DrmPlugin); }; } // namespace clearkeydrm Loading
media/ndk/NdkMediaDrm.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -421,7 +421,7 @@ media_status_t AMediaDrm_queryKeyStatus(AMediaDrm *mObj, const AMediaDrmSessionI for (size_t i = 0; i < mObj->mQueryResults.size(); i++) { keyValuePairs[i].mKey = mObj->mQueryResults.keyAt(i).string(); keyValuePairs[i].mValue = mObj->mQueryResults.keyAt(i).string(); keyValuePairs[i].mValue = mObj->mQueryResults.valueAt(i).string(); } *numPairs = mObj->mQueryResults.size(); return AMEDIA_OK; Loading