Patch by Ryan Martell % rdm4 A martellventures P com % Original thread: Date: Oct 9, 2006 4:55 PM Subject: [Ffmpeg-devel] RTP patches & RFC Actual committed patch: Date: Oct 26, 2006 4:29 PM Originally committed as revision 6798 to svn://svn.ffmpeg.org/ffmpeg/trunkpull/126/head
parent
18fd519f54
commit
4934884a13
6 changed files with 164 additions and 49 deletions
@ -0,0 +1,86 @@ |
|||||||
|
/*
|
||||||
|
* RTP definitions |
||||||
|
* Copyright (c) 2006 Ryan Martell <rdm4@martellventures.com> |
||||||
|
* |
||||||
|
* This library is free software; you can redistribute it and/or |
||||||
|
* modify it under the terms of the GNU Lesser General Public |
||||||
|
* License as published by the Free Software Foundation; either |
||||||
|
* version 2 of the License, or (at your option) any later version. |
||||||
|
* |
||||||
|
* This library is distributed in the hope that it will be useful, |
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
||||||
|
* Lesser General Public License for more details. |
||||||
|
* |
||||||
|
* You should have received a copy of the GNU Lesser General Public |
||||||
|
* License along with this library; if not, write to the Free Software |
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
||||||
|
*/ |
||||||
|
|
||||||
|
// this is a bit of a misnomer, because rtp & rtsp internal structures and prototypes are in here.
|
||||||
|
#ifndef RTP_INTERNAL_H |
||||||
|
#define RTP_INTERNAL_H |
||||||
|
|
||||||
|
typedef int (*DynamicPayloadPacketHandlerProc) (struct RTPDemuxContext * s, |
||||||
|
AVPacket * pkt, |
||||||
|
uint32_t timestamp, |
||||||
|
const uint8_t * buf, |
||||||
|
int len); |
||||||
|
|
||||||
|
typedef struct RTPDynamicProtocolHandler_s { |
||||||
|
// fields from AVRtpDynamicPayloadType_s
|
||||||
|
const char enc_name[50]; /* XXX: still why 50 ? ;-) */ |
||||||
|
enum CodecType codec_type; |
||||||
|
enum CodecID codec_id; |
||||||
|
|
||||||
|
// may be null
|
||||||
|
int (*parse_sdp_a_line) (AVStream * stream, |
||||||
|
void *protocol_data, |
||||||
|
const char *line); ///< Parse the a= line from the sdp field
|
||||||
|
void *(*open) (); ///< allocate any data needed by the rtp parsing for this dynamic data.
|
||||||
|
void (*close)(void *protocol_data); ///< free any data needed by the rtp parsing for this dynamic data.
|
||||||
|
DynamicPayloadPacketHandlerProc parse_packet; ///< parse handler for this dynamic packet.
|
||||||
|
|
||||||
|
struct RTPDynamicProtocolHandler_s *next; |
||||||
|
} RTPDynamicProtocolHandler; |
||||||
|
|
||||||
|
// moved out of rtp.c, because the h264 decoder needs to know about this structure..
|
||||||
|
struct RTPDemuxContext { |
||||||
|
AVFormatContext *ic; |
||||||
|
AVStream *st; |
||||||
|
int payload_type; |
||||||
|
uint32_t ssrc; |
||||||
|
uint16_t seq; |
||||||
|
uint32_t timestamp; |
||||||
|
uint32_t base_timestamp; |
||||||
|
uint32_t cur_timestamp; |
||||||
|
int max_payload_size; |
||||||
|
struct MpegTSContext *ts; /* only used for MP2T payloads */ |
||||||
|
int read_buf_index; |
||||||
|
int read_buf_size; |
||||||
|
|
||||||
|
/* rtcp sender statistics receive */ |
||||||
|
int64_t last_rtcp_ntp_time; // TODO: move into statistics
|
||||||
|
int64_t first_rtcp_ntp_time; // TODO: move into statistics
|
||||||
|
uint32_t last_rtcp_timestamp; // TODO: move into statistics
|
||||||
|
|
||||||
|
/* rtcp sender statistics */ |
||||||
|
unsigned int packet_count; // TODO: move into statistics (outgoing)
|
||||||
|
unsigned int octet_count; // TODO: move into statistics (outgoing)
|
||||||
|
unsigned int last_octet_count; // TODO: move into statistics (outgoing)
|
||||||
|
int first_packet; |
||||||
|
/* buffer for output */ |
||||||
|
uint8_t buf[RTP_MAX_PACKET_LENGTH]; |
||||||
|
uint8_t *buf_ptr; |
||||||
|
|
||||||
|
/* special infos for au headers parsing */ |
||||||
|
rtp_payload_data_t *rtp_payload_data; // TODO: Move into dynamic payload handlers
|
||||||
|
|
||||||
|
/* dynamic payload stuff */ |
||||||
|
DynamicPayloadPacketHandlerProc parse_packet; ///< This is also copied from the dynamic protocol handler structure
|
||||||
|
void *dynamic_protocol_context; ///< This is a copy from the values setup from the sdp parsing, in rtsp.c don't free me.
|
||||||
|
}; |
||||||
|
|
||||||
|
extern RTPDynamicProtocolHandler *RTPFirstDynamicPayloadHandler; |
||||||
|
#endif /* RTP_INTERNAL_H */ |
||||||
|
|
Loading…
Reference in new issue