Mercurial > libavformat.hg
changeset 5995:74e41ed8fb26 libavformat
Favor chunk size over hitting the correct position after reading the chunk size in asf.
Fixes issue1923
author | michael |
---|---|
date | Fri, 07 May 2010 08:08:09 +0000 |
parents | 672248acc077 |
children | 39d22a65f36a |
files | asfdec.c |
diffstat | 1 files changed, 5 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/asfdec.c Wed May 05 17:26:59 2010 +0000 +++ b/asfdec.c Fri May 07 08:08:09 2010 +0000 @@ -204,9 +204,10 @@ 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 @@ 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);