137 lines
3.3 KiB
C
137 lines
3.3 KiB
C
|
/*++
|
||
|
|
||
|
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_
|