From patchwork Wed Aug 11 23:26:21 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Laurent Pinchart X-Patchwork-Id: 13318 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 55422C3246 for ; Wed, 11 Aug 2021 23:26:45 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id F18BD68918; Thu, 12 Aug 2021 01:26:44 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="PfWfWoMT"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 4369768886 for ; Thu, 12 Aug 2021 01:26:36 +0200 (CEST) Received: from pendragon.lan (62-78-145-57.bb.dnainternet.fi [62.78.145.57]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id E0D6F268 for ; Thu, 12 Aug 2021 01:26:35 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1628724396; bh=rXSaRM0K1auWBt1ooiii8P2SStVn+jVh5lFOQeep07g=; h=From:To:Subject:Date:In-Reply-To:References:From; b=PfWfWoMTUJDxfRp621ZtkDiJSgoLIrg4RRDaHFcnK1Kpvx+0sXQFTR+6JVMmhNPry EyjwY/xhyO5wFjedi8OsTPpG1rv9X6NWZFrPLZWpqP0sJjYBb7chkzpgduJESJXI6A oC336f3zkggCzSb3KUaX7gHAvshmErKYzpwbkPe4= From: Laurent Pinchart To: libcamera-devel@lists.libcamera.org Date: Thu, 12 Aug 2021 02:26:21 +0300 Message-Id: <20210811232625.17280-11-laurent.pinchart@ideasonboard.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210811232625.17280-1-laurent.pinchart@ideasonboard.com> References: <20210811232625.17280-1-laurent.pinchart@ideasonboard.com> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH v3 10/14] libcamera: pipeline: ipu3: Migrate to Camera::Private 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" As part of the effort to remove the CameraData class, migrate the pipeline handler-specific camera data from CameraData to the Camera::Private class. Signed-off-by: Laurent Pinchart Reviewed-by: Niklas Söderlund Reviewed-by: Jacopo Mondi --- src/libcamera/pipeline/ipu3/ipu3.cpp | 38 +++++++++++++--------------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp index b9c0941c5ea8..4d07592e0c7e 100644 --- a/src/libcamera/pipeline/ipu3/ipu3.cpp +++ b/src/libcamera/pipeline/ipu3/ipu3.cpp @@ -53,11 +53,11 @@ static const ControlInfoMap::Map IPU3Controls = { { &controls::draft::PipelineDepth, ControlInfo(2, 3) }, }; -class IPU3CameraData : public CameraData +class IPU3CameraData : public Camera::Private { public: IPU3CameraData(PipelineHandler *pipe) - : CameraData(pipe), exposureTime_(0), supportsFlips_(false) + : Camera::Private(pipe), exposureTime_(0), supportsFlips_(false) { } @@ -146,10 +146,9 @@ public: bool match(DeviceEnumerator *enumerator) override; private: - IPU3CameraData *cameraData(const Camera *camera) + IPU3CameraData *cameraData(Camera *camera) { - return static_cast( - PipelineHandler::cameraData(camera)); + return static_cast(camera->_d()); } int initControls(IPU3CameraData *data); @@ -814,10 +813,10 @@ void IPU3CameraData::cancelPendingRequests() for (auto it : request->buffers()) { FrameBuffer *buffer = it.second; buffer->cancel(); - pipe_->completeBuffer(request, buffer); + pipe()->completeBuffer(request, buffer); } - pipe_->completeRequest(request); + pipe()->completeRequest(request); pendingRequests_.pop(); } } @@ -1198,12 +1197,11 @@ int PipelineHandlerIPU3::registerCameras() &IPU3CameraData::statBufferReady); /* Create and register the Camera instance. */ - std::string cameraId = cio2->sensor()->id(); + const std::string &cameraId = cio2->sensor()->id(); std::shared_ptr camera = - Camera::create(std::make_unique(this), - cameraId, streams); + Camera::create(std::move(data), cameraId, streams); - registerCamera(std::move(camera), std::move(data)); + registerCamera(std::move(camera), nullptr); LOG(IPU3, Info) << "Registered Camera[" << numCameras << "] \"" @@ -1218,7 +1216,7 @@ int PipelineHandlerIPU3::registerCameras() int IPU3CameraData::loadIPA() { - ipa_ = IPAManager::createIPA(pipe_, 1, 1); + ipa_ = IPAManager::createIPA(pipe(), 1, 1); if (!ipa_) return -ENOENT; @@ -1275,7 +1273,7 @@ void IPU3CameraData::queueFrameAction(unsigned int id, info->metadataProcessed = true; if (frameInfos_.tryComplete(info)) - pipe_->completeRequest(request); + pipe()->completeRequest(request); break; } @@ -1303,7 +1301,7 @@ void IPU3CameraData::imguOutputBufferReady(FrameBuffer *buffer) Request *request = info->request; - pipe_->completeBuffer(request, buffer); + pipe()->completeBuffer(request, buffer); request->metadata().set(controls::draft::PipelineDepth, 3); /* \todo Move the ExposureTime control to the IPA. */ @@ -1314,7 +1312,7 @@ void IPU3CameraData::imguOutputBufferReady(FrameBuffer *buffer) request->metadata().set(controls::ScalerCrop, cropRegion_); if (frameInfos_.tryComplete(info)) - pipe_->completeRequest(request); + pipe()->completeRequest(request); } /** @@ -1346,16 +1344,16 @@ void IPU3CameraData::cio2BufferReady(FrameBuffer *buffer) for (auto it : request->buffers()) { FrameBuffer *b = it.second; b->cancel(); - pipe_->completeBuffer(request, b); + pipe()->completeBuffer(request, b); } frameInfos_.remove(info); - pipe_->completeRequest(request); + pipe()->completeRequest(request); return; } if (request->findBuffer(&rawStream_)) - pipe_->completeBuffer(request, buffer); + pipe()->completeBuffer(request, buffer); ipa::ipu3::IPU3Event ev; ev.op = ipa::ipu3::EventFillParams; @@ -1381,7 +1379,7 @@ void IPU3CameraData::paramBufferReady(FrameBuffer *buffer) Request *request = info->request; if (frameInfos_.tryComplete(info)) - pipe_->completeRequest(request); + pipe()->completeRequest(request); } void IPU3CameraData::statBufferReady(FrameBuffer *buffer) @@ -1400,7 +1398,7 @@ void IPU3CameraData::statBufferReady(FrameBuffer *buffer) * In that event, we must have obtained the Request before hand. */ if (frameInfos_.tryComplete(info)) - pipe_->completeRequest(request); + pipe()->completeRequest(request); return; }