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 */