On 23/11/14 19:36, Uwe L. Korn wrote:
---
  libavformat/flvdec.c | 4 ++++
  1 file changed, 4 insertions(+)

diff --git a/libavformat/flvdec.c b/libavformat/flvdec.c
index 2d5e50e..e235c55 100644
--- a/libavformat/flvdec.c
+++ b/libavformat/flvdec.c
@@ -845,9 +845,13 @@ skip:
      if (s->pb->seekable && (!s->duration || s->duration == AV_NOPTS_VALUE)) {
          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.
          const int64_t fsize = avio_size(s->pb);
          avio_seek(s->pb, fsize - 4, SEEK_SET);
          size = avio_rb32(s->pb);
+        // Seek to the previous 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);


Possibly ok.

lu
_______________________________________________
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to