| OLD | NEW |
| 1 /* | 1 /* |
| 2 * RTSP definitions | 2 * RTSP definitions |
| 3 * Copyright (c) 2002 Fabrice Bellard | 3 * Copyright (c) 2002 Fabrice Bellard |
| 4 * | 4 * |
| 5 * This file is part of FFmpeg. | 5 * This file is part of FFmpeg. |
| 6 * | 6 * |
| 7 * FFmpeg is free software; you can redistribute it and/or | 7 * FFmpeg is free software; you can redistribute it and/or |
| 8 * modify it under the terms of the GNU Lesser General Public | 8 * modify it under the terms of the GNU Lesser General Public |
| 9 * License as published by the Free Software Foundation; either | 9 * License as published by the Free Software Foundation; either |
| 10 * version 2.1 of the License, or (at your option) any later version. | 10 * version 2.1 of the License, or (at your option) any later version. |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 89 int client_port_min, client_port_max; | 89 int client_port_min, client_port_max; |
| 90 | 90 |
| 91 /** UDP unicast server port range; the ports to which we should connect | 91 /** UDP unicast server port range; the ports to which we should connect |
| 92 * to receive unicast UDP RTP/RTCP data. */ | 92 * to receive unicast UDP RTP/RTCP data. */ |
| 93 int server_port_min, server_port_max; | 93 int server_port_min, server_port_max; |
| 94 | 94 |
| 95 /** time-to-live value (required for multicast); the amount of HOPs that | 95 /** time-to-live value (required for multicast); the amount of HOPs that |
| 96 * packets will be allowed to make before being discarded. */ | 96 * packets will be allowed to make before being discarded. */ |
| 97 int ttl; | 97 int ttl; |
| 98 | 98 |
| 99 uint32_t destination; /**< destination IP address */ | 99 struct sockaddr_storage destination; /**< destination IP address */ |
| 100 char source[INET6_ADDRSTRLEN + 1]; /**< source IP address */ |
| 100 | 101 |
| 101 /** data/packet transport protocol; e.g. RTP or RDT */ | 102 /** data/packet transport protocol; e.g. RTP or RDT */ |
| 102 enum RTSPTransport transport; | 103 enum RTSPTransport transport; |
| 103 | 104 |
| 104 /** network layer transport protocol; e.g. TCP or UDP uni-/multicast */ | 105 /** network layer transport protocol; e.g. TCP or UDP uni-/multicast */ |
| 105 enum RTSPLowerTransport lower_transport; | 106 enum RTSPLowerTransport lower_transport; |
| 106 } RTSPTransportField; | 107 } RTSPTransportField; |
| 107 | 108 |
| 108 /** | 109 /** |
| 109 * This describes the server response to each RTSP command. | 110 * This describes the server response to each RTSP command. |
| (...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 260 * packet from */ | 261 * packet from */ |
| 261 void *cur_transport_priv; | 262 void *cur_transport_priv; |
| 262 | 263 |
| 263 /** The following are used for Real stream selection */ | 264 /** The following are used for Real stream selection */ |
| 264 //@{ | 265 //@{ |
| 265 /** whether we need to send a "SET_PARAMETER Subscribe:" command */ | 266 /** whether we need to send a "SET_PARAMETER Subscribe:" command */ |
| 266 int need_subscription; | 267 int need_subscription; |
| 267 | 268 |
| 268 /** stream setup during the last frame read. This is used to detect if | 269 /** stream setup during the last frame read. This is used to detect if |
| 269 * we need to subscribe or unsubscribe to any new streams. */ | 270 * we need to subscribe or unsubscribe to any new streams. */ |
| 270 enum AVDiscard real_setup_cache[MAX_STREAMS]; | 271 enum AVDiscard *real_setup_cache; |
| 272 |
| 273 /** current stream setup. This is a temporary buffer used to compare |
| 274 * current setup to previous frame setup. */ |
| 275 enum AVDiscard *real_setup; |
| 271 | 276 |
| 272 /** the last value of the "SET_PARAMETER Subscribe:" RTSP command. | 277 /** the last value of the "SET_PARAMETER Subscribe:" RTSP command. |
| 273 * this is used to send the same "Unsubscribe:" if stream setup changed, | 278 * this is used to send the same "Unsubscribe:" if stream setup changed, |
| 274 * before sending a new "Subscribe:" command. */ | 279 * before sending a new "Subscribe:" command. */ |
| 275 char last_subscription[1024]; | 280 char last_subscription[1024]; |
| 276 //@} | 281 //@} |
| 277 | 282 |
| 278 /** The following are used for RTP/ASF streams */ | 283 /** The following are used for RTP/ASF streams */ |
| 279 //@{ | 284 //@{ |
| 280 /** ASF demuxer context for the embedded ASF stream from WMS servers */ | 285 /** ASF demuxer context for the embedded ASF stream from WMS servers */ |
| (...skipping 11 matching lines...) Expand all Loading... |
| 292 | 297 |
| 293 /** The synchronized start time of the output streams. */ | 298 /** The synchronized start time of the output streams. */ |
| 294 int64_t start_time; | 299 int64_t start_time; |
| 295 | 300 |
| 296 /** Additional output handle, used when input and output are done | 301 /** Additional output handle, used when input and output are done |
| 297 * separately, eg for HTTP tunneling. */ | 302 * separately, eg for HTTP tunneling. */ |
| 298 URLContext *rtsp_hd_out; | 303 URLContext *rtsp_hd_out; |
| 299 | 304 |
| 300 /** RTSP transport mode, such as plain or tunneled. */ | 305 /** RTSP transport mode, such as plain or tunneled. */ |
| 301 enum RTSPControlTransport control_transport; | 306 enum RTSPControlTransport control_transport; |
| 307 |
| 308 /* Number of RTCP BYE packets the RTSP session has received. |
| 309 * An EOF is propagated back if nb_byes == nb_streams. |
| 310 * This is reset after a seek. */ |
| 311 int nb_byes; |
| 302 } RTSPState; | 312 } RTSPState; |
| 303 | 313 |
| 304 /** | 314 /** |
| 305 * Describes a single stream, as identified by a single m= line block in the | 315 * Describes a single stream, as identified by a single m= line block in the |
| 306 * SDP content. In the case of RDT, one RTSPStream can represent multiple | 316 * SDP content. In the case of RDT, one RTSPStream can represent multiple |
| 307 * AVStreams. In this case, each AVStream in this set has similar content | 317 * AVStreams. In this case, each AVStream in this set has similar content |
| 308 * (but different codec/bitrate). | 318 * (but different codec/bitrate). |
| 309 */ | 319 */ |
| 310 typedef struct RTSPStream { | 320 typedef struct RTSPStream { |
| 311 URLContext *rtp_handle; /**< RTP stream handle (if UDP) */ | 321 URLContext *rtp_handle; /**< RTP stream handle (if UDP) */ |
| 312 void *transport_priv; /**< RTP/RDT parse context if input, RTP AVFormatConte
xt if output */ | 322 void *transport_priv; /**< RTP/RDT parse context if input, RTP AVFormatConte
xt if output */ |
| 313 | 323 |
| 314 /** corresponding stream index, if any. -1 if none (MPEG2TS case) */ | 324 /** corresponding stream index, if any. -1 if none (MPEG2TS case) */ |
| 315 int stream_index; | 325 int stream_index; |
| 316 | 326 |
| 317 /** interleave IDs; copies of RTSPTransportField->interleaved_min/max | 327 /** interleave IDs; copies of RTSPTransportField->interleaved_min/max |
| 318 * for the selected transport. Only used for TCP. */ | 328 * for the selected transport. Only used for TCP. */ |
| 319 int interleaved_min, interleaved_max; | 329 int interleaved_min, interleaved_max; |
| 320 | 330 |
| 321 char control_url[1024]; /**< url for this stream (from SDP) */ | 331 char control_url[1024]; /**< url for this stream (from SDP) */ |
| 322 | 332 |
| 323 /** The following are used only in SDP, not RTSP */ | 333 /** The following are used only in SDP, not RTSP */ |
| 324 //@{ | 334 //@{ |
| 325 int sdp_port; /**< port (from SDP content) */ | 335 int sdp_port; /**< port (from SDP content) */ |
| 326 struct in_addr sdp_ip; /**< IP address (from SDP content) */ | 336 struct sockaddr_storage sdp_ip; /**< IP address (from SDP content) */ |
| 327 int sdp_ttl; /**< IP Time-To-Live (from SDP content) */ | 337 int sdp_ttl; /**< IP Time-To-Live (from SDP content) */ |
| 328 int sdp_payload_type; /**< payload type */ | 338 int sdp_payload_type; /**< payload type */ |
| 329 //@} | 339 //@} |
| 330 | 340 |
| 331 /** The following are used for dynamic protocols (rtp_*.c/rdt.c) */ | 341 /** The following are used for dynamic protocols (rtp_*.c/rdt.c) */ |
| 332 //@{ | 342 //@{ |
| 333 /** handler structure */ | 343 /** handler structure */ |
| 334 RTPDynamicProtocolHandler *dynamic_handler; | 344 RTPDynamicProtocolHandler *dynamic_handler; |
| 335 | 345 |
| 336 /** private data associated with the dynamic protocol */ | 346 /** private data associated with the dynamic protocol */ |
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 455 void ff_rtsp_close_streams(AVFormatContext *s); | 465 void ff_rtsp_close_streams(AVFormatContext *s); |
| 456 | 466 |
| 457 /** | 467 /** |
| 458 * Close all connection handles within the RTSP (de)muxer | 468 * Close all connection handles within the RTSP (de)muxer |
| 459 * | 469 * |
| 460 * @param rt RTSP (de)muxer context | 470 * @param rt RTSP (de)muxer context |
| 461 */ | 471 */ |
| 462 void ff_rtsp_close_connections(AVFormatContext *rt); | 472 void ff_rtsp_close_connections(AVFormatContext *rt); |
| 463 | 473 |
| 464 #endif /* AVFORMAT_RTSP_H */ | 474 #endif /* AVFORMAT_RTSP_H */ |
| OLD | NEW |