diff options
author | Michael Chinen <mchinen@gmail.com> | 2010-09-28 02:17:58 +0400 |
---|---|---|
committer | Carl Eugen Hoyos <cehoyos@rainbow.studorg.tuwien.ac.at> | 2010-09-28 02:17:58 +0400 |
commit | 59cb40b92194c272c4d097c702a46f90edb94958 (patch) | |
tree | ad8f74c29dd0b6008e59f3780bdfb43d522b026d /libavcodec | |
parent | c6625ad5410389f6bca582b53b23bcd60030e00c (diff) |
Fix index_entries pos:
It was being set wrong for files with data_offset > 0
Patch by Michael Chinen, mchinen gmail
Originally committed as revision 25239 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/avcodec.h | 2 | ||||
-rw-r--r-- | libavcodec/parser.c | 6 |
2 files changed, 8 insertions, 0 deletions
diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h index 64a5583230..9f888992c8 100644 --- a/libavcodec/avcodec.h +++ b/libavcodec/avcodec.h @@ -3738,6 +3738,8 @@ typedef struct AVCodecParserContext { 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]; diff --git a/libavcodec/parser.c b/libavcodec/parser.c index 1aa86515d8..d877f5d411 100644 --- a/libavcodec/parser.c +++ b/libavcodec/parser.c @@ -150,6 +150,12 @@ int av_parser_parse2(AVCodecParserContext *s, 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)); |