[libcamera-devel] [PATCH v3 3/3] qcam: Add --script to load capture script

Kieran Bingham kieran.bingham at ideasonboard.com
Fri Jul 1 19:24:11 CEST 2022


Quoting Utkarsh Tiwari via libcamera-devel (2022-06-27 04:01:59)
> Add --script as an individual option to load capture scripts.
> Load the capture script before starting the capture.
> 
> If an invalid capture script has been given, show error
> but start the capture without the script.

I think this is reasonable behaviour for the test app.

Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>

> 
> Signed-off-by: Utkarsh Tiwari <utkarsh02t at gmail.com>
> ---
>  src/qcam/main.cpp        |  3 +++
>  src/qcam/main_window.cpp | 14 ++++++++++++++
>  src/qcam/main_window.h   |  1 +
>  3 files changed, 18 insertions(+)
> 
> diff --git a/src/qcam/main.cpp b/src/qcam/main.cpp
> index d3f01a85..91166be5 100644
> --- a/src/qcam/main.cpp
> +++ b/src/qcam/main.cpp
> @@ -43,6 +43,9 @@ OptionsParser::Options parseOptions(int argc, char *argv[])
>                          "Set configuration of a camera stream", "stream", true);
>         parser.addOption(OptVerbose, OptionNone,
>                          "Print verbose log messages", "verbose");
> +       parser.addOption(OptCaptureScript, OptionString,
> +                        "Load a capture session configuration script from a file",
> +                        "script", ArgumentRequired, "script");
>  
>         OptionsParser::Options options = parser.parse(argc, argv);
>         if (options.isSet(OptHelp))
> diff --git a/src/qcam/main_window.cpp b/src/qcam/main_window.cpp
> index e133b618..8e6bde32 100644
> --- a/src/qcam/main_window.cpp
> +++ b/src/qcam/main_window.cpp
> @@ -151,6 +151,20 @@ MainWindow::MainWindow(CameraManager *cm, const OptionsParser::Options &options)
>                 return;
>         }
>  
> +       if (options_.isSet(OptCaptureScript)) {
> +               std::string scriptName = options_[OptCaptureScript].toString();
> +               script_ = std::make_unique<CaptureScript>(camera_, scriptName);
> +               if (!script_->valid()) {
> +                       QMessageBox::critical(this, "Invalid Script",
> +                                             "Couldn't load the capture script");
> +                       script_.reset();
> +               }
> +
> +               /* Show stopping availability. */
> +               scriptExecAction_->setIcon(QIcon(":x-square.svg"));
> +               scriptExecAction_->setText("Stop Script execution");
> +       }
> +
>         startStopAction_->setChecked(true);
>  }
>  
> diff --git a/src/qcam/main_window.h b/src/qcam/main_window.h
> index 2cdf7169..4d19ab64 100644
> --- a/src/qcam/main_window.h
> +++ b/src/qcam/main_window.h
> @@ -42,6 +42,7 @@ enum {
>         OptRenderer = 'r',
>         OptStream = 's',
>         OptVerbose = 'v',
> +       OptCaptureScript = 256,
>  };
>  
>  class MainWindow : public QMainWindow
> -- 
> 2.25.1
>


More information about the libcamera-devel mailing list