changeset 3066:5a69d7493dab libavformat

ima4 in aiff support
author bcoudurier
date Mon, 25 Feb 2008 10:57:22 +0000
parents 3c3b2bcd3c38
children 2dc78258f848
files aiff.c
diffstat 1 files changed, 11 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/aiff.c	Mon Feb 25 09:22:11 2008 +0000
+++ b/aiff.c	Mon Feb 25 10:57:22 2008 +0000
@@ -37,6 +37,7 @@
     { 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 @@
         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 @@
 
     /* 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);