diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2020-12-05 00:13:05 +0000 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2020-12-05 00:13:05 +0000 |
commit | b856138291b2f09de9624b101225487c03ef9315 (patch) | |
tree | 035fde4831a7627a482e74fd1f388fba5a893e96 | |
parent | b352e821dd8522acb289e285a26d787943ca23aa (diff) | |
parent | 25f8e687ba70d4b1137cb5bff23820021e3245f8 (diff) | |
download | platform_hardware_interfaces-b856138291b2f09de9624b101225487c03ef9315.tar.gz platform_hardware_interfaces-b856138291b2f09de9624b101225487c03ef9315.tar.bz2 platform_hardware_interfaces-b856138291b2f09de9624b101225487c03ef9315.zip |
Snap for 7012656 from 25f8e687ba70d4b1137cb5bff23820021e3245f8 to rvc-qpr2-release
Change-Id: I7e7dcc5d5722e80ce8ad3b1cfd9c5bca7b3f7557
-rw-r--r-- | camera/common/1.0/default/CameraModule.cpp | 35 |
1 files changed, 20 insertions, 15 deletions
diff --git a/camera/common/1.0/default/CameraModule.cpp b/camera/common/1.0/default/CameraModule.cpp index 86f26e480c..27e74f1480 100644 --- a/camera/common/1.0/default/CameraModule.cpp +++ b/camera/common/1.0/default/CameraModule.cpp @@ -529,24 +529,29 @@ status_t CameraModule::filterOpenErrorCode(status_t err) { } void CameraModule::removeCamera(int cameraId) { - std::unordered_set<std::string> physicalIds; - camera_metadata_t *metadata = const_cast<camera_metadata_t*>( - mCameraInfoMap.valueFor(cameraId).static_camera_characteristics); - common::V1_0::helper::CameraMetadata hidlMetadata(metadata); - - if (isLogicalMultiCamera(hidlMetadata, &physicalIds)) { - for (const auto& id : physicalIds) { - int idInt = std::stoi(id); - if (mPhysicalCameraInfoMap.indexOfKey(idInt) >= 0) { - free_camera_metadata(mPhysicalCameraInfoMap[idInt]); - mPhysicalCameraInfoMap.removeItem(idInt); - } else { - ALOGE("%s: Cannot find corresponding static metadata for physical id %s", - __FUNCTION__, id.c_str()); + // Skip HAL1 devices which isn't cached in mCameraInfoMap and don't advertise + // static_camera_characteristics + if (getDeviceVersion(cameraId) >= CAMERA_DEVICE_API_VERSION_3_0) { + std::unordered_set<std::string> physicalIds; + camera_metadata_t *metadata = const_cast<camera_metadata_t*>( + mCameraInfoMap.valueFor(cameraId).static_camera_characteristics); + common::V1_0::helper::CameraMetadata hidlMetadata(metadata); + + if (isLogicalMultiCamera(hidlMetadata, &physicalIds)) { + for (const auto& id : physicalIds) { + int idInt = std::stoi(id); + if (mPhysicalCameraInfoMap.indexOfKey(idInt) >= 0) { + free_camera_metadata(mPhysicalCameraInfoMap[idInt]); + mPhysicalCameraInfoMap.removeItem(idInt); + } else { + ALOGE("%s: Cannot find corresponding static metadata for physical id %s", + __FUNCTION__, id.c_str()); + } } } + free_camera_metadata(metadata); } - free_camera_metadata(metadata); + mCameraInfoMap.removeItem(cameraId); mDeviceVersionMap.removeItem(cameraId); } |