123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- #ifndef RVC_FACE_CAPTURER_H_
- #define RVC_FACE_CAPTURER_H_
- #pragma once
- #include "RvcFaceCapture.h"
- #include "SpBase.h"
- #include "SingleTimer.h"
- #include "../../Other/libvideoqueue/libvideoqueue.h"
- namespace RvcFaceCapture
- {
- typedef int (*tPfnInit)(IFaceCapCallback*, const char *szDevType);
- typedef int (*tPfnStartCapture)();
- typedef int (*tPfnFeedFrame)(RVC_ImageData*);
- typedef int (*tPfnStopCapture)();
- typedef int (*tPfnGetImage)(BITMAP*, RVC_FaceRect*);
- typedef int (*tPfnUnInit)();
- typedef int (*tPfnGetTrackData)(int nCameraID, RVC_TrackData*);
- class RvcFaceCapturer: IFaceCapCallback
- {
- friend UINT WINAPI FaceCaptureThread(LPVOID pM);
- friend class StopFaceCaptureTask;
- public:
- RvcFaceCapturer(LPCTSTR videoqueue0name,LPCTSTR videoqueue1name,int videowidth,int videoheight);
- virtual ~RvcFaceCapturer();
- ErrorCodeEnum Init(CEntityBase* pDetection);
- ErrorCodeEnum UnInit();
- virtual void OnFaceCapImgInfo(const char* msg);
- virtual void OnEchoCamera(int cameraID);
- virtual void OnFaceCapDone();
- // 获取当前是否有捕获任务
- bool GetHasCapTask() const {return m_hCaptureThread != NULL;}
- BOOL StartFaceCapture();
- BOOL StopFaceCapture();
- // 报摄像头故障
- void NotifyCameraFault();
- //上报抓拍耗时信息
- std::string formatTime(SYSTEMTIME time);
- CSimpleString generateAlarmJson(CSimpleString entityName, CSimpleString startTime, int cost);
- private:
- CEntityBase* m_pDetection;
- SingleTimer m_timer; //单定时器
-
- BITMAP m_bitmap0;
- BITMAP m_bitmap1;
- int m_nImageSize;
- volatile BOOL m_bCaptured;
- HINSTANCE m_hInstance;
- tPfnInit RvcFaceCapInit;
- tPfnStartCapture RvcFaceCapStartCapture;
- tPfnFeedFrame RvcFaceCapFeedFrame;
- tPfnStopCapture RvcFaceCapStopCapture;
- tPfnGetImage RvcFaceCapGetImage;
- tPfnUnInit RvcFaceCapUnInit;
- tPfnGetTrackData RvcFaceCapGetTrackData;
- HANDLE m_hCaptureThread;
- HANDLE m_hFaceRectThread;
- // 回显摄像头编号
- int m_nEchoCamera;
- // 当前回显提示消息
- CSimpleStringA m_strStatus;
- // 历史回显提示消息
- CSimpleStringA m_strLastStatus;
- // 历史回显摄像头编号
- int m_nLastEchoCamera;
- videoq_frame *videoframe0;
- videoq_frame *videoframe1;
- Clibvideoqueue *m_videoqueue0;
- Clibvideoqueue *m_videoqueue1;
- std::string m_VideoQueue0Name;
- std::string m_VideoQueue1Name;
- HANDLE m_hEventWait; // CreateEvent
- bool m_bThreadRun;
- // 是否保存每次的抓拍结果
- BOOL m_bSaveCaptureResult;
- // 抓拍结果路径
- CSimpleStringA m_CaptureResultPath;
- // 回显窗位置
- RECT m_EchoWinRect;
- private:
- BOOL GetVideoFrameByCameraID( int CameraID, videoq_frame* Video, int flags );
- void FSleep(int ms);
- UINT StartCapture();
- public:
- CSimpleStringA m_ActionID;
- protected:
- int m_nActiveTimeLimit;
- int m_nLeastActiveShowTime;
- int m_nSendInfoIntervalTime;
- bool IsTimeOut();
- bool m_bTimeout;
- int m_nSeconds;
-
- };
- struct StopFaceCaptureTask : public ITaskSp
- {
- RvcFaceCapturer *m_pCapture;
- StopFaceCaptureTask(RvcFaceCapturer *f) : m_pCapture(f) {}
- void Process();
- };
- }
- #endif
|