Mercurial > libavformat.hg
changeset 1032:58a0e351ef4c libavformat
fix demuxing of CDR-Dinner_LAN_800k.mp4
author | bcoudurier |
---|---|
date | Fri, 24 Mar 2006 16:52:56 +0000 |
parents | 480c84af0f61 |
children | a757a0a3824f |
files | mov.c |
diffstat | 1 files changed, 12 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/mov.c Fri Mar 24 16:01:00 2006 +0000 +++ b/mov.c Fri Mar 24 16:52:56 2006 +0000 @@ -946,12 +946,18 @@ (format >> 0) & 0xff, (format >> 8) & 0xff, (format >> 16) & 0xff, (format >> 24) & 0xff, st->codec->codec_type); st->codec->codec_tag = format; - /* codec_type is set earlier by read_hdlr */ + id = codec_get_id(mov_audio_tags, format); + if (id > 0) { + st->codec->codec_type = CODEC_TYPE_AUDIO; + } else if (format != MKTAG('m', 'p', '4', 's')) { /* skip old asf mpeg4 tag */ + id = codec_get_id(mov_video_tags, format); + if (id <= 0) + id = codec_get_id(codec_bmp_tags, format); + if (id > 0) + st->codec->codec_type = CODEC_TYPE_VIDEO; + } + if(st->codec->codec_type==CODEC_TYPE_VIDEO) { - /* for MPEG4: set codec type by looking for it */ - id = codec_get_id(mov_video_tags, format); - if(id <= 0) - id = codec_get_id(codec_bmp_tags, format); st->codec->codec_id = id; get_be16(pb); /* version */ get_be16(pb); /* revision level */ @@ -1058,7 +1064,7 @@ } else if(st->codec->codec_type==CODEC_TYPE_AUDIO) { uint16_t version = get_be16(pb); - st->codec->codec_id = codec_get_id(mov_audio_tags, format); + st->codec->codec_id = id; get_be16(pb); /* revision level */ get_be32(pb); /* vendor */