Allow propagation of error information and description from the CryptoPlugin to

the higher layers.

Change-Id: I9f434ad55cdf575803c208bedf47b607baff2330
related-to-bug: 6365261
diff --git a/include/media/ICrypto.h b/include/media/ICrypto.h
index 376c326..32a2cf7 100644
--- a/include/media/ICrypto.h
+++ b/include/media/ICrypto.h
@@ -24,6 +24,8 @@
 
 namespace android {
 
+struct AString;
+
 struct ICrypto : public IInterface {
     DECLARE_META_INTERFACE(Crypto);
 
@@ -46,7 +48,8 @@
             CryptoPlugin::Mode mode,
             const void *srcPtr,
             const CryptoPlugin::SubSample *subSamples, size_t numSubSamples,
-            void *dstPtr) = 0;
+            void *dstPtr,
+            AString *errorDetailMsg) = 0;
 
 private:
     DISALLOW_EVIL_CONSTRUCTORS(ICrypto);
diff --git a/include/media/stagefright/MediaCodec.h b/include/media/stagefright/MediaCodec.h
index 107699e..d09049e 100644
--- a/include/media/stagefright/MediaCodec.h
+++ b/include/media/stagefright/MediaCodec.h
@@ -28,6 +28,7 @@
 struct ABuffer;
 struct ACodec;
 struct AMessage;
+struct AString;
 struct ICrypto;
 struct SoftwareRenderer;
 struct SurfaceTextureClient;
@@ -72,7 +73,8 @@
             size_t offset,
             size_t size,
             int64_t presentationTimeUs,
-            uint32_t flags);
+            uint32_t flags,
+            AString *errorDetailMsg = NULL);
 
     status_t queueSecureInputBuffer(
             size_t index,
@@ -83,7 +85,8 @@
             const uint8_t iv[16],
             CryptoPlugin::Mode mode,
             int64_t presentationTimeUs,
-            uint32_t flags);
+            uint32_t flags,
+            AString *errorDetailMsg = NULL);
 
     status_t dequeueInputBuffer(size_t *index, int64_t timeoutUs = 0ll);
 
diff --git a/include/media/stagefright/MediaErrors.h b/include/media/stagefright/MediaErrors.h
index 8889520..bb01467 100644
--- a/include/media/stagefright/MediaErrors.h
+++ b/include/media/stagefright/MediaErrors.h
@@ -55,8 +55,12 @@
     ERROR_DRM_CANNOT_HANDLE                 = DRM_ERROR_BASE - 6,
     ERROR_DRM_TAMPER_DETECTED               = DRM_ERROR_BASE - 7,
 
-    ERROR_DRM_WV_VENDOR_MAX                 = DRM_ERROR_BASE - 500,
-    ERROR_DRM_WV_VENDOR_MIN                 = DRM_ERROR_BASE - 999,
+    ERROR_DRM_VENDOR_MAX                    = DRM_ERROR_BASE - 500,
+    ERROR_DRM_VENDOR_MIN                    = DRM_ERROR_BASE - 999,
+
+    // Deprecated
+    ERROR_DRM_WV_VENDOR_MAX                 = ERROR_DRM_VENDOR_MAX,
+    ERROR_DRM_WV_VENDOR_MIN                 = ERROR_DRM_VENDOR_MIN,
 
     // Heartbeat Error Codes
     HEARTBEAT_ERROR_BASE = -3000,