added MPEG2TS support in RTP, SDP and RTSP - replaced fake RTP demux by a specific API
[ffmpeg.git] / libavformat / rtp.h
1 /*
2  * RTP definitions
3  * Copyright (c) 2002 Fabrice Bellard.
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  * Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public
16  * License along with this library; if not, write to the Free Software
17  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18  */
19 #ifndef RTP_H
20 #define RTP_H
21
22 enum RTPPayloadType {
23     RTP_PT_ULAW = 0,
24     RTP_PT_GSM = 3,
25     RTP_PT_G723 = 4,
26     RTP_PT_ALAW = 8,
27     RTP_PT_S16BE_STEREO = 10,
28     RTP_PT_S16BE_MONO = 11,
29     RTP_PT_MPEGAUDIO = 14,
30     RTP_PT_JPEG = 26,
31     RTP_PT_H261 = 31,
32     RTP_PT_MPEGVIDEO = 32,
33     RTP_PT_MPEG2TS = 33,
34     RTP_PT_H263 = 34, /* old H263 encapsulation */
35     RTP_PT_PRIVATE = 96,
36 };
37
38 #define RTP_MIN_PACKET_LENGTH 12
39 #define RTP_MAX_PACKET_LENGTH 1500 /* XXX: suppress this define */
40
41 int rtp_init(void);
42 int rtp_get_codec_info(AVCodecContext *codec, int payload_type);
43 int rtp_get_payload_type(AVCodecContext *codec);
44
45 typedef struct RTPDemuxContext RTPDemuxContext;
46
47 RTPDemuxContext *rtp_parse_open(AVFormatContext *s1, AVStream *st, int payload_type);
48 int rtp_parse_packet(RTPDemuxContext *s, AVPacket *pkt, 
49                      const uint8_t *buf, int len);
50 void rtp_parse_close(RTPDemuxContext *s);
51
52 extern AVOutputFormat rtp_mux;
53 extern AVInputFormat rtp_demux;
54
55 int rtp_get_local_port(URLContext *h);
56 int rtp_set_remote_url(URLContext *h, const char *uri);
57 void rtp_get_file_handles(URLContext *h, int *prtp_fd, int *prtcp_fd);
58
59 extern URLProtocol rtp_protocol;
60
61 #endif /* RTP_H */