diff --git a/libavformat/asf.c b/libavformat/asf.c index 54ced89db0..60bb37a749 100644 --- a/libavformat/asf.c +++ b/libavformat/asf.c @@ -196,7 +196,7 @@ static int asf_read_header(AVFormatContext *s, AVFormatParameters *ap) int type, type_specific_size, sizeX; uint64_t total_size; unsigned int tag1; - int64_t pos1, pos2; + int64_t pos1, pos2, start_time; int test_for_ext_stream_audio, is_dvr_ms_audio=0; pos1 = url_ftell(pb); @@ -209,10 +209,11 @@ static int asf_read_header(AVFormatContext *s, AVFormatParameters *ap) if (!asf_st) goto fail; st->priv_data = asf_st; - st->start_time = asf->hdr.preroll; + start_time = asf->hdr.preroll; + if(!(asf->hdr.flags & 0x01)) { // if we aren't streaming... st->duration = asf->hdr.send_time / - (10000000 / 1000) - st->start_time; + (10000000 / 1000) - start_time; } get_guid(pb, &g); diff --git a/tests/libav.regression.ref b/tests/libav.regression.ref index 257b05afdd..d3ad51e357 100644 --- a/tests/libav.regression.ref +++ b/tests/libav.regression.ref @@ -4,7 +4,7 @@ ffmpeg regression test ./tests/data/b-libav.avi CRC=0x400c29e9 786446e80ead936e5faa8f5908f19281 *./tests/data/b-libav.asf 339775 ./tests/data/b-libav.asf -./tests/data/b-libav.asf CRC=0x74113749 +./tests/data/b-libav.asf CRC=0x7f38e57b 1ce78eeb6881ffe5b649a9b5105de919 *./tests/data/b-libav.rm 355405 ./tests/data/b-libav.rm bdb7484c68db722f66ba1630cf79844c *./tests/data/b-libav.mpg