1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-12-23 12:43:46 +02:00

Recognize the "application" data type, which is required for WMS/UDP

sessions.

This type is used in RTP/ASF (served by WMS servers), and is required to
make UDP sessions work, but breaks TCP sessions. Therefore, we disable setup
for application streams in TCP/WMS streams.

See discussion in "[PATCH] RTSP-MS 8/15: fix RTSP-MS UDP" thread.

Originally committed as revision 17776 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
Ronald S. Bultje 2009-03-03 16:48:56 +00:00
parent 9aaa2077e5
commit 090438cc81

View File

@ -392,6 +392,8 @@ static void sdp_parse_line(AVFormatContext *s, SDPParseState *s1,
codec_type = CODEC_TYPE_AUDIO; codec_type = CODEC_TYPE_AUDIO;
} else if (!strcmp(st_type, "video")) { } else if (!strcmp(st_type, "video")) {
codec_type = CODEC_TYPE_VIDEO; codec_type = CODEC_TYPE_VIDEO;
} else if (!strcmp(st_type, "application")) {
codec_type = CODEC_TYPE_DATA;
} else { } else {
s1->skip_media = 1; s1->skip_media = 1;
return; return;
@ -942,6 +944,12 @@ make_setup_request (AVFormatContext *s, const char *host, int port,
/* RTP/TCP */ /* RTP/TCP */
else if (lower_transport == RTSP_LOWER_TRANSPORT_TCP) { else if (lower_transport == RTSP_LOWER_TRANSPORT_TCP) {
/** For WMS streams, the application streams are only used for
* UDP. When trying to set it up for TCP streams, the server
* will return an error. Therefore, we skip those streams. */
if (rt->server_type == RTSP_SERVER_WMS &&
s->streams[rtsp_st->stream_index]->codec->codec_type == CODEC_TYPE_DATA)
continue;
snprintf(transport, sizeof(transport) - 1, snprintf(transport, sizeof(transport) - 1,
"%s/TCP;", trans_pref); "%s/TCP;", trans_pref);
if (rt->server_type == RTSP_SERVER_WMS) if (rt->server_type == RTSP_SERVER_WMS)