123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- #ifndef CAMERAPLAYER_H
- #define CAMERAPLAYER_H
- #include <QObject>
- #include <QTimer>
- #include "PlayM4.h"
- #include "HCNetSDK.h"
- #include "RingQueue.hpp"
- #include "PlayerGlobalInfo.h"
- #include "PlayerGLWidget.h"
- /**
- * @brief 登录设备返回的设备信息
- *
- */
- struct CameraInfo
- {
- quint32 AChannelNum; /* 模拟通道个数,貌似就是最大模拟通道个数 */
- quint32 AChannelStart; /* 模拟起始通道号 */
- quint32 DChannelNum; /* 数字通道个数,貌似就是最大模拟通道个数 */
- quint32 DChannelStart; /* 数字起始通道号 */
- };
- class CameraPlayer : public QObject
- {
- Q_OBJECT
- public:
- explicit CameraPlayer(QObject *parent = nullptr);
- ~CameraPlayer();
- /* 设置摄像机信息 */
- bool initCamera(QString cameraIP, int cameraPort, QString cameraUser, QString cameraPwd);
- /* 设置实时预览 */
- bool realPlay(int channel);
- /* 关闭预览 */
- void stopRealPlay();
- /* 开始播放预览 */
- void startPlay();
- /* 设置播放窗口父指针 */
- void setPlayerParent(QWidget* playWnd);
- /* 设置播放窗口大小 */
- void setPlayWndSize(int width, int height);
- /* 获取播放窗口指针 */
- QWidget* getPlayWnd() { return m_player; }
- private slots:
- /* 更新一帧数据 */
- void do_updateFrame();
- private:
- /* 异常回调函数 */
- static void exceptionCallBack(unsigned int type, int userID,int handle,void* user);
- /* 实时预览回调函数 */
- static void realDataCallBack(LONG realHandle, DWORD dataType, BYTE *pBuffer,DWORD bufSize,void* user);
- /* 标准数据流的预览回调函数 */
- static void realDataCallBackStandard(LONG realHandle, DWORD dataType, BYTE *pBuffer,DWORD bufSize,DWORD user);
- /* 解码回调函数 */
- static void DecCallBack(int nPort,char * pBuf,int nSize,FRAME_INFO * pFrameInfo, void* nUser,int nReserved2);
- /* YV12转RGB888 */
- static void YV12ToRGB888(unsigned char *pYV12Data, unsigned char *pRGB24Data, int width, int height);
- /* YV12转YUV */
- static void YV12ToYUV420(unsigned char *pYV12Data, Image_YUV420& yuvData, int width, int height);
- private:
- int m_sdkVersion = 3; /* SDK版本,这个版本自己定义的,为了区分不同的接口函数 */
- LONG m_loginID; /* 登陆返回的用户ID,后续对摄像头的操作都需要这个ID */
- CameraInfo m_camInfo; /* 登陆上的设备信息 */
- LONG m_realPlayHandle = -1; /* 实时预览句柄 */
- LONG m_playPort = -1; /* 全局的播放库port号 */
- int m_frameRate = 0; /* 帧率 */
- RingQueue<Image_YUV420*>* m_yuvQueue = nullptr; /* 环形队列,存放YUV数据 */
- QTimer m_frameTimer; /* 定时器,用于更新一帧数据 */
- PlayerGLWidget* m_player = nullptr; /* 播放窗口 */
- };
- #endif // CAMERAPLAYER_H
|