From 383190e475d7bdbe90359dbb99721041773a8646 Mon Sep 17 00:00:00 2001 From: Andreas Huber Date: Thu, 19 Apr 2012 12:55:36 -0700 Subject: [PATCH] Allow the crypto plugin to specify error detail if it returns an error in the range ERROR_DRM_VENDOR_MIN..ERROR_DRM_VENDOR_MAX. Change-Id: Ic5d53e98cf6d98d92ad305d51f848e03d0bf3a84 related-to-bug: 6365261 --- include/media/hardware/CryptoAPI.h | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/include/media/hardware/CryptoAPI.h b/include/media/hardware/CryptoAPI.h index 81d960137..810a443e8 100644 --- a/include/media/hardware/CryptoAPI.h +++ b/include/media/hardware/CryptoAPI.h @@ -22,6 +22,7 @@ namespace android { +struct AString; struct CryptoPlugin; struct CryptoFactory { @@ -63,6 +64,12 @@ struct CryptoPlugin { // media data of the given mime type. virtual bool requiresSecureDecoderComponent(const char *mime) const = 0; + // 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. + // At the java level these special errors will then trigger a + // MediaCodec.CryptoException that gives clients access to both + // the error code and the errorDetailMsg. virtual status_t decrypt( bool secure, const uint8_t key[16], @@ -70,7 +77,8 @@ struct CryptoPlugin { Mode mode, const void *srcPtr, const SubSample *subSamples, size_t numSubSamples, - void *dstPtr) = 0; + void *dstPtr, + AString *errorDetailMsg) = 0; private: CryptoPlugin(const CryptoPlugin &);