avoid leaking any arv.h dependancies

This commit is contained in:
2021-06-04 21:20:37 +02:00
parent 89cd91d935
commit 71e152a0d6
2 changed files with 15 additions and 6 deletions

View File

@ -27,6 +27,8 @@
#include"log.h" #include"log.h"
#include <arv.h>
using namespace cam; using namespace cam;
cv::Mat Camera::debayer(ArvBuffer *buffer) cv::Mat Camera::debayer(ArvBuffer *buffer)
@ -126,7 +128,12 @@ void Camera::decoderThreadFunc()
} }
} }
void Camera::aCallback(void* instance, ArvStreamCallbackType type, ArvBuffer *buffer) static void aFCallback(void* instance, ArvStreamCallbackType type, ArvBuffer *buffer)
{
Camera::aCallback(instance, static_cast<int>(type), buffer);
}
void Camera::aCallback(void* instance, int type, ArvBuffer *buffer)
{ {
Camera* instance_ = reinterpret_cast<Camera*>(instance); Camera* instance_ = reinterpret_cast<Camera*>(instance);
if(type == ARV_STREAM_CALLBACK_TYPE_BUFFER_DONE) if(type == ARV_STREAM_CALLBACK_TYPE_BUFFER_DONE)
@ -250,7 +257,7 @@ bool Camera::setupCamera()
Log(Log::DEBUG)<<"Using "<<arv_camera_get_pixel_format_as_string(aCamera_, nullptr)<<" as pixel format"; Log(Log::DEBUG)<<"Using "<<arv_camera_get_pixel_format_as_string(aCamera_, nullptr)<<" as pixel format";
aStream_ = arv_camera_create_stream(aCamera_, aCallback, this, nullptr); aStream_ = arv_camera_create_stream(aCamera_, aFCallback, this, nullptr);
if(!ARV_IS_STREAM(aStream_)) if(!ARV_IS_STREAM(aStream_))
{ {
Log(Log::ERROR)<<"Can not create stream"; Log(Log::ERROR)<<"Can not create stream";

View File

@ -25,7 +25,10 @@
#include <thread> #include <thread>
#include <atomic> #include <atomic>
#include <opencv2/core/mat.hpp> #include <opencv2/core/mat.hpp>
#include <arv.h>
typedef struct _ArvStream ArvStream;
typedef struct _ArvBuffer ArvBuffer;
typedef struct _ArvCamera ArvCamera;
namespace cam namespace cam
{ {
@ -64,7 +67,6 @@ public:
private: private:
ArvStream* aStream_ = nullptr; ArvStream* aStream_ = nullptr;
ArvCamera* aCamera_ = nullptr; ArvCamera* aCamera_ = nullptr;
ArvInterface interface;
unsigned int width_; unsigned int width_;
unsigned int height_; unsigned int height_;
@ -86,8 +88,6 @@ private:
AquisitionMode aqmode = MODE_FREE; AquisitionMode aqmode = MODE_FREE;
static void aCallback(void* instance, ArvStreamCallbackType type, ArvBuffer *buffer);
void decoderThreadFunc(); void decoderThreadFunc();
std::function<void(cv::Mat)> callback_; std::function<void(cv::Mat)> callback_;
@ -124,6 +124,8 @@ public:
Camera::BayerMode getBayerMode(); Camera::BayerMode getBayerMode();
void setTriggerMode(Camera::TriggerMode mode); void setTriggerMode(Camera::TriggerMode mode);
void trigger(); void trigger();
static void aCallback(void* instance, int type, ArvBuffer *buffer);
}; };
} }