[{"id":24502,"web_url":"https://patchwork.libcamera.org/comment/24502/","msgid":"<CAHbe+E0MDevPeitE-5bC52_xs4MXcE2QojYmBVmSBikJivtwbg@mail.gmail.com>","date":"2022-08-10T04:34:36","subject":"Re: [libcamera-devel] [PATCH v7 8/8] qcam: Add --script to load\n\tcapture script","submitter":{"id":114,"url":"https://patchwork.libcamera.org/api/people/114/","name":"Utkarsh Tiwari","email":"utkarsh02t@gmail.com"},"content":"On Wed, Aug 10, 2022 at 2:23 AM Utkarsh Tiwari <utkarsh02t@gmail.com> wrote:\n\n> Add --script as an individual option to load capture scripts.\n> Load the capture script before starting the capture.\n>\n> If an invalid capture script has been given, display an critical error\n> QMessageBox and close the application.\n>\n> Signed-off-by: Utkarsh Tiwari <utkarsh02t@gmail.com>\n> ---\n> Difference:\n>         1. firstCameraSelect_  newly introduced to keep track if its the\n>                 first time dialog is been opened.\n>\n\nThe firstCameraSelect_ should be done in the patch 3/8\n\n\n>  src/qcam/main.cpp        |  3 +++\n>  src/qcam/main_window.cpp | 16 ++++++++++++++--\n>  src/qcam/main_window.h   |  2 ++\n>  3 files changed, 19 insertions(+), 2 deletions(-)\n>\n> diff --git a/src/qcam/main.cpp b/src/qcam/main.cpp\n> index d3f01a85..91166be5 100644\n> --- a/src/qcam/main.cpp\n> +++ b/src/qcam/main.cpp\n> @@ -43,6 +43,9 @@ OptionsParser::Options parseOptions(int argc, char\n> *argv[])\n>                          \"Set configuration of a camera stream\", \"stream\",\n> true);\n>         parser.addOption(OptVerbose, OptionNone,\n>                          \"Print verbose log messages\", \"verbose\");\n> +       parser.addOption(OptCaptureScript, OptionString,\n> +                        \"Load a capture session configuration script from\n> a file\",\n> +                        \"script\", ArgumentRequired, \"script\");\n>\n>         OptionsParser::Options options = parser.parse(argc, argv);\n>         if (options.isSet(OptHelp))\n> diff --git a/src/qcam/main_window.cpp b/src/qcam/main_window.cpp\n> index f2e3c576..d6ad0083 100644\n> --- a/src/qcam/main_window.cpp\n> +++ b/src/qcam/main_window.cpp\n> @@ -100,7 +100,7 @@ private:\n>\n>  MainWindow::MainWindow(CameraManager *cm, const OptionsParser::Options\n> &options)\n>         : saveRaw_(nullptr), options_(options), cm_(cm),\n> allocator_(nullptr),\n> -         isCapturing_(false), captureRaw_(false)\n> +         isCapturing_(false), captureRaw_(false), firstCameraSelect_(true)\n>  {\n>         int ret;\n>\n> @@ -146,6 +146,9 @@ MainWindow::MainWindow(CameraManager *cm, const\n> OptionsParser::Options &options)\n>         cm_->cameraAdded.connect(this, &MainWindow::addCamera);\n>         cm_->cameraRemoved.connect(this, &MainWindow::removeCamera);\n>\n> +       if (options_.isSet(OptCaptureScript))\n> +               scriptPath_ = options_[OptCaptureScript].toString();\n> +\n>         /* Open the camera and start capture. */\n>         ret = openCamera();\n>         if (ret < 0) {\n> @@ -324,6 +327,13 @@ void MainWindow::loadCaptureScript()\n>                 QMessageBox::critical(this, \"Invalid Script\",\n>                                       \"Couldn't load the capture script\");\n>\n> +               /*\n> +                * Close the camera if started by command line and its the\n> first capture\n> +                * script.\n> +                */\n> +               if (firstCameraSelect_ && options_.isSet(OptCaptureScript))\n> +                       quit();\n> +\n>         } else\n>                 cameraSelectorDialog_->informScriptRunning(scriptPath_);\n>\n> @@ -347,8 +357,10 @@ std::string MainWindow::chooseCamera()\n>          * Use the camera specified on the command line, if any, or\n> display the\n>          * camera selection dialog box otherwise.\n>          */\n> -       if (options_.isSet(OptCamera))\n> +       if (firstCameraSelect_ && options_.isSet(OptCamera)) {\n> +               firstCameraSelect_ = false;\n>                 return static_cast<std::string>(options_[OptCamera]);\n> +       }\n>\n>         if (cameraSelectorDialog_->exec() == QDialog::Accepted) {\n>                 std::string cameraId =\n> cameraSelectorDialog_->getCameraId();\n> diff --git a/src/qcam/main_window.h b/src/qcam/main_window.h\n> index 887f1db1..3a264f96 100644\n> --- a/src/qcam/main_window.h\n> +++ b/src/qcam/main_window.h\n> @@ -46,6 +46,7 @@ enum {\n>         OptRenderer = 'r',\n>         OptStream = 's',\n>         OptVerbose = 'v',\n> +       OptCaptureScript = 256,\n>  };\n>\n>  class MainWindow : public QMainWindow\n> @@ -123,6 +124,7 @@ private:\n>         /* Capture state, buffers queue and statistics */\n>         bool isCapturing_;\n>         bool captureRaw_;\n> +       bool firstCameraSelect_;\n>         libcamera::Stream *vfStream_;\n>         libcamera::Stream *rawStream_;\n>         std::map<const libcamera::Stream *, QQueue<libcamera::FrameBuffer\n> *>> freeBuffers_;\n> --\n> 2.25.1\n>\n>","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 7A4BABE173\n\tfor <parsemail@patchwork.libcamera.org>;\n\tWed, 10 Aug 2022 04:34:53 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id E0D876332B;\n\tWed, 10 Aug 2022 06:34:52 +0200 (CEST)","from mail-pl1-x62b.google.com (mail-pl1-x62b.google.com\n\t[IPv6:2607:f8b0:4864:20::62b])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 9700E61FA9\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tWed, 10 Aug 2022 06:34:51 +0200 (CEST)","by mail-pl1-x62b.google.com with SMTP id w14so13186414plp.9\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 09 Aug 2022 21:34:51 -0700 (PDT)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1660106092;\n\tbh=Jr+PQalrOPbpldC9k/jEWkx43xuEVKlPHP3Iz1b9xZw=;\n\th=References:In-Reply-To:Date:To:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:\n\tFrom;\n\tb=21wcRPGAZTrjRx+xcPEANwm9PtTDsKW4dlo6h+ZtAMZXog5Ruh9JAS+QO5b6d+9DH\n\tS0T35diORkUfRWuZ/t8mZKdg8QD4G9/+QNHwRRVzmwPOqPcu8IG18ORqDcpKm+/PfK\n\tVF7Q2FwLmEAoLPBIt4WK81trN6C5Woo9rut+t947II/j1/N0ZlljgmCQxTOvSvv83l\n\tld+fx5Z8YtnrsLWTkA+zfURb9JQZlK/BUvEDo7urB/AQFgMEfgL0hn9N9Q4Bglo9x9\n\tS9tZU11wxR/AkJke7r3OCRvkNCo6/nAtR8/HOQwOr7wXSOYU9ZGj0O/4d1IXgDOQgl\n\tn+0Uq47A7lkqA==","v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112;\n\th=to:subject:message-id:date:from:in-reply-to:references:mime-version\n\t:from:to:cc; bh=zb3VSIeEj1Dh+V5a29s3umOxQm4kWsezRVzeSZMbV58=;\n\tb=TPXgf+abEKIoZgJOQZVJSsEwepyckuADsIJDX2am0n6IDhRdLaML0+omL9ZSPeJPPm\n\t74zRELShXoZV9allykpLt91oditRIaZv2G1FOkNiy1S35p4/NtUl67vkXPNP+gK4CKZU\n\tbnA8+lj/eBfU82CiyFsX+XD/pW//DS0k8K8Svl8Sz7d4NsbvcMls48wzY2LTfIh+v1Qv\n\tMkdnZ/tfXfZPm43sEZ5+0NhYJbVlDUxKgjleeo+jYV4fiRsF9xZeujzbqc0xEeMrGx67\n\t7nxxJY+eDuC5xrlsd8LyIfFbzJYfWI86MXcA30qB0T+ztcQPmMUdRvo6dyJrWx4laPY5\n\tF/jA=="],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key; \n\tunprotected) header.d=gmail.com header.i=@gmail.com\n\theader.b=\"TPXgf+ab\"; dkim-atps=neutral","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20210112;\n\th=to:subject:message-id:date:from:in-reply-to:references:mime-version\n\t:x-gm-message-state:from:to:cc;\n\tbh=zb3VSIeEj1Dh+V5a29s3umOxQm4kWsezRVzeSZMbV58=;\n\tb=i7co+FCKh4IIOYywSvx5Uegq/i6KSWWRIHyMvQu4DmOXQmKNFOw5Z2hxi/k9vi3jzi\n\t6vbDr/WYrUL1E42PcJIopA25LMKoDBzmSrd9uOkQxM+Ye3w8xiOgQZovKahZkqeDH5pH\n\tUuy0oCQ/8i+SfKapfOG+xvpYOaE0pqaHX/v1F9hXjIPTRHCrx4KKo4SmM14aV9cR9GrW\n\tgmjffxa0ntwCQlStcW/ndJyABRcBOpaJTzHxMgbcL2RgM57atbtOdYzW0DN5riONBIWW\n\tVjaPbrh+OVvEAhC60+v6n2jtJzSFe9Zi5zTscNNpXwRFuEDjtYDZyt/h8sjINR2Wa4qf\n\t2SKg==","X-Gm-Message-State":"ACgBeo1AH+RrHc4/HBTL0sDWbI9RiKt9JQs4LcDEck4Arj9dkGefP6Gd\n\tNZ2CVlrmuJECQepAFr4+tnh5NTvePfHDO6WQyPyY4wk4","X-Google-Smtp-Source":"AA6agR6Q2fr8vQ+VOF7nPUFJYzWS40ncQR6YQ4sFSd1zKs03NJFNU9Y+ycwJaOPYGRy3r7gNRus550yshpqSrSSdZxo=","X-Received":"by 2002:a17:903:1252:b0:16b:a568:4f7d with SMTP id\n\tu18-20020a170903125200b0016ba5684f7dmr26864653plh.103.1660106089883;\n\tTue, 09 Aug 2022 21:34:49 -0700 (PDT)","MIME-Version":"1.0","References":"<20220809205042.344923-1-utkarsh02t@gmail.com>\n\t<20220809205042.344923-9-utkarsh02t@gmail.com>","In-Reply-To":"<20220809205042.344923-9-utkarsh02t@gmail.com>","Date":"Wed, 10 Aug 2022 10:04:36 +0530","Message-ID":"<CAHbe+E0MDevPeitE-5bC52_xs4MXcE2QojYmBVmSBikJivtwbg@mail.gmail.com>","To":"libcamera-devel@lists.libcamera.org","Content-Type":"multipart/alternative; boundary=\"000000000000c6ecd505e5db9109\"","Subject":"Re: [libcamera-devel] [PATCH v7 8/8] qcam: Add --script to load\n\tcapture script","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","From":"Utkarsh Tiwari via libcamera-devel\n\t<libcamera-devel@lists.libcamera.org>","Reply-To":"Utkarsh Tiwari <utkarsh02t@gmail.com>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]