/*++ Copyright (c) 2000 Microsoft Corporation Module Name: qcinner.h Abstract: Declaration of interfaces IInnerCallQualityControl and IInnerStreamQualityControl Author: Qianbo Huai (qhuai) 03/10/2000 --*/ #ifndef __QCINNER_H_ #define __QCINNER_H_ interface IInnerCallQualityControl; interface IInnerStreamQualityControl; // properties set on streams by a call or app typedef enum tagInnerStreamQualityProperty { InnerStreamQuality_StreamState, InnerStreamQuality_MaxBitrate, // read only InnerStreamQuality_CurrBitrate, // read only InnerStreamQuality_PrefMaxBitrate, // by app InnerStreamQuality_AdjMaxBitrate, // by call qc InnerStreamQuality_MinFrameInterval, // read only InnerStreamQuality_AvgFrameInterval, // read only InnerStreamQuality_PrefMinFrameInterval, // by app InnerStreamQuality_AdjMinFrameInterval // by call qc } InnerStreamQualityProperty; // events initiated from streams typedef enum tagQCEvent { QCEVENT_STREAM_STATE, } QCEvent; // stream states typedef enum tagQCStreamState { QCSTREAM_ACTIVE = 0x00000001, QCSTREAM_INACTIVE = 0x00000002, QCSTREAM_SILENT = 0x00000004, QCSTREAM_NOT_SILENT = 0x00000008 } QCStreamState; /*////////////////////////////////////////////////////////////////////////////// Description: interface designed for stream quality control to coordinate with call quality control ////*/ interface DECLSPEC_UUID("D405A342-38C0-11d3-A230-00105AA20660") DECLSPEC_NOVTABLE IInnerCallQualityControl : public IUnknown { STDMETHOD_(ULONG, InnerCallAddRef) (VOID) PURE; STDMETHOD_(ULONG, InnerCallRelease) (VOID) PURE; STDMETHOD (RegisterInnerStreamQC) ( IN IInnerStreamQualityControl *pIInnerStreamQC ) PURE; STDMETHOD (DeRegisterInnerStreamQC) ( IN IInnerStreamQualityControl *pIInnerStreamQC ) PURE; STDMETHOD (ProcessQCEvent) ( IN QCEvent event, IN DWORD dwParam ) PURE; }; #define IID_IInnerCallQualityControl (__uuidof(IInnerCallQualityControl)) /*////////////////////////////////////////////////////////////////////////////// Description: interface designed for call quality control to coordinate with stream quality control ////*/ interface DECLSPEC_UUID("c3f699ce-3bb1-11d3-a230-00105aa20660") DECLSPEC_NOVTABLE IInnerStreamQualityControl : public IUnknown { STDMETHOD (LinkInnerCallQC) ( IN IInnerCallQualityControl *pIInnerCallQC ) PURE; STDMETHOD (UnlinkInnerCallQC) ( IN BOOL fByStream ) PURE; STDMETHOD (GetRange) ( IN InnerStreamQualityProperty property, OUT LONG *plMin, OUT LONG *plMax, OUT LONG *plSteppingDelta, OUT LONG *plDefault, OUT TAPIControlFlags *plFlags ) PURE; STDMETHOD (Set) ( IN InnerStreamQualityProperty property, IN LONG lValue, IN TAPIControlFlags lFlags ) PURE; STDMETHOD (Get) ( IN InnerStreamQualityProperty property, OUT LONG *lValue, OUT TAPIControlFlags *plFlags ) PURE; STDMETHOD (TryLockStream)() PURE; STDMETHOD (UnlockStream)() PURE; STDMETHOD (IsAccessingQC)() PURE; }; #define IID_IInnerStreamQualityControl (__uuidof(IInnerStreamQualityControl)) #endif // __QCINNER_H_