diff options
| author | Nikita Kostovsky <nikita@kostovsky.me> | 2025-11-29 19:55:00 +0100 |
|---|---|---|
| committer | Nikita Kostovsky <nikita@kostovsky.me> | 2025-11-29 19:55:00 +0100 |
| commit | 1664027209ea3b8eb327b7755e4111577e66a2ee (patch) | |
| tree | b3eca983cda8443dff6427bf703fad4986ae2090 /src/camera/veyeimx287m.h | |
| parent | c657073f8ebe84505613b593db4a41f30f86c970 (diff) | |
1x2x2 no crashes
Diffstat (limited to 'src/camera/veyeimx287m.h')
| -rw-r--r-- | src/camera/veyeimx287m.h | 36 |
1 files changed, 9 insertions, 27 deletions
diff --git a/src/camera/veyeimx287m.h b/src/camera/veyeimx287m.h index a9311ba..b875bb7 100644 --- a/src/camera/veyeimx287m.h +++ b/src/camera/veyeimx287m.h @@ -92,7 +92,7 @@ private: */ std::optional<int64_t> m_previousFrameCounter{}; - static constexpr uint8_t BUFFER_COUNT{16}; + static constexpr uint8_t BUFFER_COUNT{4}; // std::array<Image, BUFFER_COUNT> m_images; /*! @@ -105,35 +105,16 @@ private: struct buffer { void *mem{nullptr}; - std::shared_ptr<Image> image{std::make_shared<Image>()}; + // std::shared_ptr<Image> image{std::make_shared<Image>()}; }; - std::vector<buffer> m_buffers; + std::vector<buffer> m_rawBuffers; struct Semaphore { - Semaphore() - { - // rawBufferIndices.reserve(BUFFER_COUNT); - rotatedBufferIndices.reserve(BUFFER_COUNT); - } - const uint8_t maxSize{BUFFER_COUNT}; - - sem_queue<size_t, BUFFER_COUNT> rawSemQueue; - sem_queue<size_t, BUFFER_COUNT> rotSemQueue; - - // std::mutex rawBufferMtx; - // QQueue<size_t> rawBufferIndices; - // QSemaphore freeRawBuffers{BUFFER_COUNT}; - // QSemaphore usedRawBuffers{}; - - std::mutex rotatedBufferMtx; - QQueue<size_t> rotatedBufferIndices; - QSemaphore freeRotatedBuffers{BUFFER_COUNT}; - QSemaphore usedRotatedBuffers{}; - - // uint8_t bufferIdx{std::numeric_limits<decltype(bufferIdx)>::max()}; - // std::binary_semaphore main2calc{0}; - // std::binary_semaphore calc2main{0}; + sem_queue<std::shared_ptr<Image>, BUFFER_COUNT> rawSemQueue; + // sem_queue<size_t, BUFFER_COUNT> rawSemQueue; + sem_queue<std::shared_ptr<Image>, BUFFER_COUNT> rotSemQueue; + // sem_queue<size_t, BUFFER_COUNT> rotSemQueue; } m_sync; std::mutex m_camMtx; @@ -148,7 +129,8 @@ private: // TODO: sync all loops somehow to guarantee frames order std::jthread m_rotateThreads[2]; std::jthread m_calcPixelsThreads[2]; - size_t m_lastProcessedIdx{std::numeric_limits<size_t>::max()}; + std::mutex m_lastImageMtx; + std::shared_ptr<Image> m_lastProcessedImage{}; std::shared_ptr<veye::imx287m::i2c> m_i2c; std::shared_ptr<HttpServer> m_httpServer; |
