Mercurial > libavformat.hg
changeset 5163:01514407ab35 libavformat
Use all 32 bits of the timestamp when calculating flv duration.
At the moment, duration is mainly set from the metadata packet. If that is not
available, the fallback is checking the low 24 bits of the last packet. This is
not enough for files over 4,6 hours in length, so read all 32 bits instead.
patch by Martin Storsj, martin martin st
author | diego |
---|---|
date | Mon, 07 Sep 2009 10:49:51 +0000 |
parents | 68b98b497783 |
children | 99c46fe0b8a0 |
files | flvdec.c |
diffstat | 1 files changed, 3 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/flvdec.c Sun Sep 06 15:59:32 2009 +0000 +++ b/flvdec.c Mon Sep 07 10:49:51 2009 +0000 @@ -369,7 +369,9 @@ size= get_be32(s->pb); url_fseek(s->pb, fsize-3-size, SEEK_SET); if(size == get_be24(s->pb) + 11){ - s->duration= get_be24(s->pb) * (int64_t)AV_TIME_BASE / 1000; + uint32_t ts = get_be24(s->pb); + ts |= get_byte(s->pb) << 24; + s->duration = ts * (int64_t)AV_TIME_BASE / 1000; } url_fseek(s->pb, pos, SEEK_SET); }