From patchwork Thu Jan 21 10:15:49 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul Elder X-Patchwork-Id: 10921 X-Patchwork-Delegate: paul.elder@ideasonboard.com 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 83F30C0F2A for ; Thu, 21 Jan 2021 10:16:20 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 51C95681EF; Thu, 21 Jan 2021 11:16:20 +0100 (CET) Authentication-Results: lancelot.ideasonboard.com; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="lflWmg1O"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 19B78681EF for ; Thu, 21 Jan 2021 11:16:19 +0100 (CET) Received: from pyrite.rasen.tech (unknown [IPv6:2400:4051:61:600:2c71:1b79:d06d:5032]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id AD66550E; Thu, 21 Jan 2021 11:16:17 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1611224178; bh=mjONAGbRA+tc5z85O+RqaqpU94ZOA1u56IAhNeFbSbQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=lflWmg1O0iG+AE9WCFzEou2aXO2c/XenEc/qNEdMi7nCBv6xZbK0vF8Rvb3X77l6r rX8VIiSKJvRSpQ6sF6IIHEXJE3FxiQD/lBEkQntoozB96Sq9KL8hJV9q+eUTEc/RLy rw0vUjAOdKG5paXu/8WPlNhbCUiacAU4qbl1gu2c= From: Paul Elder To: libcamera-devel@lists.libcamera.org Date: Thu, 21 Jan 2021 19:15:49 +0900 Message-Id: <20210121101549.134574-10-paul.elder@ideasonboard.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20210121101549.134574-1-paul.elder@ideasonboard.com> References: <20210121101549.134574-1-paul.elder@ideasonboard.com> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH v2 9/9] android: camera_device: Cache request metadata 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" The settings in an android capture request may be null, in which case the settings from the most recently submitted capture request should be used. Cache the request settings to achieve this. Signed-off-by: Paul Elder --- New in v2 --- src/android/camera_device.cpp | 10 ++++++---- src/android/camera_device.h | 2 ++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/android/camera_device.cpp b/src/android/camera_device.cpp index 1b803c92..4f92cecc 100644 --- a/src/android/camera_device.cpp +++ b/src/android/camera_device.cpp @@ -337,7 +337,9 @@ CameraDevice::Camera3RequestDescriptor::~Camera3RequestDescriptor() CameraDevice::CameraDevice(unsigned int id, const std::shared_ptr &camera) : id_(id), running_(false), camera_(camera), staticMetadata_(nullptr), - facing_(CAMERA_FACING_FRONT), orientation_(0) + facing_(CAMERA_FACING_FRONT), orientation_(0), + /* \todo Keep this in sync with the actual number of entries. */ + lastSettings_(CameraMetadata(40, 163)) { camera_->requestCompleted.connect(this, &CameraDevice::requestComplete); @@ -1692,12 +1694,12 @@ int CameraDevice::processCaptureRequest(camera3_capture_request_t *camera3Reques * The descriptor and the associated memory reserved here are freed * at request complete time. */ - /* \todo Handle null request settings */ - CameraMetadata settings(camera3Request->settings); + if (camera3Request->settings) + lastSettings_ = CameraMetadata(camera3Request->settings); Camera3RequestDescriptor *descriptor = new Camera3RequestDescriptor(camera_.get(), camera3Request->frame_number, camera3Request->num_output_buffers, - settings); + lastSettings_); LOG(HAL, Debug) << "Queueing Request to libcamera with " << descriptor->numBuffers_ << " HAL streams"; diff --git a/src/android/camera_device.h b/src/android/camera_device.h index 111a7d8f..d3a9f777 100644 --- a/src/android/camera_device.h +++ b/src/android/camera_device.h @@ -139,6 +139,8 @@ private: int orientation_; unsigned int maxJpegBufferSize_; + + CameraMetadata lastSettings_; }; #endif /* __ANDROID_CAMERA_DEVICE_H__ */