Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

286 lines
7.7 KiB

  1. /*++
  2. Copyright ) ( c) 1997 Microsoft Corporation
  3. Module Name:
  4. cctostrm.h
  5. Abstract:
  6. defines interfaces between the stream object and the cc module
  7. Author:
  8. Mu Han (muhan) 10-JUNE-1999
  9. --*/
  10. #ifndef __CCTOSTRM_H_
  11. #define __CCTOSTRM_H_
  12. typedef struct tag_H323MSPEndpointVersion
  13. {
  14. BYTE bH221CountryCode;
  15. BYTE bH221CountryExtension;
  16. WORD wH221MfrCode;
  17. BSTR *pProductIdentifier;
  18. BSTR *pVersionIdentifier;
  19. } H323MSPEndpointVersion;
  20. // {4ab1fe8c-1f97-11d3-a577-00c04f8ef6e3}
  21. DEFINE_GUID(IID_IH245ChannelControl,
  22. 0x4ab1fe8c, 0x1f97, 0x11d3, 0xa5, 0x77, 0x00, 0xc0, 0x4f, 0x8e, 0xf6, 0xe3);
  23. struct DECLSPEC_UUID("4ab1fe8c-1f97-11d3-a577-00c04f8ef6e3") DECLSPEC_NOVTABLE
  24. IH245ChannelControl : public IUnknown
  25. {
  26. STDMETHOD (SetFormat) (
  27. IN AM_MEDIA_TYPE *pMediaType
  28. ) PURE;
  29. STDMETHOD (GetNumberOfCapabilities) (
  30. OUT DWORD *pdwCount
  31. ) PURE;
  32. STDMETHOD (GetStreamCaps) (
  33. IN DWORD dwIndex,
  34. OUT AM_MEDIA_TYPE **ppMediaType,
  35. OUT TAPI_STREAM_CONFIG_CAPS *pStreamConfigCaps,
  36. OUT BOOL *pfEnabled
  37. ) PURE;
  38. STDMETHOD (Start) (BOOL fRequestedByApplication) PURE;
  39. STDMETHOD (Stop) (BOOL fRequestedByApplication) PURE;
  40. STDMETHOD (Pause) (
  41. IN BOOL fPause
  42. ) PURE;
  43. STDMETHOD (SetMaxBitrate) (
  44. IN DWORD dwMaxBitrate
  45. ) PURE;
  46. STDMETHOD (GetRemoteVersion) (
  47. OUT H323MSPEndpointVersion *pEndpointVersion
  48. ) PURE;
  49. STDMETHOD (SelectTerminal) (
  50. IN ITTerminal *pTerminal
  51. ) PURE;
  52. STDMETHOD (UnselectTerminal) (
  53. IN ITTerminal *pTerminal
  54. ) PURE;
  55. STDMETHOD (ReOrderCapabilities) (
  56. IN DWORD *pdwIndices,
  57. IN BOOL *pfEnabled,
  58. IN BOOL *pfPublicize,
  59. IN DWORD dwNumIndices
  60. ) PURE;
  61. };
  62. // {4ab1fe8d-1f97-11d3-a577-00c04f8ef6e3}
  63. DEFINE_GUID(IID_ISubstreamControl,
  64. 0x4ab1fe8d, 0x1f97, 0x11d3, 0xa5, 0x77, 0x00, 0xc0, 0x4f, 0x8e, 0xf6, 0xe3);
  65. struct DECLSPEC_UUID("4ab1fe8d-1f97-11d3-a577-00c04f8ef6e3") DECLSPEC_NOVTABLE
  66. ISubstreamControl : public IUnknown
  67. {
  68. STDMETHOD (SC_SetFormat) (
  69. IN AM_MEDIA_TYPE *pMediaType,
  70. IN DWORD dwFormatID,
  71. IN DWORD dwPayloadType
  72. ) PURE;
  73. STDMETHOD (SC_Start) (BOOL fRequestedByApplication) PURE;
  74. STDMETHOD (SC_Stop) (BOOL fRequestedByApplication) PURE;
  75. STDMETHOD (SC_Pause) (VOID) PURE;
  76. STDMETHOD (SC_SetBitrate) (
  77. IN DWORD dwBitsPerSecond
  78. ) PURE;
  79. STDMETHOD (SC_RemoteTemporalSpatialTradeoff) (
  80. IN USHORT uTSRemoteValue
  81. ) PURE;
  82. STDMETHOD (SC_CreateSubstream) (
  83. OUT ISubstreamControl *pSubStream
  84. ) PURE;
  85. STDMETHOD (SC_SetRemoteAddress) (
  86. IN OUT HANDLE * phRTPSession, // handle to the shared RTP session.
  87. IN PSOCKADDR_IN pRemoteMediaAddr,
  88. IN PSOCKADDR_IN pRemoteControlAddr
  89. ) PURE;
  90. STDMETHOD (SC_SetSource) (
  91. // indicates the low 8 bits of the local SSRC (if this is a send substream)
  92. // or the low 8 bits of the senders SSRC (if this is a receive substream)
  93. IN BYTE bSource
  94. ) PURE;
  95. STDMETHOD (SC_SelectLocalAddress) (
  96. IN OUT HANDLE * phRTPSession, // handle to the shared RTP session.
  97. IN PSOCKADDR_IN pLocalAddress, // local IP address (same as H.245)
  98. OUT PSOCKADDR_IN pLocalMediaAddress, // NULL if opening TX channel, else we want to know the local RTP receive address
  99. OUT PSOCKADDR_IN pLocalControlAddress // We want to know the local RTCP address
  100. ) PURE;
  101. STDMETHOD (SC_SetLocalReceiveAddress) ( // only called when the receive address is non-negotiable (e.g. multicast case)
  102. IN OUT HANDLE * phRTPSession, // handle to the shared RTP session.
  103. IN PSOCKADDR_IN pLocalMediaAddr, // local IP address (same as H.245)
  104. IN PSOCKADDR_IN pLocalControlAddress,
  105. IN PSOCKADDR_IN pRemoteControlAddress
  106. ) PURE;
  107. STDMETHOD (SC_SendDTMF) (
  108. IN LPWSTR pwstrDialChars
  109. ) PURE;
  110. STDMETHOD (SC_SetDESKey52) (
  111. IN BYTE *pKey
  112. ) PURE;
  113. STDMETHOD (SC_SelectTerminal) (
  114. IN ITTerminal *pTerminal
  115. ) PURE;
  116. STDMETHOD (SC_UnselectTerminal) (
  117. IN ITTerminal *pTerminal
  118. ) PURE;
  119. };
  120. // {4ab1fe8e-1f97-11d3-a577-00c04f8ef6e3}
  121. DEFINE_GUID(IID_IH245SubstreamControl,
  122. 0x4ab1fe8e, 0x1f97, 0x11d3, 0xa5, 0x77, 0x00, 0xc0, 0x4f, 0x8e, 0xf6, 0xe3);
  123. struct DECLSPEC_UUID("4ab1fe8e-1f97-11d3-a577-00c04f8ef6e3") DECLSPEC_NOVTABLE
  124. IH245SubstreamControl : public IUnknown
  125. {
  126. STDMETHOD (H245SC_BeginControlSession) (
  127. IN IH245ChannelControl *pIChannelControl
  128. ) PURE;
  129. STDMETHOD (H245SC_EndControlSession) (VOID) PURE;
  130. STDMETHOD (H245SC_GetNumberOfCapabilities) (
  131. OUT DWORD *pdwTemplateCount,
  132. OUT DWORD *pdwFormatCount
  133. ) PURE;
  134. STDMETHOD (H245SC_GetStreamCaps) (
  135. IN DWORD dwIndex,
  136. OUT const H245MediaCapability** pph245Capability,
  137. OUT AM_MEDIA_TYPE **ppMediaType,
  138. OUT TAPI_STREAM_CONFIG_CAPS *pStreamConfigCaps,
  139. OUT DWORD *pdwUniqueID,
  140. OUT UINT *puResourceBoundArrayEntries,
  141. OUT const FormatResourceBounds **ppResourceBoundArray
  142. ) PURE;
  143. STDMETHOD (H245SC_RefineStreamCap) (
  144. IN DWORD dwUniqueID,
  145. IN DWORD dwResourceBoundIndex,
  146. IN OUT H245MediaCapability* ph245Capability
  147. ) PURE;
  148. STDMETHOD (H245SC_SetIDBase) (
  149. IN UINT uNewBase
  150. ) PURE;
  151. STDMETHOD (H245SC_FindIDByRange) (
  152. IN AM_MEDIA_TYPE *pAMMediaType,
  153. OUT DWORD *pdwUniqueID
  154. ) PURE;
  155. STDMETHOD (H245SC_FindIDByMode) (
  156. IN H245_MODE_ELEMENT *pModeElement,
  157. OUT DWORD *pdwUniqueID
  158. ) PURE;
  159. STDMETHOD (H245SC_IntersectFormats) (
  160. IN const H245MediaCapability *pLocalCapability,
  161. IN DWORD dwUniqueID,
  162. IN const H245MediaCapability *pRemoteCapability,
  163. OUT const H245MediaCapability **pIntersectedCapability,
  164. OUT DWORD *pdwPayloadType
  165. ) PURE;
  166. STDMETHOD (H245SC_GetLocalFormat) (
  167. IN DWORD dwUniqueID,
  168. IN const H245MediaCapability *pIntersectedCapability,
  169. OUT AM_MEDIA_TYPE **ppAMMediaType
  170. ) PURE;
  171. STDMETHOD (H245SC_ReleaseNegotiatedCapability) (
  172. IN DWORD dwUniqueID,
  173. IN const H245MediaCapability *pIntersectedCapability
  174. ) PURE;
  175. };
  176. // {20A0D46A-2D95-11d3-89D1-00C04F8EC972}
  177. DEFINE_GUID(IID_IVidEncChannelControl,
  178. 0x20A0D46A, 0x2D95, 0x11d3, 0x89, 0xD1, 0x00, 0xc0, 0x4f, 0x8e, 0xC9, 0x72);
  179. struct DECLSPEC_UUID("20A0D46A-2D95-11d3-89D1-00C04F8EC972") DECLSPEC_NOVTABLE
  180. IVidEncChannelControl : IUnknown
  181. {
  182. STDMETHOD (VideoFastUpdatePicture)(void) PURE;
  183. STDMETHOD (VideoFastUpdateGOB)(
  184. IN DWORD dwFirstGOB,
  185. IN DWORD dwNumberOfGOBs
  186. ) PURE;
  187. STDMETHOD (VideoFastUpdateMB)(
  188. IN DWORD dwFirstGOB,
  189. IN DWORD dwFirstMB,
  190. IN DWORD dwNumberOfMBs
  191. ) PURE;
  192. STDMETHOD (VideoSendSyncEveryGOB)(
  193. IN BOOL fEnable
  194. ) PURE;
  195. STDMETHOD (VideoNotDecodedMBs)(
  196. IN DWORD dwFirstMB,
  197. IN DWORD dwNumberOfMBs,
  198. IN DWORD dwTemporalReference
  199. ) PURE;
  200. STDMETHOD (VideoEncTemporalSpatialTradeoff)(
  201. IN USHORT uTSValue
  202. ) PURE;
  203. };
  204. // {0276FFED-3590-11d3-89D1-00C04F8EC972}
  205. DEFINE_GUID(IID_IVidDecChannelControl,
  206. 0x276ffed, 0x3590, 0x11d3, 0x89, 0xd1, 0x0, 0xc0, 0x4f, 0x8e, 0xc9, 0x72);
  207. struct DECLSPEC_UUID("0276FFED-3590-11d3-89D1-00C04F8EC972") DECLSPEC_NOVTABLE
  208. IVidDecChannelControl : IUnknown
  209. {
  210. STDMETHOD (VideoFreezePicture)(void) PURE;
  211. STDMETHOD (VideoDecTemporalSpatialTradeoff)(
  212. IN USHORT uTSValue
  213. ) PURE;
  214. };
  215. #endif