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 <arv.h>
using namespace cam;
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);
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";
aStream_ = arv_camera_create_stream(aCamera_, aCallback, this, nullptr);
aStream_ = arv_camera_create_stream(aCamera_, aFCallback, this, nullptr);
if(!ARV_IS_STREAM(aStream_))
{
Log(Log::ERROR)<<"Can not create stream";

View File

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