#pragma once #include "iimagehandler.h" #include "ThreadPool.h" #include "imemory.h" #include #include #include #include "BlockingQueue.h" class UsbImageProcQueue; class ImageUsbHandler: public IImageHandler { public: ImageUsbHandler(std::shared_ptr 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 images; std::queue capture_data; ThreadPool pool; ThreadPool encodepools; volatile float H_ratio; volatile float V_ratio; std::queue< std::future> results; BlockingQueue scanEvents; std::mutex mtx; HGImgProcParms m_procparams; };