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
This commit is contained in:
committed by
Carl Eugen Hoyos
parent
c6625ad541
commit
59cb40b921
@ -3738,6 +3738,8 @@ typedef struct AVCodecParserContext {
|
|||||||
int flags;
|
int flags;
|
||||||
#define PARSER_FLAG_COMPLETE_FRAMES 0x0001
|
#define PARSER_FLAG_COMPLETE_FRAMES 0x0001
|
||||||
#define PARSER_FLAG_ONCE 0x0002
|
#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 offset; ///< byte offset from starting packet start
|
||||||
int64_t cur_frame_end[AV_PARSER_PTS_NB];
|
int64_t cur_frame_end[AV_PARSER_PTS_NB];
|
||||||
|
@ -150,6 +150,12 @@ int av_parser_parse2(AVCodecParserContext *s,
|
|||||||
int index, i;
|
int index, i;
|
||||||
uint8_t dummy_buf[FF_INPUT_BUFFER_PADDING_SIZE];
|
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) {
|
if (buf_size == 0) {
|
||||||
/* padding is always necessary even if EOF, so we add it here */
|
/* padding is always necessary even if EOF, so we add it here */
|
||||||
memset(dummy_buf, 0, sizeof(dummy_buf));
|
memset(dummy_buf, 0, sizeof(dummy_buf));
|
||||||
|
@ -1159,10 +1159,6 @@ static int av_read_frame_internal(AVFormatContext *s, AVPacket *pkt)
|
|||||||
}else if(st->need_parsing == AVSTREAM_PARSE_FULL_ONCE){
|
}else if(st->need_parsing == AVSTREAM_PARSE_FULL_ONCE){
|
||||||
st->parser->flags |= PARSER_FLAG_ONCE;
|
st->parser->flags |= PARSER_FLAG_ONCE;
|
||||||
}
|
}
|
||||||
if(st->parser && (s->iformat->flags & AVFMT_GENERIC_INDEX)){
|
|
||||||
st->parser->next_frame_offset=
|
|
||||||
st->parser->cur_offset= st->cur_pkt.pos;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user