VLC
4.0.0-dev
|
RTP session handling. More...
Data Structures | |
struct | rtp_session_t |
State for a RTP session: More... | |
struct | rtp_source_t |
State for an RTP source. More... | |
Typedefs | |
typedef struct rtp_source_t | rtp_source_t |
Functions | |
static rtp_source_t * | rtp_source_create (demux_t *demux, const rtp_session_t *session, uint32_t ssrc, uint16_t init_seq) |
Initializes a new RTP source within an RTP session. More... | |
static void | rtp_source_destroy (demux_t *demux, const rtp_session_t *session, rtp_source_t *source) |
Destroys an RTP source and its associated streams. More... | |
static void | rtp_decode (demux_t *demux, const rtp_session_t *session, rtp_source_t *src) |
Decodes one RTP packet. More... | |
rtp_session_t * | rtp_session_create (demux_t *demux) |
Creates a new RTP session. More... | |
void | rtp_session_destroy (demux_t *demux, rtp_session_t *session) |
Destroys an RTP session. More... | |
static void * | no_init (demux_t *demux) |
static void | no_destroy (demux_t *demux, void *opaque) |
static void | no_decode (demux_t *demux, void *opaque, block_t *block) |
int | rtp_add_type (demux_t *demux, rtp_session_t *ses, const rtp_pt_t *pt) |
Adds a payload type to an RTP session. More... | |
static uint16_t | rtp_seq (const block_t *block) |
static uint32_t | rtp_timestamp (const block_t *block) |
static const struct rtp_pt_t * | rtp_find_ptype (const rtp_session_t *session, rtp_source_t *source, const block_t *block, void **pt_data) |
void | rtp_queue (demux_t *demux, rtp_session_t *session, block_t *block) |
Receives an RTP packet and queues it. More... | |
bool | rtp_dequeue (demux_t *demux, const rtp_session_t *session, vlc_tick_t *restrict deadlinep) |
Dequeues RTP packets and pass them to decoder. More... | |
RTP session handling.
typedef struct rtp_source_t rtp_source_t |
References block_Release().
Referenced by rtp_add_type().
|
static |
Referenced by rtp_add_type().
|
static |
Referenced by rtp_add_type().
int rtp_add_type | ( | demux_t * | demux, |
rtp_session_t * | ses, | ||
const rtp_pt_t * | pt | ||
) |
Adds a payload type to an RTP session.
References rtp_pt_t::decode, rtp_pt_t::destroy, rtp_pt_t::frequency, rtp_pt_t::header, rtp_pt_t::init, msg_Dbg, msg_Err, no_decode(), no_destroy(), no_init(), rtp_pt_t::number, rtp_session_t::ptc, rtp_session_t::ptv, and rtp_session_t::srcc.
Referenced by rtp_autodetect().
|
static |
Decodes one RTP packet.
References BLOCK_FLAG_DISCONTINUITY, block_Release(), rtp_source_t::blocks, rtp_pt_t::decode, rtp_pt_t::frequency, GetWBE, rtp_pt_t::header, block_t::i_buffer, block_t::i_flags, block_t::i_pts, rtp_source_t::last_seq, msg_Dbg, msg_Warn, block_t::p_buffer, block_t::p_next, rtp_source_t::ref_ntp, rtp_source_t::ref_rtp, rtp_find_ptype(), rtp_ptype(), rtp_seq(), rtp_timestamp(), and vlc_tick_from_samples().
Referenced by rtp_dequeue().
bool rtp_dequeue | ( | demux_t * | demux, |
const rtp_session_t * | session, | ||
vlc_tick_t *restrict | deadlinep | ||
) |
Dequeues RTP packets and pass them to decoder.
Not cancellation-safe(?). A packet is decoded if it is the next in sequence order, or if we have given up waiting on the missing packets (time out) from the last one already decoded.
demux | VLC demux object |
session | RTP session receiving the packet |
deadlinep | pointer to deadline to call rtp_dequeue() again |
References rtp_source_t::blocks, rtp_pt_t::frequency, block_t::i_pts, rtp_source_t::jitter, rtp_source_t::last_seq, rtp_decode(), rtp_find_ptype(), rtp_seq(), rtp_session_t::srcc, rtp_session_t::srcv, VLC_TICK_FROM_MS, vlc_tick_from_samples(), and vlc_tick_now().
|
static |
References rtp_pt_t::number, rtp_source_t::opaque, rtp_session_t::ptc, rtp_session_t::ptv, and rtp_ptype().
Referenced by rtp_decode(), rtp_dequeue(), and rtp_queue().
void rtp_queue | ( | demux_t * | demux, |
rtp_session_t * | session, | ||
block_t * | block | ||
) |
Receives an RTP packet and queues it.
Not a cancellation point.
demux | VLC demux object |
session | RTP session receiving the packet |
block | RTP packet including the RTP header |
References rtp_source_t::bad_seq, block_ChainRelease(), block_Release(), rtp_source_t::blocks, freq, rtp_pt_t::frequency, GetDWBE, block_t::i_buffer, block_t::i_pts, rtp_source_t::jitter, rtp_source_t::last_rx, rtp_source_t::last_seq, rtp_source_t::last_ts, demux_sys_t::max_dropout, demux_sys_t::max_misorder, rtp_source_t::max_seq, demux_sys_t::max_src, msg_Dbg, msg_Warn, block_t::p_buffer, block_t::p_next, stream_t::p_sys, rtp_find_ptype(), rtp_seq(), rtp_source_create(), rtp_source_destroy(), rtp_timestamp(), samples_from_vlc_tick(), rtp_session_t::srcc, rtp_session_t::srcv, rtp_source_t::ssrc, demux_sys_t::timeout, and vlc_tick_now().
Referenced by rtp_process().
|
inlinestatic |
References GetWBE, block_t::i_buffer, and block_t::p_buffer.
Referenced by rtp_decode(), rtp_dequeue(), and rtp_queue().
rtp_session_t* rtp_session_create | ( | demux_t * | ) |
Creates a new RTP session.
References rtp_session_t::ptc, rtp_session_t::ptv, rtp_session_t::srcc, and rtp_session_t::srcv.
void rtp_session_destroy | ( | demux_t * | demux, |
rtp_session_t * | session | ||
) |
Destroys an RTP session.
References rtp_session_t::ptv, rtp_source_destroy(), rtp_session_t::srcc, and rtp_session_t::srcv.
|
static |
Initializes a new RTP source within an RTP session.
References rtp_source_t::bad_seq, rtp_source_t::blocks, rtp_pt_t::init, rtp_source_t::jitter, rtp_source_t::last_seq, rtp_source_t::max_seq, msg_Dbg, rtp_source_t::opaque, rtp_session_t::ptc, rtp_session_t::ptv, rtp_source_t::ref_ntp, rtp_source_t::ref_rtp, and rtp_source_t::ssrc.
Referenced by rtp_queue().
|
static |
Destroys an RTP source and its associated streams.
References block_ChainRelease(), rtp_source_t::blocks, rtp_pt_t::destroy, msg_Dbg, rtp_source_t::opaque, rtp_session_t::ptc, rtp_session_t::ptv, and rtp_source_t::ssrc.
Referenced by rtp_queue(), and rtp_session_destroy().
|
inlinestatic |
References GetDWBE, block_t::i_buffer, and block_t::p_buffer.
Referenced by rtp_decode(), and rtp_queue().