summaryrefslogtreecommitdiff
path: root/libavformat/ipmovie.c
diff options
context:
space:
mode:
authorMike Melanson <mike@multimedia.cx>2003-09-18 04:25:41 +0000
committerMike Melanson <mike@multimedia.cx>2003-09-18 04:25:41 +0000
commitb59ebf6220bb35ce68780bede40d376ba386d431 (patch)
treee846ce60d73073d2f7fe5c7ae150cb40c31e9f27 /libavformat/ipmovie.c
parentd86e8568e656a14650c2e696f4b2b77504d622a0 (diff)
provisions for raw PCM audio
Originally committed as revision 2291 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavformat/ipmovie.c')
-rw-r--r--libavformat/ipmovie.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/libavformat/ipmovie.c b/libavformat/ipmovie.c
index a290da734f..cf8894147c 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;