Mercurial > libavcodec.hg
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, |