Camera: Pass metadataGetter from CameraDeviceClient
As part of HIDL->AIDL conversion, the metadataGetter has been changed
to use the mPhysicalCameraCharacteristics within the DeviceInfo3. But
for the case where a physical camera is a public available camera Id,
the lookup will fail.
Revert back to previous logic where the metadataGetter is based on
Camera3Device, which has knowledge of all physical camera's
characteristics.
Bug: 230337556
Test: Camera CTS, and vendor testing
Change-Id: I7aa349282b79f36b5dccedc86d037095c5b64f65
diff --git a/services/camera/libcameraservice/common/CameraProviderManager.h b/services/camera/libcameraservice/common/CameraProviderManager.h
index 3d108bd..d934ae8 100644
--- a/services/camera/libcameraservice/common/CameraProviderManager.h
+++ b/services/camera/libcameraservice/common/CameraProviderManager.h
@@ -33,6 +33,7 @@
#include <utils/Errors.h>
#include <android/hardware/ICameraService.h>
#include <utils/IPCTransport.h>
+#include <utils/SessionConfigurationUtils.h>
#include <aidl/android/hardware/camera/provider/ICameraProvider.h>
#include <android/hardware/camera/common/1.0/types.h>
#include <android/hardware/camera/provider/2.5/ICameraProvider.h>
@@ -278,7 +279,7 @@
*/
status_t isSessionConfigurationSupported(const std::string& id,
const SessionConfiguration &configuration,
- bool overrideForPerfClass,
+ bool overrideForPerfClass, camera3::metadataGetter getMetadata,
bool *status /*out*/) const;
/**
@@ -587,6 +588,7 @@
virtual status_t isSessionConfigurationSupported(
const SessionConfiguration &/*configuration*/,
bool /*overrideForPerfClass*/,
+ camera3::metadataGetter /*getMetadata*/,
bool * /*status*/) {
return INVALID_OPERATION;
}
@@ -639,6 +641,7 @@
CameraMetadata *characteristics) const override;
virtual status_t isSessionConfigurationSupported(
const SessionConfiguration &configuration, bool /*overrideForPerfClass*/,
+ camera3::metadataGetter /*getMetadata*/,
bool *status /*out*/) = 0;
virtual status_t filterSmallJpegSizes() override;
virtual void notifyDeviceStateChange(
@@ -658,6 +661,8 @@
// A copy of mCameraCharacteristics without performance class
// override
std::unique_ptr<CameraMetadata> mCameraCharNoPCOverride;
+ // Only contains characteristics for hidden physical cameras,
+ // not for public physical cameras.
std::unordered_map<std::string, CameraMetadata> mPhysicalCameraCharacteristics;
void queryPhysicalCameraIds();
SystemCameraKind getSystemCameraKind();