summaryrefslogtreecommitdiff
path: root/src/camera/veyeimx287m.h
diff options
context:
space:
mode:
authorNikita Kostovsky <nikita@kostovsky.me>2025-11-29 18:49:35 +0100
committerNikita Kostovsky <nikita@kostovsky.me>2025-11-29 18:49:35 +0100
commitc657073f8ebe84505613b593db4a41f30f86c970 (patch)
tree2774796d44ae38852fbbea9af0cdb82899c806d0 /src/camera/veyeimx287m.h
parentfe1a89dbd83e10bfb480962a511fa0f43885eb77 (diff)
introduce sem_queue
Diffstat (limited to 'src/camera/veyeimx287m.h')
-rw-r--r--src/camera/veyeimx287m.h17
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;