[libcamera-devel,14/13] apps: qcam: Add option to configure sensor
diff mbox series

Message ID 20230925170919.301540-1-kieran.bingham@ideasonboard.com
State New
Headers show
Series
  • libcamera: Introduce SensorConfiguration
Related show

Commit Message

Kieran Bingham Sept. 25, 2023, 5:09 p.m. UTC
Add a '-f|--sensor_format' option to qcam to allow forcing a sensor
configuration from the command line.

As an example:
qcam -f width=3840,height=2160,bitDepth=10

Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
---

Extending Jacopo's implementation for cam to qcam
Helpful for testing with visual display of the selected modes.

 src/apps/qcam/main.cpp        | 3 +++
 src/apps/qcam/main_window.cpp | 7 +++++++
 src/apps/qcam/main_window.h   | 1 +
 3 files changed, 11 insertions(+)

Patch
diff mbox series

diff --git a/src/apps/qcam/main.cpp b/src/apps/qcam/main.cpp
index 36cb93a53701..7e3f252e9f09 100644
--- a/src/apps/qcam/main.cpp
+++ b/src/apps/qcam/main.cpp
@@ -30,6 +30,7 @@  void signalHandler([[maybe_unused]] int signal)
 OptionsParser::Options parseOptions(int argc, char *argv[])
 {
 	StreamKeyValueParser streamKeyValue;
+	SensorKeyValueParser sensorKeyValue;
 
 	OptionsParser parser;
 	parser.addOption(OptCamera, OptionString,
@@ -42,6 +43,8 @@  OptionsParser::Options parseOptions(int argc, char *argv[])
 			 "renderer", ArgumentRequired, "renderer");
 	parser.addOption(OptStream, &streamKeyValue,
 			 "Set configuration of a camera stream", "stream", true);
+	parser.addOption(OptSensorFmt, &sensorKeyValue,
+			 "Apply a format to the sensor", "sensor_format", true);
 	parser.addOption(OptVerbose, OptionNone,
 			 "Print verbose log messages", "verbose");
 
diff --git a/src/apps/qcam/main_window.cpp b/src/apps/qcam/main_window.cpp
index 0f16c038d516..e7511b4c7aa4 100644
--- a/src/apps/qcam/main_window.cpp
+++ b/src/apps/qcam/main_window.cpp
@@ -414,6 +414,13 @@  int MainWindow::startCapture()
 		return -EINVAL;
 	}
 
+	/* Apply a sensor configuration if requested. */
+	if (SensorKeyValueParser::updateConfiguration(config_.get(),
+						      options_[OptSensorFmt])) {
+		qWarning() << "Failed to apply sensor configuration";
+		return -EINVAL;
+	}
+
 	CameraConfiguration::Status validation = config_->validate();
 	if (validation == CameraConfiguration::Invalid) {
 		qWarning() << "Failed to create valid camera configuration";
diff --git a/src/apps/qcam/main_window.h b/src/apps/qcam/main_window.h
index 2e3e1b5c83c2..44646a87cfbf 100644
--- a/src/apps/qcam/main_window.h
+++ b/src/apps/qcam/main_window.h
@@ -42,6 +42,7 @@  enum {
 	OptHelp = 'h',
 	OptRenderer = 'r',
 	OptStream = 's',
+	OptSensorFmt = 'f',
 	OptVerbose = 'v',
 };