From 3a957df49e636a3ddd8cbc2bd82917c733573384 Mon Sep 17 00:00:00 2001 From: Baptiste Coudurier Date: Mon, 25 Feb 2008 10:57:22 +0000 Subject: [PATCH] ima4 in aiff support Originally committed as revision 12196 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavformat/aiff.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/libavformat/aiff.c b/libavformat/aiff.c index f840c17..1fcfd88 100644 --- a/libavformat/aiff.c +++ b/libavformat/aiff.c @@ -37,6 +37,7 @@ static const AVCodecTag codec_aiff_tags[] = { { CODEC_ID_GSM, MKTAG('G','S','M',' ') }, { CODEC_ID_ADPCM_G726, MKTAG('G','7','2','6') }, { CODEC_ID_PCM_S16LE, MKTAG('s','o','w','t') }, + { CODEC_ID_ADPCM_IMA_QT, MKTAG('i','m','a','4') }, { 0, 0 }, }; @@ -123,11 +124,17 @@ static unsigned int get_aiff_header(ByteIOContext *pb, AVCodecContext *codec, codec->codec_tag = get_le32(pb); codec->codec_id = codec_get_id (codec_aiff_tags, codec->codec_tag); - if (codec->codec_id == CODEC_ID_PCM_S16BE) { + switch (codec->codec_id) { + case CODEC_ID_PCM_S16BE: codec->codec_id = aiff_codec_get_id (codec->bits_per_sample); codec->bits_per_sample = av_get_bits_per_sample(codec->codec_id); + break; + case CODEC_ID_ADPCM_IMA_QT: + codec->block_align = 34*codec->channels; + break; + default: + break; } - size -= 4; } else { /* Need the codec type */ @@ -140,7 +147,8 @@ static unsigned int get_aiff_header(ByteIOContext *pb, AVCodecContext *codec, /* Block align needs to be computed in all cases, as the definition * is specific to applications -> here we use the WAVE format definition */ - codec->block_align = (codec->bits_per_sample * codec->channels) >> 3; + if (!codec->block_align) + codec->block_align = (codec->bits_per_sample * codec->channels) >> 3; codec->bit_rate = codec->sample_rate * (codec->block_align << 3); -- 2.7.4