diff options
Diffstat (limited to 'src/camera')
| -rw-r--r-- | src/camera/icamera.h | 2 | ||||
| -rw-r--r-- | src/camera/veyeimx287m.cpp | 26 | ||||
| -rw-r--r-- | src/camera/veyeimx287m.h | 5 |
3 files changed, 21 insertions, 12 deletions
diff --git a/src/camera/icamera.h b/src/camera/icamera.h index bd08786..44ed4b3 100644 --- a/src/camera/icamera.h +++ b/src/camera/icamera.h @@ -54,6 +54,8 @@ public: virtual bool set_gain(const float value) = 0; virtual std::optional<float> get_gain() = 0; + virtual bool getImage(Image *image) = 0; + public: std::function<void(std::shared_ptr<Pixels>)> newPixelsCallback; std::function<void(Image &)> newImageCallback; diff --git a/src/camera/veyeimx287m.cpp b/src/camera/veyeimx287m.cpp index 7b6302c..21d95c6 100644 --- a/src/camera/veyeimx287m.cpp +++ b/src/camera/veyeimx287m.cpp @@ -294,8 +294,8 @@ bool VeyeIMX287m::init() return false; } - if (!initHttpServer()) - return false; + // if (!initHttpServer()) + // return false; return true; } @@ -600,12 +600,12 @@ bool VeyeIMX287m::initI2C() return m_i2c != nullptr && m_i2c->open(); } -bool VeyeIMX287m::initHttpServer() -{ - m_httpServer = std::make_shared<HttpServer>(this); +// bool VeyeIMX287m::initHttpServer() +// { +// m_httpServer = std::make_shared<HttpServer>(this); - return m_httpServer != nullptr; -} +// return m_httpServer != nullptr; +// } void VeyeIMX287m::calcFrameLoop(std::stop_token stopToken) { @@ -749,8 +749,14 @@ bool VeyeIMX287m::dequeueImageBuffer(size_t &imageIndex) return true; } -bool VeyeIMX287m::getImage(Image &image) +bool VeyeIMX287m::getImage(Image *image) { + if (!image) { + std::cerr << __func__ << ": image is nullptr" << std::endl; + + return false; + } + size_t bufferIdx{}; if (!dequeueImageBuffer(bufferIdx)) { @@ -759,13 +765,13 @@ bool VeyeIMX287m::getImage(Image &image) // TODO: remove this bullshit. return ptr to image or copy image metainfo // only, then copy data - image = std::move(m_images[bufferIdx]); + *image = std::move(m_images[bufferIdx]); { QElapsedTimer t; t.start(); std::lock_guard lock{m_imageMutexes[bufferIdx]}; auto &src = *(Image::radxa_data_t *) m_videoBuffers[bufferIdx]; - auto &dst = image.data; + auto &dst = image->data; Image::copy(dst, src); get_elapsed_ns += t.nsecsElapsed(); } diff --git a/src/camera/veyeimx287m.h b/src/camera/veyeimx287m.h index 9b96afe..1f293d6 100644 --- a/src/camera/veyeimx287m.h +++ b/src/camera/veyeimx287m.h @@ -36,7 +36,8 @@ public: bool startStream() override; bool dequeueImageBuffer(size_t &image); - bool getImage(Image &image); + // bool getImage(Image &image); + bool getImage(Image *image); bool init(); @@ -66,7 +67,7 @@ private: bool initCam(); bool initI2C(); - bool initHttpServer(); + // bool initHttpServer(); void calcFrameLoop(std::stop_token stopToken); |
