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;