mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-11-26 19:01:44 +02:00
Merge commit '40665d27e38e6a2f65037878202bd1a398c7683e'
* commit '40665d27e38e6a2f65037878202bd1a398c7683e': flvdec: Document how the duration is retrieved at the end of the file Conflicts: libavformat/flvdec.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
commit
b83beb131f
@ -885,10 +885,14 @@ skip:
|
||||
if (s->pb->seekable && (!s->duration || s->duration == AV_NOPTS_VALUE) && !flv->searched_for_end) {
|
||||
int size;
|
||||
const int64_t pos = avio_tell(s->pb);
|
||||
// Read the last 4 bytes of the file, this should be the size of the
|
||||
// previous FLV tag. Use the timestamp of its payload as duration.
|
||||
int64_t fsize = avio_size(s->pb);
|
||||
retry_duration:
|
||||
avio_seek(s->pb, fsize - 4, SEEK_SET);
|
||||
size = avio_rb32(s->pb);
|
||||
// Seek to the start of the last FLV tag at position (fsize - 4 - size)
|
||||
// but skip the byte indicating the type.
|
||||
avio_seek(s->pb, fsize - 3 - size, SEEK_SET);
|
||||
if (size == avio_rb24(s->pb) + 11) {
|
||||
uint32_t ts = avio_rb24(s->pb);
|
||||
|
Loading…
Reference in New Issue
Block a user