[libcamera-devel] [PATCH v5 3/3] qcam: Add --script to load capture script
Utkarsh Tiwari
utkarsh02t at gmail.com
Tue Jul 26 21:41:23 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 a QMessageBox and
print it on the console informing that the script is invalid. Do not
start the capture.
Signed-off-by: Utkarsh Tiwari <utkarsh02t at gmail.com>
Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
---
Changes from v4
- Now when we have an invalid script we quit and don't start the
capture.
src/qcam/main.cpp | 3 +++
src/qcam/main_window.cpp | 20 ++++++++++++++++++++
src/qcam/main_window.h | 1 +
3 files changed, 24 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 9dc96fbb..7b2bc84b 100644
--- a/src/qcam/main_window.cpp
+++ b/src/qcam/main_window.cpp
@@ -152,6 +152,26 @@ 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");
+ qInfo() << "Invalid Capture Script";
+
+ script_.reset();
+
+ /* Do not start capture if invalid script. */
+ quit();
+ return;
+ }
+
+ /* 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 eb398c1d..59e50b5e 100644
--- a/src/qcam/main_window.h
+++ b/src/qcam/main_window.h
@@ -43,6 +43,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