From ac7d8fe36f6bb825b0a4031ee521caf95df39f2a Mon Sep 17 00:00:00 2001 From: Jeff Tinker Date: Fri, 10 Apr 2015 04:10:10 -0700 Subject: [PATCH] Add a method to associate MediaDrm session with MediaCrypto Previously, to associate a MediaDrm session with MediaCrypto, the MediaDrm sessionId was passed as initData to the MediaCrypto constructor. This is not ideal for two reasons: it's pretty obscure and you can't change the association without tearing down the MediaCodec/MediaCrypto and starting all over. Use cases like key rotation require being able to update the MediaDrm session post-construction. This CL addresses both of these issues. bug: 19570317 Change-Id: Iede35e73e9007df13254edaa5877cb4832b28646 --- include/media/hardware/CryptoAPI.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/include/media/hardware/CryptoAPI.h b/include/media/hardware/CryptoAPI.h index ab8e2e277..3e3257f95 100644 --- a/include/media/hardware/CryptoAPI.h +++ b/include/media/hardware/CryptoAPI.h @@ -14,7 +14,9 @@ * limitations under the License. */ +#include #include +#include #ifndef CRYPTO_API_H_ @@ -71,6 +73,16 @@ struct CryptoPlugin { virtual void notifyResolution(uint32_t /* width */, uint32_t /* height */) {} + // A MediaDrm session may be associated with a MediaCrypto session. The + // associated MediaDrm session is used to load decryption keys + // into the crypto/drm plugin. The keys are then referenced by key-id + // in the 'key' parameter to the decrypt() method. + // Should return NO_ERROR on success, ERROR_DRM_SESSION_NOT_OPENED if + // the session is not opened and a code from MediaErrors.h otherwise. + virtual status_t setMediaDrmSession(const Vector & /*sessionId */) { + return ERROR_UNSUPPORTED; + } + // If the error returned falls into the range // ERROR_DRM_VENDOR_MIN..ERROR_DRM_VENDOR_MAX, errorDetailMsg should be // filled in with an appropriate string.