blob: eaa5bd57fdd6466fe4ec98c24c20e328705ba176 [file] [log] [blame]
Jeff Tinkera53d6552017-01-20 00:31:46 -08001/*
2 * Copyright (C) 2017 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17//#define LOG_NDEBUG 0
18#define LOG_TAG "DrmHal"
Jeff Tinkera53d6552017-01-20 00:31:46 -080019
Jeff Tinker7d2c6e82018-02-16 16:14:59 -080020#include <mediadrm/DrmHal.h>
Kyle Zhang6605add2022-01-13 17:51:23 +000021#include <mediadrm/DrmHalAidl.h>
22#include <mediadrm/DrmHalHidl.h>
Sohail Nagaraj0cc3da82022-11-30 10:22:37 +053023#include <mediadrm/DrmStatus.h>
Robert Shihc0d1d0e2019-11-24 13:21:04 -080024#include <mediadrm/DrmUtils.h>
Adam Stone32494f52018-02-26 22:53:27 -080025
Jeff Tinkera53d6552017-01-20 00:31:46 -080026namespace android {
27
Kyle Zhang6605add2022-01-13 17:51:23 +000028DrmHal::DrmHal() {
29 mDrmHalHidl = sp<DrmHalHidl>::make();
Kyle Zhanga55209d2022-02-03 01:52:46 +000030 mDrmHalAidl = sp<DrmHalAidl>::make();
Jeff Tinkera53d6552017-01-20 00:31:46 -080031}
32
Kyle Zhang6605add2022-01-13 17:51:23 +000033DrmHal::~DrmHal() {}
Jeff Tinkera53d6552017-01-20 00:31:46 -080034
Sohail Nagaraj0cc3da82022-11-30 10:22:37 +053035DrmStatus DrmHal::initCheck() const {
36 if (mDrmHalAidl->initCheck() == OK || mDrmHalHidl->initCheck() == OK) return DrmStatus(OK);
37 if (mDrmHalAidl->initCheck() == NO_INIT || mDrmHalHidl->initCheck() == NO_INIT)
38 return DrmStatus(NO_INIT);
Kyle Zhang6605add2022-01-13 17:51:23 +000039 return mDrmHalHidl->initCheck();
Jeff Tinkera53d6552017-01-20 00:31:46 -080040}
41
Sohail Nagaraj0cc3da82022-11-30 10:22:37 +053042DrmStatus DrmHal::isCryptoSchemeSupported(const uint8_t uuid[16], const String8& mimeType,
43 DrmPlugin::SecurityLevel securityLevel, bool* result) {
44 DrmStatus statusResult =
45 mDrmHalAidl->isCryptoSchemeSupported(uuid, mimeType, securityLevel, result);
Kyle Zhang6605add2022-01-13 17:51:23 +000046 if (*result) return statusResult;
47 return mDrmHalHidl->isCryptoSchemeSupported(uuid, mimeType, securityLevel, result);
Jeff Tinkera53d6552017-01-20 00:31:46 -080048}
49
Sohail Nagaraj0cc3da82022-11-30 10:22:37 +053050DrmStatus DrmHal::createPlugin(const uint8_t uuid[16], const String8& appPackageName) {
51 return mDrmHalAidl->createPlugin(uuid, appPackageName) == OK
52 ? DrmStatus(OK)
53 : mDrmHalHidl->createPlugin(uuid, appPackageName);
Jeff Tinkera53d6552017-01-20 00:31:46 -080054}
55
Sohail Nagaraj0cc3da82022-11-30 10:22:37 +053056DrmStatus DrmHal::destroyPlugin() {
57 DrmStatus statusResult = mDrmHalAidl->destroyPlugin();
58 DrmStatus statusResultHidl = mDrmHalHidl->destroyPlugin();
Kyle Zhang6605add2022-01-13 17:51:23 +000059 if (statusResult != OK) return statusResult;
60 return statusResultHidl;
Jeff Tinkera53d6552017-01-20 00:31:46 -080061}
62
Sohail Nagaraj0cc3da82022-11-30 10:22:37 +053063DrmStatus DrmHal::openSession(DrmPlugin::SecurityLevel securityLevel, Vector<uint8_t>& sessionId) {
Kyle Zhang6605add2022-01-13 17:51:23 +000064 if (mDrmHalAidl->initCheck() == OK) return mDrmHalAidl->openSession(securityLevel, sessionId);
65 return mDrmHalHidl->openSession(securityLevel, sessionId);
Jeff Tinkera53d6552017-01-20 00:31:46 -080066}
67
Sohail Nagaraj0cc3da82022-11-30 10:22:37 +053068DrmStatus DrmHal::closeSession(Vector<uint8_t> const& sessionId) {
Kyle Zhang6605add2022-01-13 17:51:23 +000069 if (mDrmHalAidl->initCheck() == OK) return mDrmHalAidl->closeSession(sessionId);
70 return mDrmHalHidl->closeSession(sessionId);
Jeff Tinkera53d6552017-01-20 00:31:46 -080071}
72
Sohail Nagaraj0cc3da82022-11-30 10:22:37 +053073DrmStatus DrmHal::getKeyRequest(Vector<uint8_t> const& sessionId, Vector<uint8_t> const& initData,
74 String8 const& mimeType, DrmPlugin::KeyType keyType,
75 KeyedVector<String8, String8> const& optionalParameters,
76 Vector<uint8_t>& request, String8& defaultUrl,
77 DrmPlugin::KeyRequestType* keyRequestType) {
Kyle Zhang6605add2022-01-13 17:51:23 +000078 if (mDrmHalAidl->initCheck() == OK)
79 return mDrmHalAidl->getKeyRequest(sessionId, initData, mimeType, keyType,
80 optionalParameters, request, defaultUrl, keyRequestType);
81 return mDrmHalHidl->getKeyRequest(sessionId, initData, mimeType, keyType, optionalParameters,
82 request, defaultUrl, keyRequestType);
Jeff Tinkerb8684f32018-12-12 08:41:31 -080083}
84
Sohail Nagaraj0cc3da82022-11-30 10:22:37 +053085DrmStatus DrmHal::provideKeyResponse(Vector<uint8_t> const& sessionId,
86 Vector<uint8_t> const& response, Vector<uint8_t>& keySetId) {
Kyle Zhang6605add2022-01-13 17:51:23 +000087 if (mDrmHalAidl->initCheck() == OK)
88 return mDrmHalAidl->provideKeyResponse(sessionId, response, keySetId);
89 return mDrmHalHidl->provideKeyResponse(sessionId, response, keySetId);
Jeff Tinkerb8684f32018-12-12 08:41:31 -080090}
91
Sohail Nagaraj0cc3da82022-11-30 10:22:37 +053092DrmStatus DrmHal::removeKeys(Vector<uint8_t> const& keySetId) {
Kyle Zhang6605add2022-01-13 17:51:23 +000093 if (mDrmHalAidl->initCheck() == OK) return mDrmHalAidl->removeKeys(keySetId);
94 return mDrmHalHidl->removeKeys(keySetId);
Jeff Tinkera53d6552017-01-20 00:31:46 -080095}
96
Sohail Nagaraj0cc3da82022-11-30 10:22:37 +053097DrmStatus DrmHal::restoreKeys(Vector<uint8_t> const& sessionId, Vector<uint8_t> const& keySetId) {
Kyle Zhang6605add2022-01-13 17:51:23 +000098 if (mDrmHalAidl->initCheck() == OK) return mDrmHalAidl->restoreKeys(sessionId, keySetId);
99 return mDrmHalHidl->restoreKeys(sessionId, keySetId);
Jeff Tinkera53d6552017-01-20 00:31:46 -0800100}
101
Sohail Nagaraj0cc3da82022-11-30 10:22:37 +0530102DrmStatus DrmHal::queryKeyStatus(Vector<uint8_t> const& sessionId,
103 KeyedVector<String8, String8>& infoMap) const {
Kyle Zhang6605add2022-01-13 17:51:23 +0000104 if (mDrmHalAidl->initCheck() == OK) return mDrmHalAidl->queryKeyStatus(sessionId, infoMap);
105 return mDrmHalHidl->queryKeyStatus(sessionId, infoMap);
Jeff Tinkera53d6552017-01-20 00:31:46 -0800106}
107
Sohail Nagaraj0cc3da82022-11-30 10:22:37 +0530108DrmStatus DrmHal::getProvisionRequest(String8 const& certType, String8 const& certAuthority,
109 Vector<uint8_t>& request, String8& defaultUrl) {
Kyle Zhang6605add2022-01-13 17:51:23 +0000110 if (mDrmHalAidl->initCheck() == OK)
111 return mDrmHalAidl->getProvisionRequest(certType, certAuthority, request, defaultUrl);
112 return mDrmHalHidl->getProvisionRequest(certType, certAuthority, request, defaultUrl);
Jeff Tinkera53d6552017-01-20 00:31:46 -0800113}
114
Sohail Nagaraj0cc3da82022-11-30 10:22:37 +0530115DrmStatus DrmHal::provideProvisionResponse(Vector<uint8_t> const& response,
116 Vector<uint8_t>& certificate,
117 Vector<uint8_t>& wrappedKey) {
Kyle Zhang6605add2022-01-13 17:51:23 +0000118 if (mDrmHalAidl->initCheck() == OK)
119 return mDrmHalAidl->provideProvisionResponse(response, certificate, wrappedKey);
120 return mDrmHalHidl->provideProvisionResponse(response, certificate, wrappedKey);
Jeff Tinkera53d6552017-01-20 00:31:46 -0800121}
122
Sohail Nagaraj0cc3da82022-11-30 10:22:37 +0530123DrmStatus DrmHal::getSecureStops(List<Vector<uint8_t>>& secureStops) {
Kyle Zhang6605add2022-01-13 17:51:23 +0000124 if (mDrmHalAidl->initCheck() == OK) return mDrmHalAidl->getSecureStops(secureStops);
125 return mDrmHalHidl->getSecureStops(secureStops);
Jeff Tinkera53d6552017-01-20 00:31:46 -0800126}
127
Sohail Nagaraj0cc3da82022-11-30 10:22:37 +0530128DrmStatus DrmHal::getSecureStopIds(List<Vector<uint8_t>>& secureStopIds) {
Kyle Zhang6605add2022-01-13 17:51:23 +0000129 if (mDrmHalAidl->initCheck() == OK) return mDrmHalAidl->getSecureStopIds(secureStopIds);
130 return mDrmHalHidl->getSecureStopIds(secureStopIds);
Jeff Tinkera53d6552017-01-20 00:31:46 -0800131}
132
Sohail Nagaraj0cc3da82022-11-30 10:22:37 +0530133DrmStatus DrmHal::getSecureStop(Vector<uint8_t> const& ssid, Vector<uint8_t>& secureStop) {
Kyle Zhang6605add2022-01-13 17:51:23 +0000134 if (mDrmHalAidl->initCheck() == OK) return mDrmHalAidl->getSecureStop(ssid, secureStop);
135 return mDrmHalHidl->getSecureStop(ssid, secureStop);
Jeff Tinkera53d6552017-01-20 00:31:46 -0800136}
137
Sohail Nagaraj0cc3da82022-11-30 10:22:37 +0530138DrmStatus DrmHal::releaseSecureStops(Vector<uint8_t> const& ssRelease) {
Kyle Zhang6605add2022-01-13 17:51:23 +0000139 if (mDrmHalAidl->initCheck() == OK) return mDrmHalAidl->releaseSecureStops(ssRelease);
140 return mDrmHalHidl->releaseSecureStops(ssRelease);
Jeff Tinker15177d72018-01-25 12:57:55 -0800141}
142
Sohail Nagaraj0cc3da82022-11-30 10:22:37 +0530143DrmStatus DrmHal::removeSecureStop(Vector<uint8_t> const& ssid) {
Kyle Zhang6605add2022-01-13 17:51:23 +0000144 if (mDrmHalAidl->initCheck() == OK) return mDrmHalAidl->removeSecureStop(ssid);
145 return mDrmHalHidl->removeSecureStop(ssid);
Jeff Tinker15177d72018-01-25 12:57:55 -0800146}
147
Sohail Nagaraj0cc3da82022-11-30 10:22:37 +0530148DrmStatus DrmHal::removeAllSecureStops() {
Kyle Zhang6605add2022-01-13 17:51:23 +0000149 if (mDrmHalAidl->initCheck() == OK) return mDrmHalAidl->removeAllSecureStops();
150 return mDrmHalHidl->removeAllSecureStops();
Jeff Tinkera53d6552017-01-20 00:31:46 -0800151}
152
Sohail Nagaraj0cc3da82022-11-30 10:22:37 +0530153DrmStatus DrmHal::getHdcpLevels(DrmPlugin::HdcpLevel* connectedLevel,
154 DrmPlugin::HdcpLevel* maxLevel) const {
Kyle Zhang6605add2022-01-13 17:51:23 +0000155 if (mDrmHalAidl->initCheck() == OK) return mDrmHalAidl->getHdcpLevels(connectedLevel, maxLevel);
156 return mDrmHalHidl->getHdcpLevels(connectedLevel, maxLevel);
Jeff Tinker6d998b62017-12-18 14:37:43 -0800157}
158
Sohail Nagaraj0cc3da82022-11-30 10:22:37 +0530159DrmStatus DrmHal::getNumberOfSessions(uint32_t* currentSessions, uint32_t* maxSessions) const {
Kyle Zhang6605add2022-01-13 17:51:23 +0000160 if (mDrmHalAidl->initCheck() == OK)
161 return mDrmHalAidl->getNumberOfSessions(currentSessions, maxSessions);
162 return mDrmHalHidl->getNumberOfSessions(currentSessions, maxSessions);
Jeff Tinker6d998b62017-12-18 14:37:43 -0800163}
164
Sohail Nagaraj0cc3da82022-11-30 10:22:37 +0530165DrmStatus DrmHal::getSecurityLevel(Vector<uint8_t> const& sessionId,
166 DrmPlugin::SecurityLevel* level) const {
Kyle Zhang6605add2022-01-13 17:51:23 +0000167 if (mDrmHalAidl->initCheck() == OK) return mDrmHalAidl->getSecurityLevel(sessionId, level);
168 return mDrmHalHidl->getSecurityLevel(sessionId, level);
Jeff Tinker6d998b62017-12-18 14:37:43 -0800169}
170
Sohail Nagaraj0cc3da82022-11-30 10:22:37 +0530171DrmStatus DrmHal::getOfflineLicenseKeySetIds(List<Vector<uint8_t>>& keySetIds) const {
Kyle Zhang6605add2022-01-13 17:51:23 +0000172 if (mDrmHalAidl->initCheck() == OK) return mDrmHalAidl->getOfflineLicenseKeySetIds(keySetIds);
173 return mDrmHalHidl->getOfflineLicenseKeySetIds(keySetIds);
Jeff Tinkerc8baaba2018-10-23 11:32:36 -0700174}
175
Sohail Nagaraj0cc3da82022-11-30 10:22:37 +0530176DrmStatus DrmHal::removeOfflineLicense(Vector<uint8_t> const& keySetId) {
Kyle Zhang6605add2022-01-13 17:51:23 +0000177 if (mDrmHalAidl->initCheck() == OK) return mDrmHalAidl->removeOfflineLicense(keySetId);
178 return mDrmHalHidl->removeOfflineLicense(keySetId);
Jeff Tinkerc8baaba2018-10-23 11:32:36 -0700179}
180
Sohail Nagaraj0cc3da82022-11-30 10:22:37 +0530181DrmStatus DrmHal::getOfflineLicenseState(Vector<uint8_t> const& keySetId,
182 DrmPlugin::OfflineLicenseState* licenseState) const {
Kyle Zhang6605add2022-01-13 17:51:23 +0000183 if (mDrmHalAidl->initCheck() == OK)
184 return mDrmHalAidl->getOfflineLicenseState(keySetId, licenseState);
185 return mDrmHalHidl->getOfflineLicenseState(keySetId, licenseState);
Jeff Tinkerc8baaba2018-10-23 11:32:36 -0700186}
187
Sohail Nagaraj0cc3da82022-11-30 10:22:37 +0530188DrmStatus DrmHal::getPropertyString(String8 const& name, String8& value) const {
Kyle Zhang6605add2022-01-13 17:51:23 +0000189 if (mDrmHalAidl->initCheck() == OK) return mDrmHalAidl->getPropertyString(name, value);
190 return mDrmHalHidl->getPropertyString(name, value);
John W. Bruce33ecc4f2017-04-03 16:49:05 -0700191}
192
Sohail Nagaraj0cc3da82022-11-30 10:22:37 +0530193DrmStatus DrmHal::getPropertyByteArray(String8 const& name, Vector<uint8_t>& value) const {
Kyle Zhang6605add2022-01-13 17:51:23 +0000194 if (mDrmHalAidl->initCheck() == OK) return mDrmHalAidl->getPropertyByteArray(name, value);
195 return mDrmHalHidl->getPropertyByteArray(name, value);
Jeff Tinkera53d6552017-01-20 00:31:46 -0800196}
197
Sohail Nagaraj0cc3da82022-11-30 10:22:37 +0530198DrmStatus DrmHal::setPropertyString(String8 const& name, String8 const& value) const {
Kyle Zhang6605add2022-01-13 17:51:23 +0000199 if (mDrmHalAidl->initCheck() == OK) return mDrmHalAidl->setPropertyString(name, value);
200 return mDrmHalHidl->setPropertyString(name, value);
John W. Bruce33ecc4f2017-04-03 16:49:05 -0700201}
202
Sohail Nagaraj0cc3da82022-11-30 10:22:37 +0530203DrmStatus DrmHal::setPropertyByteArray(String8 const& name, Vector<uint8_t> const& value) const {
Kyle Zhang6605add2022-01-13 17:51:23 +0000204 if (mDrmHalAidl->initCheck() == OK) return mDrmHalAidl->setPropertyByteArray(name, value);
205 return mDrmHalHidl->setPropertyByteArray(name, value);
Jeff Tinkera53d6552017-01-20 00:31:46 -0800206}
207
Sohail Nagaraj0cc3da82022-11-30 10:22:37 +0530208DrmStatus DrmHal::getMetrics(const sp<IDrmMetricsConsumer>& consumer) {
Kyle Zhang6605add2022-01-13 17:51:23 +0000209 if (mDrmHalAidl->initCheck() == OK) return mDrmHalAidl->getMetrics(consumer);
210 return mDrmHalHidl->getMetrics(consumer);
Jeff Tinkera53d6552017-01-20 00:31:46 -0800211}
212
Sohail Nagaraj0cc3da82022-11-30 10:22:37 +0530213DrmStatus DrmHal::setCipherAlgorithm(Vector<uint8_t> const& sessionId, String8 const& algorithm) {
Kyle Zhang6605add2022-01-13 17:51:23 +0000214 if (mDrmHalAidl->initCheck() == OK)
215 return mDrmHalAidl->setCipherAlgorithm(sessionId, algorithm);
216 return mDrmHalHidl->setCipherAlgorithm(sessionId, algorithm);
Jeff Tinkera53d6552017-01-20 00:31:46 -0800217}
218
Sohail Nagaraj0cc3da82022-11-30 10:22:37 +0530219DrmStatus DrmHal::setMacAlgorithm(Vector<uint8_t> const& sessionId, String8 const& algorithm) {
Kyle Zhang6605add2022-01-13 17:51:23 +0000220 if (mDrmHalAidl->initCheck() == OK) return mDrmHalAidl->setMacAlgorithm(sessionId, algorithm);
221 return mDrmHalHidl->setMacAlgorithm(sessionId, algorithm);
Adam Stoneab394d12017-12-22 12:34:20 -0800222}
Jeff Tinkera53d6552017-01-20 00:31:46 -0800223
Sohail Nagaraj0cc3da82022-11-30 10:22:37 +0530224DrmStatus DrmHal::encrypt(Vector<uint8_t> const& sessionId, Vector<uint8_t> const& keyId,
225 Vector<uint8_t> const& input, Vector<uint8_t> const& iv,
226 Vector<uint8_t>& output) {
Kyle Zhang6605add2022-01-13 17:51:23 +0000227 if (mDrmHalAidl->initCheck() == OK)
228 return mDrmHalAidl->encrypt(sessionId, keyId, input, iv, output);
229 return mDrmHalHidl->encrypt(sessionId, keyId, input, iv, output);
Jeff Tinkera53d6552017-01-20 00:31:46 -0800230}
231
Sohail Nagaraj0cc3da82022-11-30 10:22:37 +0530232DrmStatus DrmHal::decrypt(Vector<uint8_t> const& sessionId, Vector<uint8_t> const& keyId,
233 Vector<uint8_t> const& input, Vector<uint8_t> const& iv,
234 Vector<uint8_t>& output) {
Kyle Zhang6605add2022-01-13 17:51:23 +0000235 if (mDrmHalAidl->initCheck() == OK)
236 return mDrmHalAidl->decrypt(sessionId, keyId, input, iv, output);
237 return mDrmHalHidl->decrypt(sessionId, keyId, input, iv, output);
Jeff Tinkera53d6552017-01-20 00:31:46 -0800238}
239
Sohail Nagaraj0cc3da82022-11-30 10:22:37 +0530240DrmStatus DrmHal::sign(Vector<uint8_t> const& sessionId, Vector<uint8_t> const& keyId,
241 Vector<uint8_t> const& message, Vector<uint8_t>& signature) {
Kyle Zhang6605add2022-01-13 17:51:23 +0000242 if (mDrmHalAidl->initCheck() == OK)
243 return mDrmHalAidl->sign(sessionId, keyId, message, signature);
244 return mDrmHalHidl->sign(sessionId, keyId, message, signature);
Jeff Tinkera53d6552017-01-20 00:31:46 -0800245}
246
Sohail Nagaraj0cc3da82022-11-30 10:22:37 +0530247DrmStatus DrmHal::verify(Vector<uint8_t> const& sessionId, Vector<uint8_t> const& keyId,
248 Vector<uint8_t> const& message, Vector<uint8_t> const& signature,
249 bool& match) {
Kyle Zhang6605add2022-01-13 17:51:23 +0000250 if (mDrmHalAidl->initCheck() == OK)
251 return mDrmHalAidl->verify(sessionId, keyId, message, signature, match);
252 return mDrmHalHidl->verify(sessionId, keyId, message, signature, match);
Jeff Tinkera53d6552017-01-20 00:31:46 -0800253}
254
Sohail Nagaraj0cc3da82022-11-30 10:22:37 +0530255DrmStatus DrmHal::signRSA(Vector<uint8_t> const& sessionId, String8 const& algorithm,
256 Vector<uint8_t> const& message, Vector<uint8_t> const& wrappedKey,
257 Vector<uint8_t>& signature) {
Kyle Zhang6605add2022-01-13 17:51:23 +0000258 if (mDrmHalAidl->initCheck() == OK)
259 return mDrmHalAidl->signRSA(sessionId, algorithm, message, wrappedKey, signature);
260 return mDrmHalHidl->signRSA(sessionId, algorithm, message, wrappedKey, signature);
Jeff Tinkera53d6552017-01-20 00:31:46 -0800261}
262
Sohail Nagaraj0cc3da82022-11-30 10:22:37 +0530263DrmStatus DrmHal::setListener(const sp<IDrmClient>& listener) {
Kyle Zhang6605add2022-01-13 17:51:23 +0000264 if (mDrmHalAidl->initCheck() == OK) return mDrmHalAidl->setListener(listener);
265 return mDrmHalHidl->setListener(listener);
Jeff Tinkera53d6552017-01-20 00:31:46 -0800266}
267
Sohail Nagaraj0cc3da82022-11-30 10:22:37 +0530268DrmStatus DrmHal::requiresSecureDecoder(const char* mime, bool* required) const {
Kyle Zhang6605add2022-01-13 17:51:23 +0000269 if (mDrmHalAidl->initCheck() == OK) return mDrmHalAidl->requiresSecureDecoder(mime, required);
270 return mDrmHalHidl->requiresSecureDecoder(mime, required);
Jeff Tinkera53d6552017-01-20 00:31:46 -0800271}
272
Sohail Nagaraj0cc3da82022-11-30 10:22:37 +0530273DrmStatus DrmHal::requiresSecureDecoder(const char* mime, DrmPlugin::SecurityLevel securityLevel,
274 bool* required) const {
Kyle Zhang6605add2022-01-13 17:51:23 +0000275 if (mDrmHalAidl->initCheck() == OK)
276 return mDrmHalAidl->requiresSecureDecoder(mime, securityLevel, required);
277 return mDrmHalHidl->requiresSecureDecoder(mime, securityLevel, required);
Adam Stonefb679e32018-02-07 10:25:48 -0800278}
279
Sohail Nagaraj0cc3da82022-11-30 10:22:37 +0530280DrmStatus DrmHal::setPlaybackId(Vector<uint8_t> const& sessionId, const char* playbackId) {
Kyle Zhang6605add2022-01-13 17:51:23 +0000281 if (mDrmHalAidl->initCheck() == OK) return mDrmHalAidl->setPlaybackId(sessionId, playbackId);
282 return mDrmHalHidl->setPlaybackId(sessionId, playbackId);
John W. Bruce33ecc4f2017-04-03 16:49:05 -0700283}
284
Sohail Nagaraj0cc3da82022-11-30 10:22:37 +0530285DrmStatus DrmHal::getLogMessages(Vector<drm::V1_4::LogMessage>& logs) const {
Kyle Zhang6605add2022-01-13 17:51:23 +0000286 if (mDrmHalAidl->initCheck() == OK) return mDrmHalAidl->getLogMessages(logs);
287 return mDrmHalHidl->getLogMessages(logs);
Robert Shih9afca952021-02-12 01:36:06 -0800288}
289
Sohail Nagaraj0cc3da82022-11-30 10:22:37 +0530290DrmStatus DrmHal::getSupportedSchemes(std::vector<uint8_t>& schemes) const {
Kyle Zhang5df00bb2024-11-20 21:47:44 +0000291 const DrmStatus statusResultAidl = mDrmHalAidl->getSupportedSchemes(schemes);
292 const DrmStatus statusResultHidl = mDrmHalHidl->getSupportedSchemes(schemes);
293 if (statusResultHidl == OK || statusResultAidl == OK) return OK;
294 return statusResultAidl;
Kyle Zhang2567a5e2022-03-17 23:36:26 +0000295}
296
Jeff Tinkera53d6552017-01-20 00:31:46 -0800297} // namespace android