Camera: Remove ZOOM_METHOD from capture request for HAL
ZOOM_METHOD is a framework only key. Remove it from the capture request
before sending it to the camera HAL.
Flag: EXEMPT bugfix
Test: Use camera
Bug: 379333302
Change-Id: I2df90b2282f8845a6bde213f958bf303d770efbd
diff --git a/services/camera/libcameraservice/device3/Camera3Device.cpp b/services/camera/libcameraservice/device3/Camera3Device.cpp
index c6434a5..9e89a19 100644
--- a/services/camera/libcameraservice/device3/Camera3Device.cpp
+++ b/services/camera/libcameraservice/device3/Camera3Device.cpp
@@ -3796,16 +3796,19 @@
return submitRequestSuccess;
}
-status_t Camera3Device::removeFwkOnlyRegionKeys(CameraMetadata *request) {
- static const std::array<uint32_t, 4> kFwkOnlyRegionKeys = {ANDROID_CONTROL_AF_REGIONS_SET,
- ANDROID_CONTROL_AE_REGIONS_SET, ANDROID_CONTROL_AWB_REGIONS_SET,
- ANDROID_SCALER_CROP_REGION_SET};
+status_t Camera3Device::removeFwkOnlyKeys(CameraMetadata *request) {
+ static const std::array<uint32_t, 5> kFwkOnlyKeys = {
+ ANDROID_CONTROL_AF_REGIONS_SET,
+ ANDROID_CONTROL_AE_REGIONS_SET,
+ ANDROID_CONTROL_AWB_REGIONS_SET,
+ ANDROID_SCALER_CROP_REGION_SET,
+ ANDROID_CONTROL_ZOOM_METHOD};
if (request == nullptr) {
ALOGE("%s request metadata nullptr", __FUNCTION__);
return BAD_VALUE;
}
status_t res = OK;
- for (const auto &key : kFwkOnlyRegionKeys) {
+ for (const auto &key : kFwkOnlyKeys) {
if (request->exists(key)) {
res = request->erase(key);
if (res != OK) {
@@ -3884,7 +3887,7 @@
it != captureRequest->mSettingsList.end(); it++) {
if (parent->mUHRCropAndMeteringRegionMappers.find(it->cameraId) ==
parent->mUHRCropAndMeteringRegionMappers.end()) {
- if (removeFwkOnlyRegionKeys(&(it->metadata)) != OK) {
+ if (removeFwkOnlyKeys(&(it->metadata)) != OK) {
SET_ERR("RequestThread: Unable to remove fwk-only keys from request"
"%d: %s (%d)", halRequest->frame_number, strerror(-res),
res);
@@ -3904,7 +3907,7 @@
return INVALID_OPERATION;
}
captureRequest->mUHRCropAndMeteringRegionsUpdated = true;
- if (removeFwkOnlyRegionKeys(&(it->metadata)) != OK) {
+ if (removeFwkOnlyKeys(&(it->metadata)) != OK) {
SET_ERR("RequestThread: Unable to remove fwk-only keys from request"
"%d: %s (%d)", halRequest->frame_number, strerror(-res),
res);
diff --git a/services/camera/libcameraservice/device3/Camera3Device.h b/services/camera/libcameraservice/device3/Camera3Device.h
index f1e088e..5711384 100644
--- a/services/camera/libcameraservice/device3/Camera3Device.h
+++ b/services/camera/libcameraservice/device3/Camera3Device.h
@@ -367,7 +367,7 @@
protected:
status_t disconnectImpl();
- static status_t removeFwkOnlyRegionKeys(CameraMetadata *request);
+ static status_t removeFwkOnlyKeys(CameraMetadata *request);
float getMaxPreviewFps(sp<camera3::Camera3OutputStreamInterface> stream);