summaryrefslogtreecommitdiff
path: root/libavformat/rtsp.c
diff options
context:
space:
mode:
authorRonald S. Bultje <rsbultje@gmail.com>2009-03-17 12:34:57 +0000
committerRonald S. Bultje <rsbultje@gmail.com>2009-03-17 12:34:57 +0000
commit1a30d5415f6fa2bcc42fd6d81c9e5fbce54e3d9e (patch)
tree4e4b4c65e97b3e238004a9e0507a0acf341110d9 /libavformat/rtsp.c
parent6d050dd673b4cda3876698208571fbfb644dde61 (diff)
Add RTP/ASF header parsing, which is part of the SDP of these streams. See
patch discussion in "[PATCH] RTSP-MS 10/15: ASF header parsing" thread. Originally committed as revision 18023 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavformat/rtsp.c')
-rw-r--r--libavformat/rtsp.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c
index 6806736ed2..a4938bae08 100644
--- a/libavformat/rtsp.c
+++ b/libavformat/rtsp.c
@@ -36,6 +36,7 @@
#include "rtpdec.h"
#include "rdt.h"
+#include "rtp_asf.h"
//#define DEBUG
//#define DEBUG_RTP_TCP
@@ -496,7 +497,10 @@ static void sdp_parse_line(AVFormatContext *s, SDPParseState *s1,
} else if (av_strstart(p, "IsRealDataType:integer;",&p)) {
if (atoi(p) == 1)
rt->transport = RTSP_TRANSPORT_RDT;
- } else if (s->nb_streams > 0) {
+ } else {
+ if (rt->server_type == RTSP_SERVER_WMS)
+ ff_wms_parse_sdp_a_line(s, p);
+ if (s->nb_streams > 0) {
if (rt->server_type == RTSP_SERVER_REAL)
ff_real_parse_sdp_a_line(s, s->nb_streams - 1, p);
@@ -505,6 +509,7 @@ static void sdp_parse_line(AVFormatContext *s, SDPParseState *s1,
rtsp_st->dynamic_handler->parse_sdp_a_line)
rtsp_st->dynamic_handler->parse_sdp_a_line(s, s->nb_streams - 1,
rtsp_st->dynamic_protocol_context, buf);
+ }
}
break;
}
@@ -853,6 +858,10 @@ static void rtsp_close_streams(RTSPState *rt)
}
}
av_free(rt->rtsp_streams);
+ if (rt->asf_ctx) {
+ av_close_input_stream (rt->asf_ctx);
+ rt->asf_ctx = NULL;
+ }
}
static int