From 37e52fa88da707b715adcc179efaee72c4f1ae63 Mon Sep 17 00:00:00 2001 From: Robert Shih Date: Wed, 20 Nov 2019 23:09:11 -0800 Subject: [PATCH] Add Drm 1.3 New API(s): * IDrmFactory::getSupportedCryptoScheme Bug: 139134043 Test: MediaDrmTest Change-Id: Ibe8c7eabcbdd96618c7c336281582ff19f349de9 --- .../compatibility_matrix.current.xml | 2 +- current.txt | 2 + drm/1.3/Android.bp | 20 ++++++++++ drm/1.3/ICryptoFactory.hal | 32 ++++++++++++++++ drm/1.3/IDrmFactory.hal | 38 +++++++++++++++++++ 5 files changed, 93 insertions(+), 1 deletion(-) create mode 100644 drm/1.3/Android.bp create mode 100644 drm/1.3/ICryptoFactory.hal create mode 100644 drm/1.3/IDrmFactory.hal diff --git a/compatibility_matrices/compatibility_matrix.current.xml b/compatibility_matrices/compatibility_matrix.current.xml index c6fd76ed7e..cf27a3f646 100644 --- a/compatibility_matrices/compatibility_matrix.current.xml +++ b/compatibility_matrices/compatibility_matrix.current.xml @@ -155,7 +155,7 @@ android.hardware.drm - 1.0-2 + 1.0-3 ICryptoFactory .* diff --git a/current.txt b/current.txt index 676beb0be2..8374ea4e5d 100644 --- a/current.txt +++ b/current.txt @@ -593,6 +593,8 @@ c1aa508d00b66ed5feefea398fd5edf28fa651ac89773adad7dfda4e0a73a952 android.hardwar 9811f867def49b420d8c707f7e38d3bdd64f835244e1d2a5e9762ab9835672dc android.hardware.cas@1.2::ICasListener f18695dd36ee205640b8326a17453858a7b4596653aaa6ef0016b0aef1bd4dac android.hardware.cas@1.2::IMediaCasService 4d85e814f94949dae4dc6cb82bbd7d6bb24ffafda6ddb2eac928d2a4fc2e21ce android.hardware.cas@1.2::types +66931c2506fbb5af61f20138cb05e0a09e7bf67d6964c231d27c648933bb33ec android.hardware.drm@1.3::ICryptoFactory +994d08ab27d613022c258a9ec48cece7adf2a305e92df5d76ef923e2c6665f64 android.hardware.drm@1.3::IDrmFactory ce8dbe76eb9ee94b46ef98f725be992e760a5751073d4f4912484026541371f3 android.hardware.health@2.1::IHealth 26f04510a0b57aba5167c5c0a7c2f077c2acbb98b81902a072517829fd9fd67f android.hardware.health@2.1::IHealthInfoCallback db47f4ceceb1f06c656f39caa70c557b0f8471ef59fd58611bea667ffca20101 android.hardware.health@2.1::types diff --git a/drm/1.3/Android.bp b/drm/1.3/Android.bp new file mode 100644 index 0000000000..b0ffcb92a5 --- /dev/null +++ b/drm/1.3/Android.bp @@ -0,0 +1,20 @@ +// This file is autogenerated by hidl-gen -Landroidbp. + +hidl_interface { + name: "android.hardware.drm@1.3", + root: "android.hardware", + vndk: { + enabled: true, + }, + srcs: [ + "IDrmFactory.hal", + "ICryptoFactory.hal", + ], + interfaces: [ + "android.hardware.drm@1.0", + "android.hardware.drm@1.1", + "android.hardware.drm@1.2", + "android.hidl.base@1.0", + ], + gen_java: false, +} diff --git a/drm/1.3/ICryptoFactory.hal b/drm/1.3/ICryptoFactory.hal new file mode 100644 index 0000000000..d7864eba61 --- /dev/null +++ b/drm/1.3/ICryptoFactory.hal @@ -0,0 +1,32 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package android.hardware.drm@1.3; + +import @1.2::ICryptoFactory; + +/** + * ICryptoFactory is the main entry point for interacting with a vendor's + * crypto HAL to create crypto plugins. Crypto plugins create crypto sessions + * which are used by a codec to decrypt protected video content. + * + * The 1.3 factory must always create 1.2 ICryptoPlugin interfaces, which are + * returned via the 1.0 createPlugin method. + * + * The ICryptoFactory hal is required because all top-level interfaces + * have to be updated in a minor uprev. + */ +interface ICryptoFactory extends @1.2::ICryptoFactory { +}; diff --git a/drm/1.3/IDrmFactory.hal b/drm/1.3/IDrmFactory.hal new file mode 100644 index 0000000000..520802892a --- /dev/null +++ b/drm/1.3/IDrmFactory.hal @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package android.hardware.drm@1.3; + +import @1.2::IDrmFactory; + +/** + * IDrmFactory is the main entry point for interacting with a vendor's + * drm HAL to create drm plugin instances. A drm plugin instance + * creates drm sessions which are used to obtain keys for a crypto + * session so it can decrypt protected video content. + * + * The 1.3 factory must always create 1.2 IDrmPlugin interfaces, which are + * returned via the 1.0 createPlugin method. + */ + +interface IDrmFactory extends @1.2::IDrmFactory { + /** + * Return vector of uuids identifying crypto schemes supported by this HAL. + * + * @return schemes Vector of uuids for which isCryptoSchemeSupported is true; + * each uuid can be used as input to createPlugin. + */ + getSupportedCryptoSchemes() generates(vec schemes); +};