Merge "heif: cache the entire stream if possible to support seek" into oc-mr1-dev
am: 7124c1985b
Change-Id: I1eb504704ab164858a5ff9ab51b94144db0fa30d
diff --git a/drm/libdrmframework/plugins/forward-lock/FwdLockEngine/src/FwdLockEngine.cpp b/drm/libdrmframework/plugins/forward-lock/FwdLockEngine/src/FwdLockEngine.cpp
index 830def9..73eea89 100644
--- a/drm/libdrmframework/plugins/forward-lock/FwdLockEngine/src/FwdLockEngine.cpp
+++ b/drm/libdrmframework/plugins/forward-lock/FwdLockEngine/src/FwdLockEngine.cpp
@@ -502,8 +502,8 @@
int retVal = FwdLockFile_CheckHeaderIntegrity(fileDesc);
DecodeSession* decodeSession = new DecodeSession(fileDesc);
- if (retVal && NULL != decodeSession) {
- decodeSessionMap.addValue(decryptHandle->decryptId, decodeSession);
+ if (retVal && NULL != decodeSession &&
+ decodeSessionMap.addValue(decryptHandle->decryptId, decodeSession)) {
const char *pmime= FwdLockFile_GetContentType(fileDesc);
String8 contentType = String8(pmime == NULL ? "" : pmime);
contentType.toLower();
@@ -513,7 +513,11 @@
decryptHandle->decryptInfo = NULL;
result = DRM_NO_ERROR;
} else {
- LOG_VERBOSE("FwdLockEngine::onOpenDecryptSession Integrity Check failed for the fd");
+ if (retVal && NULL != decodeSession) {
+ LOG_VERBOSE("FwdLockEngine::onOpenDecryptSession Integrity Check failed for the fd");
+ } else {
+ LOG_VERBOSE("FwdLockEngine::onOpenDecryptSession DecodeSesssion insertion failed");
+ }
FwdLockFile_detach(fileDesc);
delete decodeSession;
}
@@ -631,7 +635,7 @@
ssize_t size = -1;
if (NULL != decryptHandle &&
- decodeSessionMap.isCreated(decryptHandle->decryptId) &&
+ decodeSessionMap.isCreated(decryptHandle->decryptId) &&
NULL != buffer &&
numBytes > -1) {
DecodeSession* session = decodeSessionMap.getValue(decryptHandle->decryptId);
diff --git a/services/camera/libcameraservice/api1/client2/Parameters.cpp b/services/camera/libcameraservice/api1/client2/Parameters.cpp
index a305bc7..1addcdd 100644
--- a/services/camera/libcameraservice/api1/client2/Parameters.cpp
+++ b/services/camera/libcameraservice/api1/client2/Parameters.cpp
@@ -2200,6 +2200,14 @@
normalizedXToArray(meteringAreas[j].right);
reqMeteringAreas[i + 3] =
normalizedYToArray(meteringAreas[j].bottom);
+ // Requested size may be zero by rounding error with/without zooming.
+ // The ae regions should be at least 1 if metering width/height is not zero.
+ if (reqMeteringAreas[i + 0] == reqMeteringAreas[i + 2]) {
+ reqMeteringAreas[i + 2]++;
+ }
+ if (reqMeteringAreas[i + 1] == reqMeteringAreas[i + 3]) {
+ reqMeteringAreas[i + 3]++;
+ }
} else {
reqMeteringAreas[i + 0] = 0;
reqMeteringAreas[i + 1] = 0;