diff options
| author | Robert Shih <robertshih@google.com> | 2019-05-06 14:15:12 -0700 |
|---|---|---|
| committer | Robert Shih <robertshih@google.com> | 2019-05-06 20:19:42 -0700 |
| commit | a503326e7af89f27c2e65c2c4447e8105547274a (patch) | |
| tree | ba7832aa20f336536c1c0006f3fda4c65dc2a2e7 /drm | |
| parent | 3aa95defac2624f05130927ea3e3f5a56ea617e5 (diff) | |
| download | frameworks_av-a503326e7af89f27c2e65c2c4447e8105547274a.tar.gz frameworks_av-a503326e7af89f27c2e65c2c4447e8105547274a.tar.bz2 frameworks_av-a503326e7af89f27c2e65c2c4447e8105547274a.zip | |
DrmHal: add key status usable_in_future
Bug:116738851
Test: DrmMetrics_test
Change-Id: Ifdd63ce94d3e145840b155a982612ba980cc456d
Diffstat (limited to 'drm')
| -rw-r--r-- | drm/libmediadrm/Android.bp | 2 | ||||
| -rw-r--r-- | drm/libmediadrm/DrmHal.cpp | 16 | ||||
| -rw-r--r-- | drm/libmediadrm/DrmMetrics.cpp | 2 | ||||
| -rw-r--r-- | drm/libmediadrm/tests/DrmMetrics_test.cpp | 2 | ||||
| -rw-r--r-- | drm/mediadrm/plugins/clearkey/hidl/InitDataParser.cpp | 12 | ||||
| -rw-r--r-- | drm/mediadrm/plugins/clearkey/hidl/include/DrmPlugin.h | 10 |
6 files changed, 35 insertions, 9 deletions
diff --git a/drm/libmediadrm/Android.bp b/drm/libmediadrm/Android.bp index 01efb223c0..d6db1d4e2b 100644 --- a/drm/libmediadrm/Android.bp +++ b/drm/libmediadrm/Android.bp @@ -59,6 +59,7 @@ cc_library_shared { shared_libs: [ "android.hardware.drm@1.0", "android.hardware.drm@1.1", + "android.hardware.drm@1.2", "libbinder", "libhidlbase", "liblog", @@ -89,6 +90,7 @@ cc_library_shared { shared_libs: [ "android.hardware.drm@1.0", "android.hardware.drm@1.1", + "android.hardware.drm@1.2", "libbase", "libbinder", "libhidlbase", diff --git a/drm/libmediadrm/DrmHal.cpp b/drm/libmediadrm/DrmHal.cpp index 5888af0e58..919f4ee1df 100644 --- a/drm/libmediadrm/DrmHal.cpp +++ b/drm/libmediadrm/DrmHal.cpp @@ -40,7 +40,6 @@ #include <mediadrm/DrmSessionManager.h> using drm::V1_0::KeyedVector; -using drm::V1_0::KeyStatusType; using drm::V1_0::KeyRequestType; using drm::V1_0::KeyType; using drm::V1_0::KeyValue; @@ -51,6 +50,7 @@ using drm::V1_1::HdcpLevel; using drm::V1_1::SecureStopRelease; using drm::V1_1::SecurityLevel; using drm::V1_2::KeySetId; +using drm::V1_2::KeyStatusType; using ::android::hardware::drm::V1_1::DrmMetricGroup; using ::android::hardware::hidl_array; using ::android::hardware::hidl_string; @@ -517,6 +517,17 @@ Return<void> DrmHal::sendExpirationUpdate(const hidl_vec<uint8_t>& sessionId, } Return<void> DrmHal::sendKeysChange(const hidl_vec<uint8_t>& sessionId, + const hidl_vec<KeyStatus_V1_0>& keyStatusList_V1_0, bool hasNewUsableKey) { + std::vector<KeyStatus> keyStatusVec; + for (const auto &keyStatus_V1_0 : keyStatusList_V1_0) { + keyStatusVec.push_back({keyStatus_V1_0.keyId, + static_cast<KeyStatusType>(keyStatus_V1_0.type)}); + } + hidl_vec<KeyStatus> keyStatusList_V1_2(keyStatusVec); + return sendKeysChange_1_2(sessionId, keyStatusList_V1_2, hasNewUsableKey); +} + +Return<void> DrmHal::sendKeysChange_1_2(const hidl_vec<uint8_t>& sessionId, const hidl_vec<KeyStatus>& keyStatusList, bool hasNewUsableKey) { mEventLock.lock(); @@ -546,6 +557,9 @@ Return<void> DrmHal::sendKeysChange(const hidl_vec<uint8_t>& sessionId, case KeyStatusType::STATUSPENDING: type = DrmPlugin::kKeyStatusType_StatusPending; break; + case KeyStatusType::USABLEINFUTURE: + type = DrmPlugin::kKeyStatusType_UsableInFuture; + break; case KeyStatusType::INTERNALERROR: default: type = DrmPlugin::kKeyStatusType_InternalError; diff --git a/drm/libmediadrm/DrmMetrics.cpp b/drm/libmediadrm/DrmMetrics.cpp index 4fed707017..308080275b 100644 --- a/drm/libmediadrm/DrmMetrics.cpp +++ b/drm/libmediadrm/DrmMetrics.cpp @@ -32,7 +32,7 @@ using ::android::drm_metrics::DrmFrameworkMetrics; using ::android::hardware::hidl_string; using ::android::hardware::hidl_vec; using ::android::hardware::drm::V1_0::EventType; -using ::android::hardware::drm::V1_0::KeyStatusType; +using ::android::hardware::drm::V1_2::KeyStatusType; using ::android::hardware::drm::V1_1::DrmMetricGroup; using ::android::os::PersistableBundle; diff --git a/drm/libmediadrm/tests/DrmMetrics_test.cpp b/drm/libmediadrm/tests/DrmMetrics_test.cpp index 64aa9d0c99..5c8a1b0064 100644 --- a/drm/libmediadrm/tests/DrmMetrics_test.cpp +++ b/drm/libmediadrm/tests/DrmMetrics_test.cpp @@ -30,7 +30,7 @@ using ::android::drm_metrics::DrmFrameworkMetrics; using ::android::hardware::hidl_vec; using ::android::hardware::drm::V1_0::EventType; -using ::android::hardware::drm::V1_0::KeyStatusType; +using ::android::hardware::drm::V1_2::KeyStatusType; using ::android::hardware::drm::V1_0::Status; using ::android::hardware::drm::V1_1::DrmMetricGroup; using ::android::os::PersistableBundle; diff --git a/drm/mediadrm/plugins/clearkey/hidl/InitDataParser.cpp b/drm/mediadrm/plugins/clearkey/hidl/InitDataParser.cpp index 8ebb42bc7b..b988ce03ca 100644 --- a/drm/mediadrm/plugins/clearkey/hidl/InitDataParser.cpp +++ b/drm/mediadrm/plugins/clearkey/hidl/InitDataParser.cpp @@ -51,16 +51,16 @@ Status InitDataParser::parse(const std::vector<uint8_t>& initData, // Build a list of the key IDs std::vector<const uint8_t*> keyIds; - if (mimeType == kIsoBmffVideoMimeType || - mimeType == kIsoBmffAudioMimeType || - mimeType == kCencInitDataFormat) { + if (mimeType == kIsoBmffVideoMimeType.c_str() || + mimeType == kIsoBmffAudioMimeType.c_str() || + mimeType == kCencInitDataFormat.c_str()) { Status res = parsePssh(initData, &keyIds); if (res != Status::OK) { return res; } - } else if (mimeType == kWebmVideoMimeType || - mimeType == kWebmAudioMimeType || - mimeType == kWebmInitDataFormat) { + } else if (mimeType == kWebmVideoMimeType.c_str() || + mimeType == kWebmAudioMimeType.c_str() || + mimeType == kWebmInitDataFormat.c_str()) { // WebM "init data" is just a single key ID if (initData.size() != kKeyIdSize) { return Status::ERROR_DRM_CANNOT_HANDLE; diff --git a/drm/mediadrm/plugins/clearkey/hidl/include/DrmPlugin.h b/drm/mediadrm/plugins/clearkey/hidl/include/DrmPlugin.h index ba5fa65092..f294d4d736 100644 --- a/drm/mediadrm/plugins/clearkey/hidl/include/DrmPlugin.h +++ b/drm/mediadrm/plugins/clearkey/hidl/include/DrmPlugin.h @@ -62,6 +62,7 @@ using ::android::sp; typedef drm::V1_1::KeyRequestType KeyRequestType_V1_1; typedef drm::V1_2::IDrmPluginListener IDrmPluginListener_V1_2; +typedef drm::V1_2::KeyStatus KeyStatus_V1_2; typedef drm::V1_2::Status Status_V1_2; typedef drm::V1_2::HdcpLevel HdcpLevel_V1_2; @@ -335,6 +336,15 @@ struct DrmPlugin : public IDrmPlugin { return Void(); } + Return<void> sendKeysChange_1_2( + const hidl_vec<uint8_t>& sessionId, + const hidl_vec<KeyStatus_V1_2>& keyStatusList, bool hasNewUsableKey) { + if (mListenerV1_2 != NULL) { + mListenerV1_2->sendKeysChange_1_2(sessionId, keyStatusList, hasNewUsableKey); + } + return Void(); + } + Return<void> sendSessionLostState( const hidl_vec<uint8_t>& sessionId) { if (mListenerV1_2 != NULL) { |
