comparison truespeech.c @ 5674:ca944f1db2b3 libavcodec

Add checks on input/output buffers size for some audio decoders
author kostya
date Thu, 13 Sep 2007 05:59:58 +0000
parents a96d905dcbaa
children 5b44e0210dad
comparison
equal deleted inserted replaced
5673:9810f0bbacb2 5674:ca944f1db2b3
331 void *data, int *data_size, 331 void *data, int *data_size,
332 uint8_t *buf, int buf_size) 332 uint8_t *buf, int buf_size)
333 { 333 {
334 TSContext *c = avctx->priv_data; 334 TSContext *c = avctx->priv_data;
335 335
336 int i; 336 int i, j;
337 short *samples = data; 337 short *samples = data;
338 int consumed = 0; 338 int consumed = 0;
339 int16_t out_buf[240]; 339 int16_t out_buf[240];
340 int iterations;
340 341
341 if (!buf_size) 342 if (!buf_size)
342 return 0; 343 return 0;
343 344
344 while (consumed < buf_size) { 345 iterations = FFMIN(buf_size / 32, *data_size / 480);
346 for(j = 0; j < iterations; j++) {
345 truespeech_read_frame(c, buf + consumed); 347 truespeech_read_frame(c, buf + consumed);
346 consumed += 32; 348 consumed += 32;
347 349
348 truespeech_correlate_filter(c); 350 truespeech_correlate_filter(c);
349 truespeech_filters_merge(c); 351 truespeech_filters_merge(c);
364 366
365 } 367 }
366 368
367 *data_size = consumed * 15; 369 *data_size = consumed * 15;
368 370
369 return buf_size; 371 return consumed;
370 } 372 }
371 373
372 AVCodec truespeech_decoder = { 374 AVCodec truespeech_decoder = {
373 "truespeech", 375 "truespeech",
374 CODEC_TYPE_AUDIO, 376 CODEC_TYPE_AUDIO,