2023-04-08 00:56:20 +00:00
|
|
|
#pragma once
|
|
|
|
#include "iimagehandler.h"
|
|
|
|
#include "ThreadPool.h"
|
|
|
|
#include "imemory.h"
|
|
|
|
#include <queue>
|
|
|
|
#include <string>
|
|
|
|
#include <mutex>
|
|
|
|
#include "BlockingQueue.h"
|
|
|
|
|
|
|
|
|
|
|
|
class UsbImageProcQueue;
|
|
|
|
|
|
|
|
class ImageUsbHandler: public IImageHandler
|
|
|
|
{
|
2023-04-15 06:17:48 +00:00
|
|
|
void push_event(HGIntInfo ev);
|
|
|
|
void thread_push_stop_event(HGIntInfo ev);
|
|
|
|
int32_t add_que_count(int adden = 1);
|
|
|
|
|
|
|
|
std::shared_ptr<std::thread> stop_event_thread_;
|
|
|
|
std::mutex proc_que_;
|
|
|
|
volatile int32_t que_len_;
|
|
|
|
|
2023-04-08 00:56:20 +00:00
|
|
|
public:
|
|
|
|
ImageUsbHandler(std::shared_ptr<UsbImageProcQueue> images = nullptr);
|
2023-04-15 06:17:48 +00:00
|
|
|
virtual ~ImageUsbHandler();
|
2023-04-08 00:56:20 +00:00
|
|
|
virtual void config_procparams(HGImgProcParms params);
|
2023-04-15 06:17:48 +00:00
|
|
|
virtual void add_image(void* data, int width, int height, int type,int scannnum,std::uint32_t fpga_vs,CISVendor cistype);
|
2023-04-08 00:56:20 +00:00
|
|
|
virtual void add_scanevent(HGIntInfo status);
|
|
|
|
virtual bool done();
|
|
|
|
virtual void clear();
|
2023-04-15 06:17:48 +00:00
|
|
|
virtual bool is_limit() override;
|
2023-04-08 00:56:20 +00:00
|
|
|
virtual void Set_ratio(u32 h_ratio,u32 v_ratio) override;
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
|
|
std::shared_ptr<UsbImageProcQueue> images;
|
2023-04-15 06:17:48 +00:00
|
|
|
BlockingQueue<cv::Mat> capture_data;
|
|
|
|
BlockingQueue<cv::Mat> encode_data;
|
2023-04-08 00:56:20 +00:00
|
|
|
ThreadPool pool;
|
|
|
|
ThreadPool encodepools;
|
2023-04-15 06:17:48 +00:00
|
|
|
ThreadPool pushpool;
|
2023-04-08 00:56:20 +00:00
|
|
|
volatile float H_ratio;
|
|
|
|
volatile float V_ratio;
|
2023-04-15 06:17:48 +00:00
|
|
|
std::queue<std::future<void>> results;
|
|
|
|
std::queue<std::future<std::vector<MemoryPtr>>> encodeimgs;
|
2023-04-08 00:56:20 +00:00
|
|
|
BlockingQueue<SCAN_STATUS> scanEvents;
|
|
|
|
std::mutex mtx;
|
|
|
|
HGImgProcParms m_procparams;
|
|
|
|
|
|
|
|
};
|