From 5ec377b43038a9b705704c2b48e03c9f9587dde4 Mon Sep 17 00:00:00 2001 From: Emilian Peev Date: Wed, 1 May 2019 10:51:23 -0700 Subject: [PATCH] Camera: Add fall back properties for FMQ size override All system properties in the vendor partition must start with either "vendor" or "ro.vendor". Older devices should not be affected but newer implementations may not be able to override the FMQ size if needed. Keep this functionality and provide fall back properties using "ro.vendor.camera". Bug: 77865891 Test: Manual using application and modified device configuration. Change-Id: I23d0ba7a10eaafe98a708277c26579e8a0fec614 --- .../3.2/default/CameraDeviceSession.cpp | 31 +++++++++++++++---- 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/camera/device/3.2/default/CameraDeviceSession.cpp b/camera/device/3.2/default/CameraDeviceSession.cpp index f2d7a47e83..99cdccbcdb 100644 --- a/camera/device/3.2/default/CameraDeviceSession.cpp +++ b/camera/device/3.2/default/CameraDeviceSession.cpp @@ -99,11 +99,20 @@ bool CameraDeviceSession::initialize() { return true; } - int32_t reqFMQSize = property_get_int32("ro.camera.req.fmq.size", /*default*/-1); + // "ro.camera" properties are no longer supported on vendor side. + // Support a fall back for the fmq size override that uses "ro.vendor.camera" + // properties. + int32_t reqFMQSize = property_get_int32("ro.vendor.camera.req.fmq.size", /*default*/-1); if (reqFMQSize < 0) { - reqFMQSize = CAMERA_REQUEST_METADATA_QUEUE_SIZE; + reqFMQSize = property_get_int32("ro.camera.req.fmq.size", /*default*/-1); + if (reqFMQSize < 0) { + reqFMQSize = CAMERA_REQUEST_METADATA_QUEUE_SIZE; + } else { + ALOGV("%s: request FMQ size overridden to %d", __FUNCTION__, reqFMQSize); + } } else { - ALOGV("%s: request FMQ size overridden to %d", __FUNCTION__, reqFMQSize); + ALOGV("%s: request FMQ size overridden to %d via fallback property", __FUNCTION__, + reqFMQSize); } mRequestMetadataQueue = std::make_unique( @@ -114,12 +123,22 @@ bool CameraDeviceSession::initialize() { return true; } - int32_t resFMQSize = property_get_int32("ro.camera.res.fmq.size", /*default*/-1); + // "ro.camera" properties are no longer supported on vendor side. + // Support a fall back for the fmq size override that uses "ro.vendor.camera" + // properties. + int32_t resFMQSize = property_get_int32("ro.vendor.camera.res.fmq.size", /*default*/-1); if (resFMQSize < 0) { - resFMQSize = CAMERA_RESULT_METADATA_QUEUE_SIZE; + resFMQSize = property_get_int32("ro.camera.res.fmq.size", /*default*/-1); + if (resFMQSize < 0) { + resFMQSize = CAMERA_RESULT_METADATA_QUEUE_SIZE; + } else { + ALOGV("%s: result FMQ size overridden to %d", __FUNCTION__, resFMQSize); + } } else { - ALOGV("%s: result FMQ size overridden to %d", __FUNCTION__, resFMQSize); + ALOGV("%s: result FMQ size overridden to %d via fallback property", __FUNCTION__, + resFMQSize); } + mResultMetadataQueue = std::make_shared( static_cast(resFMQSize), false /* non blocking */);