Camera: Fix request metadata override for repeating request
- For repeating request, same metadata structure is used for multiple
requests sent to camera HAL. And now that the camera framework overrides
ZOOM_RATIO value, we cannot reliably derive whether the application sets
ZOOM_RATIO or not by repeatedly querying its value.
- For DistortionCorrection, zoomRatio, and rotateAndCrop, avoid
duplicating capture request update for repeating request.
Test: GoogleCamera zoomed still capture, Camera CTS
Bug: 164960160
Change-Id: Ib4fdf5056c286a5bd02cd334eb1ca8644598d676
diff --git a/services/camera/libcameraservice/device3/Camera3Device.h b/services/camera/libcameraservice/device3/Camera3Device.h
index 408f1f9..77284cc 100644
--- a/services/camera/libcameraservice/device3/Camera3Device.h
+++ b/services/camera/libcameraservice/device3/Camera3Device.h
@@ -517,6 +517,19 @@
// overriding of ROTATE_AND_CROP value and adjustment of coordinates
// in several other controls in both the request and the result
bool mRotateAndCropAuto;
+ // Whether this capture request has its zoom ratio set to 1.0x before
+ // the framework overrides it for camera HAL consumption.
+ bool mZoomRatioIs1x;
+
+
+ // Whether this capture request's distortion correction update has
+ // been done.
+ bool mDistortionCorrectionUpdated = false;
+ // Whether this capture request's rotation and crop update has been
+ // done.
+ bool mRotationAndCropUpdated = false;
+ // Whether this capture request's zoom ratio update has been done.
+ bool mZoomRatioUpdated = false;
};
typedef List<sp<CaptureRequest> > RequestList;