libavformat/rtpdec.c File Reference

#include "avformat.h"
#include "mpegts.h"
#include "bitstream.h"
#include <unistd.h>
#include "network.h"
#include "rtp_internal.h"
#include "rtp_h264.h"

Go to the source code of this file.

Defines

#define RTP_SEQ_MOD   (1<<16)

Functions

static void 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, rtp_payload_data_t *rtp_payload_data)
 open a new RTP parse context for stream 'st'.
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 RTP_SEQ_MOD   (1<<16)

Definition at line 72 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 54 of file rtpdec.c.

Referenced by av_register_all().

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 361 of file rtpdec.c.

Referenced by rtp_parse_packet().

static void register_dynamic_payload_handler ( RTPDynamicProtocolHandler handler  )  [static]

Definition at line 48 of file rtpdec.c.

Referenced by av_register_rtp_dynamic_payload_handlers().

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

Definition at line 61 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 164 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 87 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 77 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 310 of file rtpdec.c.

Referenced by rtp_parse_packet().

RTPDemuxContext* rtp_parse_open ( AVFormatContext s1,
AVStream st,
URLContext rtpc,
int  payload_type,
rtp_payload_data_t 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_read_header(), and sdp_read_header().

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 401 of file rtpdec.c.

Referenced by rtsp_read_packet().

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

returns 1 if we should handle this packet.

Definition at line 103 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 45 of file rtpdec.c.

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

Definition at line 46 of file rtpdec.c.

Definition at line 43 of file rtpdec.c.

Referenced by sdp_parse_rtpmap().


Generated on Thu Apr 2 07:15:43 2009 for ffmpeg by  doxygen 1.5.6