windows-nt/Source/XPSP1/NT/net/tapi/inc/tapiqc.h
2020-09-26 16:20:57 +08:00

206 lines
8.6 KiB
C++

#ifndef __tapiqc_h__
#define __tapiqc_h__
#if !defined(STREAM_INTERFACES_DEFINED)
/*****************************************************************************
* @doc INTERNAL CTAPISTRUCTENUM
*
* @enum TAPIControlFlags | The <t TAPIControlFlags> enum is used to qualify
* if a control property can be set manually and/or automatically.
*
* @emem TAPIControl_Flags_None | Specifies that a control property does not
* have any control flag. This is typical of read-only properties.
*
* @emem TAPIControl_Flags_Manual | Specifies that a control property can be
* modified manually.
*
* @emem TAPIControl_Flags_Auto | Specifies that a control property can be
* modified automatically.
****************************************************************************/
typedef enum tagTAPIControlFlags
{
TAPIControl_Flags_None = 0,
TAPIControl_Flags_Auto = 0x1,
TAPIControl_Flags_Manual = 0x2
} TAPIControlFlags;
#endif
#ifdef USE_NETWORK_STATISTICS
/*****************************************************************************
* @doc INTERNAL CNETSTATSSTRUCTENUM
*
* @struct CHANNELERRORS_S | The <t CHANNELERRORS_S> structure is used
* to set and retrieve the value of channel errors.
*
* @field DWORD | dwRandomBitErrorRate | Specifies the random bit error rate
* of the channel in multiples of 10-6.
*
* @field DWORD | dwBurstErrorDuration | Specifies the duration for short
* burst errors in ms.
*
* @field DWORD | dwBurstErrorMaxFrequency | Specifies the maximum
* frequency for short burst errors in Hz.
***************************************************************************/
typedef struct {
DWORD dwRandomBitErrorRate;
DWORD dwBurstErrorDuration;
DWORD dwBurstErrorMaxFrequency;
} CHANNELERRORS_S;
/*****************************************************************************
* @doc INTERNAL CNETSTATSSTRUCTENUM
*
* @struct KSCHANNELERRORS_LIST_S | The <t KSCHANNELERRORS_LIST_S> structure is used
* to set and retrieve the value of channel errors.
*
* @field KSPROPERTY_DESCRIPTION | PropertyDescription | Specifies access
* flags (KSPROPERTY_TYPE_GET and KSPROPERTY_TYPE_SET), the inclusive
* size of the entire values information, the property value type
* information, and the number of members lists that would typically
* follow the structure.
*
* @field KSPROPERTY_MEMBERSHEADER | MembersHeader | Used to provide
* information on a property member header.
*
* @field KSPROPERTY_STEPPING_LONG | SteppingRandomBitErrorRate | Used to
* specify stepping values for random bit error rate.
*
* @field LONG | DefaultRandomBitErrorRate | Used to specify default
* values for random bit error rate.
*
* @field KSPROPERTY_STEPPING_LONG | SteppingBurstErrorDuration | Used to
* specify stepping values for short burst errors.
*
* @field LONG | DefaultBurstErrorDuration | Used to specify default values
* for short burst errors.
*
* @field KSPROPERTY_STEPPING_LONG | SteppingBurstErrorMaxFrequency | Used
* to specify stepping values for the maximum frequency for short burst errors.
*
* @field LONG | DefaultBurstErrorMaxFrequency | Used to specify default
* values for the maximum frequency for short burst errors.
***************************************************************************/
typedef struct {
KSPROPERTY_DESCRIPTION PropertyDescription;
KSPROPERTY_MEMBERSHEADER MembersHeader;
union {
KSPROPERTY_STEPPING_LONG SteppingRandomBitErrorRate;
LONG DefaultRandomBitErrorRate;
};
union {
KSPROPERTY_STEPPING_LONG SteppingBurstErrorDuration;
LONG DefaultBurstErrorDuration;
};
union {
KSPROPERTY_STEPPING_LONG SteppingBurstErrorMaxFrequency;
LONG DefaultBurstErrorMaxFrequency;
};
} KSCHANNELERRORS_LIST_S;
// Network statistics interface
interface DECLSPEC_UUID("e4b248f9-fbb0-4056-a0e6-316b8580b957") INetworkStats : public IUnknown
{
public:
virtual STDMETHODIMP SetChannelErrors(IN CHANNELERRORS_S *pChannelErrors, IN DWORD dwLayerId) PURE;
virtual STDMETHODIMP GetChannelErrors(OUT CHANNELERRORS_S *pChannelErrors, IN WORD dwLayerId) PURE;
virtual STDMETHODIMP GetChannelErrorsRange(OUT CHANNELERRORS_S *pMin, OUT CHANNELERRORS_S *pMax, OUT CHANNELERRORS_S *pSteppingDelta, OUT CHANNELERRORS_S *pDefault, IN DWORD dwLayerId) PURE;
virtual STDMETHODIMP SetPacketLossRate(IN DWORD dwPacketLossRate, IN DWORD dwLayerId) PURE;
virtual STDMETHODIMP GetPacketLossRate(OUT LPDWORD pdwPacketLossRate, IN DWORD dwLayerId) PURE;
virtual STDMETHODIMP GetPacketLossRateRange(OUT LPDWORD pdwMin, OUT LPDWORD pdwMax, OUT LPDWORD pdwSteppingDelta, OUT LPDWORD pdwDefault, IN DWORD dwLayerId) PURE;
};
// Our filter's default values
// @todo For accelerators, don't use those values
#endif
/*****************************************************************************
* @doc INTERNAL CFPSCSTRUCTENUM
*
* @enum FrameRateControlProperty | The <t FrameRateControlProperty> enum is used
* to identify specific frame rate control settings.
*
* @emem FrameRateControl_Maximum | Specifies the maximum frame rate not
* to be exceeded.
*
* @emem FrameRateControl_Current | Specifies the current frame rate.
****************************************************************************/
typedef enum tagFrameRateControlProperty
{
FrameRateControl_Maximum,
FrameRateControl_Current // Read-Only
} FrameRateControlProperty;
// Frame rate control interface (pin interface)
interface DECLSPEC_UUID("c2bb17e3-ee63-4d54-821b-1c8cb5287087") IFrameRateControl : public IUnknown
{
public:
virtual STDMETHODIMP GetRange(IN FrameRateControlProperty Property, OUT long *plMin, OUT long *plMax, OUT long *plSteppingDelta, OUT long *plDefault, OUT TAPIControlFlags *plCapsFlags) PURE;
virtual STDMETHODIMP Set(IN FrameRateControlProperty Property, IN long lValue, IN TAPIControlFlags lFlags) PURE;
virtual STDMETHODIMP Get(IN FrameRateControlProperty Property, OUT long *plValue, OUT TAPIControlFlags *plFlags) PURE;
};
#ifdef USE_CPU_CONTROL
/*****************************************************************************
* @doc INTERNAL CCPUCSTRUCTENUM
*
* @enum CPUControlProperty | The <t CPUControlProperty> enum is used
* to identify specific CPU control settings.
*
* @emem CPUControl_MaxCPULoad | Specifies the maximum CPU load not to be
* exceeded.
*
* @emem CPUControl_CurrentCPULoad | Specifies the current CPU load.
*
* @emem CPUControl_MaxProcessingTime | Specifies the maximum processing
* time not to be exceeded.
*
* @emem CPUControl_CurrentProcessingTime | Specifies the current processing
* time.
****************************************************************************/
typedef enum tagCPUControlProperty
{
CPUControl_MaxCPULoad,
CPUControl_CurrentCPULoad, // Read-Only
CPUControl_MaxProcessingTime,
CPUControl_CurrentProcessingTime // Read-Only
} CPUControlProperty;
// CPU control interface (pin interface)
interface DECLSPEC_UUID("3808c526-de63-48da-a0c6-7792dcbbff82") ICPUControl : public IUnknown
{
public:
virtual STDMETHODIMP GetRange(IN CPUControlProperty Property, OUT long *plMin, OUT long *plMax, OUT long *plSteppingDelta, OUT long *plDefault, OUT TAPIControlFlags *plCapsFlags) PURE;
virtual STDMETHODIMP Set(IN CPUControlProperty Property, IN long lValue, IN TAPIControlFlags lFlags) PURE;
virtual STDMETHODIMP Get(IN CPUControlProperty Property, OUT long *plValue, OUT TAPIControlFlags *plFlags) PURE;
};
#endif
/*****************************************************************************
* @doc INTERNAL CBPSCSTRUCTENUM
*
* @enum BitrateControlProperty | The <t BitrateControlProperty> enum is used
* to identify specific bitrate control settings.
*
* @emem BitrateControl_Maximum | Specifies the maximum bitrate not to be
* exceeded.
*
* @emem BitrateControl_Current | Specifies the current bitrate.
****************************************************************************/
typedef enum tagBitrateControlProperty
{
BitrateControl_Maximum,
BitrateControl_Current // Read-Only
} BitrateControlProperty;
// Bitrate control interface (pin interface)
interface DECLSPEC_UUID("46a1a0d7-261e-4839-80e7-8a6333466cc7") IBitrateControl : public IUnknown
{
public:
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;
virtual STDMETHODIMP Set(IN BitrateControlProperty Property, IN long lValue, IN TAPIControlFlags lFlags, IN DWORD dwLayerId) PURE;
virtual STDMETHODIMP Get(IN BitrateControlProperty Property, OUT long *plValue, OUT TAPIControlFlags *plFlags, IN DWORD dwLayerId) PURE;
};
#endif // __tapiqc_h__