[libcamera-devel] [PATCH v8 8/8] qcam: Add --script to load capture script
Utkarsh Tiwari
utkarsh02t at gmail.com
Wed Aug 10 17:03:49 CEST 2022
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, display an critical error
QMessageBox and close the application.
Signed-off-by: Utkarsh Tiwari <utkarsh02t at gmail.com>
---
Difference from v7:
1. Moved firstCameraSelect_ to 3/8
src/qcam/main.cpp | 3 +++
src/qcam/main_window.cpp | 10 ++++++++++
src/qcam/main_window.h | 1 +
3 files changed, 14 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 753e1af9..ce70cc02 100644
--- a/src/qcam/main_window.cpp
+++ b/src/qcam/main_window.cpp
@@ -147,6 +147,9 @@ MainWindow::MainWindow(CameraManager *cm, const OptionsParser::Options &options)
cm_->cameraAdded.connect(this, &MainWindow::addCamera);
cm_->cameraRemoved.connect(this, &MainWindow::removeCamera);
+ if (options_.isSet(OptCaptureScript))
+ scriptPath_ = options_[OptCaptureScript].toString();
+
/* Open the camera and start capture. */
ret = openCamera();
if (ret < 0) {
@@ -325,6 +328,13 @@ void MainWindow::loadCaptureScript()
QMessageBox::critical(this, "Invalid Script",
"Couldn't load the capture script");
+ /*
+ * Close the camera if started by command line and its the first capture
+ * script.
+ */
+ if (firstCameraSelect_ && options_.isSet(OptCaptureScript))
+ quit();
+
} else
cameraSelectorDialog_->informScriptRunning(scriptPath_);
diff --git a/src/qcam/main_window.h b/src/qcam/main_window.h
index 10994b67..c7cba5e9 100644
--- a/src/qcam/main_window.h
+++ b/src/qcam/main_window.h
@@ -45,6 +45,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