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)