ffmpeg / libavformat / rtp.h @ 5b21bdab
History | View | Annotate | Download (3.5 KB)
1 |
/*
|
---|---|
2 |
* RTP definitions
|
3 |
* Copyright (c) 2002 Fabrice Bellard.
|
4 |
*
|
5 |
* This file is part of FFmpeg.
|
6 |
*
|
7 |
* FFmpeg is free software; you can redistribute it and/or
|
8 |
* modify it under the terms of the GNU Lesser General Public
|
9 |
* License as published by the Free Software Foundation; either
|
10 |
* version 2.1 of the License, or (at your option) any later version.
|
11 |
*
|
12 |
* FFmpeg is distributed in the hope that it will be useful,
|
13 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
15 |
* Lesser General Public License for more details.
|
16 |
*
|
17 |
* You should have received a copy of the GNU Lesser General Public
|
18 |
* License along with FFmpeg; if not, write to the Free Software
|
19 |
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
20 |
*/
|
21 |
#ifndef FFMPEG_RTP_H
|
22 |
#define FFMPEG_RTP_H
|
23 |
|
24 |
#include "avcodec.h" |
25 |
#include "avformat.h" |
26 |
|
27 |
#define RTP_MIN_PACKET_LENGTH 12 |
28 |
#define RTP_MAX_PACKET_LENGTH 1500 /* XXX: suppress this define */ |
29 |
|
30 |
int rtp_init(void); |
31 |
int rtp_get_codec_info(AVCodecContext *codec, int payload_type); |
32 |
|
33 |
/** return < 0 if unknown payload type */
|
34 |
int rtp_get_payload_type(AVCodecContext *codec);
|
35 |
|
36 |
typedef struct RTPDemuxContext RTPDemuxContext; |
37 |
typedef struct rtp_payload_data_s rtp_payload_data_s; |
38 |
RTPDemuxContext *rtp_parse_open(AVFormatContext *s1, AVStream *st, URLContext *rtpc, int payload_type, rtp_payload_data_s *rtp_payload_data);
|
39 |
int rtp_parse_packet(RTPDemuxContext *s, AVPacket *pkt,
|
40 |
const uint8_t *buf, int len); |
41 |
void rtp_parse_close(RTPDemuxContext *s);
|
42 |
|
43 |
int rtp_get_local_port(URLContext *h);
|
44 |
int rtp_set_remote_url(URLContext *h, const char *uri); |
45 |
void rtp_get_file_handles(URLContext *h, int *prtp_fd, int *prtcp_fd); |
46 |
|
47 |
/**
|
48 |
* some rtp servers assume client is dead if they don't hear from them...
|
49 |
* so we send a Receiver Report to the provided ByteIO context
|
50 |
* (we don't have access to the rtcp handle from here)
|
51 |
*/
|
52 |
int rtp_check_and_send_back_rr(RTPDemuxContext *s, int count); |
53 |
|
54 |
#define RTP_PT_PRIVATE 96 |
55 |
#define RTP_VERSION 2 |
56 |
#define RTP_MAX_SDES 256 /**< maximum text length for SDES */ |
57 |
|
58 |
/* RTCP paquets use 0.5 % of the bandwidth */
|
59 |
#define RTCP_TX_RATIO_NUM 5 |
60 |
#define RTCP_TX_RATIO_DEN 1000 |
61 |
|
62 |
/** Structure listing useful vars to parse RTP packet payload*/
|
63 |
typedef struct rtp_payload_data_s |
64 |
{ |
65 |
int sizelength;
|
66 |
int indexlength;
|
67 |
int indexdeltalength;
|
68 |
int profile_level_id;
|
69 |
int streamtype;
|
70 |
int objecttype;
|
71 |
char *mode;
|
72 |
|
73 |
/** mpeg 4 AU headers */
|
74 |
struct AUHeaders {
|
75 |
int size;
|
76 |
int index;
|
77 |
int cts_flag;
|
78 |
int cts;
|
79 |
int dts_flag;
|
80 |
int dts;
|
81 |
int rap_flag;
|
82 |
int streamstate;
|
83 |
} *au_headers; |
84 |
int nb_au_headers;
|
85 |
int au_headers_length_bytes;
|
86 |
int cur_au_index;
|
87 |
} rtp_payload_data_t; |
88 |
|
89 |
typedef struct AVRtpPayloadType_s |
90 |
{ |
91 |
int pt;
|
92 |
const char enc_name[50]; /* XXX: why 50 ? */ |
93 |
enum CodecType codec_type;
|
94 |
enum CodecID codec_id;
|
95 |
int clock_rate;
|
96 |
int audio_channels;
|
97 |
} AVRtpPayloadType_t; |
98 |
|
99 |
#if 0
|
100 |
typedef enum {
|
101 |
RTCP_SR = 200,
|
102 |
RTCP_RR = 201,
|
103 |
RTCP_SDES = 202,
|
104 |
RTCP_BYE = 203,
|
105 |
RTCP_APP = 204
|
106 |
} rtcp_type_t;
|
107 |
|
108 |
typedef enum {
|
109 |
RTCP_SDES_END = 0,
|
110 |
RTCP_SDES_CNAME = 1,
|
111 |
RTCP_SDES_NAME = 2,
|
112 |
RTCP_SDES_EMAIL = 3,
|
113 |
RTCP_SDES_PHONE = 4,
|
114 |
RTCP_SDES_LOC = 5,
|
115 |
RTCP_SDES_TOOL = 6,
|
116 |
RTCP_SDES_NOTE = 7,
|
117 |
RTCP_SDES_PRIV = 8,
|
118 |
RTCP_SDES_IMG = 9,
|
119 |
RTCP_SDES_DOOR = 10,
|
120 |
RTCP_SDES_SOURCE = 11
|
121 |
} rtcp_sdes_type_t;
|
122 |
#endif
|
123 |
|
124 |
extern AVRtpPayloadType_t AVRtpPayloadTypes[];
|
125 |
#endif /* FFMPEG_RTP_H */ |