From 73fe1052dd7533243d48f7ee31eed5df95b924e0 Mon Sep 17 00:00:00 2001 From: Ryan Martell Date: Mon, 4 Dec 2006 15:46:32 +0000 Subject: [PATCH] Minor modifications to handle mms streaming. Patch by Ryan Martell rdm4 martellventures com. Originally committed as revision 7221 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavformat/asf.c | 9 ++++++--- libavformat/asf.h | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/libavformat/asf.c b/libavformat/asf.c index f63e4b6..e6a38c9 100644 --- a/libavformat/asf.c +++ b/libavformat/asf.c @@ -203,8 +203,10 @@ static int asf_read_header(AVFormatContext *s, AVFormatParameters *ap) goto fail; st->priv_data = asf_st; st->start_time = asf->hdr.preroll; - st->duration = asf->hdr.send_time / - (10000000 / 1000) - st->start_time; + if(!(asf->hdr.flags & 0x01)) { // if we aren't streaming... + st->duration = asf->hdr.send_time / + (10000000 / 1000) - st->start_time; + } get_guid(pb, &g); test_for_ext_stream_audio = 0; @@ -328,7 +330,8 @@ static int asf_read_header(AVFormatContext *s, AVFormatParameters *ap) url_fskip(pb, gsize - (pos2 - pos1 + 24)); } else if (!memcmp(&g, &data_header, sizeof(GUID))) { asf->data_object_offset = url_ftell(pb); - if (gsize != (uint64_t)-1 && gsize >= 24) { + // if not streaming, gsize is not unlimited (how?), and there is enough space in the file.. + if (!(asf->hdr.flags & 0x01) && gsize != (uint64_t)-1 && gsize >= 24) { asf->data_object_size = gsize - 24; } else { asf->data_object_size = (uint64_t)-1; diff --git a/libavformat/asf.h b/libavformat/asf.h index bbe8880..5e3d26c 100644 --- a/libavformat/asf.h +++ b/libavformat/asf.h @@ -86,7 +86,7 @@ typedef struct { int asfid2avid[128]; /* conversion table from asf ID 2 AVStream ID */ ASFStream streams[128]; /* it's max number and it's not that big */ /* non streamed additonnal info */ - int64_t nb_packets; + uint64_t nb_packets; int64_t duration; /* in 100ns units */ /* packet filling */ unsigned char multi_payloads_present; -- 2.7.4