From dd22cfb1015dea8f9db29a2334662bd35c3d3f79 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Martin=20Storsj=C3=B6?= Date: Mon, 15 Nov 2010 15:08:53 +0000 Subject: [PATCH] rtsp: Parse and use the Content-Base reply header, if present This fixes playing RTSP urls with query parameters. Originally committed as revision 25755 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavformat/rtsp.c | 3 +++ libavformat/rtsp.h | 4 ++++ libavformat/rtspdec.c | 3 +++ 3 files changed, 10 insertions(+) diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c index 1f5501636..cbb19f42e 100644 --- a/libavformat/rtsp.c +++ b/libavformat/rtsp.c @@ -706,6 +706,9 @@ void ff_rtsp_parse_line(RTSPMessageHeader *reply, const char *buf, } else if (av_stristart(p, "Authentication-Info:", &p) && auth_state) { p += strspn(p, SPACE_CHARS); ff_http_auth_handle_header(auth_state, "Authentication-Info", p); + } else if (av_stristart(p, "Content-Base:", &p)) { + p += strspn(p, SPACE_CHARS); + av_strlcpy(reply->content_base, p , sizeof(reply->content_base)); } } diff --git a/libavformat/rtsp.h b/libavformat/rtsp.h index 8997532cc..ba0526052 100644 --- a/libavformat/rtsp.h +++ b/libavformat/rtsp.h @@ -165,6 +165,10 @@ typedef struct RTSPMessageHeader { * returned */ char reason[256]; + + /** The "Content-Base:" field. + */ + char content_base[4096]; } RTSPMessageHeader; /** diff --git a/libavformat/rtspdec.c b/libavformat/rtspdec.c index fd74b08c5..213f7095f 100644 --- a/libavformat/rtspdec.c +++ b/libavformat/rtspdec.c @@ -105,6 +105,9 @@ int ff_rtsp_setup_input_streams(AVFormatContext *s, RTSPMessageHeader *reply) av_freep(&content); return AVERROR_INVALIDDATA; } + if (reply->content_base[0]) + av_strlcpy(rt->control_uri, reply->content_base, + sizeof(rt->control_uri)); av_log(s, AV_LOG_VERBOSE, "SDP:\n%s\n", content); /* now we got the SDP description, we parse it */ -- 2.11.0