From b59ebf6220bb35ce68780bede40d376ba386d431 Mon Sep 17 00:00:00 2001
From: Mike Melanson <mike@multimedia.cx>
Date: Thu, 18 Sep 2003 04:25:41 +0000
Subject: [PATCH] provisions for raw PCM audio

Originally committed as revision 2291 to svn://svn.ffmpeg.org/ffmpeg/trunk
---
 libavformat/ipmovie.c | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/libavformat/ipmovie.c b/libavformat/ipmovie.c
index a290da734f2..cf8894147c8 100644
--- a/libavformat/ipmovie.c
+++ b/libavformat/ipmovie.c
@@ -133,6 +133,12 @@ static int load_ipmovie_packet(IPMVEContext *s, ByteIOContext *pb,
 
     if (s->audio_chunk_offset) {
 
+        /* adjust for PCM audio by skipping chunk header */
+        if (s->audio_type != CODEC_ID_INTERPLAY_DPCM) {
+            s->audio_chunk_offset += 6;
+            s->audio_chunk_size -= 6;
+        }
+
         url_fseek(pb, s->audio_chunk_offset, SEEK_SET);
         s->audio_chunk_offset = 0;
 
@@ -568,8 +574,9 @@ static int ipmovie_read_header(AVFormatContext *s,
     st->codec.sample_rate = ipmovie->audio_sample_rate;
     st->codec.bits_per_sample = ipmovie->audio_bits;
     st->codec.bit_rate = st->codec.channels * st->codec.sample_rate *
-        st->codec.bits_per_sample / 
-        (st->codec.codec_id == CODEC_ID_INTERPLAY_DPCM) ? 2 : 1;
+        st->codec.bits_per_sample;
+    if (st->codec.codec_id == CODEC_ID_INTERPLAY_DPCM)
+        st->codec.bit_rate /= 2;
     st->codec.block_align = st->codec.channels * st->codec.bits_per_sample;
 
     return 0;
-- 
GitLab