From c481b5012a5f6cf72e5e93b36f1ed4c9169916f2 Mon Sep 17 00:00:00 2001 From: Jeff Tinker Date: Mon, 6 Apr 2015 18:21:05 -0700 Subject: Pass crypto source data using a shared buffer MediaCodec was using a binder transaction buffer to pass encryption source data for protected content. On some 4K content, the max binder transaction buffer size was being exceeded. This change uses a shared buffer for the encryption source data instead of a binder transaction buffer, which avoids the problem and may be more efficient. bug: 20027687 Change-Id: I36a24ebf600d7e1064b78e48b167fdc29b2c65e9 --- media/libmediaplayerservice/Crypto.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'media/libmediaplayerservice/Crypto.cpp') diff --git a/media/libmediaplayerservice/Crypto.cpp b/media/libmediaplayerservice/Crypto.cpp index 8ee7c0b..e768772 100644 --- a/media/libmediaplayerservice/Crypto.cpp +++ b/media/libmediaplayerservice/Crypto.cpp @@ -22,6 +22,7 @@ #include "Crypto.h" +#include #include #include #include @@ -238,7 +239,7 @@ ssize_t Crypto::decrypt( const uint8_t key[16], const uint8_t iv[16], CryptoPlugin::Mode mode, - const void *srcPtr, + const sp &sharedBuffer, size_t offset, const CryptoPlugin::SubSample *subSamples, size_t numSubSamples, void *dstPtr, AString *errorDetailMsg) { @@ -252,6 +253,8 @@ ssize_t Crypto::decrypt( return -EINVAL; } + const void *srcPtr = static_cast(sharedBuffer->pointer()) + offset; + return mPlugin->decrypt( secure, key, iv, mode, srcPtr, subSamples, numSubSamples, dstPtr, errorDetailMsg); -- cgit v1.1