From aaef2bb345518dd62bfb415932bea824bbd48509 Mon Sep 17 00:00:00 2001 From: Baptiste Coudurier Date: Sat, 2 Aug 2008 03:45:23 +0000 Subject: [PATCH] support big endian lpcm with audio stsd v2 Originally committed as revision 14507 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavformat/mov.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/libavformat/mov.c b/libavformat/mov.c index 4d156c7..74c7a7c 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -832,7 +832,7 @@ static int mov_read_stsd(MOVContext *c, ByteIOContext *pb, MOV_atom_t atom) } else st->codec->palctrl = NULL; } else if(st->codec->codec_type==CODEC_TYPE_AUDIO) { - int bits_per_sample; + int bits_per_sample, flags; uint16_t version = get_be16(pb); st->codec->codec_id = id; @@ -862,9 +862,11 @@ static int mov_read_stsd(MOVContext *c, ByteIOContext *pb, MOV_atom_t atom) st->codec->channels = get_be32(pb); get_be32(pb); /* always 0x7F000000 */ st->codec->bits_per_sample = get_be32(pb); /* bits per channel if sound is uncompressed */ - get_be32(pb); /* lcpm format specific flag */ + flags = get_be32(pb); /* lcpm format specific flag */ sc->bytes_per_frame = get_be32(pb); /* bytes per audio packet if constant */ sc->samples_per_frame = get_be32(pb); /* lpcm frames per audio packet if constant */ + if (flags & 2) // big endian + st->codec->codec_id = CODEC_ID_PCM_S16BE; } } -- 2.7.4