Commit ff455a81 authored by diego's avatar diego

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


git-svn-id: file:///var/local/repositories/ffmpeg/trunk@19791 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b
parent 3d1da57b
......@@ -369,7 +369,9 @@ static int flv_read_packet(AVFormatContext *s, AVPacket *pkt)
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);
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment