cameraplayer.h 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. #ifndef CAMERAPLAYER_H
  2. #define CAMERAPLAYER_H
  3. #include <QObject>
  4. #include <QTimer>
  5. #include "PlayM4.h"
  6. #include "HCNetSDK.h"
  7. #include "RingQueue.hpp"
  8. #include "PlayerGlobalInfo.h"
  9. #include "PlayerGLWidget.h"
  10. #include "PlayerWidget.h"
  11. class TransCode;
  12. /**
  13. * @brief 登录设备返回的设备信息
  14. *
  15. */
  16. struct CameraInfo
  17. {
  18. quint32 AChannelNum; /* 模拟通道个数,貌似就是最大模拟通道个数 */
  19. quint32 AChannelStart; /* 模拟起始通道号 */
  20. quint32 DChannelNum; /* 数字通道个数,貌似就是最大模拟通道个数 */
  21. quint32 DChannelStart; /* 数字起始通道号 */
  22. };
  23. class CameraPlayer : public QObject
  24. {
  25. Q_OBJECT
  26. public:
  27. explicit CameraPlayer(QObject *parent = nullptr);
  28. ~CameraPlayer();
  29. /* 设置摄像机信息 */
  30. bool initCamera(QString cameraIP, int cameraPort, QString cameraUser, QString cameraPwd);
  31. /* 设置实时预览 */
  32. bool realPlay(int channel);
  33. /* 关闭预览 */
  34. void stopRealPlay();
  35. /* 开始播放预览 */
  36. void startPlay();
  37. /* 设置播放窗口父指针 */
  38. void setPlayerParent(QWidget* playWnd);
  39. /* 设置播放窗口大小 */
  40. void setPlayWndSize(int width, int height);
  41. void setPlayWndSize(QSize size) { setPlayWndSize(size.width(), size.height()); }
  42. /* 获取播放窗口指针 */
  43. QWidget* getPlayWnd() { return m_player; }
  44. private slots:
  45. /* 更新一帧数据 */
  46. void do_updateFrame();
  47. private:
  48. /* 异常回调函数 */
  49. static void exceptionCallBack(unsigned int type, int userID,int handle,void* user);
  50. /* 实时预览回调函数 */
  51. static void realDataCallBack(LONG realHandle, DWORD dataType, BYTE *pBuffer,DWORD bufSize,void* user);
  52. /* 标准数据流的预览回调函数 */
  53. static void realDataCallBackStandard(LONG realHandle, DWORD dataType, BYTE *pBuffer,DWORD bufSize,DWORD user);
  54. /* 解码回调函数 */
  55. static void DecCallBack(int nPort,char * pBuf,int nSize,FRAME_INFO * pFrameInfo, void* nUser,int nReserved2);
  56. private:
  57. int m_sdkVersion = 3; /* SDK版本,这个版本自己定义的,为了区分不同的接口函数 */
  58. LONG m_loginID; /* 登陆返回的用户ID,后续对摄像头的操作都需要这个ID */
  59. CameraInfo m_camInfo; /* 登陆上的设备信息 */
  60. LONG m_realPlayHandle = -1; /* 实时预览句柄 */
  61. LONG m_playPort = -1; /* 全局的播放库port号 */
  62. int m_frameRate = 0; /* 帧率 */
  63. QTimer m_frameTimer; /* 定时器,用于更新一帧数据 */
  64. // RingQueue<Image_YUV420*> m_imageQueue; /* 环形队列,存放YUV数据 */
  65. // PlayerGLWidget* m_player = nullptr; /* 播放窗口 */
  66. RingQueue<Image_QImage*> m_imageQueue; /* 环形队列,存放QImage数据 */
  67. PlayerWidget* m_player = nullptr; /* 播放窗口 */
  68. TransCode* m_transCode = nullptr; /* 转码类 */
  69. };
  70. #endif // CAMERAPLAYER_H