From patchwork Sun Jul 3 04:37:02 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Utkarsh Tiwari X-Patchwork-Id: 16521 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 6D040BD808 for ; Sun, 3 Jul 2022 04:37:17 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id B681D65652; Sun, 3 Jul 2022 06:37:15 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org; s=mail; t=1656823035; bh=Slu+O+fZW1w4jednfVozuSqsmmLjs5PiAl0EhrINfMU=; h=To:Date:In-Reply-To:References:Subject:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=yCdE0YcKuHqS1BO406ULif+RtSOg83/O0rX5LUercDpW6ZI1DNVL1PoI/E2LD1FFj Kj7/YLaEuph3Cz6luL6O/HZ3n0dY+4/luVlyfXo/1NgHxgbdcqFmqVnq3PT4NdEbwS Pp3G5wSb8Ld+t5Z+yKUWMnrKRtYPECacPz7RCuUjxrIVQmpTAN8i8XGFWxJqjRuxj6 +4HIxeKzSEAJ5YSJg9msK/Hm0/KIK8BTsezbD4IMFZbPKf6TjLmzGhHmh2TZPHFJ5l lQKG9+YB9MnKcURwsYN02qDvedI/C1dFeKzGW6Ci3cOI3ABXjw1F6qr5N+fVy3AFXo arQOlY3DLNgmw== Received: from mail-pl1-x630.google.com (mail-pl1-x630.google.com [IPv6:2607:f8b0:4864:20::630]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id A6EE56564A for ; Sun, 3 Jul 2022 06:37:14 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="NsOHUnP5"; dkim-atps=neutral Received: by mail-pl1-x630.google.com with SMTP id l12so451297plk.13 for ; Sat, 02 Jul 2022 21:37:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=wDcETgwSinFLReuS0BeWAkYv37eRLN/VM7Si6XYDqn0=; b=NsOHUnP5fOTH+Vu00ea4Nt4iNn88uHWq8clAv9LfpHm92ZzRjjkhNYpLDLxPEbGuGJ r7MZpyt1/vpjDNbSyWDOhZOUzYhATAmnktv5EQFd0MInQTsNTkozEV0Mv8Ag+SeN2JpO 4kHMwDSfkA4TNI5EP0BydwxrgBJ4ib1Kna1eBdPZrcM3r0xiGBKmOro+VePvvj7hMOm/ bmmX2kpotSG5bGKLHX+yypHkmqq2ZkEaGjoxRr5lyIyW9606ZIn/HuQa4JjwVo9AOiwh lu2RjREKCG+vrUcA9R26plkXXCI/EPVOqTDw5Cc8PlCjyE+3qoJFABrPkMTWO9IlvW6v zRMg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=wDcETgwSinFLReuS0BeWAkYv37eRLN/VM7Si6XYDqn0=; b=mxiuu9F17K8KsWaZ/0CcvNheU+1R36r5VFbB1RYALI/9o4L3xMeh4CSV8PPOwQVvZC E1yhlqRAAVKNPBZa4QA6JUtgdseKw5mraT0qyoF+OL5LlOPsya+6o80IIoq6fMU2wB8L ToxomR1LL4uwlixZAD1UA5BLzN2wnd5fIf7a7WkLWjexELYrJSTm5YYus/Dy2+82BpLX dDnhKKx2C6o5rl/3XlyB2CJzGMnaxSyaf13f9A35JLGYcxIijgTlq+pqrtTbXdrjdGrB Kl+Sjk5NucA7qaBwcTiJF/kltJgjz09dVU6MRVudulYuWn0THb8Pi8pNCRrM2vCZ6Pdb DJnA== X-Gm-Message-State: AJIora+OVvwg9G1mRge94hBCAx0OikkBW9ty6AxYR8V8Nwh9lPRfDkrB TdVT8RhhvofqQoblIGfiGb7YJbyQhVktxQ== X-Google-Smtp-Source: AGRyM1t84bBwTKRtbknJpPQgMr5qi5r7kKVgfEWxv3g0lFXRvjSFA8k2n/zvfJKbmlrEsim2Zfh0rw== X-Received: by 2002:a17:902:ec89:b0:16a:2a7d:5efa with SMTP id x9-20020a170902ec8900b0016a2a7d5efamr30328820plg.114.1656823032858; Sat, 02 Jul 2022 21:37:12 -0700 (PDT) Received: from localhost.localdomain ([2406:3003:2005:1c27:2dd0:3b05:f874:d165]) by smtp.gmail.com with ESMTPSA id me3-20020a17090b17c300b001ec84b0f199sm12122299pjb.1.2022.07.02.21.37.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 02 Jul 2022 21:37:12 -0700 (PDT) To: libcamera-devel@lists.libcamera.org Date: Sun, 3 Jul 2022 12:37:02 +0800 Message-Id: <20220703043704.296872-2-utkarsh02t@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220703043704.296872-1-utkarsh02t@gmail.com> References: <20220703043704.296872-1-utkarsh02t@gmail.com> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH v4 1/3] qcam: Queue requests only through MainWindow::queueRequest() 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: Utkarsh Tiwari via libcamera-devel From: Utkarsh Tiwari Reply-To: Utkarsh Tiwari Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" Currently to request a frame, we operate the camera directly. This approach is also scattered in two places, MainWindow::startCapture() and MainWindow::queueRequest(). This makes it difficult to account requests. Centralize all the queuing to a single function queueRequest() Rename the current queueRequest() to renderComplete(), This makes more sense as this slot is triggered when the render is complete and we want to queue another request. Signed-off-by: Utkarsh Tiwari Reviewed-by: Kieran Bingham Reviewed-by: Umang Jain --- src/qcam/main_window.cpp | 14 +++++++++----- src/qcam/main_window.h | 3 ++- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/qcam/main_window.cpp b/src/qcam/main_window.cpp index dd0e51f5..adeb3181 100644 --- a/src/qcam/main_window.cpp +++ b/src/qcam/main_window.cpp @@ -119,14 +119,14 @@ MainWindow::MainWindow(CameraManager *cm, const OptionsParser::Options &options) if (renderType == "qt") { ViewFinderQt *viewfinder = new ViewFinderQt(this); connect(viewfinder, &ViewFinderQt::renderComplete, - this, &MainWindow::queueRequest); + this, &MainWindow::renderComplete); viewfinder_ = viewfinder; setCentralWidget(viewfinder); #ifndef QT_NO_OPENGL } else if (renderType == "gles") { ViewFinderGL *viewfinder = new ViewFinderGL(this); connect(viewfinder, &ViewFinderGL::renderComplete, - this, &MainWindow::queueRequest); + this, &MainWindow::renderComplete); viewfinder_ = viewfinder; setCentralWidget(viewfinder); #endif @@ -521,7 +521,7 @@ int MainWindow::startCapture() /* Queue all requests. */ for (std::unique_ptr &request : requests_) { - ret = camera_->queueRequest(request.get()); + ret = queueRequest(request.get()); if (ret < 0) { qWarning() << "Can't queue request"; goto error_disconnect; @@ -755,7 +755,7 @@ void MainWindow::processViewfinder(FrameBuffer *buffer) viewfinder_->render(buffer, mappedBuffers_[buffer].get()); } -void MainWindow::queueRequest(FrameBuffer *buffer) +void MainWindow::renderComplete(FrameBuffer *buffer) { Request *request; { @@ -784,6 +784,10 @@ void MainWindow::queueRequest(FrameBuffer *buffer) qWarning() << "No free buffer available for RAW capture"; } } + queueRequest(request); +} - camera_->queueRequest(request); +int MainWindow::queueRequest(Request *request) +{ + return camera_->queueRequest(request); } diff --git a/src/qcam/main_window.h b/src/qcam/main_window.h index 3fbe872c..c3e4b665 100644 --- a/src/qcam/main_window.h +++ b/src/qcam/main_window.h @@ -66,7 +66,7 @@ private Q_SLOTS: void processRaw(libcamera::FrameBuffer *buffer, const libcamera::ControlList &metadata); - void queueRequest(libcamera::FrameBuffer *buffer); + void renderComplete(libcamera::FrameBuffer *buffer); private: int createToolbars(); @@ -80,6 +80,7 @@ private: void addCamera(std::shared_ptr camera); void removeCamera(std::shared_ptr camera); + int queueRequest(libcamera::Request *request); void requestComplete(libcamera::Request *request); void processCapture(); void processHotplug(HotplugEvent *e);