libavformat/rtpdec.c File Reference

#include "libavcodec/bitstream.h"
#include "avformat.h"
#include "mpegts.h"
#include <unistd.h>
#include "network.h"
#include "rtpdec.h"
#include "rtp_h264.h"

Go to the source code of this file.

Defines

#define _XOPEN_SOURCE   600
#define RTP_SEQ_MOD   (1<<16)

Functions

void ff_register_dynamic_payload_handler (RTPDynamicProtocolHandler *handler)
void av_register_rtp_dynamic_payload_handlers (void)
static int rtcp_parse_packet (RTPDemuxContext *s, const unsigned char *buf, int len)
static void rtp_init_statistics (RTPStatistics *s, uint16_t base_sequence)
 called on parse open packet
static void rtp_init_sequence (RTPStatistics *s, uint16_t seq)
 called whenever there is a large jump in sequence numbers, or when they get out of probation.
static int rtp_valid_packet_in_sequence (RTPStatistics *s, uint16_t seq)
 returns 1 if we should handle this packet.
int rtp_check_and_send_back_rr (RTPDemuxContext *s, int count)
 some rtp servers assume client is dead if they don't hear from them.
RTPDemuxContextrtp_parse_open (AVFormatContext *s1, AVStream *st, URLContext *rtpc, int payload_type, RTPPayloadData *rtp_payload_data)
 open a new RTP parse context for stream 'st'.
void rtp_parse_set_dynamic_protocol (RTPDemuxContext *s, PayloadContext *ctx, RTPDynamicProtocolHandler *handler)
static int rtp_parse_mp4_au (RTPDemuxContext *s, const uint8_t *buf)
static void finalize_packet (RTPDemuxContext *s, AVPacket *pkt, uint32_t timestamp)
 This was the second switch in rtp_parse packet.
int rtp_parse_packet (RTPDemuxContext *s, AVPacket *pkt, const uint8_t *buf, int len)
 Parse an RTP or RTCP packet directly sent as a buffer.
void rtp_parse_close (RTPDemuxContext *s)

Variables

RTPDynamicProtocolHandlerRTPFirstDynamicPayloadHandler = NULL
static RTPDynamicProtocolHandler mp4v_es_handler = {"MP4V-ES", CODEC_TYPE_VIDEO, CODEC_ID_MPEG4}
static RTPDynamicProtocolHandler mpeg4_generic_handler = {"mpeg4-generic", CODEC_TYPE_AUDIO, CODEC_ID_AAC}


Define Documentation

#define _XOPEN_SOURCE   600

Definition at line 23 of file rtpdec.c.

#define RTP_SEQ_MOD   (1<<16)

Definition at line 76 of file rtpdec.c.

Referenced by rtp_init_sequence(), and rtp_valid_packet_in_sequence().


Function Documentation

void av_register_rtp_dynamic_payload_handlers ( void   ) 

Definition at line 58 of file rtpdec.c.

Referenced by av_register_all().

void ff_register_dynamic_payload_handler ( RTPDynamicProtocolHandler handler  ) 

static void finalize_packet ( RTPDemuxContext s,
AVPacket pkt,
uint32_t  timestamp 
) [static]

This was the second switch in rtp_parse packet.

Normalizes time, if required, sets stream_index, etc.

Definition at line 373 of file rtpdec.c.

Referenced by rtp_parse_packet().

static int rtcp_parse_packet ( RTPDemuxContext s,
const unsigned char *  buf,
int  len 
) [static]

Definition at line 65 of file rtpdec.c.

Referenced by rtp_parse_packet().

int rtp_check_and_send_back_rr ( RTPDemuxContext s,
int  count 
)

some rtp servers assume client is dead if they don't hear from them.

.. so we send a Receiver Report to the provided ByteIO context (we don't have access to the rtcp handle from here)

Definition at line 168 of file rtpdec.c.

Referenced by rtsp_read_packet().

static void rtp_init_sequence ( RTPStatistics s,
uint16_t  seq 
) [static]

called whenever there is a large jump in sequence numbers, or when they get out of probation.

..

Definition at line 91 of file rtpdec.c.

Referenced by rtp_valid_packet_in_sequence().

static void rtp_init_statistics ( RTPStatistics s,
uint16_t  base_sequence 
) [static]

called on parse open packet

Definition at line 81 of file rtpdec.c.

Referenced by rtp_parse_open().

void rtp_parse_close ( RTPDemuxContext s  ) 

Definition at line 545 of file rtpdec.c.

Referenced by rtsp_close_streams().

static int rtp_parse_mp4_au ( RTPDemuxContext s,
const uint8_t *  buf 
) [static]

Definition at line 322 of file rtpdec.c.

Referenced by rtp_parse_packet().

RTPDemuxContext* rtp_parse_open ( AVFormatContext s1,
AVStream st,
URLContext rtpc,
int  payload_type,
RTPPayloadData rtp_payload_data 
)

open a new RTP parse context for stream 'st'.

'st' can be NULL for MPEG2TS streams to indicate that they should be demuxed inside the rtp demux (otherwise CODEC_ID_MPEG2TS packets are returned) TODO: change this to not take rtp_payload data, and use the new dynamic payload system.

Definition at line 270 of file rtpdec.c.

Referenced by rtsp_open_transport_ctx().

int rtp_parse_packet ( RTPDemuxContext s,
AVPacket pkt,
const uint8_t *  buf,
int  len 
)

Parse an RTP or RTCP packet directly sent as a buffer.

Parameters:
s RTP parse context.
pkt returned packet
buf input buffer or NULL to read the next packets
len buffer len
Returns:
0 if a packet is returned, 1 if a packet is returned and more can follow (use buf as NULL to read the next). -1 if no packet (error or no more packet).

< Should not be used if buf is NULL, but should be set to the timestamp of the packet returned....

Definition at line 397 of file rtpdec.c.

Referenced by rtsp_read_packet().

void rtp_parse_set_dynamic_protocol ( RTPDemuxContext s,
PayloadContext ctx,
RTPDynamicProtocolHandler handler 
)

Definition at line 315 of file rtpdec.c.

Referenced by rtsp_open_transport_ctx().

static int rtp_valid_packet_in_sequence ( RTPStatistics s,
uint16_t  seq 
) [static]

returns 1 if we should handle this packet.

Definition at line 107 of file rtpdec.c.

Referenced by rtp_parse_packet().


Variable Documentation

RTPDynamicProtocolHandler mp4v_es_handler = {"MP4V-ES", CODEC_TYPE_VIDEO, CODEC_ID_MPEG4} [static]

Definition at line 49 of file rtpdec.c.

RTPDynamicProtocolHandler mpeg4_generic_handler = {"mpeg4-generic", CODEC_TYPE_AUDIO, CODEC_ID_AAC} [static]

Definition at line 50 of file rtpdec.c.

Definition at line 47 of file rtpdec.c.

Referenced by sdp_parse_rtpmap().


Generated on Fri Oct 26 02:35:46 2012 for FFmpeg by  doxygen 1.5.8