[libcamera-devel] [RFC PATCH v2 9/9] [PoC] QCam: Control demo: A SineWave Brightness
Kieran Bingham
kieran.bingham at ideasonboard.com
Fri Jun 21 18:14:01 CEST 2019
As an example of how to add a control to each request, set the
Brightness value with a changing value against the buffer time stamps.
The Brightness will go up and down following a sine wave to visualise
the control effect on the video stream.
Signed-off-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
---
src/qcam/main_window.cpp | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/src/qcam/main_window.cpp b/src/qcam/main_window.cpp
index 8c55941f137b..1449e020c815 100644
--- a/src/qcam/main_window.cpp
+++ b/src/qcam/main_window.cpp
@@ -5,6 +5,7 @@
* main_window.cpp - qcam - Main application window
*/
+#include <cmath>
#include <iomanip>
#include <iostream>
#include <string>
@@ -219,6 +220,13 @@ void MainWindow::stopCapture()
config_.reset();
}
+int SineWaveValue(Buffer *buffer)
+{
+ unsigned int millisec = buffer->timestamp() / 1000000;
+ constexpr float rads = 2 * M_PI / 180;
+ return sin(0.036 * rads * millisec) * 100;
+}
+
void MainWindow::requestComplete(Request *request,
const std::map<Stream *, Buffer *> &buffers)
{
@@ -260,6 +268,14 @@ void MainWindow::requestComplete(Request *request,
return;
}
+ /*
+ * A demonstration control, which has a distinct visual effect.
+ * Scale the brightness up and down with a sine wave.
+ */
+ /* How do we deal with max/min/defaults etc? */
+ request->controls()[ManualBrightness] = SineWaveValue(buffer);
+ request->controls().update(ManualGain, SineWaveValue(buffer));
+
request->setBuffers(buffers);
camera_->queueRequest(request);
}
--
2.20.1
More information about the libcamera-devel
mailing list