From 58bad949913fc9311e9318d5d7a5f8f06a592367 Mon Sep 17 00:00:00 2001 From: Rahul Frias Date: Tue, 19 Jan 2016 15:32:09 -0800 Subject: [PATCH] DO NOT MERGE Only pass whole clear frames to OEMCrypto_CopyBuffer [ Merge from http://go/wvgerrit/16499 ] Passing clear subsamples to OEMCrypto_CopyBuffer and encrypted subsamples to OEMCrypto_DecryptCTR was causing performance issues as a lack of crypto session information made it hard to associate clear and encrypted subsamples with each other. [ Based on a patch from Kelly Ren/Qualcomm ] b/26538744 Change-Id: I4644f197b2ec481f6aa89d3fce29b22ebb7b0c06 (cherry picked from commit e3724815c6bed1e298f391ecb74247344891cc9b) --- libwvdrmengine/cdm/core/src/crypto_session.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libwvdrmengine/cdm/core/src/crypto_session.cpp b/libwvdrmengine/cdm/core/src/crypto_session.cpp index c5c17cb0..d51a415a 100644 --- a/libwvdrmengine/cdm/core/src/crypto_session.cpp +++ b/libwvdrmengine/cdm/core/src/crypto_session.cpp @@ -665,7 +665,9 @@ CdmResponseType CryptoSession::Decrypt(const CdmDecryptionParameters& params) { } OEMCryptoResult sts = OEMCrypto_ERROR_NOT_IMPLEMENTED; - if (!params.is_encrypted) { + if (!params.is_encrypted && + params.subsample_flags == + (OEMCrypto_FirstSubsample | OEMCrypto_LastSubsample)) { sts = OEMCrypto_CopyBuffer(requested_security_level_, params.encrypt_buffer, params.encrypt_length, &buffer_descriptor, params.subsample_flags);