h245cmd.h
上传用户:hnnddl
上传日期:2007-01-06
资源大小:3580k
文件大小:8k
源码类别:

IP电话/视频会议

开发平台:

WINDOWS

  1. /*
  2.  * $Revision: 1.5 $
  3.  * $Date: 1998/04/01 22:43:47 $
  4.  */
  5. ////////////////////////////////////////////////////////////////
  6. //               Copyright (c) 1996,97 Lucent Technologies    //
  7. //                       All Rights Reserved                  //
  8. //                                                            //
  9. //                       THIS IS UNPUBLISHED                  //
  10. //                       PROPRIETARY SOURCE                   //
  11. //                   CODE OF Lucent Technologies              //
  12. // AND elemedia   //
  13. //                                                            //
  14. //           The copyright notice above does not evidence any //
  15. //          actual or intended publication of such source code//
  16. ////////////////////////////////////////////////////////////////
  17. //
  18. /////////////////////////////////////////////////////////////////
  19. // File : h245cmd.h    //
  20. //                                                             //
  21. // Description: The classes for H.245 Commands.        //
  22. //    //
  23. //    //
  24. // 05_May_1997 Created    //
  25. // 20_Aug_1997 Added     //
  26. // 06_Feb_1998 Added VideoTemporalSpatialTradeoff in MiscCmd   //
  27. // 30_Mar_1998 Addition of Conference command    //
  28. //    //
  29. /////////////////////////////////////////////////////////////////
  30. #if (!defined(__H245CMD_H__))
  31. #define __H245CMD_H__
  32. #include "api/h245types.h"
  33. // List of H.245 Command messages we support.
  34. enum H245SigCommandType
  35. {
  36. CMDT_INVALID = 0,
  37. CMDT_NONSTD = 1,
  38. CMDT_FLOW_CONTROL = 5,
  39. CMDT_END_SESSION = 6,
  40. CMDT_MISCELLANEOUS = 7,
  41. CMDT_COMMUNICATION_MODE = 8,
  42. CMDT_CONF = 9
  43. };
  44. // List of sub types under CMD_MISCELLANEOUS
  45. enum H245SigMiscCommandType
  46. {
  47. MCMD_INVALID = 0,
  48. MCMD_MULTIPOINT = 3,
  49. MCMD_CANCEL_MULTIPOINT = 4,
  50. MCMD_VIDEO_FREEZE_PICTURE = 5,
  51. MCMD_VIDEO_FAST_UPDATE_PICTURE = 6,
  52. MCMD_VIDEO_TEMP_SPAT_TRADEOFF = 8
  53. };
  54. // List of end session types.
  55. enum H245SigEndSessionType
  56. {
  57. ESTY_INVALID = 0,
  58. ESTY_NONSTD = 1,
  59. ESTY_DISCONNECT = 2,
  60. ESTY_GSTN_OPTIONS
  61. };
  62. // List of conference command types.
  63. enum H245SigConfCommandType
  64. {
  65. CCMD_INVALID = 0,
  66. CCMD_BCAST_MY_LC = 1,
  67. CCMD_CANCEL_BCAST_MY_LC = 2,
  68. CCMD_MAKE_TERM_BCASTER = 3,
  69. CCMD_CALCEL_MAKE_TERM_BCASTER = 4,
  70. CCMD_SEND_THIS_SRC = 5,
  71. CCMD_CANCEL_SEND_THIS_SRC = 6,
  72. CCMD_DROP_CONF = 7
  73. };
  74. enum H245SigGSTNOption
  75. {
  76. GSTN_OPTION_INVALID = 0,
  77. GSTN_OPTION_TELEPHONY_MODE = 1,
  78. GSTN_OPTION_V8BIS = 2,
  79. GSTN_OPTION_V34DSVD = 3,
  80. GSTN_OPTION_V34DUPLEX_FAX = 4,
  81. GSTN_OPTION_V34H324 = 5 
  82. };
  83. enum H245SigFlowControlScopeType
  84. {
  85. FCST_INVALID = 0,
  86. FCST_LCNUM = 1,
  87. FCST_RES_ID= 2,
  88. FCST_WHOLE_MULTIPLEX = 3
  89. };
  90. enum H245FlowControlRestrictionType
  91. {
  92. FCRT_INVALID = 0,
  93. FCRT_MAX_BITRATE = 1, 
  94. FCRT_NORESTRICTION = 2
  95. };
  96. // Forward Declarations.
  97. class H245CommandMessage;
  98. class H245MiscellaneousCommand;
  99. class H245ConferenceCommand;
  100. class DLLEXPORT H245SigCommand
  101. {
  102. public:
  103. virtual ~H245SigCommand();
  104. // return the type of this message.
  105. // type is from H245SigCommandType.
  106. ProtReturnCode GetCommandType(int &type);
  107. // To allocate a new instance of the appropriate indication message.
  108. static ProtReturnCode Factory(H245SigCommand *&, int type);
  109. H245SigCommand& operator=(H245SigCommand&);
  110. public:
  111. // For Protocol internal use..
  112. virtual ProtReturnCode SetPriv(H245CommandMessage *msg) = 0;
  113. virtual H245CommandMessage *GetPriv() = 0;
  114. protected:
  115. // protected constructor. type is from H245SigCommandType.
  116. H245SigCommand(int type);
  117. H245CommandMessage *command;
  118. int  type;
  119. };
  120. class DLLEXPORT H245SigFlowControlCommand : 
  121. public H245SigCommand
  122. {
  123. public:
  124. H245SigFlowControlCommand();
  125. ~H245SigFlowControlCommand();
  126. // Methods to get/set FlowControl command
  127. // scope. scope is one of enum H245SigFlowControlScopeType
  128. ProtReturnCode SetScope(int scope);
  129. ProtReturnCode GetScope(int &scope);
  130. // used if scope == FCST_LCNUM 
  131. ProtReturnCode SetLCNum(int lc_num);
  132. ProtReturnCode GetLCNum(int &lc_num);
  133. // used if scope == FCST_RES_ID
  134. ProtReturnCode SetResID(int id);
  135. ProtReturnCode GetResID(int &id);
  136. // Methods to get/set FlowControl command
  137. // restriction. restriction is one of
  138. // enum H245SigFlowControlRestrictionType
  139. ProtReturnCode SetRestriction(int restriction);
  140. ProtReturnCode GetRestriction(int &restriction);
  141. // used if restriction == FCRT_MAX_BITRATE
  142. ProtReturnCode GetMaxBitRate(int &rate);
  143. ProtReturnCode SetMaxBitRate(int rate);
  144. public:
  145. // for internal use.
  146. ProtReturnCode SetPriv(H245CommandMessage *msg);
  147. H245CommandMessage *GetPriv();
  148. private:
  149. int scope;
  150. int restriction;
  151. int max_bit_rate;
  152. int lc_num;
  153. int res_id;
  154. };
  155. class DLLEXPORT H245SigEndSessionCommand :
  156. public H245SigCommand
  157. {
  158. public:
  159. H245SigEndSessionCommand();
  160. ~H245SigEndSessionCommand();
  161. // Methods to get/set type of endsession message.
  162. // type is from enum H245SigEndSessionType.
  163. ProtReturnCode GetType(int &type);
  164. ProtReturnCode SetType(int type);
  165. // used if type == ESTY_NONSTD
  166. ProtReturnCode SetNonStd(H245SigNonStdParam &nsp);
  167. ProtReturnCode GetNonStd(H245SigNonStdParam &nsp);
  168. // used if type == ESTY_GSTN_OPTIONS
  169. // option is from enum H245SigGSTNOption
  170. ProtReturnCode GetGSTNOption(int &option);
  171. ProtReturnCode SetGSTNOption(int option);
  172. public:
  173. // for internal use.
  174. ProtReturnCode SetPriv(H245CommandMessage *msg);
  175. H245CommandMessage *GetPriv();
  176. private:
  177. int es_type;
  178. int gstn_option;
  179. H245NonStandardParameter *nsp;
  180. };
  181. class DLLEXPORT H245SigMiscCommand :
  182. public H245SigCommand
  183. {
  184. public:
  185. H245SigMiscCommand();
  186. ~H245SigMiscCommand(); 
  187. ProtReturnCode SetLCNum(int lc_num);
  188. ProtReturnCode GetLCNum(int &lc_num);
  189. // Method to set/get misc command type.
  190. // type takes values from enum H245SigMiscCommandType
  191. ProtReturnCode SetType(int type);
  192. ProtReturnCode GetType(int &type);
  193. // Method to set/get value of videoTemporalSpatialTradeOff value
  194. // This method can be used only if the type of the misc command 
  195. // is MCMD_VIDEO_TEMP_SPAT_TRADEOFF 
  196. ProtReturnCode SetVideoTST(int vtst);
  197. ProtReturnCode GetVideoTST(int &vtst);
  198. public:
  199. // for internal use.
  200. ProtReturnCode SetPriv(H245CommandMessage *msg);
  201. H245CommandMessage *GetPriv();
  202. private:
  203. H245MiscellaneousCommand *mcmd;
  204. int lc_num;
  205. int misc_command_type;
  206. int vtst_value;
  207. };
  208. class DLLEXPORT H245SigNonStdCommand :
  209. public H245SigCommand
  210. {
  211. public:
  212. H245SigNonStdCommand();
  213. ~H245SigNonStdCommand();
  214. ProtReturnCode SetNonStd(H245SigNonStdParam &nsp);
  215. ProtReturnCode GetNonStd(H245SigNonStdParam &nsp);
  216. public:
  217. // for internal use.
  218. ProtReturnCode SetPriv(H245CommandMessage *msg);
  219. H245CommandMessage *GetPriv();
  220. private:
  221. H245NonStandardParameter *nsp;
  222. };
  223. class DLLEXPORT H245SigCommModeCommand :
  224. public H245SigCommand
  225. {
  226. public:
  227. H245SigCommModeCommand();
  228. ~H245SigCommModeCommand();
  229. ProtReturnCode GetNumEntries(int &count);
  230. ProtReturnCode GetEntries(
  231. H245SigCommModeTableEntry table[], int &count);
  232. ProtReturnCode AddEntry(H245SigCommModeTableEntry &entry);
  233. public:
  234. // for internal use.
  235. ProtReturnCode SetPriv(H245CommandMessage *msg);
  236. H245CommandMessage *GetPriv();
  237. private:
  238. void *cm_list;
  239. int list_length;
  240. };
  241. class DLLEXPORT H245SigConfCommand :
  242. public H245SigCommand
  243. {
  244. public:
  245. H245SigConfCommand();
  246. ~H245SigConfCommand();
  247. // Methods to get/set type of conf command.
  248. // type is from enum H245SigConfCommandType.
  249. ProtReturnCode GetType(int &type);
  250. ProtReturnCode SetType(int type);
  251. // For H245SigConfCommandTypes CCMD_BCAST_MY_LC  and 
  252. // CCMD_CANCEL_BCAST_MY_LC
  253. ProtReturnCode SetLCNum(int lc_num);
  254. ProtReturnCode GetLCNum(int &lc_num);
  255. // For H245SigConfCommandTypes CCMD_MAKE_TERM_BCASTER and
  256. // CCMD_SEND_THIS_SRC
  257. ProtReturnCode GetTerminalLabel(H245SigTerminalLabel &l);
  258. ProtReturnCode SetTerminalLabel(H245SigTerminalLabel &l);
  259. public:
  260. // for internal use.
  261. ProtReturnCode SetPriv(H245CommandMessage *msg);
  262. H245CommandMessage *GetPriv();
  263. private:
  264. int lc_num;
  265. H245SigTerminalLabel label;
  266. int conf_cmd_type;
  267. H245ConferenceCommand *conf_cmd;
  268. };
  269. #endif //__H245CMD_H__