23 #ifndef AVFORMAT_RTPDEC_H
24 #define AVFORMAT_RTPDEC_H
35 #define RTP_MIN_PACKET_LENGTH 12
36 #define RTP_MAX_PACKET_LENGTH 8192
38 #define RTP_REORDER_QUEUE_DEFAULT_SIZE 10
40 #define RTP_NOTS_VALUE ((uint32_t)-1)
92 #define RTP_FLAG_KEY 0x1
93 #define RTP_FLAG_MARKER 0x2
203 char *
value,
int value_size);
210 const char *attr,
const char *
value));
int queue_size
The size of queue, or 0 if reordering is disabled.
RTPDynamicProtocolHandler * ff_rtp_handler_find_by_name(const char *name, enum AVMediaType codec_type)
ptrdiff_t const GLvoid * data
int64_t range_start_offset
int prev_ret
Fields for packet reordering.
int64_t last_feedback_time
RTP/JPEG specific private data.
unsigned int last_octet_count
RTPPacket * queue
A sorted queue of buffered packets not yet returned.
static int parse_fmtp(AVFormatContext *s, AVStream *stream, PayloadContext *data, const char *attr, const char *value)
const RTPDynamicProtocolHandler * handler
enum AVMediaType codec_type
int64_t ff_rtp_queued_packet_time(RTPDemuxContext *s)
uint64_t last_rtcp_ntp_time
uint32_t cycles
shifted count of sequence number cycles
enum AVMediaType codec_type
int ff_rtp_send_rtcp_feedback(RTPDemuxContext *s, URLContext *fd, AVIOContext *avio)
PayloadContext * dynamic_protocol_context
uint64_t first_rtcp_ntp_time
uint32_t base_seq
base sequence number
int(* init)(AVFormatContext *s, int st_index, PayloadContext *priv_data)
Initialize dynamic protocol handler, called after the full rtpmap line is parsed, may be null...
int ff_rtp_finalize_packet(AVPacket *pkt, AVIOContext **dyn_buf, int stream_idx)
Close the dynamic buffer and make a packet from it.
static void handler(vbi_event *ev, void *user_data)
int ff_rtsp_next_attr_and_value(const char **p, char *attr, int attr_size, char *value, int value_size)
void(* close)(PayloadContext *protocol_data)
Free any data needed by the rtp parsing for this dynamic data.
uint32_t expected_prior
packets expected in last interval
void ff_rtp_parse_set_dynamic_protocol(RTPDemuxContext *s, PayloadContext *ctx, RTPDynamicProtocolHandler *handler)
AVCodecID
Identify the syntax and semantics of the bitstream.
int probation
sequence packets till source is valid
void ff_register_dynamic_payload_handler(RTPDynamicProtocolHandler *handler)
DynamicPayloadPacketHandlerProc parse_packet
Parse handler for this dynamic packet.
Libavcodec external API header.
uint32_t transit
relative transit time for previous packet
uint32_t jitter
estimated jitter.
int queue_len
The number of packets in queue.
void ff_rtp_reset_packet_queue(RTPDemuxContext *s)
int(* DynamicPayloadPacketHandlerProc)(AVFormatContext *ctx, PayloadContext *s, AVStream *st, AVPacket *pkt, uint32_t *timestamp, const uint8_t *buf, int len, uint16_t seq, int flags)
Packet parsing for "private" payloads in the RTP specs.
int ff_parse_fmtp(AVFormatContext *s, AVStream *stream, PayloadContext *data, const char *p, int(*parse_fmtp)(AVFormatContext *s, AVStream *stream, PayloadContext *data, const char *attr, const char *value))
typedef void(APIENTRY *FF_PFNGLACTIVETEXTUREPROC)(GLenum texture)
GLsizei GLboolean const GLfloat * value
enum AVStreamParseType need_parsing
void ff_register_rtp_dynamic_payload_handlers(void)
int(* parse_sdp_a_line)(AVFormatContext *s, int st_index, PayloadContext *priv_data, const char *line)
Parse the a= line from the sdp field.
RTPDemuxContext * ff_rtp_parse_open(AVFormatContext *s1, AVStream *st, int payload_type, int queue_size)
open a new RTP parse context for stream 'st'.
uint32_t received
packets received
int64_t last_rtcp_reception_time
unsigned int packet_count
int64_t unwrapped_timestamp
uint32_t last_rtcp_timestamp
void ff_rtp_parse_close(RTPDemuxContext *s)
RTPDynamicProtocolHandler * ff_rtp_handler_find_by_id(int id, enum AVMediaType codec_type)
RTPStatistics statistics
Statistics for this stream (used by RTCP receiver reports)
uint32_t received_prior
packets received in last interval
uint32_t bad_seq
last bad sequence number + 1
uint16_t max_seq
highest sequence number seen
void ff_rtp_parse_set_crypto(RTPDemuxContext *s, const char *suite, const char *params)
int ff_rtp_parse_packet(RTPDemuxContext *s, AVPacket *pkt, uint8_t **buf, int len)
Parse an RTP or RTCP packet directly sent as a buffer.
void ff_rtp_send_punch_packets(URLContext *rtp_handle)
Send a dummy packet on both port pairs to set up the connection state in potential NAT routers...
unbuffered private I/O API
int(* need_keyframe)(PayloadContext *context)
int ff_rtp_check_and_send_back_rr(RTPDemuxContext *s, URLContext *fd, AVIOContext *avio, int count)
some rtp servers assume client is dead if they don't hear from them...
This structure stores compressed data.
struct RTPDynamicProtocolHandler * next