From patchwork Thu Jan 21 16:53:04 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jacopo Mondi X-Patchwork-Id: 10934 X-Patchwork-Delegate: jacopo@jmondi.org Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id 49318BD808 for ; Thu, 21 Jan 2021 16:53:04 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 08E8968204; Thu, 21 Jan 2021 17:53:04 +0100 (CET) Received: from relay5-d.mail.gandi.net (relay5-d.mail.gandi.net [217.70.183.197]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 4031568210 for ; Thu, 21 Jan 2021 17:52:59 +0100 (CET) X-Originating-IP: 93.34.118.233 Received: from uno.lan (93-34-118-233.ip49.fastwebnet.it [93.34.118.233]) (Authenticated sender: jacopo@jmondi.org) by relay5-d.mail.gandi.net (Postfix) with ESMTPSA id D1B891C0012; Thu, 21 Jan 2021 16:52:58 +0000 (UTC) From: Jacopo Mondi To: libcamera-devel@lists.libcamera.org, Paul Elder Date: Thu, 21 Jan 2021 17:53:04 +0100 Message-Id: <20210121165305.367801-7-jacopo@jmondi.org> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210121165305.367801-1-jacopo@jmondi.org> References: <20210121165305.367801-1-jacopo@jmondi.org> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH 6/7] android: camera_device: Use CameraMetadata in processControls() X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" Use the CameraMetadata API to retrieve the values of the request associated settings in CameraDevice::processControls() function. Signed-off-by: Jacopo Mondi Reviewed-by: Laurent Pinchart Reviewed-by: Paul Elder --- 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(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 getResultMetadata( Camera3RequestDescriptor *descriptor, int64_t timestamp);