From 1664027209ea3b8eb327b7755e4111577e66a2ee Mon Sep 17 00:00:00 2001 From: Nikita Kostovsky Date: Sat, 29 Nov 2025 19:55:00 +0100 Subject: 1x2x2 no crashes --- src/camera/veyeimx287m.h | 36 +++++++++--------------------------- 1 file changed, 9 insertions(+), 27 deletions(-) (limited to 'src/camera/veyeimx287m.h') 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 m_previousFrameCounter{}; - static constexpr uint8_t BUFFER_COUNT{16}; + static constexpr uint8_t BUFFER_COUNT{4}; // std::array m_images; /*! @@ -105,35 +105,16 @@ private: struct buffer { void *mem{nullptr}; - std::shared_ptr image{std::make_shared()}; + // std::shared_ptr image{std::make_shared()}; }; - std::vector m_buffers; + std::vector m_rawBuffers; struct Semaphore { - Semaphore() - { - // rawBufferIndices.reserve(BUFFER_COUNT); - rotatedBufferIndices.reserve(BUFFER_COUNT); - } - const uint8_t maxSize{BUFFER_COUNT}; - - sem_queue rawSemQueue; - sem_queue rotSemQueue; - - // std::mutex rawBufferMtx; - // QQueue rawBufferIndices; - // QSemaphore freeRawBuffers{BUFFER_COUNT}; - // QSemaphore usedRawBuffers{}; - - std::mutex rotatedBufferMtx; - QQueue rotatedBufferIndices; - QSemaphore freeRotatedBuffers{BUFFER_COUNT}; - QSemaphore usedRotatedBuffers{}; - - // uint8_t bufferIdx{std::numeric_limits::max()}; - // std::binary_semaphore main2calc{0}; - // std::binary_semaphore calc2main{0}; + sem_queue, BUFFER_COUNT> rawSemQueue; + // sem_queue rawSemQueue; + sem_queue, BUFFER_COUNT> rotSemQueue; + // sem_queue 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::max()}; + std::mutex m_lastImageMtx; + std::shared_ptr m_lastProcessedImage{}; std::shared_ptr m_i2c; std::shared_ptr m_httpServer; -- cgit v1.2.3-70-g09d2