Camera: Support querying session config with parameters
Existing isSessionConfigurationSupported doesn't consider session
parameters. However, many features are modeled as a session parameters.
Add a new API to query session configuration support considring session
parameters.
Test: Camera CTS
Bug: 309627704
Change-Id: If64d878cb0052c0f78db277ebe605d36197eb618
diff --git a/services/camera/libcameraservice/api2/CameraDeviceClient.cpp b/services/camera/libcameraservice/api2/CameraDeviceClient.cpp
index 28f7054..095d425 100644
--- a/services/camera/libcameraservice/api2/CameraDeviceClient.cpp
+++ b/services/camera/libcameraservice/api2/CameraDeviceClient.cpp
@@ -742,13 +742,6 @@
return STATUS_ERROR(CameraService::ERROR_DISCONNECTED, "Camera device no longer alive");
}
- auto operatingMode = sessionConfiguration.getOperatingMode();
- res = SessionConfigurationUtils::checkOperatingMode(operatingMode, mDevice->info(),
- mCameraIdStr);
- if (!res.isOk()) {
- return res;
- }
-
if (status == nullptr) {
std::string msg = fmt::sprintf( "Camera %s: Invalid status!", mCameraIdStr.c_str());
ALOGE("%s: %s", __FUNCTION__, msg.c_str());
@@ -756,11 +749,9 @@
}
*status = false;
- camera3::metadataGetter getMetadata = [this](const std::string &id,
- bool /*overrideForPerfClass*/) {
- return mDevice->infoPhysical(id);};
ret = mProviderManager->isSessionConfigurationSupported(mCameraIdStr.c_str(),
- sessionConfiguration, mOverrideForPerfClass, getMetadata, status);
+ sessionConfiguration, mOverrideForPerfClass, /*checkSessionParams*/false,
+ status);
switch (ret) {
case OK:
// Expected, do nothing.
@@ -1396,7 +1387,9 @@
status_t err;
camera_request_template_t tempId = camera_request_template_t::CAMERA_TEMPLATE_COUNT;
- if (!(res = mapRequestTemplate(templateId, &tempId)).isOk()) return res;
+ res = SessionConfigurationUtils::mapRequestTemplateFromClient(
+ mCameraIdStr, templateId, &tempId);
+ if (!res.isOk()) return res;
CameraMetadata metadata;
if ( (err = mDevice->createDefaultRequest(tempId, &metadata) ) == OK &&
@@ -2245,44 +2238,6 @@
return CameraUtils::getRotationTransform(staticInfo, mirrorMode, transform);
}
-binder::Status CameraDeviceClient::mapRequestTemplate(int templateId,
- camera_request_template_t* tempId /*out*/) {
- binder::Status ret = binder::Status::ok();
-
- if (tempId == nullptr) {
- ret = STATUS_ERROR_FMT(CameraService::ERROR_ILLEGAL_ARGUMENT,
- "Camera %s: Invalid template argument", mCameraIdStr.c_str());
- return ret;
- }
- switch(templateId) {
- case ICameraDeviceUser::TEMPLATE_PREVIEW:
- *tempId = camera_request_template_t::CAMERA_TEMPLATE_PREVIEW;
- break;
- case ICameraDeviceUser::TEMPLATE_RECORD:
- *tempId = camera_request_template_t::CAMERA_TEMPLATE_VIDEO_RECORD;
- break;
- case ICameraDeviceUser::TEMPLATE_STILL_CAPTURE:
- *tempId = camera_request_template_t::CAMERA_TEMPLATE_STILL_CAPTURE;
- break;
- case ICameraDeviceUser::TEMPLATE_VIDEO_SNAPSHOT:
- *tempId = camera_request_template_t::CAMERA_TEMPLATE_VIDEO_SNAPSHOT;
- break;
- case ICameraDeviceUser::TEMPLATE_ZERO_SHUTTER_LAG:
- *tempId = camera_request_template_t::CAMERA_TEMPLATE_ZERO_SHUTTER_LAG;
- break;
- case ICameraDeviceUser::TEMPLATE_MANUAL:
- *tempId = camera_request_template_t::CAMERA_TEMPLATE_MANUAL;
- break;
- default:
- ret = STATUS_ERROR_FMT(CameraService::ERROR_ILLEGAL_ARGUMENT,
- "Camera %s: Template ID %d is invalid or not supported",
- mCameraIdStr.c_str(), templateId);
- return ret;
- }
-
- return ret;
-}
-
const CameraMetadata &CameraDeviceClient::getStaticInfo(const std::string &cameraId) {
if (mDevice->getId() == cameraId) {
return mDevice->info();