]> rtime.felk.cvut.cz Git - frescor/ffmpeg.git/commitdiff
Use the "server" RTSP field to detect whether the server that we're talking
authorrbultje <rbultje@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Wed, 7 Jan 2009 14:55:47 +0000 (14:55 +0000)
committerrbultje <rbultje@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Wed, 7 Jan 2009 14:55:47 +0000 (14:55 +0000)
to is a Microsoft Windows Media Server (the field will be "WMServer/version").
See "[PATCH] RTSP-MS 3/15: Add Windows Media Server type" thread on
mailinglist.

git-svn-id: file:///var/local/repositories/ffmpeg/trunk@16472 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b

libavformat/rtsp.c
libavformat/rtsp.h

index 2ba1755b2862710b421e4e23f8ef0ee6fa64df95..26bae089dd58fffaee25872e2b25e99cba8b9427 100644 (file)
@@ -688,6 +688,9 @@ void rtsp_parse_line(RTSPHeader *reply, const char *buf)
     } else if (av_stristart(p, "RealChallenge1:", &p)) {
         skip_spaces(&p);
         av_strlcpy(reply->real_challenge, p, sizeof(reply->real_challenge));
+    } else if (av_stristart(p, "Server:", &p)) {
+        skip_spaces(&p);
+        av_strlcpy(reply->server, p, sizeof(reply->server));
     }
 }
 
@@ -1123,6 +1126,8 @@ static int rtsp_read_header(AVFormatContext *s,
         if (rt->server_type != RTSP_SERVER_REAL && reply->real_challenge[0]) {
             rt->server_type = RTSP_SERVER_REAL;
             continue;
+        } else if (!strncasecmp(reply->server, "WMServer/", 9)) {
+            rt->server_type = RTSP_SERVER_WMS;
         } else if (rt->server_type == RTSP_SERVER_REAL) {
             strcpy(real_challenge, reply->real_challenge);
         }
index 36297e98c05815ec6fd21c916393bf924ff22d97..ebc7ab79b524276081f02c1275235e24d7ddfd57 100644 (file)
@@ -66,6 +66,7 @@ typedef struct RTSPHeader {
     int seq; /**< sequence number */
     char session_id[512];
     char real_challenge[64]; /**< the RealChallenge1 field from the server */
+    char server[64];
 } RTSPHeader;
 
 enum RTSPClientState {
@@ -77,6 +78,7 @@ enum RTSPClientState {
 enum RTSPServerType {
     RTSP_SERVER_RTP,  /*< Standard-compliant RTP-server */
     RTSP_SERVER_REAL, /*< Realmedia-style server */
+    RTSP_SERVER_WMS,  /*< Windows Media server */
     RTSP_SERVER_LAST
 };