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

Umang Jain umang.jain at ideasonboard.com
Mon Jul 25 20:54:32 CEST 2022


Hi Utkarsh,

On 7/3/22 10:07, Utkarsh Tiwari via libcamera-devel wrote:
> 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.


umm, why would you do that? If --script is specified, it is pretty clear 
that the user intends to use the capture script. If there are errors in 
the scripts, we sould fail loudly and not proceed with the start() at all.

The user 'might' get a false impression that the script is valid hence, 
the capture is started and "miss" to  take a note of the invalidity 
error. Was this discussed in previous iterations?

>
> Signed-off-by: Utkarsh Tiwari <utkarsh02t at gmail.com>
> Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.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 4fbaeccc..7ec53a7c 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


More information about the libcamera-devel mailing list