Mercurial > libavformat.hg
annotate rtsp.h @ 5836:2997c88028cd libavformat
Move the probe loop from av_open_input_file() into its own method
av_probe_input_buffer() so that it can be reused. Here are a few
differences to the original way things were probed:
- maximum probe buffer size can be specified as a parameter.
- offset within the stream to probe from can be specified as a parameter.
- instead of seeking back to the start each time a probe fails, stream
data is appended to the reallocated buffer. This lowers the amount
of data read from the stream (there is no repetition) and results in
fewer closed and reopened streams (when seeking fails).
New attempt after r22296, which was revert in r22315 due to a FATE
failure.
See the thread:
Subject: [FFmpeg-devel] [PATCH] Move av_open_input_file probe loop to its own method
Date: 2010-03-05 03:23:57 GMT
Patch by Micah F. Galizia printf("%s%s@%s.%s", "micah", "galizia", "gmail", "com").
author | stefano |
---|---|
date | Sun, 14 Mar 2010 22:40:16 +0000 |
parents | 982edb9135ca |
children | 777a89fdb1c0 |
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" |
0 | 29 |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
30 /** |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
31 * 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
|
32 */ |
3957
9f943bb755f9
Rename RTSPProtocol to RTSPLowerTransport, so that its name properly tells us
rbultje
parents:
3855
diff
changeset
|
33 enum RTSPLowerTransport { |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
34 RTSP_LOWER_TRANSPORT_UDP = 0, /**< UDP/unicast */ |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
35 RTSP_LOWER_TRANSPORT_TCP = 1, /**< TCP; interleaved in RTSP */ |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
36 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
|
37 RTSP_LOWER_TRANSPORT_NB |
0 | 38 }; |
39 | |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
40 /** |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
41 * 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
|
42 * 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
|
43 * whereas most others will send RTP. |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
44 */ |
4377
8d6f64b2e949
Move enum RTSPTransport up a bit, so that all fields that are assigned a value
rbultje
parents:
4251
diff
changeset
|
45 enum RTSPTransport { |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
46 RTSP_TRANSPORT_RTP, /**< Standards-compliant RTP */ |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
47 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
|
48 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
|
49 }; |
8d6f64b2e949
Move enum RTSPTransport up a bit, so that all fields that are assigned a value
rbultje
parents:
4251
diff
changeset
|
50 |
0 | 51 #define RTSP_DEFAULT_PORT 554 |
52 #define RTSP_MAX_TRANSPORTS 8 | |
179 | 53 #define RTSP_TCP_MAX_PACKET_SIZE 1472 |
774 | 54 #define RTSP_DEFAULT_NB_AUDIO_CHANNELS 2 |
55 #define RTSP_DEFAULT_AUDIO_SAMPLERATE 44100 | |
56 #define RTSP_RTP_PORT_MIN 5000 | |
57 #define RTSP_RTP_PORT_MAX 10000 | |
0 | 58 |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
59 /** |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
60 * 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
|
61 * 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
|
62 * 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
|
63 * 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
|
64 * RTSPTransportFields. |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
65 */ |
0 | 66 typedef struct RTSPTransportField { |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
67 /** 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
|
68 * 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
|
69 * 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
|
70 * this stream. */ |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
71 int interleaved_min, interleaved_max; |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
72 |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
73 /** 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
|
74 * receive multicast UDP data. */ |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
75 int port_min, port_max; |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
76 |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
77 /** 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
|
78 * (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
|
79 int client_port_min, client_port_max; |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
80 |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
81 /** 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
|
82 * to receive unicast UDP RTP/RTCP data. */ |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
83 int server_port_min, server_port_max; |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
84 |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
85 /** 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
|
86 * packets will be allowed to make before being discarded. */ |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
87 int ttl; |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
88 |
1871 | 89 uint32_t destination; /**< destination IP address */ |
4588
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 /** 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
|
92 enum RTSPTransport transport; |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
93 |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
94 /** 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
|
95 enum RTSPLowerTransport lower_transport; |
0 | 96 } RTSPTransportField; |
97 | |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
98 /** |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
99 * This describes the server response to each RTSP command. |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
100 */ |
4557
bfe6fb676d46
Rename RTSPHeader to RTSPMessageHeader to reflect more clearly what the
rbultje
parents:
4514
diff
changeset
|
101 typedef struct RTSPMessageHeader { |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
102 /** length of the data following this header */ |
0 | 103 int content_length; |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
104 |
1871 | 105 enum RTSPStatusCode status_code; /**< response code from server */ |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
106 |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
107 /** number of items in the 'transports' variable below */ |
0 | 108 int nb_transports; |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
109 |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
110 /** 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
|
111 * AV_TIME_BASE unit, AV_NOPTS_VALUE if not used */ |
885 | 112 int64_t range_start, range_end; |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
113 |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
114 /** 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
|
115 * to a SETUP RTSP command by the client */ |
0 | 116 RTSPTransportField transports[RTSP_MAX_TRANSPORTS]; |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
117 |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
118 int seq; /**< sequence number */ |
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 /** 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
|
121 * should be re-transmitted by the client in every RTSP command. */ |
0 | 122 char session_id[512]; |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
123 |
5333 | 124 /** the "Location:" field. This value is used to handle redirection. |
125 */ | |
126 char location[4096]; | |
127 | |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
128 /** the "RealChallenge1:" field from the server */ |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
129 char real_challenge[64]; |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
130 |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
131 /** 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
|
132 * 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
|
133 * 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
|
134 * 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
|
135 * 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
|
136 * (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
|
137 * 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
|
138 char server[64]; |
4877
940946a4569b
Send dummy requests over the TCP connection (WMS wants GET_PARAMETER,
rbultje
parents:
4771
diff
changeset
|
139 |
940946a4569b
Send dummy requests over the TCP connection (WMS wants GET_PARAMETER,
rbultje
parents:
4771
diff
changeset
|
140 /** 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
|
141 * 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
|
142 * 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
|
143 * 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
|
144 * 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
|
145 * than this value. */ |
940946a4569b
Send dummy requests over the TCP connection (WMS wants GET_PARAMETER,
rbultje
parents:
4771
diff
changeset
|
146 int timeout; |
5112
85e0a9761818
Implement support for EOS as used by WMS and other RTSP servers that do not
rbultje
parents:
5111
diff
changeset
|
147 |
85e0a9761818
Implement support for EOS as used by WMS and other RTSP servers that do not
rbultje
parents:
5111
diff
changeset
|
148 /** 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
|
149 * 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
|
150 * 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
|
151 int notice; |
4557
bfe6fb676d46
Rename RTSPHeader to RTSPMessageHeader to reflect more clearly what the
rbultje
parents:
4514
diff
changeset
|
152 } RTSPMessageHeader; |
0 | 153 |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
154 /** |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
155 * 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
|
156 * 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
|
157 * by calling av_read_play/pause(). |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
158 */ |
4168
0ebf63d12ea4
Export RTSPState and RTSPStream from rtsp.c into rtsp.h. This allows future
rbultje
parents:
3960
diff
changeset
|
159 enum RTSPClientState { |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
160 RTSP_STATE_IDLE, /**< not initialized */ |
5670
7fa188f69c22
Rename RTSP_STATE_PLAYING to _STREAMING, since that better covers the
rbultje
parents:
5574
diff
changeset
|
161 RTSP_STATE_STREAMING, /**< initialized and sending/receiving data */ |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
162 RTSP_STATE_PAUSED, /**< initialized, but not receiving data */ |
5013 | 163 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
|
164 }; |
0ebf63d12ea4
Export RTSPState and RTSPStream from rtsp.c into rtsp.h. This allows future
rbultje
parents:
3960
diff
changeset
|
165 |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
166 /** |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
167 * Identifies particular servers that require special handling, such as |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
168 * standards-incompliant "Transport:" lines in the SETUP request. |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
169 */ |
4168
0ebf63d12ea4
Export RTSPState and RTSPStream from rtsp.c into rtsp.h. This allows future
rbultje
parents:
3960
diff
changeset
|
170 enum RTSPServerType { |
4171
6af3e7ab7cbb
Fix typo ("Standard-compliant" -> "Standards-compliant"), as noticed by
rbultje
parents:
4170
diff
changeset
|
171 RTSP_SERVER_RTP, /**< Standards-compliant RTP-server */ |
4170 | 172 RTSP_SERVER_REAL, /**< Realmedia-style server */ |
173 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
|
174 RTSP_SERVER_NB |
4168
0ebf63d12ea4
Export RTSPState and RTSPStream from rtsp.c into rtsp.h. This allows future
rbultje
parents:
3960
diff
changeset
|
175 }; |
0ebf63d12ea4
Export RTSPState and RTSPStream from rtsp.c into rtsp.h. This allows future
rbultje
parents:
3960
diff
changeset
|
176 |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
177 /** |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
178 * 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
|
179 * |
2e0ea6f96564
Add a @todo item to use ByteIOContext instead of URLContext at some point in
rbultje
parents:
4744
diff
changeset
|
180 * @todo Use ByteIOContext instead of URLContext |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
181 */ |
4168
0ebf63d12ea4
Export RTSPState and RTSPStream from rtsp.c into rtsp.h. This allows future
rbultje
parents:
3960
diff
changeset
|
182 typedef struct RTSPState { |
0ebf63d12ea4
Export RTSPState and RTSPStream from rtsp.c into rtsp.h. This allows future
rbultje
parents:
3960
diff
changeset
|
183 URLContext *rtsp_hd; /* RTSP TCP connexion handle */ |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
184 |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
185 /** 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
|
186 int nb_rtsp_streams; |
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 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
|
189 |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
190 /** 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
|
191 * 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
|
192 * 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
|
193 * 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
|
194 enum RTSPClientState state; |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
195 |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
196 /** 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
|
197 * 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
|
198 * 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
|
199 * 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
|
200 * 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
|
201 * 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
|
202 int64_t seek_timestamp; |
0ebf63d12ea4
Export RTSPState and RTSPStream from rtsp.c into rtsp.h. This allows future
rbultje
parents:
3960
diff
changeset
|
203 |
0ebf63d12ea4
Export RTSPState and RTSPStream from rtsp.c into rtsp.h. This allows future
rbultje
parents:
3960
diff
changeset
|
204 /* 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
|
205 // ByteIOContext rtsp_gb; |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
206 |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
207 int seq; /**< RTSP command sequence number */ |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
208 |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
209 /** 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
|
210 * 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
|
211 char session_id[512]; |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
212 |
4877
940946a4569b
Send dummy requests over the TCP connection (WMS wants GET_PARAMETER,
rbultje
parents:
4771
diff
changeset
|
213 /** 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
|
214 * 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
|
215 * closes the connection. */ |
940946a4569b
Send dummy requests over the TCP connection (WMS wants GET_PARAMETER,
rbultje
parents:
4771
diff
changeset
|
216 int timeout; |
940946a4569b
Send dummy requests over the TCP connection (WMS wants GET_PARAMETER,
rbultje
parents:
4771
diff
changeset
|
217 |
940946a4569b
Send dummy requests over the TCP connection (WMS wants GET_PARAMETER,
rbultje
parents:
4771
diff
changeset
|
218 /** 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
|
219 * 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
|
220 * connection alive, in conjunction with timeout. */ |
4877
940946a4569b
Send dummy requests over the TCP connection (WMS wants GET_PARAMETER,
rbultje
parents:
4771
diff
changeset
|
221 int64_t last_cmd_time; |
940946a4569b
Send dummy requests over the TCP connection (WMS wants GET_PARAMETER,
rbultje
parents:
4771
diff
changeset
|
222 |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
223 /** 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
|
224 enum RTSPTransport transport; |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
225 |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
226 /** 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
|
227 * uni-/multicast */ |
4168
0ebf63d12ea4
Export RTSPState and RTSPStream from rtsp.c into rtsp.h. This allows future
rbultje
parents:
3960
diff
changeset
|
228 enum RTSPLowerTransport lower_transport; |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
229 |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
230 /** 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
|
231 * 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
|
232 * of RTSPMessageHeader->real_challenge */ |
4168
0ebf63d12ea4
Export RTSPState and RTSPStream from rtsp.c into rtsp.h. This allows future
rbultje
parents:
3960
diff
changeset
|
233 enum RTSPServerType server_type; |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
234 |
5220
cad276e8f96e
RTSP basic authentication, patch originally by Philip Coombes
rbultje
parents:
5112
diff
changeset
|
235 /** base64-encoded authorization lines (username:password) */ |
cad276e8f96e
RTSP basic authentication, patch originally by Philip Coombes
rbultje
parents:
5112
diff
changeset
|
236 char *auth_b64; |
cad276e8f96e
RTSP basic authentication, patch originally by Philip Coombes
rbultje
parents:
5112
diff
changeset
|
237 |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
238 /** 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
|
239 char last_reply[2048]; /* XXX: allocate ? */ |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
240 |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
241 /** 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
|
242 * packet from */ |
4386
3dbd7fa2c2af
Rename "tx_ctx" and "cur_tx" variables to "transport_priv" and
rbultje
parents:
4381
diff
changeset
|
243 void *cur_transport_priv; |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
244 |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
245 /** The following are used for Real stream selection */ |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
246 //@{ |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
247 /** 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
|
248 int need_subscription; |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
249 |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
250 /** 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
|
251 * 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
|
252 enum AVDiscard real_setup_cache[MAX_STREAMS]; |
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 /** 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
|
255 * 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
|
256 * 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
|
257 char last_subscription[1024]; |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
258 //@} |
4744
51899c07a4f1
Add RTP/ASF header parsing, which is part of the SDP of these streams. See
rbultje
parents:
4588
diff
changeset
|
259 |
51899c07a4f1
Add RTP/ASF header parsing, which is part of the SDP of these streams. See
rbultje
parents:
4588
diff
changeset
|
260 /** 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
|
261 //@{ |
51899c07a4f1
Add RTP/ASF header parsing, which is part of the SDP of these streams. See
rbultje
parents:
4588
diff
changeset
|
262 /** 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
|
263 AVFormatContext *asf_ctx; |
5111
aa0edc246bca
Implement RTSP-MS/ASF packet parsing - this completes RTSP-MS support. See
rbultje
parents:
5104
diff
changeset
|
264 |
aa0edc246bca
Implement RTSP-MS/ASF packet parsing - this completes RTSP-MS support. See
rbultje
parents:
5104
diff
changeset
|
265 /** 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
|
266 * 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
|
267 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
|
268 //@} |
5574
016f3d4fe56d
Use the control URI from the SDP (if present) rather than the input filename,
rbultje
parents:
5333
diff
changeset
|
269 |
016f3d4fe56d
Use the control URI from the SDP (if present) rather than the input filename,
rbultje
parents:
5333
diff
changeset
|
270 /** 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
|
271 * 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
|
272 * 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
|
273 char control_uri[1024]; |
4168
0ebf63d12ea4
Export RTSPState and RTSPStream from rtsp.c into rtsp.h. This allows future
rbultje
parents:
3960
diff
changeset
|
274 } RTSPState; |
0ebf63d12ea4
Export RTSPState and RTSPStream from rtsp.c into rtsp.h. This allows future
rbultje
parents:
3960
diff
changeset
|
275 |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
276 /** |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
277 * 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
|
278 * 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
|
279 * 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
|
280 * (but different codec/bitrate). |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
281 */ |
4168
0ebf63d12ea4
Export RTSPState and RTSPStream from rtsp.c into rtsp.h. This allows future
rbultje
parents:
3960
diff
changeset
|
282 typedef struct RTSPStream { |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
283 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
|
284 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
|
285 |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
286 /** 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
|
287 int stream_index; |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
288 |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
289 /** interleave IDs; copies of RTSPTransportField->interleaved_min/max |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
290 * for the selected transport. Only used for TCP. */ |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
291 int interleaved_min, interleaved_max; |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
292 |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
293 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
|
294 |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
295 /** The following are used only in SDP, not RTSP */ |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
296 //@{ |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
297 int sdp_port; /**< port (from SDP content) */ |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
298 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
|
299 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
|
300 int sdp_payload_type; /**< payload type */ |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
301 //@} |
4168
0ebf63d12ea4
Export RTSPState and RTSPStream from rtsp.c into rtsp.h. This allows future
rbultje
parents:
3960
diff
changeset
|
302 |
4588
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
303 /** rtp payload parsing infos from SDP (i.e. mapping between private |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
304 * payload IDs and media-types (string), so that we can derive what |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
305 * type of payload we're dealing with (and how to parse it). */ |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
306 RTPPayloadData rtp_payload_data; |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
307 |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
308 /** 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
|
309 //@{ |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
310 /** handler structure */ |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
311 RTPDynamicProtocolHandler *dynamic_handler; |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
312 |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
313 /** private data associated with the dynamic protocol */ |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
314 PayloadContext *dynamic_protocol_context; |
e1a5b4f5b9be
Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents:
4557
diff
changeset
|
315 //@} |
4168
0ebf63d12ea4
Export RTSPState and RTSPStream from rtsp.c into rtsp.h. This allows future
rbultje
parents:
3960
diff
changeset
|
316 } RTSPStream; |
0ebf63d12ea4
Export RTSPState and RTSPStream from rtsp.c into rtsp.h. This allows future
rbultje
parents:
3960
diff
changeset
|
317 |
5697 | 318 void ff_rtsp_parse_line(RTSPMessageHeader *reply, const char *buf); |
0 | 319 |
2884 | 320 #if LIBAVFORMAT_VERSION_INT < (53 << 16) |
0 | 321 extern int rtsp_default_protocols; |
2884 | 322 #endif |
0 | 323 extern int rtsp_rtp_port_min; |
324 extern int rtsp_rtp_port_max; | |
179 | 325 |
5692
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
326 /** |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
327 * 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
|
328 * |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
329 * @param s RTSP (de)muxer context |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
330 * @param cmd the full first line of the request |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
331 * @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
|
332 * @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
|
333 * send_content is null |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
334 */ |
5697 | 335 void ff_rtsp_send_cmd_with_content_async(AVFormatContext *s, |
5700 | 336 const char *cmd, |
337 const unsigned char *send_content, | |
338 int send_content_length); | |
5692
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
339 /** |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
340 * 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
|
341 * |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
342 * @see rtsp_send_cmd_with_content_async |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
343 */ |
5697 | 344 void ff_rtsp_send_cmd_async(AVFormatContext *s, const char *cmd); |
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 /** |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
347 * 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
|
348 * |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
349 * @param s RTSP (de)muxer context |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
350 * @param cmd the full first line of the request |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
351 * @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
|
352 * @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
|
353 * be stored (length is in reply) |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
354 * @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
|
355 * @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
|
356 * send_content is null |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
357 */ |
5697 | 358 void ff_rtsp_send_cmd_with_content(AVFormatContext *s, |
5700 | 359 const char *cmd, |
360 RTSPMessageHeader *reply, | |
361 unsigned char **content_ptr, | |
362 const unsigned char *send_content, | |
363 int send_content_length); | |
5692
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
364 |
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 * 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
|
367 * |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
368 * @see rtsp_send_cmd_with_content |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
369 */ |
5697 | 370 void ff_rtsp_send_cmd(AVFormatContext *s, const char *cmd, |
5700 | 371 RTSPMessageHeader *reply, unsigned char **content_ptr); |
5692
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
372 |
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 * 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
|
375 * 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
|
376 * connection as well. |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
377 * |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
378 * @param s RTSP (de)muxer context |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
379 * @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
|
380 * @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
|
381 * be stored (length is in reply) |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
382 * @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
|
383 * encounter a data marker ('$'), which precedes data |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
384 * packets over interleaved TCP/RTSP connections. If this |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
385 * 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
|
386 * 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
|
387 * 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
|
388 * 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
|
389 * 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
|
390 * |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
391 * @returns 1 if a data packets is ready to be received, -1 on error, |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
392 * and 0 on success. |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
393 */ |
5697 | 394 int ff_rtsp_read_reply(AVFormatContext *s, RTSPMessageHeader *reply, |
5700 | 395 unsigned char **content_ptr, |
396 int return_on_interleaved_data); | |
5692
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 /** |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
399 * 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
|
400 * 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
|
401 * |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
402 * @param s RTSP (de)muxer context |
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 * @returns 0 on success, < 0 on error. Cleans up all allocations done |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
405 * within the function on error. |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
406 */ |
5697 | 407 int ff_rtsp_connect(AVFormatContext *s); |
5692
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 /** |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
410 * 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
|
411 * |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
412 * @param s RTSP (de)muxer context |
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
413 */ |
5697 | 414 void ff_rtsp_close_streams(AVFormatContext *s); |
5692
87b26ad577c5
Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents:
5688
diff
changeset
|
415 |
5104 | 416 #endif /* AVFORMAT_RTSP_H */ |