home *** CD-ROM | disk | FTP | other *** search
- /*++
-
- Copyright (c) 1996 Microsoft Corporation
-
- Module Name:
-
- rtp.h
-
- Abstract:
-
- Header for RTP/RTCP Protocol.
-
- --*/
-
- #if !defined(_INC_RTP_H_)
- #pragma option push -b -a8 -pc -A- /*P_O_Push*/
- #define _INC_RTP_H_
-
- #define RTP_TYPE 2
- #define RTP_VERSION RTP_TYPE
- #define RTP_MAX_SDES 256
- #define RTP_MAX_EKEY 32
-
- #define NUM_COLLISION_ENTRIES 10
- #define MAX_ADDR_LEN 80
-
- typedef struct _RTP_SDES_ITEM {
- BYTE Type;
- BYTE TextLength;
- BYTE Text[RTP_MAX_SDES];
- } RTCP_SDES_ITEM, *PRTCP_SDES_ITEM;
-
- // RTCP SDES (Source DEScription) types, as described in RFC1889
- typedef enum
- {
- RTCP_SDES_END, // END: SDES Items terminator
- RTCP_SDES_CNAME, // CNAME: Canonical end-point identifier SDES item
- RTCP_SDES_NAME, // NAME: User name SDES item
- RTCP_SDES_EMAIL, // EMAIL: Electronic mail address SDES item
- RTCP_SDES_PHONE, // PHONE: Phone number SDES item
- RTCP_SDES_LOC, // LOC: Geographic user location SDES item
- RTCP_SDES_TOOL, // TOOL: Application or tool name SDES item
- RTCP_SDES_NOTE, // NOTE: Notice/status SDES item
- RTCP_SDES_PRIV, // PRIV: Private extensions SDES
- RTCP_SDES_LAST // just a count of the number of items
- } RTCP_SDES_TYPE_T;
-
- typedef struct _RTCP_SENDER_REPORT {
- DWORD NtpTimestampSec;
- DWORD NtpTimestampFrac;
- DWORD RtpTimestamp;
- DWORD TotalPackets;
- DWORD TotalOctets;
- } RTCP_SENDER_REPORT, *PRTCP_SENDER_REPORT;
-
- typedef struct _RTCP_RECEIVER_REPORT {
- DWORD FractionLost:8;
- DWORD TotalLostPackets:24;
- DWORD HighestSequenceNum;
- DWORD InterarrivalJitter;
- DWORD LastSRTimestamp;
- DWORD DelaySinceLastSR;
- } RTCP_RECEIVER_REPORT, *PRTCP_RECEIVER_REPORT;
-
- typedef struct _RTCP_PARTICIPANT_REPORT {
- DWORD SSRC;
- RTCP_SENDER_REPORT LastSR;
- RTCP_RECEIVER_REPORT LastIncomingRR;
- RTCP_RECEIVER_REPORT LastOutgoingRR;
- } RTCP_PARTICIPANT_REPORT, *PRTCP_PARTICIPANT_REPORT;
-
- typedef struct _RTP_HEADER {
- //--- NETWORK BYTE ORDER BEGIN ---//
- WORD NumCSRC:4;
- WORD fExtHeader:1;
- WORD fPadding:1;
- WORD Version:2;
- WORD PayloadType:7;
- WORD fMarker:1;
- //---- NETWORK BYTE ORDER END ----//
- WORD SequenceNum;
- DWORD Timestamp;
- DWORD SSRC;
- } RTP_HEADER, *PRTP_HEADER;
-
- typedef struct _RTP_HEADER_X {
- WORD Identifier;
- WORD DataLength;
- DWORD Data[1];
- } RTP_HEADER_X, *PRTP_HEADER_X;
-
- typedef struct _RTP_ENCRYPTION_INFO {
- DWORD Scheme;
- DWORD Key[RTP_MAX_EKEY];
- } RTP_ENCRYPTION_INFO, *PRTP_ENCRYPTION_INFO;
-
-
- /////////////////////////////////////////////////
- // DXMRTP RTP/RTCP events
- /////////////////////////////////////////////////
- // The real event received is e.g. for "new source",
- // DXMRTP_EVENTBASE + DXMRTP_NEW_SOURCE_EVENT
- /////////////////////////////////////////////////
-
- #define B2M(b) (1 << (b))
-
- #define DXMRTP_EVENTBASE (EC_USER+0)
-
- typedef enum
- {
- DXMRTP_NO_EVENT,
- DXMRTP_NEW_SOURCE_EVENT, // New SSRC detected
- DXMRTP_RECV_RTCP_RECV_REPORT_EVENT, // RTCP RR received
- DXMRTP_RECV_RTCP_SNDR_REPORT_EVENT, // RTCP SR received
- DXMRTP_LOCAL_COLLISION_EVENT, // Collision detected
- DXMRTP_REMOTE_COLLISION_EVENT, // Remote collision detected
- DXMRTP_TIMEOUT_EVENT, // SSRC timed-out
- DXMRTP_BYE_EVENT, // RTCP Bye received
- DXMRTP_RTCP_WS_RCV_ERROR, // Winsock error on RTCP rcv
- DXMRTP_RTCP_WS_XMT_ERROR, // Winsock error on RTCP xmt
- DXMRTP_INACTIVE_EVENT, // SSRC has been silent
- DXMRTP_ACTIVE_AGAIN_EVENT, // SSRC has been heard again
- DXMRTP_LOSS_RATE_RR_EVENT, // Loss rate as reported in an RR
- DXMRTP_LOSS_RATE_LOCAL_EVENT, // Loss rate locally detected
- DXMRTP_LAST_EVENT
- } DXMRTP_EVENT_T;
-
- typedef struct _SDES_DATA
- {
- DWORD dwSdesType; // SDES type: CNAME/NAME/...
- char sdesBfr[RTP_MAX_SDES];
- DWORD dwSdesLength; // SDES length
- DWORD dwSdesFrequency; // SDES frequency
- DWORD dwSdesEncrypted; // SDES encrypted Y/N ?
- } SDES_DATA, *PSDES_DATA;
-
- /////////////////////////////////////////////////
- // DXMRTP QOS events
- /////////////////////////////////////////////////
- // The real event received is e.g. for "receivers",
- // DXMRTP_QOSEVENTBASE + DXMRTP_QOSEVENT_RECEIVERS
- /////////////////////////////////////////////////
-
- #define DXMRTP_QOSEVENTBASE (DXMRTP_EVENTBASE + 32)
-
- //
- // NOTE!:
- // Other events may be added related to trying to set up QoS
- // (before any QoS event could be fired)
- //
- typedef enum
- {
- DXMRTP_QOSEVENT_NOQOS,
- /* no QoS support is available */
- DXMRTP_QOSEVENT_RECEIVERS,
- /* at least one Reserve has arrived */
- DXMRTP_QOSEVENT_SENDERS,
- /* at least one Path has arrived */
- DXMRTP_QOSEVENT_NO_SENDERS,
- /* there are no senders */
- DXMRTP_QOSEVENT_NO_RECEIVERS,
- /* there are no receivers */
- DXMRTP_QOSEVENT_REQUEST_CONFIRMED,
- /* Reserve has been confirmed */
- DXMRTP_QOSEVENT_ADMISSION_FAILURE,
- /* error due to lack of resources */
- DXMRTP_QOSEVENT_POLICY_FAILURE,
- /* rejected for administrative reasons - bad credentials */
- DXMRTP_QOSEVENT_BAD_STYLE,
- /* unknown or conflicting style */
- DXMRTP_QOSEVENT_BAD_OBJECT,
- /* problem with some part of the filterspec or providerspecific
- * buffer in general */
- DXMRTP_QOSEVENT_TRAFFIC_CTRL_ERROR,
- /* problem with some part of the flowspec */
- DXMRTP_QOSEVENT_GENERIC_ERROR,
- /* general error */
- DXMRTP_QOSEVENT_NOT_ALLOWEDTOSEND,
- /* sender is not allowed to send */
- DXMRTP_QOSEVENT_ALLOWEDTOSEND,
- /* sender is not allowed to send */
- DXMRTP_QOSEVENT_LAST
- } DXMRTP_QOSEVENT_T;
-
- /////////////////////////////////////////////////
- // DXMRTP DEMUX events
- /////////////////////////////////////////////////
- // The real event received is e.g. for "ssrc mapped",
- // RTPDMX_EVENTBASE + RTPDEMUX_SSRC_MAPPED
- /////////////////////////////////////////////////
- #if !defined(RTPDMX_EVENTBASE)
- #define RTPDMX_EVENTBASE (EC_USER+100)
-
- typedef enum {
- RTPDEMUX_SSRC_MAPPED, // The specific SSRC has been mapped
- RTPDEMUX_SSRC_UNMAPPED, // The specific SSRC has been unmapped
- RTPDEMUX_PIN_MAPPED, // The specific Pin has been mapped
- RTPDEMUX_PIN_UNMAPPED, // The specific Pin has been unmapped
- RTPDEMUX_NO_PINS_AVAILABLE, // PT was found, but pin was already mapped
- RTPDEMUX_NO_PAYLOAD_TYPE // PT was not found
- } RTPDEMUX_EVENT_t;
- // The Pin passed as a parameter along with PIN_MAPPED and PIN_UNMAPPED
- // is a pointer to the connected pin
-
- #endif
-
- // Maximum number of classes per CPU in
- // in the RTP Source Shared Thread scheme
- #define RTP_MAX_CLASSES 4
-
- // Actually two classes are defined
- enum {
- RTP_CLASS_AUDIO,
- RTP_CLASS_VIDEO
- };
-
- // Reservation styles
- enum {
- DXMRTP_RESERVE_WILCARD, // Usually for N times the AUDIO flow spec
- DXMRTP_RESERVE_EXPLICIT // Usually for designated VIDEO streams
- };
-
- #pragma option pop /*P_O_Pop*/
- #endif // _INC_RTP
-
-
-
-