summaryrefslogtreecommitdiff
path: root/libavformat
diff options
context:
space:
mode:
authorBaptiste Coudurier <baptiste.coudurier@gmail.com>2006-10-18 11:57:24 +0000
committerBaptiste Coudurier <baptiste.coudurier@gmail.com>2006-10-18 11:57:24 +0000
commit708e3e7d2dc6f92fc027665f0e7272351f1ea81e (patch)
treea333e6eb84d5d7904b40719c7aa7be624e57c98a /libavformat
parentca6127352ff7651c9f552584ac2d918a1d125f6b (diff)
simplify pcm read seek, use av_get_bits_per_sample
Originally committed as revision 6728 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavformat')
-rw-r--r--libavformat/raw.c25
1 files changed, 5 insertions, 20 deletions
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;