summaryrefslogtreecommitdiffstats
path: root/drm
diff options
context:
space:
mode:
authorRobert Shih <robertshih@google.com>2019-05-06 14:15:12 -0700
committerRobert Shih <robertshih@google.com>2019-05-06 20:19:42 -0700
commita503326e7af89f27c2e65c2c4447e8105547274a (patch)
treeba7832aa20f336536c1c0006f3fda4c65dc2a2e7 /drm
parent3aa95defac2624f05130927ea3e3f5a56ea617e5 (diff)
downloadframeworks_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.bp2
-rw-r--r--drm/libmediadrm/DrmHal.cpp16
-rw-r--r--drm/libmediadrm/DrmMetrics.cpp2
-rw-r--r--drm/libmediadrm/tests/DrmMetrics_test.cpp2
-rw-r--r--drm/mediadrm/plugins/clearkey/hidl/InitDataParser.cpp12
-rw-r--r--drm/mediadrm/plugins/clearkey/hidl/include/DrmPlugin.h10
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) {