diff options
| author | Nikita Kostovsky <nikita@kostovsky.me> | 2025-11-29 18:49:35 +0100 |
|---|---|---|
| committer | Nikita Kostovsky <nikita@kostovsky.me> | 2025-11-29 18:49:35 +0100 |
| commit | c657073f8ebe84505613b593db4a41f30f86c970 (patch) | |
| tree | 2774796d44ae38852fbbea9af0cdb82899c806d0 /src/camera/veyeimx287m.h | |
| parent | fe1a89dbd83e10bfb480962a511fa0f43885eb77 (diff) | |
introduce sem_queue
Diffstat (limited to 'src/camera/veyeimx287m.h')
| -rw-r--r-- | src/camera/veyeimx287m.h | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/src/camera/veyeimx287m.h b/src/camera/veyeimx287m.h index 2b5c28c..a9311ba 100644 --- a/src/camera/veyeimx287m.h +++ b/src/camera/veyeimx287m.h @@ -15,6 +15,7 @@ #include "constants.h" #include "icamera.h" #include "image.h" +#include "utils/sem_queue.h" namespace veye { namespace imx287m { @@ -112,15 +113,20 @@ private: { Semaphore() { - rawBufferIndices.reserve(BUFFER_COUNT); + // rawBufferIndices.reserve(BUFFER_COUNT); rotatedBufferIndices.reserve(BUFFER_COUNT); } const uint8_t maxSize{BUFFER_COUNT}; - QQueue<size_t> rawBufferIndices; - QSemaphore freeRawBuffers{BUFFER_COUNT}; - QSemaphore usedRawBuffers{}; + 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{}; @@ -141,7 +147,8 @@ private: // std::jthread m_getThreads[4]; // TODO: sync all loops somehow to guarantee frames order std::jthread m_rotateThreads[2]; - std::jthread m_calcPixelsThreads[1]; + std::jthread m_calcPixelsThreads[2]; + size_t m_lastProcessedIdx{std::numeric_limits<size_t>::max()}; std::shared_ptr<veye::imx287m::i2c> m_i2c; std::shared_ptr<HttpServer> m_httpServer; |
