summaryrefslogtreecommitdiff
path: root/libavformat
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2010-05-07 08:08:09 +0000
committerMichael Niedermayer <michaelni@gmx.at>2010-05-07 08:08:09 +0000
commitcb0061d4530858b5715c21da0d6a94a931fb5913 (patch)
treea943904f676ad2361e872957ae9220ce079a9983 /libavformat
parentcf13f204ccea9c4ce8a0e9d27e2e507dc0cb8842 (diff)
Favor chunk size over hitting the correct position after reading the chunk size in asf.
Fixes issue1923 Originally committed as revision 23040 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavformat')
-rw-r--r--libavformat/asfdec.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/libavformat/asfdec.c b/libavformat/asfdec.c
index bbc27305e2..8aea8c7ef6 100644
--- a/libavformat/asfdec.c
+++ b/libavformat/asfdec.c
@@ -204,9 +204,10 @@ static int asf_read_header(AVFormatContext *s, AVFormatParameters *ap)
get_byte(pb);
memset(&asf->asfid2avid, -1, sizeof(asf->asfid2avid));
for(;;) {
+ uint64_t gpos= url_ftell(pb);
get_guid(pb, &g);
gsize = get_le64(pb);
- dprintf(s, "%08"PRIx64": ", url_ftell(pb) - 24);
+ dprintf(s, "%08"PRIx64": ", gpos);
print_guid(&g);
dprintf(s, " size=0x%"PRIx64"\n", gsize);
if (!guidcmp(&g, &ff_asf_data_header)) {
@@ -584,8 +585,10 @@ static int asf_read_header(AVFormatContext *s, AVFormatParameters *ap)
av_log(s, AV_LOG_WARNING, "Digital signature detected, decoding will likely fail!\n");
}
}
- url_fseek(pb, gsize - 24, SEEK_CUR);
}
+ if(url_ftell(pb) != gpos + gsize)
+ av_log(s, AV_LOG_DEBUG, "gpos mismatch our pos=%"PRIu64", end=%"PRIu64"\n", url_ftell(pb)-gpos, gsize);
+ url_fseek(pb, gpos + gsize, SEEK_SET);
}
get_guid(pb, &g);
get_le64(pb);