From patchwork Tue Jun 25 06:23:23 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Umang Jain X-Patchwork-Id: 20378 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 5F47CBD87C for ; Tue, 25 Jun 2024 06:23:37 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 0C836654AC; Tue, 25 Jun 2024 08:23:36 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="F50Pgwcw"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 5B0FF619D5 for ; Tue, 25 Jun 2024 08:23:33 +0200 (CEST) Received: from fedora.local (unknown [IPv6:2405:201:2015:f873:55d7:c02e:b2eb:ee3f]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 516E9BEB; Tue, 25 Jun 2024 08:23:10 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1719296591; bh=1uh8XZRIiTndbQ+FIYK646lpPhc2waUlHf85Iu33oeE=; h=From:To:Cc:Subject:Date:From; b=F50PgwcwBAvpjpbKBlOz+Q+HaIaemhpL/rp6HGDBn722K8rLKv+CwhgCZhDusVx+C KToNv1RyQPGOi9BGY6GMyXbhO8j9/I0PNwzZyS4TGxkXaNXXWgJFgGTjwHkNNZtlxL qZnI4n78EQFN/V7B+a/gw/bhXp8H0tczsEHDlrk4= From: Umang Jain To: libcamera-devel@lists.libcamera.org Cc: Umang Jain Subject: [PATCH v3 0/4] libcamera: rkisp1: Plumb the ConverterDW100 converter Date: Tue, 25 Jun 2024 11:53:23 +0530 Message-ID: <20240625062327.50940-1-umang.jain@ideasonboard.com> X-Mailer: git-send-email 2.44.0 MIME-Version: 1.0 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" This series intends to support i.MX8MP DW100 dewarper in rkisp1 pipeline handler. It is modelled as Converter (inherited from V4L2M2MConverter) and has a helper to support scaler crop control. The converter acts as a base for now, additional development around dewarping capabilites and support in simple pipeline-handler [1] can be added on top as focused tasks. Patch 1/4 prepares the rkisp1 pipeline handler to register controls for the camera, outside of the IPA. The ConverterDW100 will let us support scaler crop - which will be registered as one of the camera controls. Patch 2/4 is also a prepartory patch to accept scaler crop rectangles for the converter_v4l2_m2m on each stream. Patch 3/4 adds a ConverterDW100 class inheriting from converter_v4l2_m2m. This provides a scaler crop setting helper. Patch 4/4 finally plumbs the ConverterDW100 in the rkisp1 pipeline handler. If the scaler crop control is found set in the request, it is applied on the dewarper. This series is based on top of [2] Testing: -------- The series is tested on i.MX8MP and cam utility, by setting scaler crop control via capture script with IMX283 attached to isp0. Changes in v3: - Base on top of [2] - Model dewarper class as converter, so can be used with Simple pipeline-handler/ISI Changes in v2: - Fix raw capture configuration, disable dewarper in that case [1]: Supporting the ConverterDW100 is simple pipeline handler should be easy, adding the compatibles string and registering the converter with REGISTER_CONVERTER(). However, for testing the i.MX8MP -> ISI -> ConverterDW100 (dewarper) requires me to have a YUV sensor attached, which I have not abled to source it yet. Once I source it, I will test the ConverterDW100 on simple pipeline handler (I don't expect any issues there but still..) and prepare a integration patch. I hope this doesn't act as blocker for the series. [2] [PATCH v4 0/4] libcamera: converter: Replace usage of stream index by Stream pointer Umang Jain (4): libcamera: rkisp1: Prepare for additional camera controls libcamera: converter_v4l2_m2m: Support crop selection libcamera: converter: Add DW100 converter class libcamera: rkisp1: Plumb the ConverterDW100 converter .../internal/converter/converter_dw100.h | 26 +++ .../internal/converter/converter_v4l2_m2m.h | 5 + .../libcamera/internal/converter/meson.build | 1 + src/libcamera/converter/converter_dw100.cpp | 56 ++++++ .../converter/converter_v4l2_m2m.cpp | 27 +++ src/libcamera/converter/meson.build | 1 + src/libcamera/pipeline/rkisp1/rkisp1.cpp | 171 +++++++++++++++++- src/libcamera/pipeline/rkisp1/rkisp1_path.cpp | 12 +- src/libcamera/pipeline/rkisp1/rkisp1_path.h | 14 ++ 9 files changed, 302 insertions(+), 11 deletions(-) create mode 100644 include/libcamera/internal/converter/converter_dw100.h create mode 100644 src/libcamera/converter/converter_dw100.cpp