cameraplayer.h 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. #ifndef CAMERAPLAYER_H
  2. #define CAMERAPLAYER_H
  3. #include <QObject>
  4. #include "HCNetSDK.h"
  5. #include "PlayM4.h"
  6. #include "RingQueue.hpp"
  7. #include "PlayerGlobalInfo.h"
  8. /**
  9. * @brief 登录设备返回的设备信息
  10. *
  11. */
  12. struct CameraInfo
  13. {
  14. quint32 AChannelNum; /* 模拟通道个数,貌似就是最大模拟通道个数 */
  15. quint32 AChannelStart; /* 模拟起始通道号 */
  16. quint32 DChannelNum; /* 数字通道个数,貌似就是最大模拟通道个数 */
  17. quint32 DChannelStart; /* 数字起始通道号 */
  18. };
  19. class CameraPlayer : QObject
  20. {
  21. Q_OBJECT
  22. public:
  23. explicit CameraPlayer(QObject *parent = nullptr);
  24. ~CameraPlayer();
  25. /* 设置摄像机信息 */
  26. bool initCamera(QString cameraIP, int cameraPort, QString cameraUser, QString cameraPwd);
  27. /* 设置实时预览 */
  28. bool realPlay(int channel, QWidget* playWindow = nullptr);
  29. /* 关闭预览 */
  30. void stopRealPlay();
  31. private:
  32. /* 异常回调函数 */
  33. static void exceptionCallBack(unsigned int type, int userID,int handle,void* user);
  34. /* 实时预览回调函数 */
  35. static void realDataCallBack(LONG realHandle, DWORD dataType, BYTE *pBuffer,DWORD bufSize,void* user);
  36. /* 标准数据流的预览回调函数 */
  37. static void realDataCallBackStandard(LONG realHandle, DWORD dataType, BYTE *pBuffer,DWORD bufSize,DWORD user);
  38. /* 解码回调函数 */
  39. static void DecCallBack(int nPort,char * pBuf,int nSize,FRAME_INFO * pFrameInfo, void* nUser,int nReserved2);
  40. /* YV12转RGB888 */
  41. static void YV12ToRGB888(unsigned char *pYV12Data, unsigned char *pRGB24Data, int width, int height);
  42. /* YV12转YUV */
  43. static void YV12ToYUV420(unsigned char *pYV12Data, Image_YUV420& yuvData, int width, int height);
  44. private:
  45. int m_sdkVersion = 3; /* SDK版本,这个版本自己定义的,为了区分不同的接口函数 */
  46. LONG m_loginID; /* 登陆返回的用户ID,后续对摄像头的操作都需要这个ID */
  47. CameraInfo m_camInfo; /* 登陆上的设备信息 */
  48. LONG m_realPlayHandle = -1; /* 实时预览句柄 */
  49. LONG m_playPort = -1; /* 全局的播放库port号 */
  50. int m_frameRate = 0; /* 帧率 */
  51. RingQueue<Image_YUV420*>* m_yuvQueue = nullptr; /* 环形队列,存放YUV数据 */
  52. };
  53. #endif // CAMERAPLAYER_H