From patchwork Sun May 19 08:15:38 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Umang Jain X-Patchwork-Id: 20068 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 A7EFDC322E for ; Sun, 19 May 2024 08:15:57 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 2D4E563487; Sun, 19 May 2024 10:15:56 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="LB24mn24"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id A3CD16347E for ; Sun, 19 May 2024 10:15:52 +0200 (CEST) Received: from fedora.local (unknown [IPv6:2405:201:2015:f873:9278:2c85:fd02:c5f5]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 33CC25A4; Sun, 19 May 2024 10:15:40 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1716106542; bh=PtQWX2WM8kD2tTj/2w3Z0x26CvwoXAMHITfpkjO/VkI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=LB24mn24bKs6F1AAC7caJ83XZVAk9IdPI+5W0GJx/Jz4OiBPYZxGB3tvY34FnUk+/ RlRFOSjByqD/BlE0EKjSnjNbFltpfNjKub0RGON8lU5G/FX8jeUGD9myKp0+pGDiFJ cplRWgt/fydxac1NY5smtYhy9xTS4MC95wf/eDXo= From: Umang Jain To: libcamera-devel@lists.libcamera.org Cc: Umang Jain Subject: [PATCH 3/4] libcamera: rkisp1: Add base class DW100 dewarper Date: Sun, 19 May 2024 13:45:38 +0530 Message-ID: <20240519081539.29832-4-umang.jain@ideasonboard.com> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20240519081539.29832-1-umang.jain@ideasonboard.com> References: <20240519081539.29832-1-umang.jain@ideasonboard.com> 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" DW100 Dewarp engine is present on I.MX8MP SoC. This patch provides a base RkISP1Dewarper class (inherited from V4L2M2MConverter) which then can be used to load a dewarp config file and scaling capabilites. \todo: Add plumbing to load a vertex map on top Signed-off-by: Umang Jain --- src/libcamera/pipeline/rkisp1/meson.build | 1 + .../pipeline/rkisp1/rkisp1_dewarper.cpp | 38 +++++++++++++++++++ .../pipeline/rkisp1/rkisp1_dewarper.h | 25 ++++++++++++ 3 files changed, 64 insertions(+) create mode 100644 src/libcamera/pipeline/rkisp1/rkisp1_dewarper.cpp create mode 100644 src/libcamera/pipeline/rkisp1/rkisp1_dewarper.h diff --git a/src/libcamera/pipeline/rkisp1/meson.build b/src/libcamera/pipeline/rkisp1/meson.build index cad66535..e8a989b1 100644 --- a/src/libcamera/pipeline/rkisp1/meson.build +++ b/src/libcamera/pipeline/rkisp1/meson.build @@ -2,5 +2,6 @@ libcamera_sources += files([ 'rkisp1.cpp', + 'rkisp1_dewarper.cpp', 'rkisp1_path.cpp', ]) diff --git a/src/libcamera/pipeline/rkisp1/rkisp1_dewarper.cpp b/src/libcamera/pipeline/rkisp1/rkisp1_dewarper.cpp new file mode 100644 index 00000000..0bd72497 --- /dev/null +++ b/src/libcamera/pipeline/rkisp1/rkisp1_dewarper.cpp @@ -0,0 +1,38 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +/* + * Copyright (C) 2024, Ideas On Board Oy + * + * i.MX8MP Dewarp Engine integration + */ + +#include "rkisp1_dewarper.h" + +#include + +#include + +#include "libcamera/internal/media_device.h" +#include "libcamera/internal/v4l2_videodevice.h" + +namespace libcamera { + +LOG_DECLARE_CATEGORY(RkISP1) + +RkISP1Dewarper::RkISP1Dewarper(std::shared_ptr media) + : V4L2M2MConverter(media.get()) +{ +} + +int RkISP1Dewarper::setScalerCrop(unsigned int output, Rectangle rect) +{ + int ret; + + ret = setSelection(output, V4L2_SEL_TGT_CROP, &rect); + if (ret < 0) + LOG(RkISP1, Error) << "Failed to set scaler crop on dewarper " + << strerror(-ret); + + return ret; +} + +} /* namespace libcamera */ diff --git a/src/libcamera/pipeline/rkisp1/rkisp1_dewarper.h b/src/libcamera/pipeline/rkisp1/rkisp1_dewarper.h new file mode 100644 index 00000000..600e35bd --- /dev/null +++ b/src/libcamera/pipeline/rkisp1/rkisp1_dewarper.h @@ -0,0 +1,25 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +/* + * Copyright (C) 2024, Ideas On Board Oy + * + *i.MX8MP Dewarp Engine integration + */ + +#pragma once + +#include "libcamera/internal/converter/converter_v4l2_m2m.h" + +namespace libcamera { + +class Rectangle; +struct MediaDevice; + +class RkISP1Dewarper : public V4L2M2MConverter +{ +public: + RkISP1Dewarper(std::shared_ptr media); + + int setScalerCrop(unsigned int output, Rectangle rect); +}; + +} /* namespace libcamera */