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
diff --git a/include/media/hardware/CryptoAPI.h b/include/media/hardware/CryptoAPI.h
index 81d9601..810a443 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 @@
// 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 @@
Mode mode,
const void *srcPtr,
const SubSample *subSamples, size_t numSubSamples,
- void *dstPtr) = 0;
+ void *dstPtr,
+ AString *errorDetailMsg) = 0;
private:
CryptoPlugin(const CryptoPlugin &);