diff options
| author | Nikita Kostovsky <nikita@kostovsky.me> | 2025-01-23 12:08:26 +0100 |
|---|---|---|
| committer | Nikita Kostovsky <nikita@kostovsky.me> | 2025-01-23 12:08:26 +0100 |
| commit | 3fa8f19daf8b36b0703002d78a84e5bb7919849b (patch) | |
| tree | a82c63aac3b415cb5eddba58ba610213e85f9ae1 /src/camera/ov9281.cpp | |
| parent | 38acf876313c9bf28e41acd8bc29d6115c1e9285 (diff) | |
add support of inno-maker ov9281
Diffstat (limited to 'src/camera/ov9281.cpp')
| -rw-r--r-- | src/camera/ov9281.cpp | 35 |
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); |
