[libcamera-devel] [PATCH 6/7] android: camera_device: Use CameraMetadata in processControls()
Jacopo Mondi
jacopo at jmondi.org
Thu Jan 21 17:53:04 CET 2021
Use the CameraMetadata API to retrieve the values of the request
associated settings in CameraDevice::processControls() function.
Signed-off-by: Jacopo Mondi <jacopo at jmondi.org>
---
src/android/camera_device.cpp | 15 ++++++---------
src/android/camera_device.h | 3 +--
2 files changed, 7 insertions(+), 11 deletions(-)
diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp
index 9733c84612bd..d185fdf7fb2f 100644
--- a/src/android/camera_device.cpp
+++ b/src/android/camera_device.cpp
@@ -1623,10 +1623,10 @@ FrameBuffer *CameraDevice::createFrameBuffer(const buffer_handle_t camera3buffer
return new FrameBuffer(std::move(planes));
}
-int CameraDevice::processControls(const camera3_capture_request_t *camera3Request,
- Camera3RequestDescriptor *descriptor)
+int CameraDevice::processControls(Camera3RequestDescriptor *descriptor)
{
- if (!camera3Request->settings)
+ const CameraMetadata &settings = descriptor->settings_;
+ if (!settings.isValid())
return 0;
/*
@@ -1635,12 +1635,9 @@ int CameraDevice::processControls(const camera3_capture_request_t *camera3Reques
* \todo As soon as more controls are handled, this part should be
* broken out to a dedicated function.
*/
- const camera_metadata_t *camera3Settings = camera3Request->settings;
camera_metadata_ro_entry_t entry;
- int ret = find_camera_metadata_ro_entry(camera3Settings,
- ANDROID_SCALER_CROP_REGION,
- &entry);
- if (!ret) {
+ bool found = settings.getEntry(ANDROID_SCALER_CROP_REGION, &entry);
+ if (found) {
const int32_t *data = entry.data.i32;
Rectangle cropRegion{ data[0], data[1],
static_cast<unsigned int>(data[2]),
@@ -1752,7 +1749,7 @@ int CameraDevice::processCaptureRequest(camera3_capture_request_t *camera3Reques
* Translate controls from Android to libcamera and queue the request
* to the CameraWorker thread.
*/
- int ret = processControls(camera3Request, descriptor);
+ int ret = processControls(descriptor);
if (ret)
return ret;
diff --git a/src/android/camera_device.h b/src/android/camera_device.h
index bad3be8e8066..597d11fcda2e 100644
--- a/src/android/camera_device.h
+++ b/src/android/camera_device.h
@@ -104,8 +104,7 @@ private:
void notifyError(uint32_t frameNumber, camera3_stream_t *stream);
CameraMetadata *requestTemplatePreview();
libcamera::PixelFormat toPixelFormat(int format) const;
- int processControls(const camera3_capture_request_t *camera3Request,
- Camera3RequestDescriptor *descriptor);
+ int processControls(Camera3RequestDescriptor *descriptor);
std::unique_ptr<CameraMetadata> getResultMetadata(
Camera3RequestDescriptor *descriptor, int64_t timestamp);
--
2.29.2
More information about the libcamera-devel
mailing list