summaryrefslogtreecommitdiff
path: root/src/camera
diff options
context:
space:
mode:
Diffstat (limited to 'src/camera')
-rw-r--r--src/camera/icamera.h2
-rw-r--r--src/camera/veyeimx287m.cpp26
-rw-r--r--src/camera/veyeimx287m.h5
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);