You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

57 lines
2.1 KiB
C

/******************************************************************************
Copyright(C):2015~2018 hzleaper
FileName:ImgProc.h
Author:zhikun wu
Email:zk.wu@hzleaper.com
Tools:vs2010 pc on company
Created:2015/03/26
History:26:3:2015 18:03
*******************************************************************************/
#include "iImgProc.h"
/*#include "ImageAlgorithm.h"*/
#include "QZkMutexMap.h"
#include "baseClass.h"
#include <QtCore/QAtomicInt>
#include <QtCore/QReadWriteLock>
#include "LoadAlgorithm.h"
#include "AlgorithmOption.h"
#include "LoadAlgorithm.h"
class CImgProc : public IImgProc
{
public:
CImgProc(IMGPROC_IN_PARAM* pParam);
virtual ~CImgProc(void);
int InitProc();
void FreeProc();
private:
virtual int IImageProcess(class IImageObject* pImgObj, class IDetectorEngine* pDE = NULL);
virtual class IAlgorithmOption* IGetAlgorithmOption(int nAlgorithm);
private:
static CAlgorithmOption* createAlgorithmOption(const int& k, void* pData);
static void releaseAlgorithm(const Qt::HANDLE& k, class IAlgorithm*& v, void* pData);
static void releaseAlgorithmOption(const int& k, CAlgorithmOption*& v, void* pData);
//class IImageProc* m_pImgProc;
public:
static TP_GLOBAL_DATA* s_pGlobalData;
const static char cs_strCfgName[];
private:
bool m_bIsInited;
QSqliteAlgorithm m_dbAlg;
//QZkMutexMap<Qt::HANDLE, class IAlgorithm*> m_algorithms;
QAtomicInt m_nAlgorithmsUsings;
QZkMutexMap<int, CAlgorithmOption*> m_algorithmOptions;
//class CLoadAlgorithm* m_pLibAlgorithm;
QZkMutexMap<QString, CLoadAlgorithm*> m_algorithmDlls;
CLoadAlgorithm* m_pDefAlgorithmDll;//nAlgorithm = 0; tpAlgorithm.dll
struct tagALGORITHM_API{
class IAlgorithm* pApi;
class CLoadAlgorithm* pDll;
};
QZkMutexMap<Qt::HANDLE, QMap<QString, tagALGORITHM_API*>> m_threadAlgorithms;
static CLoadAlgorithm* createAlgorithmDll(const QString& k, void* pData);
static void releaseAlgorithmApis(QMap<QString, tagALGORITHM_API*>& v, void* pData);
static void releaseAlgorithmDlls(CLoadAlgorithm*& v, void* pData);
};