changeset 12529:9a3f2beae2a9 libavcodec

Fix index_entries pos: It was being set wrong for files with data_offset > 0 Patch by Michael Chinen, mchinen gmail
author cehoyos
date Mon, 27 Sep 2010 22:17:58 +0000
parents f4caff0e1e10
children 63edd10ad4bc
files avcodec.h parser.c
diffstat 2 files changed, 8 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/avcodec.h	Mon Sep 27 21:31:29 2010 +0000
+++ b/avcodec.h	Mon Sep 27 22:17:58 2010 +0000
@@ -3738,6 +3738,8 @@
     int flags;
 #define PARSER_FLAG_COMPLETE_FRAMES           0x0001
 #define PARSER_FLAG_ONCE                      0x0002
+/// Set if the parser has a valid file offset
+#define PARSER_FLAG_FETCHED_OFFSET            0x0004
 
     int64_t offset;      ///< byte offset from starting packet start
     int64_t cur_frame_end[AV_PARSER_PTS_NB];
--- a/parser.c	Mon Sep 27 21:31:29 2010 +0000
+++ b/parser.c	Mon Sep 27 22:17:58 2010 +0000
@@ -150,6 +150,12 @@
     int index, i;
     uint8_t dummy_buf[FF_INPUT_BUFFER_PADDING_SIZE];
 
+    if(!(s->flags & PARSER_FLAG_FETCHED_OFFSET)) {
+        s->next_frame_offset =
+        s->cur_offset        = pos;
+        s->flags |= PARSER_FLAG_FETCHED_OFFSET;
+    }
+
     if (buf_size == 0) {
         /* padding is always necessary even if EOF, so we add it here */
         memset(dummy_buf, 0, sizeof(dummy_buf));