aboutsummaryrefslogtreecommitdiffstats
path: root/libavformat/avidec.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2006-03-01 12:04:22 +0000
committerMichael Niedermayer <michaelni@gmx.at>2006-03-01 12:04:22 +0000
commit1894edeb745c7eac13e2a1f4e7cfa10cbf9f04f5 (patch)
treefdda7bb61db95860e2db99b570680ac356aa1ff8 /libavformat/avidec.c
parent5c89153e906b7c250604533b4002a7ec8b3b5202 (diff)
downloadffmpeg-1894edeb745c7eac13e2a1f4e7cfa10cbf9f04f5.tar.gz
fix demuxing of XviD_with_3_AAC-HE_audio_streams.avi
Originally committed as revision 5085 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavformat/avidec.c')
-rw-r--r--libavformat/avidec.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/libavformat/avidec.c b/libavformat/avidec.c
index c022b466ad..ca66ba4b09 100644
--- a/libavformat/avidec.c
+++ b/libavformat/avidec.c
@@ -203,7 +203,10 @@ static int avi_read_header(AVFormatContext *s, AVFormatParameters *ap)
/* using frame_period is bad idea */
frame_period = get_le32(pb);
bit_rate = get_le32(pb) * 8;
- url_fskip(pb, 4 * 4);
+ get_le32(pb);
+ avi->non_interleaved |= get_le32(pb) & AVIF_MUSTUSEINDEX;
+
+ url_fskip(pb, 2 * 4);
n = get_le32(pb);
for(i=0;i<n;i++) {
AVIStream *ast;
@@ -468,13 +471,12 @@ static int avi_read_packet(AVFormatContext *s, AVPacket *pkt)
if(i>=0){
int64_t pos= best_st->index_entries[i].pos;
pos += best_ast->packet_size - best_ast->remaining;
- url_fseek(&s->pb, pos, SEEK_SET);
+ url_fseek(&s->pb, pos + 8, SEEK_SET);
// av_log(NULL, AV_LOG_DEBUG, "pos=%Ld\n", pos);
- if(best_ast->remaining)
- avi->stream_index= best_stream_index;
- else
- avi->stream_index= -1;
+ avi->stream_index= best_stream_index;
+ if(!best_ast->remaining)
+ best_ast->remaining= best_st->index_entries[i].size;
}
}