Camera: Load initial session params speculatively

In case camera clients don't pass any session parameters try to
load their initial values depending on the last cached default
request.

Bug: 79989121
Test: Camera CTS
Change-Id: I73dd6b37584f6ae5dc5b9681313eb080ddd53b88
gugelfrei
Emilian Peev 6 years ago
parent 7bb4333ff2
commit b139b178e8

@ -77,7 +77,8 @@ Camera3Device::Camera3Device(const String8 &id):
mNextShutterFrameNumber(0),
mNextReprocessShutterFrameNumber(0),
mListener(NULL),
mVendorTagId(CAMERA_METADATA_INVALID_VENDOR_ID)
mVendorTagId(CAMERA_METADATA_INVALID_VENDOR_ID),
mLastTemplateId(-1)
{
ATRACE_CALL();
camera3_callback_ops::notify = &sNotify;
@ -1597,6 +1598,18 @@ status_t Camera3Device::configureStreams(const CameraMetadata& sessionParams, in
Mutex::Autolock il(mInterfaceLock);
Mutex::Autolock l(mLock);
// In case the client doesn't include any session parameter, try a
// speculative configuration using the values from the last cached
// default request.
if (sessionParams.isEmpty() &&
((mLastTemplateId > 0) && (mLastTemplateId < CAMERA3_TEMPLATE_COUNT)) &&
(!mRequestTemplateCache[mLastTemplateId].isEmpty())) {
ALOGV("%s: Speculative session param configuration with template id: %d", __func__,
mLastTemplateId);
return filterParamsAndConfigureLocked(mRequestTemplateCache[mLastTemplateId],
operatingMode);
}
return filterParamsAndConfigureLocked(sessionParams, operatingMode);
}
@ -1673,6 +1686,7 @@ status_t Camera3Device::createDefaultRequest(int templateId,
if (!mRequestTemplateCache[templateId].isEmpty()) {
*request = mRequestTemplateCache[templateId];
mLastTemplateId = templateId;
return OK;
}
}
@ -1697,6 +1711,7 @@ status_t Camera3Device::createDefaultRequest(int templateId,
mRequestTemplateCache[templateId].acquire(rawRequest);
*request = mRequestTemplateCache[templateId];
mLastTemplateId = templateId;
}
return OK;
}

@ -1191,6 +1191,9 @@ class Camera3Device :
metadata_vendor_id_t mVendorTagId;
// Cached last requested template id
int mLastTemplateId;
/**
* Static callback forwarding methods from HAL to instance
*/

Loading…
Cancel
Save