# HG changeset patch # User diego # Date 1252320591 0 # Node ID 01514407ab353d8957e5603a825f266de951a9cd # Parent 68b98b497783626f58b5de29b0bd4cabf97d0065 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 diff -r 68b98b497783 -r 01514407ab35 flvdec.c --- 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); }