From patchwork Fri Apr 24 21:52:57 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jacopo Mondi X-Patchwork-Id: 3524 Return-Path: Received: from relay3-d.mail.gandi.net (relay3-d.mail.gandi.net [217.70.183.195]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 4B52762F37 for ; Fri, 24 Apr 2020 23:50:10 +0200 (CEST) X-Originating-IP: 87.3.55.240 Received: from uno.homenet.telecomitalia.it (host240-55-dynamic.3-87-r.retail.telecomitalia.it [87.3.55.240]) (Authenticated sender: jacopo@jmondi.org) by relay3-d.mail.gandi.net (Postfix) with ESMTPSA id A0B1E60004; Fri, 24 Apr 2020 21:50:09 +0000 (UTC) From: Jacopo Mondi To: libcamera-devel@lists.libcamera.org Date: Fri, 24 Apr 2020 23:52:57 +0200 Message-Id: <20200424215304.558317-7-jacopo@jmondi.org> X-Mailer: git-send-email 2.26.1 In-Reply-To: <20200424215304.558317-1-jacopo@jmondi.org> References: <20200424215304.558317-1-jacopo@jmondi.org> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH v3 06/13] libcamera: camera_sensor: Collect pixel array properties 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: , X-List-Received-Date: Fri, 24 Apr 2020 21:50:10 -0000 Collect the sensor pixel array properties by retrieving the subdevice native size and active pixel array size. Signed-off-by: Jacopo Mondi --- src/libcamera/camera_sensor.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/libcamera/camera_sensor.cpp b/src/libcamera/camera_sensor.cpp index 8d7abc7147a7..a54751fecf5a 100644 --- a/src/libcamera/camera_sensor.cpp +++ b/src/libcamera/camera_sensor.cpp @@ -169,6 +169,29 @@ int CameraSensor::initProperties() propertyValue = rotationControl->second.def().get(); properties_.set(properties::Rotation, propertyValue); + /* + * Sensor pixel array properties. Conditionally register them if the + * sub-device provides support for the selection API. + */ + Size size{}; + int ret = subdev_->getNativeSize(0, &size); + if (ret && ret != -ENOTTY) + return ret; + if (!ret) + properties_.set(properties::PixelArray, { static_cast(size.width), + static_cast(size.height) }); + + /* + * \todo The sub-device API only support a single active area rectangle + */ + Rectangle rect{}; + ret = subdev_->getActiveArea(0, &rect); + if (ret && ret != -ENOTTY) + return ret; + if (!ret) + properties_.set(properties::ActiveAreas, { rect.x, rect.y, + static_cast(rect.width), + static_cast(rect.height) }); return 0; }