]> git.sesse.net Git - ffmpeg/blobdiff - libavformat/rtsp.c
avcodec/utils: Check ima wav duration for overflow
[ffmpeg] / libavformat / rtsp.c
index d1f5762f7cf3ff9f5c998fda25f43262ad4b31fb..25bdf475b3a8bca3dedbd50dae9a16f47550bc6b 100644 (file)
@@ -571,7 +571,7 @@ static void sdp_parse_line(AVFormatContext *s, SDPParseState *s1,
         break;
     case 'a':
         if (av_strstart(p, "control:", &p)) {
-            if (s->nb_streams == 0) {
+            if (rt->nb_rtsp_streams == 0) {
                 if (!strncmp(p, "rtsp://", 7))
                     av_strlcpy(rt->control_uri, p,
                                sizeof(rt->control_uri));
@@ -1941,12 +1941,15 @@ redirect:
         break;
     }
 
-    if (CONFIG_RTSP_DEMUXER && s->iformat) {
+#if CONFIG_RTSP_DEMUXER
+    if (s->iformat) {
         if (rt->server_type == RTSP_SERVER_SATIP)
             err = init_satip_stream(s);
         else
             err = ff_rtsp_setup_input_streams(s, reply);
-    } else if (CONFIG_RTSP_MUXER)
+    } else
+#endif
+           if (CONFIG_RTSP_MUXER)
         err = ff_rtsp_setup_output_streams(s, host);
     else
         av_assert0(0);
@@ -2503,12 +2506,15 @@ static int rtp_read_header(AVFormatContext *s)
     RTSPState *rt = s->priv_data;
     const char *p;
     AVBPrint sdp;
+    AVDictionary *opts = NULL;
 
     if (!ff_network_init())
         return AVERROR(EIO);
 
+    opts = map_to_opts(rt);
     ret = ffurl_open_whitelist(&in, s->url, AVIO_FLAG_READ,
-                     &s->interrupt_callback, NULL, s->protocol_whitelist, s->protocol_blacklist, NULL);
+                     &s->interrupt_callback, &opts, s->protocol_whitelist, s->protocol_blacklist, NULL);
+    av_dict_free(&opts);
     if (ret)
         goto fail;