Mercurial > libavformat.hg
annotate rtsp.h @ 6323:4a52e54b7c12 libavformat
Remove duplicate initialiser for cavsvideo_muxer.extensions
The extensions field was initialised first to "cavs", then to "avs".
The name "cavs" is kept since this is used for the format elsewhere
and "avs" is already used for avisynth files.
author | mru |
---|---|
date | Tue, 27 Jul 2010 08:21:23 +0000 |
parents | 736165b749f8 |
children | c709176da1ad |
rev | line source |
---|---|
0 | 1 /* |
2 * RTSP definitions | |
4251
77e0c7511d41
cosmetics: Remove pointless period after copyright statement non-sentences.
diego
parents:
4171
diff
changeset
|
3 * Copyright (c) 2002 Fabrice Bellard |
0 | 4 * |
1358
0899bfe4105c
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
1167
diff
changeset
|
5 * This file is part of FFmpeg. |
0899bfe4105c
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
1167
diff
changeset
|
6 * |
0899bfe4105c
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
1167
diff
changeset
|
7 * FFmpeg is free software; you can redistribute it and/or |
0 | 8 * modify it under the terms of the GNU Lesser General Public |
9 * License as published by the Free Software Foundation; either | |
1358
0899bfe4105c
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
1167
diff
changeset
|
10 * version 2.1 of the License, or (at your option) any later version. |
0 | 11 * |
1358
0899bfe4105c
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
1167
diff
changeset
|
12 * FFmpeg is distributed in the hope that it will be useful, |
0 | 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 | |
1358
0899bfe4105c
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
1167
diff
changeset
|
18 * License along with FFmpeg; if not, write to the Free Software |
896
edbe5c3717f9
Update licensing information: The FSF changed postal address.
diego
parents:
885
diff
changeset
|
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
0 | 20 */ |
5104 | 21 #ifndef AVFORMAT_RTSP_H |
22 #define AVFORMAT_RTSP_H | |
0 | 23 |
2171 | 24 #include <stdint.h> |
25 #include "avformat.h" | |
0 | 26 #include "rtspcodes.h" |
4388 | 27 #include "rtpdec.h" |
4168
0ebf63d12ea4
Export RTSPState and RTSPStream from rtsp.c into rtsp.h. This allows future
rbultje
parents:
3960
diff
changeset
|
28 #include "network.h" |
5889
4b42835727aa
Make RTSP use the generic http authentication code
mstorsjo
parents:
5888
diff
changeset
|
29 #include "httpauth.h" |
0 | 30 |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
31 /** |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
32 * Network layer over which RTP/etc packet data will be transported. |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
33 */ |
3957
9f943bb755f9
Rename RTSPProtocol to RTSPLowerTransport, so that its name properly tells us
rbultje
parents:
3855
diff
changeset
|
34 enum RTSPLowerTransport { |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
35 RTSP_LOWER_TRANSPORT_UDP = 0, /**< UDP/unicast */ |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
36 RTSP_LOWER_TRANSPORT_TCP = 1, /**< TCP; interleaved in RTSP */ |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
37 RTSP_LOWER_TRANSPORT_UDP_MULTICAST = 2, /**< UDP/multicast */ |
4514
2a84d46427d1
Rename RTSP_*_LAST to RTSP_*_NB in line with PIX_FMT_* in lavc. See "[PATCH]
rbultje
parents:
4512
diff
changeset
|
38 RTSP_LOWER_TRANSPORT_NB |
0 | 39 }; |
40 | |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
41 /** |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
42 * Packet profile of the data that we will be receiving. Real servers |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
43 * commonly send RDT (although they can sometimes send RTP as well), |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
44 * whereas most others will send RTP. |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
45 */ |
4377
8d6f64b2e949
Move enum RTSPTransport up a bit, so that all fields that are assigned a value
rbultje
parents:
4251
diff
changeset
|
46 enum RTSPTransport { |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
47 RTSP_TRANSPORT_RTP, /**< Standards-compliant RTP */ |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
48 RTSP_TRANSPORT_RDT, /**< Realmedia Data Transport */ |
4514
2a84d46427d1
Rename RTSP_*_LAST to RTSP_*_NB in line with PIX_FMT_* in lavc. See "[PATCH]
rbultje
parents:
4512
diff
changeset
|
49 RTSP_TRANSPORT_NB |
4377
8d6f64b2e949
Move enum RTSPTransport up a bit, so that all fields that are assigned a value
rbultje
parents:
4251
diff
changeset
|
50 }; |
8d6f64b2e949
Move enum RTSPTransport up a bit, so that all fields that are assigned a value
rbultje
parents:
4251
diff
changeset
|
51 |
6112 | 52 /** |
53 * Transport mode for the RTSP data. This may be plain, or | |
54 * tunneled, which is done over HTTP. | |
55 */ | |
56 enum RTSPControlTransport { | |
57 RTSP_MODE_PLAIN, /**< Normal RTSP */ | |
58 RTSP_MODE_TUNNEL /**< RTSP over HTTP (tunneling) */ | |
59 }; | |
60 | |
0 | 61 #define RTSP_DEFAULT_PORT 554 |
62 #define RTSP_MAX_TRANSPORTS 8 | |
179 | 63 #define RTSP_TCP_MAX_PACKET_SIZE 1472 |
6070
ac73cfb210dc
Change default number of channels (used if unspecified in the format desc)
rbultje
parents:
5909
diff
changeset
|
64 #define RTSP_DEFAULT_NB_AUDIO_CHANNELS 1 |
774 | 65 #define RTSP_DEFAULT_AUDIO_SAMPLERATE 44100 |
66 #define RTSP_RTP_PORT_MIN 5000 | |
67 #define RTSP_RTP_PORT_MAX 10000 | |
0 | 68 |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
69 /** |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
70 * This describes a single item in the "Transport:" line of one stream as |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
71 * negotiated by the SETUP RTSP command. Multiple transports are comma- |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
72 * separated ("Transport: x-read-rdt/tcp;interleaved=0-1,rtp/avp/udp; |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
73 * client_port=1000-1001;server_port=1800-1801") and described in separate |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
74 * RTSPTransportFields. |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
75 */ |
0 | 76 typedef struct RTSPTransportField { |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
77 /** interleave ids, if TCP transport; each TCP/RTSP data packet starts |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
78 * with a '$', stream length and stream ID. If the stream ID is within |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
79 * the range of this interleaved_min-max, then the packet belongs to |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
80 * this stream. */ |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
81 int interleaved_min, interleaved_max; |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
82 |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
83 /** UDP multicast port range; the ports to which we should connect to |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
84 * receive multicast UDP data. */ |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
85 int port_min, port_max; |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
86 |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
87 /** UDP client ports; these should be the local ports of the UDP RTP |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
88 * (and RTCP) sockets over which we receive RTP/RTCP data. */ |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
89 int client_port_min, client_port_max; |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
90 |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
91 /** UDP unicast server port range; the ports to which we should connect |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
92 * to receive unicast UDP RTP/RTCP data. */ |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
93 int server_port_min, server_port_max; |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
94 |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
95 /** time-to-live value (required for multicast); the amount of HOPs that |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
96 * packets will be allowed to make before being discarded. */ |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
97 int ttl; |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
98 |
1871 | 99 uint32_t destination; /**< destination IP address */ |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
100 |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
101 /** data/packet transport protocol; e.g. RTP or RDT */ |
4377
8d6f64b2e949
Move enum RTSPTransport up a bit, so that all fields that are assigned a value
rbultje
parents:
4251
diff
changeset
|
102 enum RTSPTransport transport; |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
103 |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
104 /** network layer transport protocol; e.g. TCP or UDP uni-/multicast */ |
3957
9f943bb755f9
Rename RTSPProtocol to RTSPLowerTransport, so that its name properly tells us
rbultje
parents:
3855
diff
changeset
|
105 enum RTSPLowerTransport lower_transport; |
0 | 106 } RTSPTransportField; |
107 | |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
108 /** |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
109 * This describes the server response to each RTSP command. |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
110 */ |
4557
bfe6fb676d46
Rename RTSPHeader to RTSPMessageHeader to reflect more clearly what the
rbultje
parents:
4514
diff
changeset
|
111 typedef struct RTSPMessageHeader { |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
112 /** length of the data following this header */ |
0 | 113 int content_length; |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
114 |
1871 | 115 enum RTSPStatusCode status_code; /**< response code from server */ |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
116 |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
117 /** number of items in the 'transports' variable below */ |
0 | 118 int nb_transports; |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
119 |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
120 /** Time range of the streams that the server will stream. In |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
121 * AV_TIME_BASE unit, AV_NOPTS_VALUE if not used */ |
885 | 122 int64_t range_start, range_end; |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
123 |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
124 /** describes the complete "Transport:" line of the server in response |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
125 * to a SETUP RTSP command by the client */ |
0 | 126 RTSPTransportField transports[RTSP_MAX_TRANSPORTS]; |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
127 |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
128 int seq; /**< sequence number */ |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
129 |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
130 /** the "Session:" field. This value is initially set by the server and |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
131 * should be re-transmitted by the client in every RTSP command. */ |
0 | 132 char session_id[512]; |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
133 |
5333 | 134 /** the "Location:" field. This value is used to handle redirection. |
135 */ | |
136 char location[4096]; | |
137 | |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
138 /** the "RealChallenge1:" field from the server */ |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
139 char real_challenge[64]; |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
140 |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
141 /** the "Server: field, which can be used to identify some special-case |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
142 * servers that are not 100% standards-compliant. We use this to identify |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
143 * Windows Media Server, which has a value "WMServer/v.e.r.sion", where |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
144 * version is a sequence of digits (e.g. 9.0.0.3372). Helix/Real servers |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
145 * use something like "Helix [..] Server Version v.e.r.sion (platform) |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
146 * (RealServer compatible)" or "RealServer Version v.e.r.sion (platform)", |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
147 * where platform is the output of $uname -msr | sed 's/ /-/g'. */ |
4169
619845a9bab3
Use the "server" RTSP field to detect whether the server that we're talking
rbultje
parents:
4168
diff
changeset
|
148 char server[64]; |
4877
940946a4569b
Send dummy requests over the TCP connection (WMS wants GET_PARAMETER,
rbultje
parents:
4771
diff
changeset
|
149 |
940946a4569b
Send dummy requests over the TCP connection (WMS wants GET_PARAMETER,
rbultje
parents:
4771
diff
changeset
|
150 /** The "timeout" comes as part of the server response to the "SETUP" |
940946a4569b
Send dummy requests over the TCP connection (WMS wants GET_PARAMETER,
rbultje
parents:
4771
diff
changeset
|
151 * command, in the "Session: <xyz>[;timeout=<value>]" line. It is the |
940946a4569b
Send dummy requests over the TCP connection (WMS wants GET_PARAMETER,
rbultje
parents:
4771
diff
changeset
|
152 * time, in seconds, that the server will go without traffic over the |
940946a4569b
Send dummy requests over the TCP connection (WMS wants GET_PARAMETER,
rbultje
parents:
4771
diff
changeset
|
153 * RTSP/TCP connection before it closes the connection. To prevent |
940946a4569b
Send dummy requests over the TCP connection (WMS wants GET_PARAMETER,
rbultje
parents:
4771
diff
changeset
|
154 * this, sent dummy requests (e.g. OPTIONS) with intervals smaller |
940946a4569b
Send dummy requests over the TCP connection (WMS wants GET_PARAMETER,
rbultje
parents:
4771
diff
changeset
|
155 * than this value. */ |
940946a4569b
Send dummy requests over the TCP connection (WMS wants GET_PARAMETER,
rbultje
parents:
4771
diff
changeset
|
156 int timeout; |
5112
85e0a9761818
Implement support for EOS as used by WMS and other RTSP servers that do not
rbultje
parents:
5111
diff
changeset
|
157 |
85e0a9761818
Implement support for EOS as used by WMS and other RTSP servers that do not
rbultje
parents:
5111
diff
changeset
|
158 /** The "Notice" or "X-Notice" field value. See |
85e0a9761818
Implement support for EOS as used by WMS and other RTSP servers that do not
rbultje
parents:
5111
diff
changeset
|
159 * http://tools.ietf.org/html/draft-stiemerling-rtsp-announce-00 |
85e0a9761818
Implement support for EOS as used by WMS and other RTSP servers that do not
rbultje
parents:
5111
diff
changeset
|
160 * for a complete list of supported values. */ |
85e0a9761818
Implement support for EOS as used by WMS and other RTSP servers that do not
rbultje
parents:
5111
diff
changeset
|
161 int notice; |
4557
bfe6fb676d46
Rename RTSPHeader to RTSPMessageHeader to reflect more clearly what the
rbultje
parents:
4514
diff
changeset
|
162 } RTSPMessageHeader; |
0 | 163 |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
164 /** |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
165 * Client state, i.e. whether we are currently receiving data (PLAYING) or |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
166 * setup-but-not-receiving (PAUSED). State can be changed in applications |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
167 * by calling av_read_play/pause(). |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
168 */ |
4168
0ebf63d12ea4
Export RTSPState and RTSPStream from rtsp.c into rtsp.h. This allows future
rbultje
parents:
3960
diff
changeset
|
169 enum RTSPClientState { |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
170 RTSP_STATE_IDLE, /**< not initialized */ |
5670
7fa188f69c22
Rename RTSP_STATE_PLAYING to _STREAMING, since that better covers the
rbultje
parents:
5574
diff
changeset
|
171 RTSP_STATE_STREAMING, /**< initialized and sending/receiving data */ |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
172 RTSP_STATE_PAUSED, /**< initialized, but not receiving data */ |
5013 | 173 RTSP_STATE_SEEKING, /**< initialized, requesting a seek */ |
4168
0ebf63d12ea4
Export RTSPState and RTSPStream from rtsp.c into rtsp.h. This allows future
rbultje
parents:
3960
diff
changeset
|
174 }; |
0ebf63d12ea4
Export RTSPState and RTSPStream from rtsp.c into rtsp.h. This allows future
rbultje
parents:
3960
diff
changeset
|
175 |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
176 /** |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
177 * Identifies particular servers that require special handling, such as |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
178 * standards-incompliant "Transport:" lines in the SETUP request. |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
179 */ |
4168
0ebf63d12ea4
Export RTSPState and RTSPStream from rtsp.c into rtsp.h. This allows future
rbultje
parents:
3960
diff
changeset
|
180 enum RTSPServerType { |
4171
6af3e7ab7cbb
Fix typo ("Standard-compliant" -> "Standards-compliant"), as noticed by
rbultje
parents:
4170
diff
changeset
|
181 RTSP_SERVER_RTP, /**< Standards-compliant RTP-server */ |
4170 | 182 RTSP_SERVER_REAL, /**< Realmedia-style server */ |
183 RTSP_SERVER_WMS, /**< Windows Media server */ | |
4514
2a84d46427d1
Rename RTSP_*_LAST to RTSP_*_NB in line with PIX_FMT_* in lavc. See "[PATCH]
rbultje
parents:
4512
diff
changeset
|
184 RTSP_SERVER_NB |
4168
0ebf63d12ea4
Export RTSPState and RTSPStream from rtsp.c into rtsp.h. This allows future
rbultje
parents:
3960
diff
changeset
|
185 }; |
0ebf63d12ea4
Export RTSPState and RTSPStream from rtsp.c into rtsp.h. This allows future
rbultje
parents:
3960
diff
changeset
|
186 |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
187 /** |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
188 * Private data for the RTSP demuxer. |
4771
2e0ea6f96564
Add a @todo item to use ByteIOContext instead of URLContext at some point in
rbultje
parents:
4744
diff
changeset
|
189 * |
2e0ea6f96564
Add a @todo item to use ByteIOContext instead of URLContext at some point in
rbultje
parents:
4744
diff
changeset
|
190 * @todo Use ByteIOContext instead of URLContext |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
191 */ |
4168
0ebf63d12ea4
Export RTSPState and RTSPStream from rtsp.c into rtsp.h. This allows future
rbultje
parents:
3960
diff
changeset
|
192 typedef struct RTSPState { |
6131
68fba42e1dea
Cosmetics: Change connexion to connection in code comments
mstorsjo
parents:
6112
diff
changeset
|
193 URLContext *rtsp_hd; /* RTSP TCP connection handle */ |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
194 |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
195 /** number of items in the 'rtsp_streams' variable */ |
4168
0ebf63d12ea4
Export RTSPState and RTSPStream from rtsp.c into rtsp.h. This allows future
rbultje
parents:
3960
diff
changeset
|
196 int nb_rtsp_streams; |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
197 |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
198 struct RTSPStream **rtsp_streams; /**< streams in this session */ |
4168
0ebf63d12ea4
Export RTSPState and RTSPStream from rtsp.c into rtsp.h. This allows future
rbultje
parents:
3960
diff
changeset
|
199 |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
200 /** indicator of whether we are currently receiving data from the |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
201 * server. Basically this isn't more than a simple cache of the |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
202 * last PLAY/PAUSE command sent to the server, to make sure we don't |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
203 * send 2x the same unexpectedly or commands in the wrong state. */ |
4168
0ebf63d12ea4
Export RTSPState and RTSPStream from rtsp.c into rtsp.h. This allows future
rbultje
parents:
3960
diff
changeset
|
204 enum RTSPClientState state; |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
205 |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
206 /** the seek value requested when calling av_seek_frame(). This value |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
207 * is subsequently used as part of the "Range" parameter when emitting |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
208 * the RTSP PLAY command. If we are currently playing, this command is |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
209 * called instantly. If we are currently paused, this command is called |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
210 * whenever we resume playback. Either way, the value is only used once, |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
211 * see rtsp_read_play() and rtsp_read_seek(). */ |
4168
0ebf63d12ea4
Export RTSPState and RTSPStream from rtsp.c into rtsp.h. This allows future
rbultje
parents:
3960
diff
changeset
|
212 int64_t seek_timestamp; |
0ebf63d12ea4
Export RTSPState and RTSPStream from rtsp.c into rtsp.h. This allows future
rbultje
parents:
3960
diff
changeset
|
213 |
0ebf63d12ea4
Export RTSPState and RTSPStream from rtsp.c into rtsp.h. This allows future
rbultje
parents:
3960
diff
changeset
|
214 /* XXX: currently we use unbuffered input */ |
0ebf63d12ea4
Export RTSPState and RTSPStream from rtsp.c into rtsp.h. This allows future
rbultje
parents:
3960
diff
changeset
|
215 // ByteIOContext rtsp_gb; |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
216 |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
217 int seq; /**< RTSP command sequence number */ |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
218 |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
219 /** copy of RTSPMessageHeader->session_id, i.e. the server-provided session |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
220 * identifier that the client should re-transmit in each RTSP command */ |
4168
0ebf63d12ea4
Export RTSPState and RTSPStream from rtsp.c into rtsp.h. This allows future
rbultje
parents:
3960
diff
changeset
|
221 char session_id[512]; |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
222 |
4877
940946a4569b
Send dummy requests over the TCP connection (WMS wants GET_PARAMETER,
rbultje
parents:
4771
diff
changeset
|
223 /** copy of RTSPMessageHeader->timeout, i.e. the time (in seconds) that |
940946a4569b
Send dummy requests over the TCP connection (WMS wants GET_PARAMETER,
rbultje
parents:
4771
diff
changeset
|
224 * the server will go without traffic on the RTSP/TCP line before it |
940946a4569b
Send dummy requests over the TCP connection (WMS wants GET_PARAMETER,
rbultje
parents:
4771
diff
changeset
|
225 * closes the connection. */ |
940946a4569b
Send dummy requests over the TCP connection (WMS wants GET_PARAMETER,
rbultje
parents:
4771
diff
changeset
|
226 int timeout; |
940946a4569b
Send dummy requests over the TCP connection (WMS wants GET_PARAMETER,
rbultje
parents:
4771
diff
changeset
|
227 |
940946a4569b
Send dummy requests over the TCP connection (WMS wants GET_PARAMETER,
rbultje
parents:
4771
diff
changeset
|
228 /** timestamp of the last RTSP command that we sent to the RTSP server. |
940946a4569b
Send dummy requests over the TCP connection (WMS wants GET_PARAMETER,
rbultje
parents:
4771
diff
changeset
|
229 * This is used to calculate when to send dummy commands to keep the |
5006
686de8748c36
Remove '\p', '\c' and '\e' doxygen markup from doxy, as it should
stefano
parents:
4877
diff
changeset
|
230 * connection alive, in conjunction with timeout. */ |
4877
940946a4569b
Send dummy requests over the TCP connection (WMS wants GET_PARAMETER,
rbultje
parents:
4771
diff
changeset
|
231 int64_t last_cmd_time; |
940946a4569b
Send dummy requests over the TCP connection (WMS wants GET_PARAMETER,
rbultje
parents:
4771
diff
changeset
|
232 |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
233 /** the negotiated data/packet transport protocol; e.g. RTP or RDT */ |
4168
0ebf63d12ea4
Export RTSPState and RTSPStream from rtsp.c into rtsp.h. This allows future
rbultje
parents:
3960
diff
changeset
|
234 enum RTSPTransport transport; |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
235 |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
236 /** the negotiated network layer transport protocol; e.g. TCP or UDP |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
237 * uni-/multicast */ |
4168
0ebf63d12ea4
Export RTSPState and RTSPStream from rtsp.c into rtsp.h. This allows future
rbultje
parents:
3960
diff
changeset
|
238 enum RTSPLowerTransport lower_transport; |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
239 |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
240 /** brand of server that we're talking to; e.g. WMS, REAL or other. |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
241 * Detected based on the value of RTSPMessageHeader->server or the presence |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
242 * of RTSPMessageHeader->real_challenge */ |
4168
0ebf63d12ea4
Export RTSPState and RTSPStream from rtsp.c into rtsp.h. This allows future
rbultje
parents:
3960
diff
changeset
|
243 enum RTSPServerType server_type; |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
244 |
5889
4b42835727aa
Make RTSP use the generic http authentication code
mstorsjo
parents:
5888
diff
changeset
|
245 /** plaintext authorization line (username:password) */ |
4b42835727aa
Make RTSP use the generic http authentication code
mstorsjo
parents:
5888
diff
changeset
|
246 char auth[128]; |
4b42835727aa
Make RTSP use the generic http authentication code
mstorsjo
parents:
5888
diff
changeset
|
247 |
4b42835727aa
Make RTSP use the generic http authentication code
mstorsjo
parents:
5888
diff
changeset
|
248 /** authentication state */ |
4b42835727aa
Make RTSP use the generic http authentication code
mstorsjo
parents:
5888
diff
changeset
|
249 HTTPAuthState auth_state; |
5220
cad276e8f96e
RTSP basic authentication, patch originally by Philip Coombes
rbultje
parents:
5112
diff
changeset
|
250 |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
251 /** The last reply of the server to a RTSP command */ |
4168
0ebf63d12ea4
Export RTSPState and RTSPStream from rtsp.c into rtsp.h. This allows future
rbultje
parents:
3960
diff
changeset
|
252 char last_reply[2048]; /* XXX: allocate ? */ |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
253 |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
254 /** RTSPStream->transport_priv of the last stream that we read a |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
255 * packet from */ |
4386
3dbd7fa2c2af
Rename "tx_ctx" and "cur_tx" variables to "transport_priv" and
rbultje
parents:
4381
diff
changeset
|
256 void *cur_transport_priv; |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
257 |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
258 /** The following are used for Real stream selection */ |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
259 //@{ |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
260 /** whether we need to send a "SET_PARAMETER Subscribe:" command */ |
4168
0ebf63d12ea4
Export RTSPState and RTSPStream from rtsp.c into rtsp.h. This allows future
rbultje
parents:
3960
diff
changeset
|
261 int need_subscription; |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
262 |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
263 /** stream setup during the last frame read. This is used to detect if |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
264 * we need to subscribe or unsubscribe to any new streams. */ |
4168
0ebf63d12ea4
Export RTSPState and RTSPStream from rtsp.c into rtsp.h. This allows future
rbultje
parents:
3960
diff
changeset
|
265 enum AVDiscard real_setup_cache[MAX_STREAMS]; |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
266 |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
267 /** the last value of the "SET_PARAMETER Subscribe:" RTSP command. |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
268 * this is used to send the same "Unsubscribe:" if stream setup changed, |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
269 * before sending a new "Subscribe:" command. */ |
4168
0ebf63d12ea4
Export RTSPState and RTSPStream from rtsp.c into rtsp.h. This allows future
rbultje
parents:
3960
diff
changeset
|
270 char last_subscription[1024]; |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
271 //@} |
4744
51899c07a4f1
Add RTP/ASF header parsing, which is part of the SDP of these streams. See
rbultje
parents:
4588
diff
changeset
|
272 |
51899c07a4f1
Add RTP/ASF header parsing, which is part of the SDP of these streams. See
rbultje
parents:
4588
diff
changeset
|
273 /** The following are used for RTP/ASF streams */ |
51899c07a4f1
Add RTP/ASF header parsing, which is part of the SDP of these streams. See
rbultje
parents:
4588
diff
changeset
|
274 //@{ |
51899c07a4f1
Add RTP/ASF header parsing, which is part of the SDP of these streams. See
rbultje
parents:
4588
diff
changeset
|
275 /** ASF demuxer context for the embedded ASF stream from WMS servers */ |
51899c07a4f1
Add RTP/ASF header parsing, which is part of the SDP of these streams. See
rbultje
parents:
4588
diff
changeset
|
276 AVFormatContext *asf_ctx; |
5111
aa0edc246bca
Implement RTSP-MS/ASF packet parsing - this completes RTSP-MS support. See
rbultje
parents:
5104
diff
changeset
|
277 |
aa0edc246bca
Implement RTSP-MS/ASF packet parsing - this completes RTSP-MS support. See
rbultje
parents:
5104
diff
changeset
|
278 /** cache for position of the asf demuxer, since we load a new |
aa0edc246bca
Implement RTSP-MS/ASF packet parsing - this completes RTSP-MS support. See
rbultje
parents:
5104
diff
changeset
|
279 * data packet in the bytecontext for each incoming RTSP packet. */ |
aa0edc246bca
Implement RTSP-MS/ASF packet parsing - this completes RTSP-MS support. See
rbultje
parents:
5104
diff
changeset
|
280 uint64_t asf_pb_pos; |
4744
51899c07a4f1
Add RTP/ASF header parsing, which is part of the SDP of these streams. See
rbultje
parents:
4588
diff
changeset
|
281 //@} |
5574
016f3d4fe56d
Use the control URI from the SDP (if present) rather than the input filename,
rbultje
parents:
5333
diff
changeset
|
282 |
016f3d4fe56d
Use the control URI from the SDP (if present) rather than the input filename,
rbultje
parents:
5333
diff
changeset
|
283 /** some MS RTSP streams contain a URL in the SDP that we need to use |
016f3d4fe56d
Use the control URI from the SDP (if present) rather than the input filename,
rbultje
parents:
5333
diff
changeset
|
284 * for all subsequent RTSP requests, rather than the input URI; in |
016f3d4fe56d
Use the control URI from the SDP (if present) rather than the input filename,
rbultje
parents:
5333
diff
changeset
|
285 * other cases, this is a copy of AVFormatContext->filename. */ |
016f3d4fe56d
Use the control URI from the SDP (if present) rather than the input filename,
rbultje
parents:
5333
diff
changeset
|
286 char control_uri[1024]; |
5843
777a89fdb1c0
RTSP: Synchronize the start time of the chained RTP muxers
mstorsjo
parents:
5700
diff
changeset
|
287 |
777a89fdb1c0
RTSP: Synchronize the start time of the chained RTP muxers
mstorsjo
parents:
5700
diff
changeset
|
288 /** The synchronized start time of the output streams. */ |
777a89fdb1c0
RTSP: Synchronize the start time of the chained RTP muxers
mstorsjo
parents:
5700
diff
changeset
|
289 int64_t start_time; |
6093
e688babd14df
RTSP: Add a second URLContext for outgoing messages
mstorsjo
parents:
6070
diff
changeset
|
290 |
e688babd14df
RTSP: Add a second URLContext for outgoing messages
mstorsjo
parents:
6070
diff
changeset
|
291 /** Additional output handle, used when input and output are done |
e688babd14df
RTSP: Add a second URLContext for outgoing messages
mstorsjo
parents:
6070
diff
changeset
|
292 * separately, eg for HTTP tunneling. */ |
e688babd14df
RTSP: Add a second URLContext for outgoing messages
mstorsjo
parents:
6070
diff
changeset
|
293 URLContext *rtsp_hd_out; |
6112 | 294 |
295 /** RTSP transport mode, such as plain or tunneled. */ | |
296 enum RTSPControlTransport control_transport; | |
4168
0ebf63d12ea4
Export RTSPState and RTSPStream from rtsp.c into rtsp.h. This allows future
rbultje
parents:
3960
diff
changeset
|
297 } RTSPState; |
0ebf63d12ea4
Export RTSPState and RTSPStream from rtsp.c into rtsp.h. This allows future
rbultje
parents:
3960
diff
changeset
|
298 |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
299 /** |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
300 * Describes a single stream, as identified by a single m= line block in the |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
301 * SDP content. In the case of RDT, one RTSPStream can represent multiple |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
302 * AVStreams. In this case, each AVStream in this set has similar content |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
303 * (but different codec/bitrate). |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
304 */ |
4168
0ebf63d12ea4
Export RTSPState and RTSPStream from rtsp.c into rtsp.h. This allows future
rbultje
parents:
3960
diff
changeset
|
305 typedef struct RTSPStream { |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
306 URLContext *rtp_handle; /**< RTP stream handle (if UDP) */ |
5688
7024b420e1a8
Create AVFormatContext objects as private transport for output RTSP sessions
mstorsjo
parents:
5671
diff
changeset
|
307 void *transport_priv; /**< RTP/RDT parse context if input, RTP AVFormatContext if output */ |
4168
0ebf63d12ea4
Export RTSPState and RTSPStream from rtsp.c into rtsp.h. This allows future
rbultje
parents:
3960
diff
changeset
|
308 |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
309 /** corresponding stream index, if any. -1 if none (MPEG2TS case) */ |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
310 int stream_index; |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
311 |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
312 /** interleave IDs; copies of RTSPTransportField->interleaved_min/max |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
313 * for the selected transport. Only used for TCP. */ |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
314 int interleaved_min, interleaved_max; |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
315 |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
316 char control_url[1024]; /**< url for this stream (from SDP) */ |
4168
0ebf63d12ea4
Export RTSPState and RTSPStream from rtsp.c into rtsp.h. This allows future
rbultje
parents:
3960
diff
changeset
|
317 |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
318 /** The following are used only in SDP, not RTSP */ |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
319 //@{ |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
320 int sdp_port; /**< port (from SDP content) */ |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
321 struct in_addr sdp_ip; /**< IP address (from SDP content) */ |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
322 int sdp_ttl; /**< IP Time-To-Live (from SDP content) */ |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
323 int sdp_payload_type; /**< payload type */ |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
324 //@} |
4168
0ebf63d12ea4
Export RTSPState and RTSPStream from rtsp.c into rtsp.h. This allows future
rbultje
parents:
3960
diff
changeset
|
325 |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
326 /** The following are used for dynamic protocols (rtp_*.c/rdt.c) */ |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
327 //@{ |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
328 /** handler structure */ |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
329 RTPDynamicProtocolHandler *dynamic_handler; |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
330 |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
331 /** private data associated with the dynamic protocol */ |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
332 PayloadContext *dynamic_protocol_context; |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
333 //@} |
4168
0ebf63d12ea4
Export RTSPState and RTSPStream from rtsp.c into rtsp.h. This allows future
rbultje
parents:
3960
diff
changeset
|
334 } RTSPStream; |
0ebf63d12ea4
Export RTSPState and RTSPStream from rtsp.c into rtsp.h. This allows future
rbultje
parents:
3960
diff
changeset
|
335 |
5890 | 336 void ff_rtsp_parse_line(RTSPMessageHeader *reply, const char *buf, |
337 HTTPAuthState *auth_state); | |
0 | 338 |
2884 | 339 #if LIBAVFORMAT_VERSION_INT < (53 << 16) |
0 | 340 extern int rtsp_default_protocols; |
2884 | 341 #endif |
0 | 342 extern int rtsp_rtp_port_min; |
343 extern int rtsp_rtp_port_max; | |
179 | 344 |
5692
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
345 /** |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
346 * Send a command to the RTSP server without waiting for the reply. |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
347 * |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
348 * @param s RTSP (de)muxer context |
5888
4ddbc14bc768
Add separate method/url parameters to the rtsp_send_cmd functions
mstorsjo
parents:
5845
diff
changeset
|
349 * @param method the method for the request |
4ddbc14bc768
Add separate method/url parameters to the rtsp_send_cmd functions
mstorsjo
parents:
5845
diff
changeset
|
350 * @param url the target url for the request |
4ddbc14bc768
Add separate method/url parameters to the rtsp_send_cmd functions
mstorsjo
parents:
5845
diff
changeset
|
351 * @param headers extra header lines to include in the request |
5692
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
352 * @param send_content if non-null, the data to send as request body content |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
353 * @param send_content_length the length of the send_content data, or 0 if |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
354 * send_content is null |
6095 | 355 * |
356 * @return zero if success, nonzero otherwise | |
5692
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
357 */ |
6095 | 358 int ff_rtsp_send_cmd_with_content_async(AVFormatContext *s, |
6096 | 359 const char *method, const char *url, |
360 const char *headers, | |
361 const unsigned char *send_content, | |
362 int send_content_length); | |
5692
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
363 /** |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
364 * Send a command to the RTSP server without waiting for the reply. |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
365 * |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
366 * @see rtsp_send_cmd_with_content_async |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
367 */ |
6095 | 368 int ff_rtsp_send_cmd_async(AVFormatContext *s, const char *method, |
6096 | 369 const char *url, const char *headers); |
5692
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
370 |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
371 /** |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
372 * Send a command to the RTSP server and wait for the reply. |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
373 * |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
374 * @param s RTSP (de)muxer context |
5888
4ddbc14bc768
Add separate method/url parameters to the rtsp_send_cmd functions
mstorsjo
parents:
5845
diff
changeset
|
375 * @param method the method for the request |
4ddbc14bc768
Add separate method/url parameters to the rtsp_send_cmd functions
mstorsjo
parents:
5845
diff
changeset
|
376 * @param url the target url for the request |
4ddbc14bc768
Add separate method/url parameters to the rtsp_send_cmd functions
mstorsjo
parents:
5845
diff
changeset
|
377 * @param headers extra header lines to include in the request |
5692
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
378 * @param reply pointer where the RTSP message header will be stored |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
379 * @param content_ptr pointer where the RTSP message body, if any, will |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
380 * be stored (length is in reply) |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
381 * @param send_content if non-null, the data to send as request body content |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
382 * @param send_content_length the length of the send_content data, or 0 if |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
383 * send_content is null |
6095 | 384 * |
385 * @return zero if success, nonzero otherwise | |
5692
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
386 */ |
6095 | 387 int ff_rtsp_send_cmd_with_content(AVFormatContext *s, |
6096 | 388 const char *method, const char *url, |
389 const char *headers, | |
390 RTSPMessageHeader *reply, | |
391 unsigned char **content_ptr, | |
392 const unsigned char *send_content, | |
393 int send_content_length); | |
5692
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
394 |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
395 /** |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
396 * Send a command to the RTSP server and wait for the reply. |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
397 * |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
398 * @see rtsp_send_cmd_with_content |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
399 */ |
6095 | 400 int ff_rtsp_send_cmd(AVFormatContext *s, const char *method, |
6096 | 401 const char *url, const char *headers, |
402 RTSPMessageHeader *reply, unsigned char **content_ptr); | |
5692
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
403 |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
404 /** |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
405 * Read a RTSP message from the server, or prepare to read data |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
406 * packets if we're reading data interleaved over the TCP/RTSP |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
407 * connection as well. |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
408 * |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
409 * @param s RTSP (de)muxer context |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
410 * @param reply pointer where the RTSP message header will be stored |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
411 * @param content_ptr pointer where the RTSP message body, if any, will |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
412 * be stored (length is in reply) |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
413 * @param return_on_interleaved_data whether the function may return if we |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
414 * encounter a data marker ('$'), which precedes data |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
415 * packets over interleaved TCP/RTSP connections. If this |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
416 * is set, this function will return 1 after encountering |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
417 * a '$'. If it is not set, the function will skip any |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
418 * data packets (if they are encountered), until a reply |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
419 * has been fully parsed. If no more data is available |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
420 * without parsing a reply, it will return an error. |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
421 * |
5909 | 422 * @return 1 if a data packets is ready to be received, -1 on error, |
5692
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
423 * and 0 on success. |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
424 */ |
5697 | 425 int ff_rtsp_read_reply(AVFormatContext *s, RTSPMessageHeader *reply, |
5700 | 426 unsigned char **content_ptr, |
427 int return_on_interleaved_data); | |
5692
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
428 |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
429 /** |
5845 | 430 * Skip a RTP/TCP interleaved packet. |
431 */ | |
432 void ff_rtsp_skip_packet(AVFormatContext *s); | |
433 | |
434 /** | |
5692
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
435 * Connect to the RTSP server and set up the individual media streams. |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
436 * This can be used for both muxers and demuxers. |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
437 * |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
438 * @param s RTSP (de)muxer context |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
439 * |
5909 | 440 * @return 0 on success, < 0 on error. Cleans up all allocations done |
5692
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
441 * within the function on error. |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
442 */ |
5697 | 443 int ff_rtsp_connect(AVFormatContext *s); |
5692
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
444 |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
445 /** |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
446 * Close and free all streams within the RTSP (de)muxer |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
447 * |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
448 * @param s RTSP (de)muxer context |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
449 */ |
5697 | 450 void ff_rtsp_close_streams(AVFormatContext *s); |
5692
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
451 |
6093
e688babd14df
RTSP: Add a second URLContext for outgoing messages
mstorsjo
parents:
6070
diff
changeset
|
452 /** |
e688babd14df
RTSP: Add a second URLContext for outgoing messages
mstorsjo
parents:
6070
diff
changeset
|
453 * Close all connection handles within the RTSP (de)muxer |
e688babd14df
RTSP: Add a second URLContext for outgoing messages
mstorsjo
parents:
6070
diff
changeset
|
454 * |
e688babd14df
RTSP: Add a second URLContext for outgoing messages
mstorsjo
parents:
6070
diff
changeset
|
455 * @param rt RTSP (de)muxer context |
e688babd14df
RTSP: Add a second URLContext for outgoing messages
mstorsjo
parents:
6070
diff
changeset
|
456 */ |
e688babd14df
RTSP: Add a second URLContext for outgoing messages
mstorsjo
parents:
6070
diff
changeset
|
457 void ff_rtsp_close_connections(AVFormatContext *rt); |
e688babd14df
RTSP: Add a second URLContext for outgoing messages
mstorsjo
parents:
6070
diff
changeset
|
458 |
5104 | 459 #endif /* AVFORMAT_RTSP_H */ |