diff options
author | Baptiste Coudurier <baptiste.coudurier@gmail.com> | 2006-10-18 11:57:24 +0000 |
---|---|---|
committer | Baptiste Coudurier <baptiste.coudurier@gmail.com> | 2006-10-18 11:57:24 +0000 |
commit | 708e3e7d2dc6f92fc027665f0e7272351f1ea81e (patch) | |
tree | a333e6eb84d5d7904b40719c7aa7be624e57c98a /libavformat | |
parent | ca6127352ff7651c9f552584ac2d918a1d125f6b (diff) | |
download | ffmpeg-708e3e7d2dc6f92fc027665f0e7272351f1ea81e.tar.gz |
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.c | 25 |
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; |