annotate rtsp.h @ 5843:777a89fdb1c0 libavformat

RTSP: Synchronize the start time of the chained RTP muxers This makes sure that the streams get correctly synchronized when viewed, previously the streams were out of sync by as much time as it took between the initialization of the individual muxers.
author mstorsjo
date Mon, 15 Mar 2010 14:20:07 +0000
parents 982edb9135ca
children 7512694b0515
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
1 /*
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
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
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
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
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
8 * modify it under the terms of the GNU Lesser General Public
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
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
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
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
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
15 * Lesser General Public License for more details.
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
16 *
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
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
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
20 */
5104
4c39baa3dfbf Use globally consistent include guard names.
stefano
parents: 5013
diff changeset
21 #ifndef AVFORMAT_RTSP_H
4c39baa3dfbf Use globally consistent include guard names.
stefano
parents: 5013
diff changeset
22 #define AVFORMAT_RTSP_H
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
23
2171
a6d6b2b19341 include all prerequisites in header files
mru
parents: 2048
diff changeset
24 #include <stdint.h>
a6d6b2b19341 include all prerequisites in header files
mru
parents: 2048
diff changeset
25 #include "avformat.h"
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
26 #include "rtspcodes.h"
4388
80f21f72d7d6 Split rtp.h in rtp.h, rtpdec.h, and rtpenc.h
lucabe
parents: 4386
diff changeset
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
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
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
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
38 };
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
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
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
51 #define RTSP_DEFAULT_PORT 554
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
52 #define RTSP_MAX_TRANSPORTS 8
179
43ac45200138 suppressed RTSP abort hack - added PLAY/PAUSE
bellard
parents: 65
diff changeset
53 #define RTSP_TCP_MAX_PACKET_SIZE 1472
774
820863425158 RTP/RTSP and MPEG4-AAC audio
michael
parents: 304
diff changeset
54 #define RTSP_DEFAULT_NB_AUDIO_CHANNELS 2
820863425158 RTP/RTSP and MPEG4-AAC audio
michael
parents: 304
diff changeset
55 #define RTSP_DEFAULT_AUDIO_SAMPLERATE 44100
820863425158 RTP/RTSP and MPEG4-AAC audio
michael
parents: 304
diff changeset
56 #define RTSP_RTP_PORT_MIN 5000
820863425158 RTP/RTSP and MPEG4-AAC audio
michael
parents: 304
diff changeset
57 #define RTSP_RTP_PORT_MAX 10000
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
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
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
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
50ad5902d797 Doxygenize comments in rtsp.h
takis
parents: 1870
diff changeset
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
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
96 } RTSPTransportField;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
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
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
103 int content_length;
4588
e1a5b4f5b9be Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents: 4557
diff changeset
104
1871
50ad5902d797 Doxygenize comments in rtsp.h
takis
parents: 1870
diff changeset
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
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
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
da1d5db0ce5c COSMETICS: Remove all trailing whitespace.
diego
parents: 774
diff changeset
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
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
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
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
122 char session_id[512];
4588
e1a5b4f5b9be Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents: 4557
diff changeset
123
5333
715913c5514f Support 3xx redirection in rtsp
lu_zero
parents: 5220
diff changeset
124 /** the "Location:" field. This value is used to handle redirection.
715913c5514f Support 3xx redirection in rtsp
lu_zero
parents: 5220
diff changeset
125 */
715913c5514f Support 3xx redirection in rtsp
lu_zero
parents: 5220
diff changeset
126 char location[4096];
715913c5514f Support 3xx redirection in rtsp
lu_zero
parents: 5220
diff changeset
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
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
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
43d99d0e12e0 Support seeking as defined by the rfc
lu_zero
parents: 5006
diff changeset
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
89d38f054035 Fix doxy comments missing one '*'.
rbultje
parents: 4169
diff changeset
172 RTSP_SERVER_REAL, /**< Realmedia-style server */
89d38f054035 Fix doxy comments missing one '*'.
rbultje
parents: 4169
diff changeset
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];
5843
777a89fdb1c0 RTSP: Synchronize the start time of the chained RTP muxers
mstorsjo
parents: 5700
diff changeset
274
777a89fdb1c0 RTSP: Synchronize the start time of the chained RTP muxers
mstorsjo
parents: 5700
diff changeset
275 /** The synchronized start time of the output streams. */
777a89fdb1c0 RTSP: Synchronize the start time of the chained RTP muxers
mstorsjo
parents: 5700
diff changeset
276 int64_t start_time;
4168
0ebf63d12ea4 Export RTSPState and RTSPStream from rtsp.c into rtsp.h. This allows future
rbultje
parents: 3960
diff changeset
277 } RTSPState;
0ebf63d12ea4 Export RTSPState and RTSPStream from rtsp.c into rtsp.h. This allows future
rbultje
parents: 3960
diff changeset
278
4588
e1a5b4f5b9be Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents: 4557
diff changeset
279 /**
e1a5b4f5b9be Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents: 4557
diff changeset
280 * 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
281 * 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
282 * 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
283 * (but different codec/bitrate).
e1a5b4f5b9be Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents: 4557
diff changeset
284 */
4168
0ebf63d12ea4 Export RTSPState and RTSPStream from rtsp.c into rtsp.h. This allows future
rbultje
parents: 3960
diff changeset
285 typedef struct RTSPStream {
4588
e1a5b4f5b9be Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents: 4557
diff changeset
286 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
287 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
288
4588
e1a5b4f5b9be Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents: 4557
diff changeset
289 /** 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
290 int stream_index;
e1a5b4f5b9be Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents: 4557
diff changeset
291
e1a5b4f5b9be Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents: 4557
diff changeset
292 /** interleave IDs; copies of RTSPTransportField->interleaved_min/max
e1a5b4f5b9be Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents: 4557
diff changeset
293 * for the selected transport. Only used for TCP. */
e1a5b4f5b9be Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents: 4557
diff changeset
294 int interleaved_min, interleaved_max;
e1a5b4f5b9be Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents: 4557
diff changeset
295
e1a5b4f5b9be Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents: 4557
diff changeset
296 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
297
4588
e1a5b4f5b9be Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents: 4557
diff changeset
298 /** The following are used only in SDP, not RTSP */
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 int sdp_port; /**< port (from SDP content) */
e1a5b4f5b9be Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents: 4557
diff changeset
301 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
302 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
303 int sdp_payload_type; /**< payload type */
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
4588
e1a5b4f5b9be Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents: 4557
diff changeset
306 /** 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
307 * 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
308 * 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
309 RTPPayloadData rtp_payload_data;
e1a5b4f5b9be Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents: 4557
diff changeset
310
e1a5b4f5b9be Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents: 4557
diff changeset
311 /** 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
312 //@{
e1a5b4f5b9be Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents: 4557
diff changeset
313 /** handler structure */
e1a5b4f5b9be Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents: 4557
diff changeset
314 RTPDynamicProtocolHandler *dynamic_handler;
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 /** private data associated with the dynamic protocol */
e1a5b4f5b9be Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents: 4557
diff changeset
317 PayloadContext *dynamic_protocol_context;
e1a5b4f5b9be Document rtsp.h, see "[PATCH] document rtsp.h" thread.
rbultje
parents: 4557
diff changeset
318 //@}
4168
0ebf63d12ea4 Export RTSPState and RTSPStream from rtsp.c into rtsp.h. This allows future
rbultje
parents: 3960
diff changeset
319 } RTSPStream;
0ebf63d12ea4 Export RTSPState and RTSPStream from rtsp.c into rtsp.h. This allows future
rbultje
parents: 3960
diff changeset
320
5697
484fceabfad2 Prefix non-static RTSP functions with ff_.
rbultje
parents: 5692
diff changeset
321 void ff_rtsp_parse_line(RTSPMessageHeader *reply, const char *buf);
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
322
2884
e6e7ba123447 Drop RTSP default protocol.
diego
parents: 2620
diff changeset
323 #if LIBAVFORMAT_VERSION_INT < (53 << 16)
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
324 extern int rtsp_default_protocols;
2884
e6e7ba123447 Drop RTSP default protocol.
diego
parents: 2620
diff changeset
325 #endif
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
326 extern int rtsp_rtp_port_min;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
327 extern int rtsp_rtp_port_max;
179
43ac45200138 suppressed RTSP abort hack - added PLAY/PAUSE
bellard
parents: 65
diff changeset
328
5692
87b26ad577c5 Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents: 5688
diff changeset
329 /**
87b26ad577c5 Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents: 5688
diff changeset
330 * 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
331 *
87b26ad577c5 Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents: 5688
diff changeset
332 * @param s RTSP (de)muxer context
87b26ad577c5 Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents: 5688
diff changeset
333 * @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
334 * @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
335 * @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
336 * send_content is null
87b26ad577c5 Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents: 5688
diff changeset
337 */
5697
484fceabfad2 Prefix non-static RTSP functions with ff_.
rbultje
parents: 5692
diff changeset
338 void ff_rtsp_send_cmd_with_content_async(AVFormatContext *s,
5700
982edb9135ca Cosmetics: reindent
mstorsjo
parents: 5697
diff changeset
339 const char *cmd,
982edb9135ca Cosmetics: reindent
mstorsjo
parents: 5697
diff changeset
340 const unsigned char *send_content,
982edb9135ca Cosmetics: reindent
mstorsjo
parents: 5697
diff changeset
341 int send_content_length);
5692
87b26ad577c5 Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents: 5688
diff changeset
342 /**
87b26ad577c5 Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents: 5688
diff changeset
343 * 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
344 *
87b26ad577c5 Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents: 5688
diff changeset
345 * @see rtsp_send_cmd_with_content_async
87b26ad577c5 Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents: 5688
diff changeset
346 */
5697
484fceabfad2 Prefix non-static RTSP functions with ff_.
rbultje
parents: 5692
diff changeset
347 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
348
87b26ad577c5 Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents: 5688
diff changeset
349 /**
87b26ad577c5 Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents: 5688
diff changeset
350 * 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
351 *
87b26ad577c5 Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents: 5688
diff changeset
352 * @param s RTSP (de)muxer context
87b26ad577c5 Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents: 5688
diff changeset
353 * @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
354 * @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
355 * @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
356 * be stored (length is in reply)
87b26ad577c5 Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents: 5688
diff changeset
357 * @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
358 * @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
359 * send_content is null
87b26ad577c5 Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents: 5688
diff changeset
360 */
5697
484fceabfad2 Prefix non-static RTSP functions with ff_.
rbultje
parents: 5692
diff changeset
361 void ff_rtsp_send_cmd_with_content(AVFormatContext *s,
5700
982edb9135ca Cosmetics: reindent
mstorsjo
parents: 5697
diff changeset
362 const char *cmd,
982edb9135ca Cosmetics: reindent
mstorsjo
parents: 5697
diff changeset
363 RTSPMessageHeader *reply,
982edb9135ca Cosmetics: reindent
mstorsjo
parents: 5697
diff changeset
364 unsigned char **content_ptr,
982edb9135ca Cosmetics: reindent
mstorsjo
parents: 5697
diff changeset
365 const unsigned char *send_content,
982edb9135ca Cosmetics: reindent
mstorsjo
parents: 5697
diff changeset
366 int send_content_length);
5692
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 /**
87b26ad577c5 Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents: 5688
diff changeset
369 * 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
370 *
87b26ad577c5 Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents: 5688
diff changeset
371 * @see rtsp_send_cmd_with_content
87b26ad577c5 Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents: 5688
diff changeset
372 */
5697
484fceabfad2 Prefix non-static RTSP functions with ff_.
rbultje
parents: 5692
diff changeset
373 void ff_rtsp_send_cmd(AVFormatContext *s, const char *cmd,
5700
982edb9135ca Cosmetics: reindent
mstorsjo
parents: 5697
diff changeset
374 RTSPMessageHeader *reply, unsigned char **content_ptr);
5692
87b26ad577c5 Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents: 5688
diff changeset
375
87b26ad577c5 Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents: 5688
diff changeset
376 /**
87b26ad577c5 Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents: 5688
diff changeset
377 * 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
378 * 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
379 * connection as well.
87b26ad577c5 Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents: 5688
diff changeset
380 *
87b26ad577c5 Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents: 5688
diff changeset
381 * @param s RTSP (de)muxer context
87b26ad577c5 Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents: 5688
diff changeset
382 * @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
383 * @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
384 * be stored (length is in reply)
87b26ad577c5 Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents: 5688
diff changeset
385 * @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
386 * encounter a data marker ('$'), which precedes data
87b26ad577c5 Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents: 5688
diff changeset
387 * packets over interleaved TCP/RTSP connections. If this
87b26ad577c5 Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents: 5688
diff changeset
388 * 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
389 * 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
390 * 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
391 * 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
392 * 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
393 *
87b26ad577c5 Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents: 5688
diff changeset
394 * @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
395 * and 0 on success.
87b26ad577c5 Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents: 5688
diff changeset
396 */
5697
484fceabfad2 Prefix non-static RTSP functions with ff_.
rbultje
parents: 5692
diff changeset
397 int ff_rtsp_read_reply(AVFormatContext *s, RTSPMessageHeader *reply,
5700
982edb9135ca Cosmetics: reindent
mstorsjo
parents: 5697
diff changeset
398 unsigned char **content_ptr,
982edb9135ca Cosmetics: reindent
mstorsjo
parents: 5697
diff changeset
399 int return_on_interleaved_data);
5692
87b26ad577c5 Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents: 5688
diff changeset
400
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 * 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
403 * 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
404 *
87b26ad577c5 Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents: 5688
diff changeset
405 * @param s RTSP (de)muxer context
87b26ad577c5 Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents: 5688
diff changeset
406 *
87b26ad577c5 Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents: 5688
diff changeset
407 * @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
408 * within the function on error.
87b26ad577c5 Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents: 5688
diff changeset
409 */
5697
484fceabfad2 Prefix non-static RTSP functions with ff_.
rbultje
parents: 5692
diff changeset
410 int ff_rtsp_connect(AVFormatContext *s);
5692
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 /**
87b26ad577c5 Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents: 5688
diff changeset
413 * 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
414 *
87b26ad577c5 Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents: 5688
diff changeset
415 * @param s RTSP (de)muxer context
87b26ad577c5 Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents: 5688
diff changeset
416 */
5697
484fceabfad2 Prefix non-static RTSP functions with ff_.
rbultje
parents: 5692
diff changeset
417 void ff_rtsp_close_streams(AVFormatContext *s);
5692
87b26ad577c5 Add declarations and doxygen documentation of generic rtsp support functions
mstorsjo
parents: 5688
diff changeset
418
5104
4c39baa3dfbf Use globally consistent include guard names.
stefano
parents: 5013
diff changeset
419 #endif /* AVFORMAT_RTSP_H */