Mercurial > libavcodec.hg
comparison dtsdec.c @ 4479:f1057be02298 libavcodec
cosmetics: don't needlessly open new blocks
author | mru |
---|---|
date | Mon, 05 Feb 2007 19:55:15 +0000 |
parents | ca8c6efd00d3 |
children | 3a31e2fc1b9b |
comparison
equal
deleted
inserted
replaced
4478:ca8c6efd00d3 | 4479:f1057be02298 |
---|---|
206 static int frame_length; | 206 static int frame_length; |
207 static int flags; | 207 static int flags; |
208 int bit_rate; | 208 int bit_rate; |
209 int len; | 209 int len; |
210 dts_state_t *state = avctx->priv_data; | 210 dts_state_t *state = avctx->priv_data; |
211 level_t level; | |
212 sample_t bias; | |
213 int i; | |
211 | 214 |
212 *data_size = 0; | 215 *data_size = 0; |
213 | 216 |
214 while(1) { | 217 while(1) { |
218 int length; | |
219 | |
215 len = end - start; | 220 len = end - start; |
216 if(!len) | 221 if(!len) |
217 break; | 222 break; |
218 if(len > bufpos - bufptr) | 223 if(len > bufpos - bufptr) |
219 len = bufpos - bufptr; | 224 len = bufpos - bufptr; |
223 if(bufptr != bufpos) | 228 if(bufptr != bufpos) |
224 return start - buff; | 229 return start - buff; |
225 if(bufpos != buf + HEADER_SIZE) | 230 if(bufpos != buf + HEADER_SIZE) |
226 break; | 231 break; |
227 | 232 |
228 { | 233 length = dts_syncinfo(state, buf, &flags, &sample_rate, &bit_rate, |
229 int length; | 234 &frame_length); |
230 | 235 if(!length) { |
231 length = | 236 av_log(NULL, AV_LOG_INFO, "skip\n"); |
232 dts_syncinfo(state, buf, &flags, &sample_rate, &bit_rate, | 237 for(bufptr = buf; bufptr < buf + HEADER_SIZE - 1; bufptr++) |
233 &frame_length); | 238 bufptr[0] = bufptr[1]; |
234 if(!length) { | 239 continue; |
235 av_log(NULL, AV_LOG_INFO, "skip\n"); | 240 } |
236 for(bufptr = buf; bufptr < buf + HEADER_SIZE - 1; bufptr++) | 241 bufpos = buf + length; |
237 bufptr[0] = bufptr[1]; | 242 } |
238 continue; | 243 |
239 } | 244 flags = 2; /* ???????????? */ |
240 bufpos = buf + length; | 245 level = CONVERT_LEVEL; |
241 } | 246 bias = CONVERT_BIAS; |
242 } | 247 |
243 | 248 flags |= DTS_ADJUST_LEVEL; |
244 { | 249 if(dts_frame(state, buf, &flags, &level, bias)) { |
245 level_t level; | 250 av_log(avctx, AV_LOG_ERROR, "dts_frame() failed\n"); |
246 sample_t bias; | 251 goto end; |
247 int i; | 252 } |
248 | 253 |
249 flags = 2; /* ???????????? */ | 254 avctx->sample_rate = sample_rate; |
250 level = CONVERT_LEVEL; | 255 avctx->channels = channels_multi(flags); |
251 bias = CONVERT_BIAS; | 256 avctx->bit_rate = bit_rate; |
252 | 257 |
253 flags |= DTS_ADJUST_LEVEL; | 258 for(i = 0; i < dts_blocks_num(state); i++) { |
254 if(dts_frame(state, buf, &flags, &level, bias)) | 259 int chans; |
255 goto error; | 260 |
256 avctx->sample_rate = sample_rate; | 261 if(dts_block(state)) { |
257 avctx->channels = channels_multi(flags); | 262 av_log(avctx, AV_LOG_ERROR, "dts_block() failed\n"); |
258 avctx->bit_rate = bit_rate; | 263 goto end; |
259 for(i = 0; i < dts_blocks_num(state); i++) { | 264 } |
260 if(dts_block(state)) | 265 |
261 goto error; | 266 chans = channels_multi(flags); |
262 { | 267 convert2s16_multi(dts_samples(state), out_samples, |
263 int chans; | 268 flags & (DTS_CHANNEL_MASK | DTS_LFE)); |
264 | 269 |
265 chans = channels_multi(flags); | 270 out_samples += 256 * chans; |
266 convert2s16_multi(dts_samples(state), out_samples, | 271 *data_size += 256 * sizeof(int16_t) * chans; |
267 flags & (DTS_CHANNEL_MASK | DTS_LFE)); | 272 } |
268 | 273 |
269 out_samples += 256 * chans; | 274 end: |
270 *data_size += 256 * sizeof(int16_t) * chans; | 275 bufptr = buf; |
271 } | 276 bufpos = buf + HEADER_SIZE; |
272 } | |
273 bufptr = buf; | |
274 bufpos = buf + HEADER_SIZE; | |
275 return start - buff; | |
276 error: | |
277 av_log(NULL, AV_LOG_ERROR, "error\n"); | |
278 bufptr = buf; | |
279 bufpos = buf + HEADER_SIZE; | |
280 } | |
281 | |
282 return start - buff; | 277 return start - buff; |
283 } | 278 } |
284 | 279 |
285 static int | 280 static int |
286 dts_decode_init(AVCodecContext * avctx) | 281 dts_decode_init(AVCodecContext * avctx) |