libgpac
Documentation of the core library of GPAC
ietf_dev.h File Reference
#include <gpac/ietf.h>
+ Include dependency graph for ietf_dev.h:
+ This graph shows which files directly or indirectly include this file:

Data Structures

struct  GF_RTCPHeader
 
struct  GF_POItem
 
struct  GF_RTPReorder
 
struct  GF_RTCP_Report
 
struct  GF_RTPChannel
 
struct  GF_TCPChan
 
struct  GF_RTSPSession
 
struct  GP_RTPPacketizer
 
struct  GF_RTPDepacketizer
 

Macros

#define MAX_RTCP_RR   4
 
#define GF_RTSP_DEFAULT_BUFFER   2048
 
#define GF_RTSP_VERSION   "RTSP/1.0"
 
#define RTSP_WRITE_STEPALLOC   250
 
#define RTSP_WRITE_ALLOC_STR_WITHOUT_CHECK(buf, buf_size, pos, str)
 
#define RTSP_WRITE_ALLOC_STR(buf, buf_size, pos, str)
 
#define RTSP_WRITE_HEADER(buf, buf_size, pos, type, str)
 
#define RTSP_WRITE_INT(buf, buf_size, pos, d, sig)
 
#define RTSP_WRITE_HEX(buf, buf_size, pos, d, sig)
 
#define RTSP_WRITE_FLOAT_WITHOUT_CHECK(buf, buf_size, pos, d)
 
#define RTSP_WRITE_FLOAT(buf, buf_size, pos, d)
 
#define RTP_VVC_AGG_NAL   0x1C
 
#define RTP_VVC_FRAG_NAL   0x1D
 

Enumerations

enum  RTSP_HTTP_Tunnel { RTSP_HTTP_NONE = 0 , RTSP_HTTP_CLIENT , RTSP_HTTP_SERVER , RTSP_HTTP_DISABLE }
 

Functions

GF_RTPReordergf_rtp_reorderer_new (u32 MaxCount, u32 MaxDelay, u32 rtp_timescale)
 
void gf_rtp_reorderer_del (GF_RTPReorder *po)
 
void gf_rtp_reorderer_reset (GF_RTPReorder *po)
 
GF_Err gf_rtp_reorderer_add (GF_RTPReorder *po, const void *pck, u32 pck_size, u32 pck_seqnum)
 
void * gf_rtp_reorderer_get (GF_RTPReorder *po, u32 *pck_size, Bool force_flush, Bool *is_disc)
 
u32 gf_rtp_channel_time (GF_RTPChannel *ch)
 
u32 gf_rtp_get_report_time ()
 
void gf_rtp_get_next_report_time (GF_RTPChannel *ch)
 
Bool gf_rtp_is_disc (GF_RTPChannel *ch)
 
GF_RTSPSession * gf_rtsp_session_new (char *sURL, u16 DefaultPort)
 
GF_Err gf_rtsp_send_data (GF_RTSPSession *sess, u8 *buffer, u32 Size)
 
GF_Err gf_rstp_do_read_sock (GF_RTSPSession *sess, GF_Socket *sock, u8 *data, u32 data_size, u32 *out_read)
 
void gf_rtsp_get_body_info (GF_RTSPSession *sess, u32 *body_start, u32 *body_size, Bool skip_tunnel)
 
GF_Err gf_rtsp_read_reply (GF_RTSPSession *sess)
 
GF_Err gf_rtsp_fill_buffer (GF_RTSPSession *sess)
 
GF_Err gf_rtsp_refill_buffer (GF_RTSPSession *sess)
 
GF_RTSPTransportgf_rtsp_transport_parse (u8 *buffer)
 
GF_Err gf_rtsp_parse_header (u8 *buffer, u32 BufferSize, u32 BodyStart, GF_RTSPCommand *com, GF_RTSPResponse *rsp)
 
void gf_rtsp_set_command_value (GF_RTSPCommand *com, char *Header, char *Value)
 
void gf_rtsp_set_response_value (GF_RTSPResponse *rsp, char *Header, char *Value)
 
GF_Err gp_rtp_builder_do_mpeg4 (GP_RTPPacketizer *builder, u8 *data, u32 data_size, u8 IsAUEnd, u32 FullAUSize)
 
GF_Err gp_rtp_builder_do_h263 (GP_RTPPacketizer *builder, u8 *data, u32 data_size, u8 IsAUEnd, u32 FullAUSize)
 
GF_Err gp_rtp_builder_do_amr (GP_RTPPacketizer *builder, u8 *data, u32 data_size, u8 IsAUEnd, u32 FullAUSize)
 
GF_Err gp_rtp_builder_do_mpeg12_video (GP_RTPPacketizer *builder, u8 *data, u32 data_size, u8 IsAUEnd, u32 FullAUSize)
 
GF_Err gp_rtp_builder_do_mpeg12_audio (GP_RTPPacketizer *builder, u8 *data, u32 data_size, u8 IsAUEnd, u32 FullAUSize)
 
GF_Err gp_rtp_builder_do_tx3g (GP_RTPPacketizer *builder, u8 *data, u32 data_size, u8 IsAUEnd, u32 FullAUSize, u32 duration, u8 descIndex)
 
GF_Err gp_rtp_builder_do_avc (GP_RTPPacketizer *builder, u8 *data, u32 data_size, u8 IsAUEnd, u32 FullAUSize)
 
GF_Err gp_rtp_builder_do_qcelp (GP_RTPPacketizer *builder, u8 *data, u32 data_size, u8 IsAUEnd, u32 FullAUSize)
 
GF_Err gp_rtp_builder_do_smv (GP_RTPPacketizer *builder, u8 *data, u32 data_size, u8 IsAUEnd, u32 FullAUSize)
 
GF_Err gp_rtp_builder_do_latm (GP_RTPPacketizer *builder, u8 *data, u32 data_size, u8 IsAUEnd, u32 FullAUSize, u32 duration)
 
GF_Err gp_rtp_builder_do_ac3 (GP_RTPPacketizer *builder, u8 *data, u32 data_size, u8 IsAUEnd, u32 FullAUSize)
 
GF_Err gp_rtp_builder_do_hevc (GP_RTPPacketizer *builder, u8 *data, u32 data_size, u8 IsAUEnd, u32 FullAUSize)
 
GF_Err gp_rtp_builder_do_mp2t (GP_RTPPacketizer *builder, u8 *data, u32 data_size, u8 IsAUEnd, u32 FullAUSize)
 
GF_Err gp_rtp_builder_do_vvc (GP_RTPPacketizer *builder, u8 *data, u32 data_size, u8 IsAUEnd, u32 FullAUSize)
 
GF_Err gp_rtp_builder_do_opus (GP_RTPPacketizer *builder, u8 *data, u32 data_size, u8 IsAUEnd, u32 FullAUSize)
 

Data Structure Documentation

◆ GF_RTCPHeader

struct GF_RTCPHeader
Data Fields
u8 Version
u8 Padding
u8 Count
u8 PayloadType
u16 Length
u32 SSRC

◆ GF_POItem

struct GF_POItem
Data Fields
struct __PRO_item * next
u32 pck_seq_num
void * pck
u32 size

◆ GF_RTPReorder

struct GF_RTPReorder
Data Fields
struct __PRO_item * in
u32 head_seqnum
u32 Count
u32 MaxCount
u32 IsInit
u32 MaxDelay
u32 LastTime
u32 TimeScale
struct __PRO_item * disc

◆ GF_RTCP_Report

struct GF_RTCP_Report
Data Fields
u32 ssrc
u32 frac_lost
u32 total_loss
u32 last_rtp_sn
u64 jitter
u32 last_sr
u32 delay_last_sr

◆ __tag_rtp_channel

struct __tag_rtp_channel

RTP channel

+ Collaboration diagram for GF_RTPChannel:
Data Fields
GF_RTSPTransport net_info
GF_Socket * rtp
GF_Socket * rtcp
GF_RTPReorder * po
u32 last_report_time
u32 next_report_time
u32 last_nat_keepalive_time
u32 nat_keepalive_time_period
u32 rtp_first_SN
u32 rtp_time
u32 CurrentTime
u32 num_sn_loops
u8 PayloadType
u32 TimeScale
u8 * send_buffer
u32 send_buffer_size
u32 pck_sent_since_last_sr
u32 last_pck_ts
u32 last_pck_ntp_sec
u32 last_pck_ntp_frac
u32 num_pck_sent
u32 num_payload_bytes
u32 forced_ntp_sec
u32 forced_ntp_frac
u32 force_loss_rate
Bool no_auto_rtcp
char * s_name
char * s_email
char * s_location
char * s_phone
char * s_tool
char * s_note
char * s_priv
s8 first_SR
u32 SSRC
u32 SenderSSRC
u32 last_pck_sn
Bool packet_loss
char * CName
u32 rtcp_bytes_sent
u32 tot_num_pck_rcv
u32 tot_num_pck_expected
u32 last_num_pck_rcv
u32 last_num_pck_expected
u32 last_num_pck_loss
u32 Jitter
u32 ntp_init
s32 last_deviance
u32 last_SR_NTP_sec
u32 last_SR_NTP_frac
u32 last_SR_rtp_time
u32 total_pck
u32 total_bytes
GF_BitStream * bs_r
GF_BitStream * bs_w
Bool no_select
gf_rtp_tcp_callback send_interleave
void * interleave_cbk1
void * interleave_cbk2
GF_RTCP_Report rtcp_rr[MAX_RTCP_RR]
u32 nb_rctp_rr
const char * netcap_id
const char ** ssm
const char ** ssmx
u32 nb_ssm
u32 nb_ssmx
u8 disc_state

◆ GF_TCPChan

struct GF_TCPChan
Data Fields
u8 rtpID
u8 rtcpID
void * ch_ptr

◆ __tag_rtp_packetizer

struct __tag_rtp_packetizer

RTP builder (packetizer)

+ Collaboration diagram for GP_RTPPacketizer:
Data Fields
GF_SLHeader sl_header
u32 nb_aus

Macro Definition Documentation

◆ MAX_RTCP_RR

#define MAX_RTCP_RR   4

◆ GF_RTSP_DEFAULT_BUFFER

#define GF_RTSP_DEFAULT_BUFFER   2048

◆ GF_RTSP_VERSION

#define GF_RTSP_VERSION   "RTSP/1.0"

◆ RTSP_WRITE_STEPALLOC

#define RTSP_WRITE_STEPALLOC   250

◆ RTSP_WRITE_ALLOC_STR_WITHOUT_CHECK

#define RTSP_WRITE_ALLOC_STR_WITHOUT_CHECK (   buf,
  buf_size,
  pos,
  str 
)
Value:
if (strlen((const char *) str)+pos >= buf_size) { \
buf_size += (u32) strlen((const char *) str); \
buf = (char *) gf_realloc(buf, buf_size); \
} \
strcpy(buf+pos, (const char *) str); \
pos += (u32) strlen((const char *) str); \
void * gf_realloc(void *ptr, size_t size)
Definition: alloc.c:158
uint32_t u32
Definition: setup.h:326

◆ RTSP_WRITE_ALLOC_STR

#define RTSP_WRITE_ALLOC_STR (   buf,
  buf_size,
  pos,
  str 
)
Value:
if (str){ \
RTSP_WRITE_ALLOC_STR_WITHOUT_CHECK(buf, buf_size, pos, str); \
} \

◆ RTSP_WRITE_HEADER

#define RTSP_WRITE_HEADER (   buf,
  buf_size,
  pos,
  type,
  str 
)
Value:
if( str ) { \
RTSP_WRITE_ALLOC_STR(buf, buf_size, pos, type); \
RTSP_WRITE_ALLOC_STR(buf, buf_size, pos, ": "); \
RTSP_WRITE_ALLOC_STR(buf, buf_size, pos, str); \
RTSP_WRITE_ALLOC_STR(buf, buf_size, pos, "\r\n"); \
} \

◆ RTSP_WRITE_INT

#define RTSP_WRITE_INT (   buf,
  buf_size,
  pos,
  d,
  sig 
)
Value:
{ \
char temp[50]; \
if (sig < 0) { \
sprintf(temp, "%d", d); \
} else { \
sprintf(temp, "%u", d); \
} \
RTSP_WRITE_ALLOC_STR_WITHOUT_CHECK(buf, buf_size, pos, temp); \
}

◆ RTSP_WRITE_HEX

#define RTSP_WRITE_HEX (   buf,
  buf_size,
  pos,
  d,
  sig 
)
Value:
{ \
char temp[50]; \
sprintf(temp, "%X", d); \
RTSP_WRITE_ALLOC_STR_WITHOUT_CHECK(buf, buf_size, pos, temp);\
}

◆ RTSP_WRITE_FLOAT_WITHOUT_CHECK

#define RTSP_WRITE_FLOAT_WITHOUT_CHECK (   buf,
  buf_size,
  pos,
 
)
Value:
{ \
char temp[50]; \
sprintf(temp, "%.4f", d); \
RTSP_WRITE_ALLOC_STR_WITHOUT_CHECK(buf, buf_size, pos, temp);\
}

◆ RTSP_WRITE_FLOAT

#define RTSP_WRITE_FLOAT (   buf,
  buf_size,
  pos,
 
)
Value:
{ \
char temp[50]; \
sprintf(temp, "%.4f", d); \
RTSP_WRITE_ALLOC_STR(buf, buf_size, pos, temp); \
}

◆ RTP_VVC_AGG_NAL

#define RTP_VVC_AGG_NAL   0x1C

◆ RTP_VVC_FRAG_NAL

#define RTP_VVC_FRAG_NAL   0x1D

Enumeration Type Documentation

◆ RTSP_HTTP_Tunnel

Enumerator
RTSP_HTTP_NONE 
RTSP_HTTP_CLIENT 
RTSP_HTTP_SERVER 
RTSP_HTTP_DISABLE 

Function Documentation

◆ gf_rtp_reorderer_new()

GF_RTPReorder* gf_rtp_reorderer_new ( u32  MaxCount,
u32  MaxDelay,
u32  rtp_timescale 
)
+ Here is the caller graph for this function:

◆ gf_rtp_reorderer_del()

void gf_rtp_reorderer_del ( GF_RTPReorder po)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_rtp_reorderer_reset()

void gf_rtp_reorderer_reset ( GF_RTPReorder po)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_rtp_reorderer_add()

GF_Err gf_rtp_reorderer_add ( GF_RTPReorder po,
const void *  pck,
u32  pck_size,
u32  pck_seqnum 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_rtp_reorderer_get()

void* gf_rtp_reorderer_get ( GF_RTPReorder po,
u32 pck_size,
Bool  force_flush,
Bool is_disc 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_rtp_channel_time()

u32 gf_rtp_channel_time ( GF_RTPChannel *  ch)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_rtp_get_report_time()

u32 gf_rtp_get_report_time ( )
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_rtp_get_next_report_time()

void gf_rtp_get_next_report_time ( GF_RTPChannel *  ch)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_rtp_is_disc()

Bool gf_rtp_is_disc ( GF_RTPChannel *  ch)
+ Here is the caller graph for this function:

◆ gf_rtsp_send_data()

GF_Err gf_rtsp_send_data ( GF_RTSPSession *  sess,
u8 buffer,
u32  Size 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_rstp_do_read_sock()

GF_Err gf_rstp_do_read_sock ( GF_RTSPSession *  sess,
GF_Socket *  sock,
u8 data,
u32  data_size,
u32 out_read 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_rtsp_get_body_info()

void gf_rtsp_get_body_info ( GF_RTSPSession *  sess,
u32 body_start,
u32 body_size,
Bool  skip_tunnel 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_rtsp_read_reply()

GF_Err gf_rtsp_read_reply ( GF_RTSPSession *  sess)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_rtsp_fill_buffer()

GF_Err gf_rtsp_fill_buffer ( GF_RTSPSession *  sess)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_rtsp_refill_buffer()

GF_Err gf_rtsp_refill_buffer ( GF_RTSPSession *  sess)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_rtsp_transport_parse()

GF_RTSPTransport* gf_rtsp_transport_parse ( u8 buffer)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_rtsp_parse_header()

GF_Err gf_rtsp_parse_header ( u8 buffer,
u32  BufferSize,
u32  BodyStart,
GF_RTSPCommand com,
GF_RTSPResponse rsp 
)

! empty value !! - DSS may send these for CSeq if something goes wrong

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_rtsp_set_command_value()

void gf_rtsp_set_command_value ( GF_RTSPCommand com,
char *  Header,
char *  Value 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gf_rtsp_set_response_value()

void gf_rtsp_set_response_value ( GF_RTSPResponse rsp,
char *  Header,
char *  Value 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gp_rtp_builder_do_mpeg4()

GF_Err gp_rtp_builder_do_mpeg4 ( GP_RTPPacketizer *  builder,
u8 data,
u32  data_size,
u8  IsAUEnd,
u32  FullAUSize 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gp_rtp_builder_do_h263()

GF_Err gp_rtp_builder_do_h263 ( GP_RTPPacketizer *  builder,
u8 data,
u32  data_size,
u8  IsAUEnd,
u32  FullAUSize 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gp_rtp_builder_do_amr()

GF_Err gp_rtp_builder_do_amr ( GP_RTPPacketizer *  builder,
u8 data,
u32  data_size,
u8  IsAUEnd,
u32  FullAUSize 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gp_rtp_builder_do_mpeg12_video()

GF_Err gp_rtp_builder_do_mpeg12_video ( GP_RTPPacketizer *  builder,
u8 data,
u32  data_size,
u8  IsAUEnd,
u32  FullAUSize 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gp_rtp_builder_do_mpeg12_audio()

GF_Err gp_rtp_builder_do_mpeg12_audio ( GP_RTPPacketizer *  builder,
u8 data,
u32  data_size,
u8  IsAUEnd,
u32  FullAUSize 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gp_rtp_builder_do_tx3g()

GF_Err gp_rtp_builder_do_tx3g ( GP_RTPPacketizer *  builder,
u8 data,
u32  data_size,
u8  IsAUEnd,
u32  FullAUSize,
u32  duration,
u8  descIndex 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gp_rtp_builder_do_avc()

GF_Err gp_rtp_builder_do_avc ( GP_RTPPacketizer *  builder,
u8 data,
u32  data_size,
u8  IsAUEnd,
u32  FullAUSize 
)
+ Here is the caller graph for this function:

◆ gp_rtp_builder_do_qcelp()

GF_Err gp_rtp_builder_do_qcelp ( GP_RTPPacketizer *  builder,
u8 data,
u32  data_size,
u8  IsAUEnd,
u32  FullAUSize 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gp_rtp_builder_do_smv()

GF_Err gp_rtp_builder_do_smv ( GP_RTPPacketizer *  builder,
u8 data,
u32  data_size,
u8  IsAUEnd,
u32  FullAUSize 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gp_rtp_builder_do_latm()

GF_Err gp_rtp_builder_do_latm ( GP_RTPPacketizer *  builder,
u8 data,
u32  data_size,
u8  IsAUEnd,
u32  FullAUSize,
u32  duration 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gp_rtp_builder_do_ac3()

GF_Err gp_rtp_builder_do_ac3 ( GP_RTPPacketizer *  builder,
u8 data,
u32  data_size,
u8  IsAUEnd,
u32  FullAUSize 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ gp_rtp_builder_do_hevc()

GF_Err gp_rtp_builder_do_hevc ( GP_RTPPacketizer *  builder,
u8 data,
u32  data_size,
u8  IsAUEnd,
u32  FullAUSize 
)
+ Here is the caller graph for this function:

◆ gp_rtp_builder_do_mp2t()

GF_Err gp_rtp_builder_do_mp2t ( GP_RTPPacketizer *  builder,
u8 data,
u32  data_size,
u8  IsAUEnd,
u32  FullAUSize 
)
+ Here is the caller graph for this function:

◆ gp_rtp_builder_do_vvc()

GF_Err gp_rtp_builder_do_vvc ( GP_RTPPacketizer *  builder,
u8 data,
u32  data_size,
u8  IsAUEnd,
u32  FullAUSize 
)
+ Here is the caller graph for this function:

◆ gp_rtp_builder_do_opus()

GF_Err gp_rtp_builder_do_opus ( GP_RTPPacketizer *  builder,
u8 data,
u32  data_size,
u8  IsAUEnd,
u32  FullAUSize 
)
+ Here is the caller graph for this function: