Mercurial > libavformat.hg
comparison raw.c @ 1399:5a3003271ad8 libavformat
simplify pcm read seek, use av_get_bits_per_sample
author | bcoudurier |
---|---|
date | Wed, 18 Oct 2006 11:57:24 +0000 |
parents | 0899bfe4105c |
children | 3b00fb8ef8e4 |
comparison
equal
deleted
inserted
replaced
1398:303e9fb547c7 | 1399:5a3003271ad8 |
---|---|
181 AVStream *st; | 181 AVStream *st; |
182 int block_align, byte_rate; | 182 int block_align, byte_rate; |
183 int64_t pos; | 183 int64_t pos; |
184 | 184 |
185 st = s->streams[0]; | 185 st = s->streams[0]; |
186 switch(st->codec->codec_id) { | 186 |
187 case CODEC_ID_PCM_S16LE: | 187 block_align = st->codec->block_align ? st->codec->block_align : |
188 case CODEC_ID_PCM_S16BE: | 188 (av_get_bits_per_sample(st->codec->codec_id) * st->codec->channels) >> 3; |
189 case CODEC_ID_PCM_U16LE: | 189 byte_rate = st->codec->bit_rate ? st->codec->bit_rate >> 3 : |
190 case CODEC_ID_PCM_U16BE: | 190 block_align * st->codec->sample_rate; |
191 block_align = 2 * st->codec->channels; | |
192 byte_rate = block_align * st->codec->sample_rate; | |
193 break; | |
194 case CODEC_ID_PCM_S8: | |
195 case CODEC_ID_PCM_U8: | |
196 case CODEC_ID_PCM_MULAW: | |
197 case CODEC_ID_PCM_ALAW: | |
198 block_align = st->codec->channels; | |
199 byte_rate = block_align * st->codec->sample_rate; | |
200 break; | |
201 default: | |
202 block_align = st->codec->block_align; | |
203 byte_rate = st->codec->bit_rate / 8; | |
204 break; | |
205 } | |
206 | 191 |
207 if (block_align <= 0 || byte_rate <= 0) | 192 if (block_align <= 0 || byte_rate <= 0) |
208 return -1; | 193 return -1; |
209 | 194 |
210 /* compute the position by aligning it to block_align */ | 195 /* compute the position by aligning it to block_align */ |