Протоколы Internet


Протокол реального времени RTP - часть 18


Нижеприведенные определения заимствованы целиком из RFC, ссылка на который приведена в начале данного раздела. Все цифра представлены в формате, где первым является старший октет. Предполагается, что битовые поля размещаются без заполнителей в том же порядке, что и октеты.

/*

* rtp.h -- Файл заголовка RTP (RFC 1889)

*/

#include <sys/types.h>

/*

* Нижеприведенные определения предполагают 32-битовое представление, а в случаях

* 16- или 64-битового представлений необходимы соответствующие модификации.

*/

typedef unsigned char u_int8;

typedef unsigned short u_int16;

typedef unsigned int u_int32;

typedef short int16;

/*

* Текущая версия протокола.

*/

#define RTP_VERSION 2

#define RTP_SEQ_MOD (1<<16)

#define RTP_MAX_SDES 255 /* максимальная длина текста для SDES */

typedef enum {

RTCP_SR = 200,

RTCP_RR = 201,

RTCP_SDES = 202,

RTCP_BYE = 203,

RTCP_APP = 204

} rtcp_type_t;

typedef enum {

RTCP_SDES_END = 0,

RTCP_SDES_CNAME = 1,

RTCP_SDES_NAME = 2,

RTCP_SDES_EMAIL = 3,

RTCP_SDES_PHONE = 4,

RTCP_SDES_LOC = 5,

RTCP_SDES_TOOL = 6,

RTCP_SDES_NOTE = 7,

RTCP_SDES_PRIV = 8

} rtcp_sdes_type_t;

/*

* Заголовок RTP-пакета

*/

typedef struct {

unsigned int version:2; /* версия протокола */

unsigned int p:1; /* флаг заполнителя */

unsigned int x:1; /* Флаг расширения заголовка */

unsigned int cc:4; /* число CSRC */

unsigned int m:1; /* Бит маркера */

unsigned int pt:7; /* тип поля данных */

u_int16 seq; /* номер по порядку */

u_int32 ts; /* временная метка */

u_int32 ssrc; /* источник синхронизации */

u_int32 csrc[1]; /* опционный список CSRC */

} rtp_hdr_t;

/*

* Общее слово RTCP-заголовка

*/

typedef struct {

unsigned int version:2; /* версия протокола */

unsigned int p:1; /* флаг заполнителя */

unsigned int count:5; /* варьируется в зависимости от типа пакета */

unsigned int pt:8; /* тип пакета RTCP */

u_int16 length; /* Длина пакета в словах */

} rtcp_common_t;

/*

* Маска версии, бита заполнителя и типа пакета

*/




Начало  Назад  Вперед