diff options
| author | Nikita Kostovsky <nikita@kostovsky.me> | 2025-11-30 00:11:12 +0100 |
|---|---|---|
| committer | Nikita Kostovsky <nikita@kostovsky.me> | 2025-11-30 00:11:12 +0100 |
| commit | 81fd05d07b51e9cbb25de2d8bdbd4a51ead36994 (patch) | |
| tree | f56c1ebc0ddfdd842c2e666c80c5569fe7664b7e | |
| parent | 73f978f1e1e42ec2b7445dd77ec35a58ff08cf20 (diff) | |
cleanup
| -rw-r--r-- | src/camera/veyeimx287m.cpp | 52 | ||||
| -rw-r--r-- | src/camera/veyeimx287m.h | 55 |
2 files changed, 20 insertions, 87 deletions
diff --git a/src/camera/veyeimx287m.cpp b/src/camera/veyeimx287m.cpp index a6c8b93..54bb47e 100644 --- a/src/camera/veyeimx287m.cpp +++ b/src/camera/veyeimx287m.cpp @@ -197,16 +197,6 @@ VeyeIMX287m::VeyeIMX287m() {} VeyeIMX287m::~VeyeIMX287m() { - for (auto &t : m_calcPixelsThreads) { - t.request_stop(); - t.join(); - } - - for (auto &t : m_rotateThreads) { - t.request_stop(); - t.join(); - } - for (auto &t : m_getThreads) { t.request_stop(); t.join(); @@ -275,15 +265,7 @@ bool VeyeIMX287m::startStream() } for (auto &t : m_getThreads) { - t = std::jthread{&VeyeIMX287m::getFrameLoop, this}; - } - - for (auto &t : m_rotateThreads) { - t = std::jthread{&VeyeIMX287m::rotateFrameLoop, this}; - } - - for (auto &t : m_calcPixelsThreads) { - t = std::jthread{&VeyeIMX287m::calcPixelsLoop, this}; + t = std::jthread{&VeyeIMX287m::getFramesLoop, this}; } std::cout << __func__ << " - OK" << std::endl; @@ -570,7 +552,7 @@ bool VeyeIMX287m::initI2C() return m_i2c != nullptr && m_i2c->open(); } -void VeyeIMX287m::getFrameLoop(std::stop_token stopToken) +void VeyeIMX287m::getFramesLoop(std::stop_token stopToken) { QElapsedTimer t; @@ -623,36 +605,6 @@ void VeyeIMX287m::getFrameLoop(std::stop_token stopToken) } } -void VeyeIMX287m::rotateFrameLoop(std::stop_token stopToken) -{ - while (!stopToken.stop_requested()) { - // const auto idx = m_sync.rawSemQueue.dequeue(); - // const auto &image = m_rawBuffers[idx].image; - // const auto image = m_sync.rawSemQueue.dequeue(); - // image->rotate(); - - // // m_lastProcessedImage = idx; - // // m_lastProcessedImage = image; - - // // m_sync.rotSemQueue.enqueue(idx); - // m_sync.rotSemQueue.enqueue(image); - } -} - -void VeyeIMX287m::calcPixelsLoop(std::stop_token stopToken) -{ - while (!stopToken.stop_requested()) { - // // const auto idx = m_sync.rotSemQueue.dequeue(); - // const auto image = m_sync.rotSemQueue.dequeue(); - // // const auto &image = m_rawBuffers[idx].image; - // const auto pixels = image->sharedPixels(); - // { - // std::lock_guard l{m_lastImageMtx}; - // m_lastProcessedImage = image; - // } - } -} - // TODO: check if some of buffers are being overritten during processing bool VeyeIMX287m::dequeueImageBuffer(size_t &imageIndex) { diff --git a/src/camera/veyeimx287m.h b/src/camera/veyeimx287m.h index e4c02b0..d65b00d 100644 --- a/src/camera/veyeimx287m.h +++ b/src/camera/veyeimx287m.h @@ -37,31 +37,31 @@ public: ~VeyeIMX287m() override; public: - static std::vector<std::shared_ptr<ICamera>> search(); + [[nodiscard]] static std::vector<std::shared_ptr<ICamera>> search(); public: - bool startStream() override; + [[nodiscard]] bool startStream() override; - bool dequeueImageBuffer(size_t &image); + [[nodiscard]] bool dequeueImageBuffer(size_t &image); // bool getImage(Image &image); - bool getImage(Image *image) override; - std::shared_ptr<Image> getImage() override; + [[nodiscard]] bool getImage(Image *image) override; + [[nodiscard]] std::shared_ptr<Image> getImage() override; bool init(); // parameters public: - bool set_autoExposure(const bool enable) override; - std::optional<bool> get_autoExposure() override; + [[nodiscard]] bool set_autoExposure(const bool enable) override; + [[nodiscard]] std::optional<bool> get_autoExposure() override; - bool set_autoGain(const bool enable) override; - std::optional<bool> get_autoGain() override; + [[nodiscard]] bool set_autoGain(const bool enable) override; + [[nodiscard]] std::optional<bool> get_autoGain() override; - bool set_exposureTime(const std::chrono::microseconds us) override; - std::optional<const std::chrono::microseconds> get_exposureTime() override; + [[nodiscard]] bool set_exposureTime(const std::chrono::microseconds us) override; + [[nodiscard]] std::optional<const std::chrono::microseconds> get_exposureTime() override; - bool set_gain(const float value) override; - std::optional<float> get_gain() override; + [[nodiscard]] bool set_gain(const float value) override; + [[nodiscard]] std::optional<float> get_gain() override; public: /*! @@ -71,15 +71,12 @@ public: uint32_t processedCounter{0}; private: - bool openCam(); - bool initCam(); + [[nodiscard]] bool openCam(); + [[nodiscard]] bool initCam(); - bool initI2C(); - // bool initHttpServer(); + [[nodiscard]] bool initI2C(); - void getFrameLoop(std::stop_token stopToken); - void rotateFrameLoop(std::stop_token stopToken); - void calcPixelsLoop(std::stop_token stopToken); + void getFramesLoop(std::stop_token stopToken); private: /*! @@ -94,7 +91,6 @@ private: static constexpr uint8_t BUFFER_COUNT{16}; - // std::array<Image, BUFFER_COUNT> m_images; /*! * \brief m_imageMutexes - lock while processing image from m_images */ @@ -108,27 +104,12 @@ private: std::shared_ptr<Image> image{std::make_shared<Image>()}; }; std::vector<buffer> m_rawBuffers; - - struct Semaphore - { - // 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::array<Image, BUFFER_COUNT> m_images; std::mutex m_camMtx; - /*! - * \brief m_buffersQueue - queue of buffers which require extracting pixels - */ - // std::queue<std::remove_const<decltype(BUFFER_COUNT)>> m_buffersQueue; std::jthread m_streamThread; std::jthread m_getThreads[1]; - // std::jthread m_getThreads[4]; - // TODO: sync all loops somehow to guarantee frames order - std::jthread m_rotateThreads[0]; - std::jthread m_calcPixelsThreads[0]; std::mutex m_lastImageMtx; std::shared_ptr<Image> m_lastProcessedImage{}; |
