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:
parent
9aaa2077e5
commit
090438cc81
@ -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)
|
||||||
|
Loading…
Reference in New Issue
Block a user