Mercurial > libavformat.hg
changeset 1967:8c20d8c19e1f libavformat
fix demuxing of IMAG0002.ASF
author | michael |
---|---|
date | Fri, 30 Mar 2007 16:20:40 +0000 |
parents | 1185d826c6a7 |
children | 170e151f1d9e |
files | asf.c |
diffstat | 1 files changed, 8 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/asf.c Fri Mar 30 15:05:09 2007 +0000 +++ b/asf.c Fri Mar 30 16:20:40 2007 +0000 @@ -541,7 +541,7 @@ ASFContext *asf = s->priv_data; ByteIOContext *pb = &s->pb; uint32_t packet_length, padsize; - int rsize = 9; + int rsize = 8; int c, d, e, off; off= (url_ftell(&s->pb) - s->data_offset) % asf->packet_size + 3; @@ -558,23 +558,21 @@ if (!url_feof(pb)) av_log(s, AV_LOG_ERROR, "ff asf bad header %x at:%"PRId64"\n", c, url_ftell(pb)); } - if ((c & 0x0f) == 2) { // always true for now + if ((c & 0x8f) == 0x82) { if (d || e) { if (!url_feof(pb)) av_log(s, AV_LOG_ERROR, "ff asf bad non zero\n"); return -1; } + c= get_byte(pb); d= get_byte(pb); - e= get_byte(pb); - rsize+=2; -/* }else{ - if (!url_feof(pb)) - printf("ff asf bad header %x at:%"PRId64"\n", c, url_ftell(pb)); - return AVERROR_IO;*/ + rsize+=3; + }else{ + url_fseek(pb, -1, SEEK_CUR); //FIXME } - asf->packet_flags = d; - asf->packet_property = e; + asf->packet_flags = c; + asf->packet_property = d; DO_2BITS(asf->packet_flags >> 5, packet_length, asf->packet_size); DO_2BITS(asf->packet_flags >> 1, padsize, 0); // sequence ignored