From patchwork Mon Jul 24 12:39:03 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jacopo Mondi X-Patchwork-Id: 18877 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 DCCB7BDC71 for ; Mon, 24 Jul 2023 12:39:19 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 147D8628C0; Mon, 24 Jul 2023 14:39:19 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org; s=mail; t=1690202359; bh=R7i1+Dr0QE/hvMqL3smU7i8wMFIijDcfOkk5dUA+jrE=; h=To:Date:Subject:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:Cc:From; b=NPJXf6OhGK3gkHOzqcOWqYd8XC/a+J9LMasmq7Cm4Ywy8NYmdshFVxpx7x4S6Os8L 5bbLwcDREDrbDiLMDp3VGo+kr8NuJnhCQxcnK0chYurQY/xAoow6NKh3OWYlK2NUc4 qJzmT6j5rC2EX1AspNRsV/riZPKg5n4ziWAmWtd2jVCpMgki4Mw2QkmsLnH0xFTuHx /cqB0GgZJWOU4ZH2/EycXlQO/8kPZEM5lOnRqLlfdLK/qYX0aG/PPsqtfUM1m497hA xx1bQJqpXxPq8ZAxWDPl6R9/B5pWPVc0Pthho4kV5AdWC0wuwYMz2ol83s7rWqVVzY s6x/Mq6e8c+/A== Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 68F8F60387 for ; Mon, 24 Jul 2023 14:39:17 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="Vw9VA2uC"; dkim-atps=neutral Received: from uno.localdomain (mob-5-91-20-233.net.vodafone.it [5.91.20.233]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 66894735; Mon, 24 Jul 2023 14:38:19 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1690202299; bh=R7i1+Dr0QE/hvMqL3smU7i8wMFIijDcfOkk5dUA+jrE=; h=From:To:Cc:Subject:Date:From; b=Vw9VA2uCR0hJilA9XED9dXGdHxhi60wrquAOw+w7Q/r27oorW8jtXYHyGh77JgpVJ 3BkPzGjVTwtzeD04VcLrWjiiKjMODZiscpWnCzpiEmdy2M3U145Qm8orgaKb8UnJFr bWzGcZRIQCTxVuyF1s3anEf+jO9JqcQvI9Oq/VRE= To: libcamera-devel@lists.libcamera.org Date: Mon, 24 Jul 2023 14:39:03 +0200 Message-Id: <20230724123907.29086-1-jacopo.mondi@ideasonboard.com> X-Mailer: git-send-email 2.40.1 MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH 0/4] libcamera: Introduce SensorConfiguration 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-Patchwork-Original-From: Jacopo Mondi via libcamera-devel From: Jacopo Mondi Reply-To: Jacopo Mondi Cc: Jacopo Mondi Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" Hello, the series introduces a slightly more formally defined camera sensor model used to model a SensorConfiguration class, an instance of which is added to the CameraConfiguration class. The newly introduced class allows to control the sensor configuration without abusing the RAW stream configuration, reason being some platforms do not allow to capture RAW frames as they get produced by the sensor. Introduce a model for the SensorConfiguration class and implement its handling on the RaspberryPi pipeline handler as a proof of concept. Tested with an imx219, configured to capture frames with different sensor configurations, without using any RAW stream. Jacopo Mondi (4): documentation: Introduce Camera Sensor Model libcamera: camera: Introduce SensorConfiguration libcamera: camera_sensor: Add function to apply a config libcamera: rpi: Handle SensorConfiguration Documentation/binning.png | Bin 0 -> 66004 bytes Documentation/camera-sensor-model.png | Bin 0 -> 74270 bytes Documentation/camera-sensor-model.rst | 200 ++++++++++++++++++ Documentation/index.rst | 1 + Documentation/meson.build | 1 + Documentation/skipping.png | Bin 0 -> 67218 bytes include/libcamera/camera.h | 43 ++++ include/libcamera/internal/camera_sensor.h | 5 + src/libcamera/camera.cpp | 180 ++++++++++++++++ src/libcamera/camera_sensor.cpp | 86 ++++++++ .../pipeline/rpi/common/pipeline_base.cpp | 64 +++++- .../pipeline/rpi/common/pipeline_base.h | 4 +- src/libcamera/pipeline/rpi/vc4/vc4.cpp | 30 ++- 13 files changed, 599 insertions(+), 15 deletions(-) create mode 100644 Documentation/binning.png create mode 100644 Documentation/camera-sensor-model.png create mode 100644 Documentation/camera-sensor-model.rst create mode 100644 Documentation/skipping.png --- 2.40.1