summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikita Kostovsky <nikita@kostovsky.me>2025-11-30 00:11:12 +0100
committerNikita Kostovsky <nikita@kostovsky.me>2025-11-30 00:11:12 +0100
commit81fd05d07b51e9cbb25de2d8bdbd4a51ead36994 (patch)
treef56c1ebc0ddfdd842c2e666c80c5569fe7664b7e
parent73f978f1e1e42ec2b7445dd77ec35a58ff08cf20 (diff)
cleanup
-rw-r--r--src/camera/veyeimx287m.cpp52
-rw-r--r--src/camera/veyeimx287m.h55
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{};