From c46000c1ff570f30f2255dcb42950b464a219a3d Mon Sep 17 00:00:00 2001
From: Zhentan Feng <spyfeng@gmail.com>
Date: Fri, 13 Aug 2010 17:08:57 +0000
Subject: [PATCH] Set fixed chunksize for ASF header in MMS streams, as per
 MSDN documentation. This fixes playback of at least one MMST stream.

Patch by Zhentan Feng <spyfeng gmail com>.

Originally committed as revision 24793 to svn://svn.ffmpeg.org/ffmpeg/trunk
---
 libavformat/mms.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/libavformat/mms.c b/libavformat/mms.c
index 5afa077ccdc..cbb4739acaa 100644
--- a/libavformat/mms.c
+++ b/libavformat/mms.c
@@ -68,7 +68,12 @@ int ff_mms_asf_header_parser(MMSContext *mms)
 
     p += sizeof(ff_asf_guid) + 14;
     while(end - p >= sizeof(ff_asf_guid) + 8) {
-        uint64_t chunksize = AV_RL64(p + sizeof(ff_asf_guid));
+        uint64_t chunksize;
+        if (!memcmp(p, ff_asf_data_header, sizeof(ff_asf_guid))) {
+            chunksize = 50; // see Reference [2] section 5.1
+        } else {
+            chunksize = AV_RL64(p + sizeof(ff_asf_guid));
+        }
         if (!chunksize || chunksize > end - p) {
             av_log(NULL, AV_LOG_ERROR,
                    "Corrupt stream (header chunksize %"PRId64" is invalid)\n",
-- 
GitLab