|
|
/*++
Copyright (c) 1992-1998 Microsoft Corporation
Module Name:
H323pdu.h
Abstract:
Describes interface between H323TSP and H323MSP.
Environment:
User Mode - Win32
--*/
#ifndef __H323_PDU_H_
#define __H323_PDU_H_
typedef enum {
//
// H323TSP_NEW_CALL_INDICATION - sent only from the TSP
// to the MSP in order to initiate communication once
// a call has been created.
//
H323TSP_NEW_CALL_INDICATION,
//
// H323TSP_CLOSE_CALL_COMMAND - sent only from the TSP
// to the MSP in order to stop all the streaming for a call.
//
H323TSP_CLOSE_CALL_COMMAND,
//
// H323TSP_OPEN_CHANNEL_RESPONSE - sent only from the TSP
// to the MSP in response to H323MSP_OPEN_CHANNEL_REQUEST.
//
H323TSP_OPEN_CHANNEL_RESPONSE,
//
// H323TSP_ACCEPT_CHANNEL_REQUEST - sent only from the TSP
// to the MSP in order to request the acceptance of an
// incoming logical channel.
//
H323TSP_ACCEPT_CHANNEL_REQUEST,
//
// H323TSP_CLOSE_CHANNEL_COMMAND - sent only from the TSP
// to the MSP in order to demand the immediate closure of
// an incoming or outgoing logical channel.
//
H323TSP_CLOSE_CHANNEL_COMMAND,
//
// H323TSP_VIDEO_FAST_UPDATE_PICTURE_COMMAND - sent only from the TSP
// to the MSP in order to request an I-frame transmittal
//
H323TSP_VIDEO_FAST_UPDATE_PICTURE_COMMAND,
//
// H323TSP_FLOW_CONTROL_COMMAND - sent only from the TSP
// to the MSP in order to request media stream bit rate
// change
H323TSP_FLOW_CONTROL_COMMAND
} H323TSP_MESSAGE_TYPE;
typedef enum {
//
// H323MSP_OPEN_CHANNEL_REQUEST - sent only from the MSP
// to the TSP in order to request the negotiation on an
// outgoing logical channel.
//
H323MSP_OPEN_CHANNEL_REQUEST,
//
// H323MSP_ACCEPT_CHANNEL_RESPONSE - sent only from the MSP
// to the TSP in reponse to H323TSP_ACCEPT_CHANNEL_REQUEST.
//
H323MSP_ACCEPT_CHANNEL_RESPONSE,
//
// H323MSP_CLOSE_CHANNEL_COMMAND - sent only from the MSP
// to the TSP in order to demand the immediate closure of
// an incoming or outgoing logical channel.
//
H323MSP_CLOSE_CHANNEL_COMMAND,
//
// H323MSP_QOS_EVENT - sent only from the MSP to the TSP for
// QOS events. In the future, we might move the event to MSP space.
//
H323MSP_QOS_Evnet,
//
// H323MSP_VIDEO_FAST_UPDATE_PICTURE_COMMAND - sent only from the
// MSP to the TSP in order to request an I-frame transmittal from
// the remote entity
//
H323MSP_VIDEO_FAST_UPDATE_PICTURE_COMMAND,
//
// H323MSP_FLOW_CONTROL_COMMAND - sent only from the MSP to the TSP
// in order to ask the remote entity to change media stream bit rate
//
H323MSP_FLOW_CONTROL_COMMAND,
//
// H323MSP_CONFIG_T120_COMMAND - sent only from the MSP to the TSP
// in order to set an external T120 address to the TSP.
//
H323MSP_CONFIG_T120_COMMAND,
//
// H323MSP_CONFIG_CAPABILITY_COMMAND - sent only from the MSP to the TSP
// in order to configure the capability array of the TSP.
//
H323MSP_CONFIG_CAPABILITY_COMMAND,
//
// H323MSP_SET_ALIAS_COMMAND - sent only from the MSP to the TSP
// to setup an alias name for the address
//
H323MSP_SET_ALIAS_COMMAND
} H323MSP_MESSAGE_TYPE;
typedef enum {
MEDIA_AUDIO, MEDIA_VIDEO
} MEDIATYPE;
#ifndef H245_CAPABILITY_DEFINED
typedef enum H245_CAPABILITY { HC_G711, HC_G723, HC_H263QCIF, HC_H261QCIF
} H245_CAPABILITY; #endif
#define MAX_CAPS (HC_H261QCIF - HC_G711 + 1)
typedef struct _VIDEOSETTINGS { BOOL bCIF; DWORD dwMaxBitRate; // the encoder should never exceed this value.
DWORD dwStartUpBitRate; // the encoder uses this value to start
} VIDEOSETTINGS, *PVIDEOSETTINGS;
typedef struct _G723SETTINGS { BOOL bG723LowSpeed; } G723SETTINGS, *PG723SETTINGS;
typedef struct _G729SETTINGS { BOOL bDummy; // I.K. 03-23-1999.
// A dummy field for now.
} G729SETTINGS, *PG729SETTINGS;
typedef struct _AUDIOSETTINGS { DWORD dwMillisecondsPerPacket; union { G723SETTINGS G723Settings; G729SETTINGS G729Settings; };
} AUDIOSETTINGS, *PAUDIOSETTINGS;
typedef struct _STREAMSETTINGS { MEDIATYPE MediaType;
DWORD dwPayloadType; // RTP payload type
DWORD dwDynamicType; // RTP dynamic payload type
DWORD dwIPLocal; // local IP address in host byte order.
WORD wRTPPortLocal; // local port number in host byte order.
WORD wRTCPPortLocal;
DWORD dwIPRemote; // remote IP address in host byte order.
WORD wRTPPortRemote; // remote port number in host byte order.
WORD wRTCPPortRemote;
union { VIDEOSETTINGS Video; AUDIOSETTINGS Audio; };
} STREAMSETTINGS, *PSTREAMSETTINGS;
typedef struct _H323MSG_OPEN_CHANNEL_REQUEST {
HANDLE hmChannel; // msp channel handle
STREAMSETTINGS Settings; // local address and requested settings
} H323MSG_OPEN_CHANNEL_REQUEST, *PH323MSG_OPEN_CHANNEL_REQUEST;
typedef struct _H323MSG_OPEN_CHANNEL_RESPONSE {
HANDLE hmChannel; // handle from OPEN_CHANNEL_REQUEST
HANDLE htChannel; // tsp channel channel
STREAMSETTINGS Settings; // remote address and agreed upon settings
} H323MSG_OPEN_CHANNEL_RESPONSE, *PH323MSG_OPEN_CHANNEL_RESPONSE;
typedef struct _H323MSG_ACCEPT_CHANNEL_REQUEST {
HANDLE htChannel; // tsp channel handle
STREAMSETTINGS Settings; // remote address and requested settings
} H323MSG_ACCEPT_CHANNEL_REQUEST, *PH323MSG_ACCEPT_CHANNEL_REQUEST;
typedef struct _H323MSG_ACCEPT_CHANNEL_RESPONSE {
HANDLE htChannel; // handle from ACCEPT_CHANNEL_REQUEST
HANDLE hmChannel; // msp channel handle
STREAMSETTINGS Settings; // local address and agreed upon settings
} H323MSG_ACCEPT_CHANNEL_RESPONSE, *PH323MSG_ACCEPT_CHANNEL_RESPONSE;
typedef struct _H323MSG_CLOSE_CHANNEL_COMMAND {
DWORD dwReason; // normal case is zero
HANDLE hChannel; // channel handle
} H323MSG_CLOSE_CHANNEL_COMMAND, *PH323MSG_CLOSE_CHANNEL_COMMAND;
typedef struct _H323MSG_FLOW_CONTROL_COMMAND {
DWORD dwBitRate; // requested bit rate (units of bps)
HANDLE hChannel; // MSP or TSP channel handle
} H323MSG_FLOW_CONTROL_COMMAND, *PH323MSG_FLOW_CONTROL_COMMAND;
typedef struct _H323MSG_CONFIG_T120_COMMAND {
BOOL fEnable; // Enable or disable T120.
DWORD dwIP; // The IP address of the external T120 service.
WORD wPort; // The port number of the external T120 service.
} H323MSG_CONFIG_T120_COMMAND, *PH323MSG_CONFIG_T120_COMMAND;
typedef struct _H323MSG_CONFIG_CAPABILITY_COMMAND {
DWORD dwNumCaps; DWORD pCapabilities[MAX_CAPS]; // The list of capabilities.
DWORD pdwWeights[MAX_CAPS]; // MSP or TSP channel handle
} H323MSG_CONFIG_CAPABILITY_COMMAND, *PH323MSG_CONFIG_CAPABILITY_COMMAND;
#define MAX_ALIAS_LENGTH 64
typedef struct _H323MSG_SET_ALIAS_COMMAND {
WCHAR strAlias[MAX_ALIAS_LENGTH]; // alias name
DWORD dwLength; // length of the alias
} H323MSG_SET_ALIAS_COMMAND, *PH323MSG_SET_ALIAS_COMMAND;
typedef struct _H323MSG_VIDEO_FAST_UPDATE_PICTURE_COMMAND {
HANDLE hChannel; // MSP or TSP channel handle
} H323MSG_VIDEO_FAST_UPDATE_PICTURE_COMMAND, *PH323MSG_VIDEO_FAST_UPDATE_PICTURE_COMMAND;
typedef struct _H323MSG_QOS_EVENT {
DWORD dwEvent; // the QOS event as defined in TSPI.h
HANDLE htChannel; // channel handle
} H323MSG_QOS_EVENT, *PH323MSG_QOS_EVENT;
typedef struct _H323TSP_MESSAGE {
H323TSP_MESSAGE_TYPE Type;
union { H323MSG_OPEN_CHANNEL_RESPONSE OpenChannelResponse; H323MSG_ACCEPT_CHANNEL_REQUEST AcceptChannelRequest; H323MSG_CLOSE_CHANNEL_COMMAND CloseChannelCommand; H323MSG_VIDEO_FAST_UPDATE_PICTURE_COMMAND VideoFastUpdatePictureCommand; H323MSG_FLOW_CONTROL_COMMAND FlowControlCommand; };
} H323TSP_MESSAGE, *PH323TSP_MESSAGE;
typedef struct _H323MSP_MESSAGE {
H323MSP_MESSAGE_TYPE Type;
union { H323MSG_OPEN_CHANNEL_REQUEST OpenChannelRequest; H323MSG_ACCEPT_CHANNEL_RESPONSE AcceptChannelResponse; H323MSG_CLOSE_CHANNEL_COMMAND CloseChannelCommand; H323MSG_QOS_EVENT QOSEvent; H323MSG_VIDEO_FAST_UPDATE_PICTURE_COMMAND VideoFastUpdatePictureCommand; H323MSG_FLOW_CONTROL_COMMAND FlowControlCommand; H323MSG_CONFIG_T120_COMMAND ConfigT120Command; H323MSG_CONFIG_CAPABILITY_COMMAND ConfigCapabilityCommand; H323MSG_SET_ALIAS_COMMAND SetAliasCommand; };
} H323MSP_MESSAGE, *PH323MSP_MESSAGE;
#endif
|