From 708e3e7d2dc6f92fc027665f0e7272351f1ea81e Mon Sep 17 00:00:00 2001 From: Baptiste Coudurier Date: Wed, 18 Oct 2006 11:57:24 +0000 Subject: simplify pcm read seek, use av_get_bits_per_sample Originally committed as revision 6728 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavformat/raw.c | 25 +++++-------------------- 1 file changed, 5 insertions(+), 20 deletions(-) (limited to 'libavformat') diff --git a/libavformat/raw.c b/libavformat/raw.c index 22b75a9b91..47e996ea3b 100644 --- a/libavformat/raw.c +++ b/libavformat/raw.c @@ -183,26 +183,11 @@ int pcm_read_seek(AVFormatContext *s, int64_t pos; st = s->streams[0]; - switch(st->codec->codec_id) { - case CODEC_ID_PCM_S16LE: - case CODEC_ID_PCM_S16BE: - case CODEC_ID_PCM_U16LE: - case CODEC_ID_PCM_U16BE: - block_align = 2 * st->codec->channels; - byte_rate = block_align * st->codec->sample_rate; - break; - case CODEC_ID_PCM_S8: - case CODEC_ID_PCM_U8: - case CODEC_ID_PCM_MULAW: - case CODEC_ID_PCM_ALAW: - block_align = st->codec->channels; - byte_rate = block_align * st->codec->sample_rate; - break; - default: - block_align = st->codec->block_align; - byte_rate = st->codec->bit_rate / 8; - break; - } + + block_align = st->codec->block_align ? st->codec->block_align : + (av_get_bits_per_sample(st->codec->codec_id) * st->codec->channels) >> 3; + byte_rate = st->codec->bit_rate ? st->codec->bit_rate >> 3 : + block_align * st->codec->sample_rate; if (block_align <= 0 || byte_rate <= 0) return -1; -- cgit v1.2.3