Merge commit 'f4d371b9737c0405b3bc46d7ca0c856c0a8616b1'
authorMichael Niedermayer <michaelni@gmx.at>
Thu, 8 Aug 2013 08:41:24 +0000 (10:41 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Thu, 8 Aug 2013 08:41:32 +0000 (10:41 +0200)
* commit 'f4d371b9737c0405b3bc46d7ca0c856c0a8616b1':
  rtsp: Don't include the listen flag in the SDP demuxer flags

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
libavformat/rtsp.c

diff --combined libavformat/rtsp.c
index 5ae429aa515d56fccb987b9c8e8afeb903892454,21b693368b0e2b855113cf96a3247f354b7a7c67..5226b26ae105f8d55ed6ac7b735bb5cdf314b9f6
@@@ -2,24 -2,23 +2,24 @@@
   * RTSP/SDP client
   * Copyright (c) 2002 Fabrice Bellard
   *
 - * This file is part of Libav.
 + * This file is part of FFmpeg.
   *
 - * Libav is free software; you can redistribute it and/or
 + * FFmpeg is free software; you can redistribute it and/or
   * modify it under the terms of the GNU Lesser General Public
   * License as published by the Free Software Foundation; either
   * version 2.1 of the License, or (at your option) any later version.
   *
 - * Libav is distributed in the hope that it will be useful,
 + * FFmpeg is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   * Lesser General Public License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
 - * License along with Libav; if not, write to the Free Software
 + * License along with FFmpeg; if not, write to the Free Software
   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
   */
  
 +#include "libavutil/avassert.h"
  #include "libavutil/base64.h"
  #include "libavutil/avstring.h"
  #include "libavutil/intreadwrite.h"
@@@ -65,8 -64,7 +65,7 @@@
  
  #define RTSP_FLAG_OPTS(name, longname) \
      { name, longname, OFFSET(rtsp_flags), AV_OPT_TYPE_FLAGS, {.i64 = 0}, INT_MIN, INT_MAX, DEC, "rtsp_flags" }, \
-     { "filter_src", "Only receive packets from the negotiated peer IP", 0, AV_OPT_TYPE_CONST, {.i64 = RTSP_FLAG_FILTER_SRC}, 0, 0, DEC, "rtsp_flags" }, \
-     { "listen", "Wait for incoming connections", 0, AV_OPT_TYPE_CONST, {.i64 = RTSP_FLAG_LISTEN}, 0, 0, DEC, "rtsp_flags" }
+     { "filter_src", "Only receive packets from the negotiated peer IP", 0, AV_OPT_TYPE_CONST, {.i64 = RTSP_FLAG_FILTER_SRC}, 0, 0, DEC, "rtsp_flags" }
  
  #define RTSP_MEDIATYPE_OPTS(name, longname) \
      { name, longname, OFFSET(media_type_mask), AV_OPT_TYPE_FLAGS, { .i64 = (1 << (AVMEDIA_TYPE_DATA+1)) - 1 }, INT_MIN, INT_MAX, DEC, "allowed_media_types" }, \
@@@ -86,13 -84,12 +85,14 @@@ const AVOption ff_rtsp_options[] = 
      { "udp_multicast", "UDP multicast", 0, AV_OPT_TYPE_CONST, {.i64 = 1 << RTSP_LOWER_TRANSPORT_UDP_MULTICAST}, 0, 0, DEC, "rtsp_transport" },
      { "http", "HTTP tunneling", 0, AV_OPT_TYPE_CONST, {.i64 = (1 << RTSP_LOWER_TRANSPORT_HTTP)}, 0, 0, DEC, "rtsp_transport" },
      RTSP_FLAG_OPTS("rtsp_flags", "RTSP flags"),
+     { "listen", "Wait for incoming connections", 0, AV_OPT_TYPE_CONST, {.i64 = RTSP_FLAG_LISTEN}, 0, 0, DEC, "rtsp_flags" },
      RTSP_MEDIATYPE_OPTS("allowed_media_types", "Media types to accept from the server"),
      { "min_port", "Minimum local UDP port", OFFSET(rtp_port_min), AV_OPT_TYPE_INT, {.i64 = RTSP_RTP_PORT_MIN}, 0, 65535, DEC|ENC },
      { "max_port", "Maximum local UDP port", OFFSET(rtp_port_max), AV_OPT_TYPE_INT, {.i64 = RTSP_RTP_PORT_MAX}, 0, 65535, DEC|ENC },
      { "timeout", "Maximum timeout (in seconds) to wait for incoming connections. -1 is infinite. Implies flag listen", OFFSET(initial_timeout), AV_OPT_TYPE_INT, {.i64 = -1}, INT_MIN, INT_MAX, DEC },
 +    { "stimeout", "timeout (in micro seconds) of socket i/o operations.", OFFSET(stimeout), AV_OPT_TYPE_INT, {.i64 = 0}, INT_MIN, INT_MAX, DEC },
      RTSP_REORDERING_OPTS(),
 +    { "user-agent", "override User-Agent header", OFFSET(user_agent), AV_OPT_TYPE_STRING, {.str = LIBAVFORMAT_IDENT}, 0, 0, DEC },
      { NULL },
  };
  
@@@ -726,7 -723,7 +726,7 @@@ int ff_rtsp_open_transport_ctx(AVFormat
          s->ctx_flags |= AVFMTCTX_NOHEADER;
  
      if (s->oformat && CONFIG_RTSP_MUXER) {
 -        int ret = ff_rtp_chain_mux_open(&rtsp_st->transport_priv, s, st,
 +        int ret = ff_rtp_chain_mux_open((AVFormatContext **)&rtsp_st->transport_priv, s, st,
                                          rtsp_st->rtp_handle,
                                          RTSP_TCP_MAX_PACKET_SIZE,
                                          rtsp_st->stream_index);
@@@ -1218,7 -1215,7 +1218,7 @@@ static int rtsp_send_cmd_with_content_a
      if (headers)
          av_strlcat(buf, headers, sizeof(buf));
      av_strlcatf(buf, sizeof(buf), "CSeq: %d\r\n", rt->seq);
 -    av_strlcatf(buf, sizeof(buf), "User-Agent: %s\r\n", LIBAVFORMAT_IDENT);
 +    av_strlcatf(buf, sizeof(buf), "User-Agent: %s\r\n",  rt->user_agent);
      if (rt->session_id[0] != '\0' && (!headers ||
          !strstr(headers, "\nIf-Match:"))) {
          av_strlcatf(buf, sizeof(buf), "Session: %s\r\n", rt->session_id);
@@@ -1329,6 -1326,10 +1329,6 @@@ int ff_rtsp_make_setup_request(AVFormat
      /* default timeout: 1 minute */
      rt->timeout = 60;
  
 -    /* for each stream, make the setup request */
 -    /* XXX: we assume the same server is used for the control of each
 -     * RTSP stream */
 -
      /* Choose a random starting offset within the first half of the
       * port range, to allow for a number of ports to try even if the offset
       * happens to be at the end of the random range. */
                                 &s->interrupt_callback, NULL))
                      goto rtp_opened;
              }
 -
              av_log(s, AV_LOG_ERROR, "Unable to open an input RTP port\n");
              err = AVERROR(EIO);
              goto fail;
@@@ -1698,8 -1700,7 +1698,8 @@@ redirect
          }
      } else {
          /* open the tcp connection */
 -        ff_url_join(tcpname, sizeof(tcpname), "tcp", NULL, host, port, NULL);
 +        ff_url_join(tcpname, sizeof(tcpname), "tcp", NULL, host, port,
 +                    "?timeout=%d", rt->stimeout);
          if (ffurl_open(&rt->rtsp_hd, tcpname, AVIO_FLAG_READ_WRITE,
                         &s->interrupt_callback, NULL) < 0) {
              err = AVERROR(EIO);