CaptureServer.h
上传用户:liguizhu
上传日期:2015-11-01
资源大小:2422k
文件大小:3k
源码类别:

P2P编程

开发平台:

Visual C++

  1. /*
  2. *  Openmysee
  3. *
  4. *  This program is free software; you can redistribute it and/or modify
  5. *  it under the terms of the GNU General Public License as published by
  6. *  the Free Software Foundation; either version 2 of the License, or
  7. *  (at your option) any later version.
  8. *
  9. *  This program is distributed in the hope that it will be useful,
  10. *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12. *  GNU General Public License for more details.
  13. *
  14. *  You should have received a copy of the GNU General Public License
  15. *  along with this program; if not, write to the Free Software
  16. *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  17. *
  18. */
  19. #ifndef __CAPTURE_SERVER_H_
  20. #define __CAPTURE_SERVER_H_
  21. #include "TE_Socket.h"
  22. #include "LogMgr.h"
  23. #include "BufferMgr.h"
  24. #include "ConfigFile.h"
  25. #include "SPClient.h"
  26. #include "ZZLFileWriter.h"
  27. #include <queue>
  28. #define MAX_AVDELAY 1000000
  29. typedef struct _SAMPLEDATA
  30. {
  31. SampleHeader samplehr;
  32. BYTE *pData;
  33. } SAMPLEDATA;
  34. // { Declaration of ConfigData
  35. class ConfigData
  36. {
  37. public:
  38. ConfigData() : canLogin(FALSE) {};
  39. list<string> spAddress; // SP地址列表
  40. string chnlStr; // 频道名
  41. string savePath; // 保存路径
  42. int reconnectSecond; // 重新连接SP的间隔时间
  43. int userID; // 用户ID
  44. string password; // 用户密码
  45. BOOL canLogin; // 配置文件读取完毕,可以登录SP了
  46. };
  47. // Declaration of ConfigData }
  48. // { Declaration of CaptureServer
  49. class CaptureServer
  50. {
  51. public:
  52.     CaptureServer();
  53.     CaptureServer(const CaptureServer&);
  54. public:
  55.     virtual ~CaptureServer(); //must public
  56. BOOL Init();
  57. void Stop();
  58. BOOL SetFormatData(TVMEDIATYPESECTION&, BYTE*, BOOL isAudio);
  59. BOOL GetFormatData(TVMEDIATYPESECTION&, PBYTE&, BOOL isAudio);
  60. void SetAudioOrVideoOnly(BOOL isAudio);
  61. BOOL GetIsAudioOnly() {return (audioData != NULL && videoData == NULL);};
  62. BOOL PutSample(const SampleHeader& header, BYTE* pData);
  63. float GetSpeedInKBPS();
  64. LONGLONG GetTotalBytes() {return totalBytes;};
  65. vector<LogMgr*> logList; // 日志列表
  66. vector<BufferMgr*> bufferList; // 缓冲区列表
  67. vector<SPClient*> clientList; // SP的连接列表
  68. ConfigData cfgData; // 配置数据
  69. ZZLFileWriter m_zzlWriter; // 生成zzl文件
  70. HWND parentWindow; // 窗口的句柄,用于弹出MessageBox
  71. int passwordStatus; // if 2 initilize, if 1 right, if 0 wrong;
  72. // 判断是否结束
  73. BOOL m_bTransDataEnd;
  74. BOOL m_bIsOnlyOnePin;
  75. protected:
  76. BOOL LoadConfigFile();
  77. private:
  78. // 视音频数据信息
  79. TVMEDIATYPESECTION videoStruct;
  80. BYTE* videoData;
  81. TVMEDIATYPESECTION audioStruct;
  82. BYTE* audioData;
  83. // 计算速度
  84. LONGLONG  totalBytes;
  85. SYSTEMTIME  startTime;
  86. // 当前音视频Sample时间
  87. LONGLONG m_llAudioTime;
  88. LONGLONG m_llVideoTime;
  89. // 音视频Sample同步缓冲队列
  90. std::queue<SAMPLEDATA *> m_AudioSamQueue;
  91. std::queue<SAMPLEDATA *> m_VideoSamQueue;
  92. // Sample队列同步锁
  93. CRITICAL_SECTION m_SamQueueCSec;
  94. };
  95. // Declaration of CaptureServer }
  96. #endif