Camera2: Connect camera parameters to HAL request entries.
- All fields in Camera.Parameters are mapped to HAL2 entries, and
communicated to the HAL.
- Preview stream properly updated on parameter changes
- Slight code rearrangment for improved clarity
Bug: 6243944
Change-Id: I2a1db5c148809a62ba3524fb659dd6065affff8e
diff --git a/services/camera/libcameraservice/Camera2Client.h b/services/camera/libcameraservice/Camera2Client.h
index 18898b9..776f981 100644
--- a/services/camera/libcameraservice/Camera2Client.h
+++ b/services/camera/libcameraservice/Camera2Client.h
@@ -91,7 +91,7 @@
// The following must be called with mICamaeraLock already locked
status_t setPreviewWindowLocked(const sp<IBinder>& binder,
- const sp<ANativeWindow>& window);
+ sp<ANativeWindow> window);
void stopPreviewLocked();
status_t startPreviewLocked();
@@ -192,6 +192,8 @@
static const int NO_STREAM = -1;
sp<IBinder> mPreviewSurface;
+ sp<ANativeWindow> mPreviewWindow;
+
int mPreviewStreamId;
camera_metadata_t *mPreviewRequest;
@@ -219,14 +221,29 @@
// old API parameter map.
status_t buildDefaultParameters();
- // Update preview request based on mParams
+ // Update preview request based on mParameters
status_t updatePreviewRequest();
+ // Update preview stream based on mParameters
+ status_t updatePreviewStream();
- // Update capture request based on mParams
+ // Update capture request based on mParameters
status_t updateCaptureRequest();
- // Update capture stream based on mParams
+ // Update capture stream based on mParameters
status_t updateCaptureStream();
+ // Update parameters all requests use, based on mParameters
+ status_t updateRequestCommon(camera_metadata_t *request);
+
+ // Update specific metadata entry with new values. Adds entry if it does not
+ // exist, which will invalidate sorting
+ static status_t updateEntry(camera_metadata_t *buffer,
+ uint32_t tag, const void *data, size_t data_count);
+
+ // Remove metadata entry. Will invalidate sorting. If entry does not exist,
+ // does nothing.
+ static status_t deleteEntry(camera_metadata_t *buffer,
+ uint32_t tag);
+
// Convert camera1 preview format string to camera2 enum
static int formatStringToEnum(const char *format);
static const char *formatEnumToString(int format);