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

46 lines
1.2 KiB
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;
2023-05-02 01:50:55 +00:00
class img_processor;
2023-04-08 00:56:20 +00:00
class ImageUsbHandler: public IImageHandler
{
2023-05-02 01:50:55 +00:00
img_processor* imgproc_;
2023-04-08 00:56:20 +00:00
public:
ImageUsbHandler(std::shared_ptr<UsbImageProcQueue> images = nullptr);
virtual ~ImageUsbHandler();
2023-04-08 00:56:20 +00:00
virtual void config_procparams(HGImgProcParms params);
2023-05-02 01:50:55 +00:00
virtual void add_image(void* data, int width, int height, int type,int scannnum,unsigned int fpgaversion) override;
2023-04-08 00:56:20 +00:00
virtual void add_scanevent(HGIntInfo status);
virtual bool done();
virtual void clear();
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;
BlockingQueue<cv::Mat> capture_data;
BlockingQueue<cv::Mat> encode_data;
2023-04-08 00:56:20 +00:00
ThreadPool pool;
ThreadPool encodepools;
ThreadPool pushpool;
2023-04-08 00:56:20 +00:00
volatile float H_ratio;
volatile float V_ratio;
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;
};