summaryrefslogtreecommitdiff
path: root/src/camera/ov9281.cpp
diff options
context:
space:
mode:
authorNikita Kostovsky <nikita@kostovsky.me>2025-01-23 12:08:26 +0100
committerNikita Kostovsky <nikita@kostovsky.me>2025-01-23 12:08:26 +0100
commit3fa8f19daf8b36b0703002d78a84e5bb7919849b (patch)
treea82c63aac3b415cb5eddba58ba610213e85f9ae1 /src/camera/ov9281.cpp
parent38acf876313c9bf28e41acd8bc29d6115c1e9285 (diff)
add support of inno-maker ov9281
Diffstat (limited to 'src/camera/ov9281.cpp')
-rw-r--r--src/camera/ov9281.cpp35
1 files changed, 25 insertions, 10 deletions
diff --git a/src/camera/ov9281.cpp b/src/camera/ov9281.cpp
index 4d393a0..012eab6 100644
--- a/src/camera/ov9281.cpp
+++ b/src/camera/ov9281.cpp
@@ -18,9 +18,15 @@
#include "rotaryencoder.h"
#include "typedefs.h"
+#include <QElapsedTimer>
+
+QElapsedTimer timer;
+size_t fpsCounter{0};
+
OV9281::OV9281(const std::shared_ptr<libcamera::Camera> &camera)
: INIT_FIELD(camera)
{
+ timer.start();
std::cout << __func__ << ":\tid: " << m_camera->id();
}
@@ -54,7 +60,7 @@ bool OV9281::init()
return false;
}
- m_config->orientation = libcamera::Orientation::Rotate90;
+ // m_config->orientation = libcamera::Orientation::Rotate90;
libcamera::StreamConfiguration &streamConfig = m_config->at(0);
@@ -135,6 +141,14 @@ bool OV9281::applyConfig()
*/
void OV9281::onRequestCompleted(libcamera::Request *completed_request)
{
+ fpsCounter++;
+
+ if (timer.elapsed() > 1000) {
+ std::cout << "fps: " << fpsCounter << std::endl;
+ timer.restart();
+ fpsCounter = 0;
+ }
+
using namespace libcamera;
if (completed_request->status() == Request::RequestCancelled)
@@ -146,6 +160,7 @@ void OV9281::onRequestCompleted(libcamera::Request *completed_request)
const auto &buffers = completed_request->buffers();
+#if 1
for (auto [stream, buffer] : buffers)
{
const auto &streamConfig = stream->configuration();
@@ -170,13 +185,12 @@ void OV9281::onRequestCompleted(libcamera::Request *completed_request)
img->height = imageSize.height;
memcpy(img->data, data, size);
- img->dataSize = size;
- img->stride = stride;
+ // img->dataSize = size;
+ // img->stride = stride;
img->pixelFormat = pixelFormat;
img->counters.measurementCounter = metadata.sequence;
img->counters.timestampUs = metadata.timestamp / 1000;
img->counters.encoderPosition = RotaryEncoder::instance()->position();
-
img->rotate();
auto pixels = img->pixels();
@@ -185,12 +199,13 @@ void OV9281::onRequestCompleted(libcamera::Request *completed_request)
if (!pixels) {
std::cerr << "emit empty pixels" << std::endl;
}
+ newImage.emit(img);
newPixels.emit(pixels);
#define emit
#endif
}
}
-
+#endif
const libcamera::ControlList &metadata = completed_request->metadata();
const ControlInfoMap &control_map = m_camera->controls();
// const ControlIdMap & ctrlIdMap = control_map.idmap();
@@ -207,11 +222,11 @@ void OV9281::onRequestCompleted(libcamera::Request *completed_request)
static auto lastControls = completed_request->controls();
completed_request->reuse(Request::ReuseBuffers);
- completed_request->controls().set(libcamera::controls::AeEnable, false);
- completed_request->controls()
- .set(libcamera::controls::draft ::NoiseReductionMode,
- libcamera::controls::draft ::NoiseReductionModeEnum ::
- NoiseReductionModeHighQuality);
+ // completed_request->controls().set(libcamera::controls::AeEnable, false);
+ // completed_request->controls()
+ // .set(libcamera::controls::draft ::NoiseReductionMode,
+ // libcamera::controls::draft ::NoiseReductionModeEnum ::
+ // NoiseReductionModeHighQuality);
completed_request->controls().set(libcamera::controls::ExposureTime,
m_exposureTime);