Description | Uses | Classes, Interfaces, Objects and Records | Functions and Procedures | Types | Constants | Variables |
RTP/RTCP implementation.
version 1.0 first release
version 1.1 RTCP implemented
version 2012.01 some RTCP fixes
Name | Description |
---|---|
packed record int24 |
int24 type |
packed record rtcp_APP_packet |
|
packed record rtcp_BYE_packet |
|
packed record rtcp_common_hdr |
|
packed record rtcp_rr_block |
|
packed record rtcp_RR_packet |
|
packed record rtcp_sdes_item |
|
packed record rtcp_SDES_packet |
|
packed record rtcp_SR_packet |
|
packed record rtp_hdr |
|
packed record rtp_hdr_ex |
|
packed record rtp_site_info |
|
packed record unaRTCPRTTReq |
|
Class unaRTCPSourceList |
List of Sources. |
Class unaRTCPstack |
Basic RTCP stack (UDP only) |
Class unaRTPDestination |
RTP Destiation. |
packed record unaRTPMap |
|
Class unaRTPReceiver |
Basic RTP receiver (UDP only) |
Class unaRTPStreamer |
Basic RTP receiver (UDP only) |
Class unaRTPTransmitter |
Basic RTP transmitter (UDP only) |
function align32(sz: unsigned): unsigned; |
function rtpLength(sz: uint16): uint16; |
function rtpLength2bytes(rtpLen: uint16): uint16; |
function parseRTPMap(const rtp_map, rtp_fmt: string; var map: unaRTPMap): bool; |
function mapMediaType2rtpEncoding(const mtype: string): int32; |
function mapRtpEncoding2mediaType(const enc: int): string; |
u_int8 = uint8; |
u_int16 = uint16; |
u_int32 = uint32; |
prtp_csrc_list = ˆrtp_csrc_list; |
rtp_csrc_list = array[0..15] of u_int32; |
prtp_hdr = ˆrtp_hdr; |
prtp_hdr_ex = ˆrtp_hdr_ex; |
prtcp_common_hdr = ˆrtcp_common_hdr; |
prtcp_rr_block = ˆrtcp_rr_block; |
prtcp_sdes_item = ˆrtcp_sdes_item; |
rtcp_rr_list = array[0..31] of rtcp_rr_block; |
prtcp_SR_packet = ˆrtcp_SR_packet; |
prtcp_RR_packet = ˆrtcp_RR_packet; |
prtcp_SDES_packet = ˆrtcp_SDES_packet; |
prtcp_BYE_packet = ˆrtcp_BYE_packet; |
prtcp_APP_packet = ˆrtcp_APP_packet; |
prtp_site_info = ˆrtp_site_info; |
punaRTCPRTTReq = ˆunaRTCPRTTReq; |
unaRTPOnAddDestination = procedure(sender: tObject; fromHole: boolean; destRTP, destRTCP: PSockAddrIn; var accept: boolean) of object; |
punaRTPMap = ˆunaRTPMap; |
function align32(sz: unsigned): unsigned; |
Aligns length to 32-bit words: 0 -> 0 1 -> 4 2 -> 4 3 -> 4 4 -> 4 5 -> 8 6 -> 8 Returnsaligned value |
function rtpLength(sz: uint16): uint16; |
Computes length of packet in 32-bit words minus one. Returns bytes in network order.
Parameters
Returnsvalue for length header field |
function rtpLength2bytes(rtpLen: uint16): uint16; |
Computes length of packet in bytes given Length value from header.
Parameters
Returnssize in bytes |
function parseRTPMap(const rtp_map, rtp_fmt: string; var map: unaRTPMap): bool; |
Parses rtpmap attribute from an SDP response. |
function mapMediaType2rtpEncoding(const mtype: string): int32; |
Maps known media types to known RTP encodings. ReturnsOne of c_rtp_enc_XXX constants or -1 if media type is unknown. |
function mapRtpEncoding2mediaType(const enc: int): string; |
Maps known RTP encodings into media types. ReturnsString representation of encoding. |
u_int8 = uint8; |
* The type definitions below are valid for 32-bit architectures and * may have to be adjusted for 16- or 64-bit architectures. |
u_int16 = uint16; |
u_int32 = uint32; |
prtp_csrc_list = ˆrtp_csrc_list; |
– CSRC list: 0 to 15 items, 32 bits each – |
rtp_csrc_list = array[0..15] of u_int32; |
prtp_hdr = ˆrtp_hdr; |
– RTP data header – |
prtp_hdr_ex = ˆrtp_hdr_ex; |
optional CSRC list (see rtp_csrc_list) – RTP header extension – |
prtcp_common_hdr = ˆrtcp_common_hdr; |
– RTCP common header word – |
prtcp_rr_block = ˆrtcp_rr_block; |
– Reception report block – |
prtcp_sdes_item = ˆrtcp_sdes_item; |
delay since last SR packet – SDES item – |
rtcp_rr_list = array[0..31] of rtcp_rr_block; |
text, not null-terminated list of sender reports |
prtcp_SR_packet = ˆrtcp_SR_packet; |
RTCP SR packet header |
prtcp_RR_packet = ˆrtcp_RR_packet; |
RTCP RR packet header |
prtcp_SDES_packet = ˆrtcp_SDES_packet; |
RTCP SDES packet header |
prtcp_BYE_packet = ˆrtcp_BYE_packet; |
RTCP BYE packet header |
prtcp_APP_packet = ˆrtcp_APP_packet; |
RTCP APP packet header |
prtp_site_info = ˆrtp_site_info; |
optional data – Per-source state information – |
punaRTCPRTTReq = ˆunaRTCPRTTReq; |
RTT REQ/RESP data LE order |
punaRTPMap = ˆunaRTPMap; |
RTP dynamict payload mapping |
c_def_CNresendInterval = 12000; |
rtt response |
C_probation_UNINIT = MIN_SEQUENTIAL shl 5; |
c_rtcp_appCmd_hello = 'HELO'; |
query/reply _RTT |
c_rtcp_appCmd_needRTPPing = 'NPNG'; |
hi from remote side |
c_rtcp_appCmd_RTT = '_RTT'; |
========= LoS specific (non-standard!) ======================== |
c_rtcp_appCmd_RTT_stRequest = 1; |
need RTP pingback |
c_rtcp_appCmd_RTT_stResponse = 2; |
rtt request |
c_rtpPTav_MP2T = 33; |
33 MP2T AV 90,000 |
c_rtpPTa_CN = 13; |
13 CN 8,000 1 |
c_rtpPTa_DVI4_11025 = 16; |
16 DVI4 11,025 1 |
c_rtpPTa_DVI4_16000 = 6; |
6 DVI4 16,000 1 |
c_rtpPTa_DVI4_22050 = 17; |
17 DVI4 22,050 1 |
c_rtpPTa_DVI4_8000 = 5; |
5 DVI4 8,000 1 |
c_rtpPTa_G722_ = 9; |
ALaw 9 G722 8,000 1 |
c_rtpPTa_G723 = 4; |
4 G723 8,000 1 |
c_rtpPTa_G728 = 15; |
mpeg audio 15 G728 8,000 1 |
c_rtpPTa_G729 = 18; |
18 G729 8,000 1 |
c_rtpPTa_GSM = 3; |
uLaw 1 reserved 2 reserved 3 GSM 8,000 1 |
c_rtpPTa_L16_mono = 11; |
11 L16 44,100 1 |
c_rtpPTa_L16_stereo = 10; |
10 L16 44,100 2 |
c_rtpPTa_LPC = 7; |
7 LPC 8,000 1 |
c_rtpPTa_MPA = 14; |
14 MPA 90,000 (see text) |
c_rtpPTa_PCMA = 8; |
8 PCMA 8,000 1 |
c_rtpPTa_PCMU = 0; |
G.722.1 payloads PT encoding clock rate channels name (Hz) ___________________________________________________ 0 PCMU 8,000 1 |
c_rtpPTa_QCELP = 12; |
12 QCELP 8,000 1 |
c_rtpPTv_H261 = 31; |
29 unassigned V 30 unassigned V 31 H261 V 90,000 |
c_rtpPTv_H263 = 34; |
34 H263 V 90,000 |
c_rtpPTv_JPEG = 26; |
26 JPEG V 90,000 |
c_rtpPTv_MPV = 32; |
32 MPV V 90,000 |
c_rtpPTv_nv = 28; |
27 unassigned V 28 nv V 90,000 |
c_rtpPT_dynamic = 96; |
35-71 unassigned ? 72-76 reserved N/A N/A 77-95 unassigned ? 96-127 dynamic ? dyn H263-1998 V 90,000 Table 5: Payload types (PT) for video encodings |
c_rtp_enc_CELT = 104; |
T140 text terminal |
c_rtp_enc_DVI4 = 1; |
% of lost packets since last update – end of rtp.h – recognized audio encodings NOTE: these are NOT payloads! |
c_rtp_enc_G722 = 2; |
c_rtp_enc_G7221 = 106; |
MS GSM |
c_rtp_enc_G723 = 3; |
c_rtp_enc_G726_16 = 7; |
c_rtp_enc_G726_24 = 6; |
c_rtp_enc_G726_32 = 5; |
c_rtp_enc_G726_40 = 4; |
c_rtp_enc_G728 = 8; |
c_rtp_enc_G729 = 9; |
c_rtp_enc_G729D = 10; |
c_rtp_enc_G729E = 11; |
c_rtp_enc_GSM = 12; |
c_rtp_enc_GSM49 = 105; |
CELT |
c_rtp_enc_GSM_EFR = 13; |
c_rtp_enc_L16 = 15; |
c_rtp_enc_L8 = 14; |
c_rtp_enc_LPC = 16; |
c_rtp_enc_MPA = 17; |
c_rtp_enc_PCMA = 18; |
c_rtp_enc_PCMU = 19; |
c_rtp_enc_QCELP = 20; |
c_rtp_enc_Speex = 101; |
other encodings (not payloads!) |
c_rtp_enc_T140 = 103; |
OGG/Vorbis |
c_rtp_enc_VDVI = 21; |
c_rtp_enc_Vorbis = 102; |
Speex |
c_RTP_PORT_Default = 5004; |
first dynamic payload default RTP port |
MAX_MISORDER = 100; |
After a source is considered valid, the sequence number is considered valid if it is no more than MAX_DROPOUT ahead of s->max_seq nor more than MAX_MISORDER behind. |
MIN_SEQUENTIAL = 2; |
source is declared valid only after MIN_SEQUENTIAL packets have been received in sequence |
RTCP_APP = 204; |
RTCP_BYE = 203; |
RTCP_RR = 201; |
RTCP_SDES = 202; |
RTCP_SDES_CNAME = 1; |
RTCP_SDES_EMAIL = 3; |
RTCP_SDES_END = 0; |
SDES type |
RTCP_SDES_LOC = 5; |
RTCP_SDES_NAME = 2; |
RTCP_SDES_NOTE = 7; |
RTCP_SDES_PHONE = 4; |
RTCP_SDES_PRIV = 8; |
RTCP_SDES_TOOL = 6; |
RTCP_SR = 200; |
maximum text length for SDES */ RTCP packet type |
RTCP_VALID_MASK = $C000 or $2000 or $0FE; |
pkt len in dwords, w/o this dword Big-endian mask for version, padding bit and packet type pair |
RTCP_VALID_VALUE = RTP_VERSION shl 14 or RTCP_SR; |
RTP_MAX_SDES = 255; |
RTP_SEQ_MOD = 1 shl 16; |
RTP_VERSION = 2; |
in network order Current protocol version. |
v_maxSrv_clients: int = 1; |
max number of clients in TCP Server mode |
(c) 2012 Lake of Soft