tx-gxx-linux/device/gxx-linux/scanner/imageusbhandler.h

39 lines
980 B
C
Raw Normal View History

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
{
public:
ImageUsbHandler(std::shared_ptr<UsbImageProcQueue> images = nullptr);
virtual void config_procparams(HGImgProcParms params);
virtual void add_image(void* data, int width, int height, int type,int scannnum);
virtual void add_scanevent(HGIntInfo status);
virtual bool done();
virtual void clear();
virtual void Set_ratio(u32 h_ratio,u32 v_ratio) override;
protected:
std::shared_ptr<UsbImageProcQueue> images;
std::queue<cv::Mat> capture_data;
ThreadPool pool;
ThreadPool encodepools;
volatile float H_ratio;
volatile float V_ratio;
std::queue< std::future<void>> results;
BlockingQueue<SCAN_STATUS> scanEvents;
std::mutex mtx;
HGImgProcParms m_procparams;
};