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.

205 lines
8.6 KiB

  1. #ifndef __tapiqc_h__
  2. #define __tapiqc_h__
  3. #if !defined(STREAM_INTERFACES_DEFINED)
  4. /*****************************************************************************
  5. * @doc INTERNAL CTAPISTRUCTENUM
  6. *
  7. * @enum TAPIControlFlags | The <t TAPIControlFlags> enum is used to qualify
  8. * if a control property can be set manually and/or automatically.
  9. *
  10. * @emem TAPIControl_Flags_None | Specifies that a control property does not
  11. * have any control flag. This is typical of read-only properties.
  12. *
  13. * @emem TAPIControl_Flags_Manual | Specifies that a control property can be
  14. * modified manually.
  15. *
  16. * @emem TAPIControl_Flags_Auto | Specifies that a control property can be
  17. * modified automatically.
  18. ****************************************************************************/
  19. typedef enum tagTAPIControlFlags
  20. {
  21. TAPIControl_Flags_None = 0,
  22. TAPIControl_Flags_Auto = 0x1,
  23. TAPIControl_Flags_Manual = 0x2
  24. } TAPIControlFlags;
  25. #endif
  26. #ifdef USE_NETWORK_STATISTICS
  27. /*****************************************************************************
  28. * @doc INTERNAL CNETSTATSSTRUCTENUM
  29. *
  30. * @struct CHANNELERRORS_S | The <t CHANNELERRORS_S> structure is used
  31. * to set and retrieve the value of channel errors.
  32. *
  33. * @field DWORD | dwRandomBitErrorRate | Specifies the random bit error rate
  34. * of the channel in multiples of 10-6.
  35. *
  36. * @field DWORD | dwBurstErrorDuration | Specifies the duration for short
  37. * burst errors in ms.
  38. *
  39. * @field DWORD | dwBurstErrorMaxFrequency | Specifies the maximum
  40. * frequency for short burst errors in Hz.
  41. ***************************************************************************/
  42. typedef struct {
  43. DWORD dwRandomBitErrorRate;
  44. DWORD dwBurstErrorDuration;
  45. DWORD dwBurstErrorMaxFrequency;
  46. } CHANNELERRORS_S;
  47. /*****************************************************************************
  48. * @doc INTERNAL CNETSTATSSTRUCTENUM
  49. *
  50. * @struct KSCHANNELERRORS_LIST_S | The <t KSCHANNELERRORS_LIST_S> structure is used
  51. * to set and retrieve the value of channel errors.
  52. *
  53. * @field KSPROPERTY_DESCRIPTION | PropertyDescription | Specifies access
  54. * flags (KSPROPERTY_TYPE_GET and KSPROPERTY_TYPE_SET), the inclusive
  55. * size of the entire values information, the property value type
  56. * information, and the number of members lists that would typically
  57. * follow the structure.
  58. *
  59. * @field KSPROPERTY_MEMBERSHEADER | MembersHeader | Used to provide
  60. * information on a property member header.
  61. *
  62. * @field KSPROPERTY_STEPPING_LONG | SteppingRandomBitErrorRate | Used to
  63. * specify stepping values for random bit error rate.
  64. *
  65. * @field LONG | DefaultRandomBitErrorRate | Used to specify default
  66. * values for random bit error rate.
  67. *
  68. * @field KSPROPERTY_STEPPING_LONG | SteppingBurstErrorDuration | Used to
  69. * specify stepping values for short burst errors.
  70. *
  71. * @field LONG | DefaultBurstErrorDuration | Used to specify default values
  72. * for short burst errors.
  73. *
  74. * @field KSPROPERTY_STEPPING_LONG | SteppingBurstErrorMaxFrequency | Used
  75. * to specify stepping values for the maximum frequency for short burst errors.
  76. *
  77. * @field LONG | DefaultBurstErrorMaxFrequency | Used to specify default
  78. * values for the maximum frequency for short burst errors.
  79. ***************************************************************************/
  80. typedef struct {
  81. KSPROPERTY_DESCRIPTION PropertyDescription;
  82. KSPROPERTY_MEMBERSHEADER MembersHeader;
  83. union {
  84. KSPROPERTY_STEPPING_LONG SteppingRandomBitErrorRate;
  85. LONG DefaultRandomBitErrorRate;
  86. };
  87. union {
  88. KSPROPERTY_STEPPING_LONG SteppingBurstErrorDuration;
  89. LONG DefaultBurstErrorDuration;
  90. };
  91. union {
  92. KSPROPERTY_STEPPING_LONG SteppingBurstErrorMaxFrequency;
  93. LONG DefaultBurstErrorMaxFrequency;
  94. };
  95. } KSCHANNELERRORS_LIST_S;
  96. // Network statistics interface
  97. interface DECLSPEC_UUID("e4b248f9-fbb0-4056-a0e6-316b8580b957") INetworkStats : public IUnknown
  98. {
  99. public:
  100. virtual STDMETHODIMP SetChannelErrors(IN CHANNELERRORS_S *pChannelErrors, IN DWORD dwLayerId) PURE;
  101. virtual STDMETHODIMP GetChannelErrors(OUT CHANNELERRORS_S *pChannelErrors, IN WORD dwLayerId) PURE;
  102. virtual STDMETHODIMP GetChannelErrorsRange(OUT CHANNELERRORS_S *pMin, OUT CHANNELERRORS_S *pMax, OUT CHANNELERRORS_S *pSteppingDelta, OUT CHANNELERRORS_S *pDefault, IN DWORD dwLayerId) PURE;
  103. virtual STDMETHODIMP SetPacketLossRate(IN DWORD dwPacketLossRate, IN DWORD dwLayerId) PURE;
  104. virtual STDMETHODIMP GetPacketLossRate(OUT LPDWORD pdwPacketLossRate, IN DWORD dwLayerId) PURE;
  105. virtual STDMETHODIMP GetPacketLossRateRange(OUT LPDWORD pdwMin, OUT LPDWORD pdwMax, OUT LPDWORD pdwSteppingDelta, OUT LPDWORD pdwDefault, IN DWORD dwLayerId) PURE;
  106. };
  107. // Our filter's default values
  108. // @todo For accelerators, don't use those values
  109. #endif
  110. /*****************************************************************************
  111. * @doc INTERNAL CFPSCSTRUCTENUM
  112. *
  113. * @enum FrameRateControlProperty | The <t FrameRateControlProperty> enum is used
  114. * to identify specific frame rate control settings.
  115. *
  116. * @emem FrameRateControl_Maximum | Specifies the maximum frame rate not
  117. * to be exceeded.
  118. *
  119. * @emem FrameRateControl_Current | Specifies the current frame rate.
  120. ****************************************************************************/
  121. typedef enum tagFrameRateControlProperty
  122. {
  123. FrameRateControl_Maximum,
  124. FrameRateControl_Current // Read-Only
  125. } FrameRateControlProperty;
  126. // Frame rate control interface (pin interface)
  127. interface DECLSPEC_UUID("c2bb17e3-ee63-4d54-821b-1c8cb5287087") IFrameRateControl : public IUnknown
  128. {
  129. public:
  130. virtual STDMETHODIMP GetRange(IN FrameRateControlProperty Property, OUT long *plMin, OUT long *plMax, OUT long *plSteppingDelta, OUT long *plDefault, OUT TAPIControlFlags *plCapsFlags) PURE;
  131. virtual STDMETHODIMP Set(IN FrameRateControlProperty Property, IN long lValue, IN TAPIControlFlags lFlags) PURE;
  132. virtual STDMETHODIMP Get(IN FrameRateControlProperty Property, OUT long *plValue, OUT TAPIControlFlags *plFlags) PURE;
  133. };
  134. #ifdef USE_CPU_CONTROL
  135. /*****************************************************************************
  136. * @doc INTERNAL CCPUCSTRUCTENUM
  137. *
  138. * @enum CPUControlProperty | The <t CPUControlProperty> enum is used
  139. * to identify specific CPU control settings.
  140. *
  141. * @emem CPUControl_MaxCPULoad | Specifies the maximum CPU load not to be
  142. * exceeded.
  143. *
  144. * @emem CPUControl_CurrentCPULoad | Specifies the current CPU load.
  145. *
  146. * @emem CPUControl_MaxProcessingTime | Specifies the maximum processing
  147. * time not to be exceeded.
  148. *
  149. * @emem CPUControl_CurrentProcessingTime | Specifies the current processing
  150. * time.
  151. ****************************************************************************/
  152. typedef enum tagCPUControlProperty
  153. {
  154. CPUControl_MaxCPULoad,
  155. CPUControl_CurrentCPULoad, // Read-Only
  156. CPUControl_MaxProcessingTime,
  157. CPUControl_CurrentProcessingTime // Read-Only
  158. } CPUControlProperty;
  159. // CPU control interface (pin interface)
  160. interface DECLSPEC_UUID("3808c526-de63-48da-a0c6-7792dcbbff82") ICPUControl : public IUnknown
  161. {
  162. public:
  163. virtual STDMETHODIMP GetRange(IN CPUControlProperty Property, OUT long *plMin, OUT long *plMax, OUT long *plSteppingDelta, OUT long *plDefault, OUT TAPIControlFlags *plCapsFlags) PURE;
  164. virtual STDMETHODIMP Set(IN CPUControlProperty Property, IN long lValue, IN TAPIControlFlags lFlags) PURE;
  165. virtual STDMETHODIMP Get(IN CPUControlProperty Property, OUT long *plValue, OUT TAPIControlFlags *plFlags) PURE;
  166. };
  167. #endif
  168. /*****************************************************************************
  169. * @doc INTERNAL CBPSCSTRUCTENUM
  170. *
  171. * @enum BitrateControlProperty | The <t BitrateControlProperty> enum is used
  172. * to identify specific bitrate control settings.
  173. *
  174. * @emem BitrateControl_Maximum | Specifies the maximum bitrate not to be
  175. * exceeded.
  176. *
  177. * @emem BitrateControl_Current | Specifies the current bitrate.
  178. ****************************************************************************/
  179. typedef enum tagBitrateControlProperty
  180. {
  181. BitrateControl_Maximum,
  182. BitrateControl_Current // Read-Only
  183. } BitrateControlProperty;
  184. // Bitrate control interface (pin interface)
  185. interface DECLSPEC_UUID("46a1a0d7-261e-4839-80e7-8a6333466cc7") IBitrateControl : public IUnknown
  186. {
  187. public:
  188. virtual STDMETHODIMP GetRange(IN BitrateControlProperty Property, OUT long *plMin, OUT long *plMax, OUT long *plSteppingDelta, OUT long *plDefault, OUT TAPIControlFlags *plCapsFlags, IN DWORD dwLayerId) PURE;
  189. virtual STDMETHODIMP Set(IN BitrateControlProperty Property, IN long lValue, IN TAPIControlFlags lFlags, IN DWORD dwLayerId) PURE;
  190. virtual STDMETHODIMP Get(IN BitrateControlProperty Property, OUT long *plValue, OUT TAPIControlFlags *plFlags, IN DWORD dwLayerId) PURE;
  191. };
  192. #endif // __tapiqc_h__