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_
|