windows-nt/Source/XPSP1/NT/enduser/netmeeting/av/h/irtp.idl
2020-09-26 16:20:57 +08:00

191 lines
4.8 KiB
Plaintext

// RRCM.idl : IDL source for rrcm.dll
//
// This file will be processed by the MIDL tool to
// produce the type library (mp.tlb) and marshalling code.
import "oaidl.idl";
import "ocidl.idl";
cpp_quote("//")
cpp_quote("// The following declarations within the 'if 0' block are dummy typedefs used to make")
cpp_quote("// the idl file build. The actual definitions are contained in WINSOCK2.H")
cpp_quote("//")
cpp_quote("#if 0")
#ifndef WSAOVERLAPPED
typedef struct _OVERLAPPED {
DWORD Internal;
DWORD InternalHigh;
DWORD Offset;
DWORD OffsetHigh;
HANDLE hEvent;
} WSAOVERLAPPED, *LPWSAOVERLAPPED;
#endif
typedef
void
(__stdcall * LPWSAOVERLAPPED_COMPLETION_ROUTINE)(
DWORD dwError,
DWORD cbTransferred,
WSAOVERLAPPED *lpOverlapped,
DWORD dwFlags
);
typedef struct _WSABUF {
ULONG len; /* the length of the buffer */
char * buf; /* the pointer to the buffer */
} WSABUF, * LPWSABUF;
// from qos.h
typedef ULONG SERVICETYPE;
typedef struct _flowspec
{
ULONG TokenRate; /* In Bytes/sec */
ULONG TokenBucketSize; /* In Bytes */
ULONG PeakBandwidth; /* In Bytes/sec */
ULONG Latency; /* In microseconds */
ULONG DelayVariation; /* In microseconds */
SERVICETYPE ServiceType;
ULONG MaxSduSize; /* In Bytes */
ULONG MinimumPolicedSize; /* In Bytes */
} FLOWSPEC, *PFLOWSPEC, * LPFLOWSPEC;
cpp_quote ("#endif")
typedef struct {
UINT ssrc; // RTP stream source id
UINT payload; // RTP payload
UINT packetsSent; // num packets sent by source
UINT packetsDelivered; // num packets that reached receiver
UINT packetsLost; // num packets that receiver knows it dropped
UINT jitter; // inter-packet jitter
UINT packetErrors; // local Winsock errors
UINT bytesSent; // num bytes sent by source
UINT bytesDelivered; // num bytest that reached (valid only in recv side)
} RTP_STATS;
typedef BOOL (* PRTPRECVCALLBACK)(HANDLE_PTR dwCallback, WSABUF *pNetBuf);
interface IRTPRecv;
[
uuid(26FCF000-61D1-11D1-AA66-00C04FC9B202),
local,
helpstring("IRTPControl Interface"),
pointer_default(unique)
]
interface IRTPSession : IUnknown
{
HRESULT SetLocalAddress([in] BYTE *sockaddr, [in]UINT addrlen);
HRESULT GetLocalAddress([out] const BYTE **sockaddr, [out] UINT *paddrlen);
HRESULT SetRemoteRTPAddress([in] BYTE *rtpaddr, [in] UINT addrlen);
HRESULT SetRemoteRTCPAddress([in] BYTE *rtcpaddr, [in] UINT addrlen);
HRESULT GetRemoteRTPAddress([out] const BYTE **sockaddr, [out] UINT *paddrlen);
HRESULT GetRemoteRTCPAddress([out] const BYTE **sockaddr, [out] UINT *paddrlen);
HRESULT SetSendFlowspec([in] FLOWSPEC *pFlowspec);
HRESULT SetRecvFlowspec([in] FLOWSPEC *pFlowspec);
HRESULT CreateRecvRTPStream([in]DWORD ssrc, [out] IRTPRecv **ppIRTPRecv);
};
[
uuid(44F9B073-641C-11D1-AA67-00C04FC9B202),
local,
helpstring("IRTPSend Interface"),
pointer_default(unique)
]
interface IRTPSend : IUnknown
{
HRESULT Send(WSABUF *pWsabufs,UINT nWsabufs,WSAOVERLAPPED *pOverlapped,LPWSAOVERLAPPED_COMPLETION_ROUTINE pWSAPC );
HRESULT GetSendStats([out] RTP_STATS *pRTPStats);
};
[
uuid(fcedc784-afdc-11d1-aa91-00c04fc9b202),
local,
helpstring("IRTPRecvSink Interface"),
pointer_default(unique)
]
interface IRTPRecvSink : IUnknown
{
BOOL ReceivePacket(WSABUF *pPacket);
};
[
uuid(76c7f79c-afdc-11d1-aa91-00c04fc9b202),
local,
helpstring("IRTPRecv Interface"),
pointer_default(unique)
]
interface IRTPRecv : IUnknown
{
HRESULT SetRecvNotification([in] PRTPRECVCALLBACK pIRTPRecvSink, [in] HANDLE_PTR dwCB, [in] UINT nBufs);
HRESULT CancelRecvNotification();
HRESULT FreePacket([in] WSABUF *pPacket);
HRESULT GetRecvStats([out] RTP_STATS *pRTPStats);
};
/*
[
uuid(2fe04e9c-8917-11d1-aa78-00c04fc9b202),
version(1.0)
]
interface IRTPSink: IUnknown
{
HRESULT AddSession(IRTPSession *pSess);
HRESULT RemoveSession(IRTPSession *pSess);
HRESULT SetMediaStream(IRTPMediaStream *pStream);
};
*/
/* OpenSession flags */
enum {
SESSIONF_RECV = 0x1,
SESSIONF_SEND = 0x2,
SESSIONF_MULTICAST = 0x4,
SESSIONF_AUDIO = 0x8,
SESSIONF_VIDEO = 0x10,
SESSIONF_EXISTING = 0x80
};
[
uuid(06CE0C39-8917-11D1-AA78-00C04FC9B202),
helpstring("IRTP Interface"),
pointer_default(unique)
]
interface IRTP : IUnknown
{
HRESULT OpenSession([in] UINT sessionId, [in] DWORD dwFlags, [in] BYTE *localaddr, [in]UINT addrlen, [out] IRTPSession **ppIRTPSession);
//HRESULT CreateSink([out] IRTPSink **ppIRTPSink);
};
[
uuid(3C90D0D2-5F80-11D1-AA64-00C04FC9B202),
version(1.0),
helpstring("RRCM 1.0 Type Library")
]
library RRCMLib
{
importlib("stdole2.tlb");
[
uuid(06CE0C3A-8917-11D1-AA78-00C04FC9B202),
helpstring("RTP Class")
]
coclass RTP
{
[default] interface IRTP;
};
};