From patchwork Sat Aug 17 10:59:37 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jacopo Mondi X-Patchwork-Id: 1817 Return-Path: Received: from relay5-d.mail.gandi.net (relay5-d.mail.gandi.net [217.70.183.197]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 66C4661917 for ; Sat, 17 Aug 2019 12:58:19 +0200 (CEST) X-Originating-IP: 87.5.130.64 Received: from uno.homenet.telecomitalia.it (host64-130-dynamic.5-87-r.retail.telecomitalia.it [87.5.130.64]) (Authenticated sender: jacopo@jmondi.org) by relay5-d.mail.gandi.net (Postfix) with ESMTPSA id D9D311C0002; Sat, 17 Aug 2019 10:58:18 +0000 (UTC) From: Jacopo Mondi To: libcamera-devel@lists.libcamera.org Date: Sat, 17 Aug 2019 12:59:37 +0200 Message-Id: <20190817105937.29353-6-jacopo@jmondi.org> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20190817105937.29353-1-jacopo@jmondi.org> References: <20190817105937.29353-1-jacopo@jmondi.org> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH 5/5] libcamera: camera_sensor: Retrieve sensor sizes X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 17 Aug 2019 10:58:19 -0000 Retrieve the camera sensor pixel array sizes and the active pixel sizes using the V4L2 selection APIs. Signed-off-by: Jacopo Mondi --- src/libcamera/camera_sensor.cpp | 13 +++++++++++++ src/libcamera/include/camera_sensor.h | 2 ++ 2 files changed, 15 insertions(+) diff --git a/src/libcamera/camera_sensor.cpp b/src/libcamera/camera_sensor.cpp index 2703d10c719e..e6b01c242328 100644 --- a/src/libcamera/camera_sensor.cpp +++ b/src/libcamera/camera_sensor.cpp @@ -114,6 +114,19 @@ int CameraSensor::init() return -EINVAL; } + /* Retrieve and store the sensor pixel array and active area sizes. */ + ret = subdev_->getCropBounds(0, &activeAreaSize_); + if (ret) + return ret; + + Rectangle rect = {}; + ret = subdev_->getNativeSize(0, &rect); + if (ret) + return ret; + + pixelArraySize_.width = rect.w; + pixelArraySize_.height = rect.h; + /* Enumerate and cache media bus codes and sizes. */ const ImageFormats formats = subdev_->formats(0); if (formats.isEmpty()) { diff --git a/src/libcamera/include/camera_sensor.h b/src/libcamera/include/camera_sensor.h index a237a1684605..f6b184bf2838 100644 --- a/src/libcamera/include/camera_sensor.h +++ b/src/libcamera/include/camera_sensor.h @@ -58,6 +58,8 @@ private: std::vector sizes_; CameraLocation location_; + Size pixelArraySize_; + Rectangle activeAreaSize_; }; } /* namespace libcamera */