From ff9ea0b7ccd60660455569fd26eae385fe05226b Mon Sep 17 00:00:00 2001 From: Thilo Borgmann Date: Tue, 12 Jan 2010 20:35:22 +0000 Subject: [PATCH] Replace variable length array with an allocated buffer in the context to increase compatibility. Originally committed as revision 21170 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/alsdec.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/libavcodec/alsdec.c b/libavcodec/alsdec.c index 6d913f3..e6d9c0f 100644 --- a/libavcodec/alsdec.c +++ b/libavcodec/alsdec.c @@ -180,6 +180,7 @@ typedef struct { int32_t *quant_cof_buffer; ///< contains all quantized parcor coefficients int32_t **lpc_cof; ///< coefficients of the direct form prediction filter for a channel int32_t *lpc_cof_buffer; ///< contains all coefficients of the direct form prediction filter + int32_t *lpc_cof_reversed_buffer; ///< temporary buffer to set up a reversed versio of lpc_cof_buffer ALSChannelData **chan_data; ///< channel data for multi-channel correlation ALSChannelData *chan_data_buffer; ///< contains channel data for all channels int *reverted_channels; ///< stores a flag for each reverted channel @@ -731,7 +732,7 @@ static int decode_var_block_data(ALSDecContext *ctx, ALSBlockData *bd) int32_t *lpc_cof = bd->lpc_cof; int32_t *raw_samples = bd->raw_samples; int32_t *raw_samples_end = bd->raw_samples + bd->block_length; - int32_t lpc_cof_reversed[opt_order]; + int32_t *lpc_cof_reversed = ctx->lpc_cof_reversed_buffer; // reverse long-term prediction if (*bd->use_ltp) { @@ -1359,6 +1360,7 @@ static av_cold int decode_end(AVCodecContext *avctx) av_freep(&ctx->lpc_cof); av_freep(&ctx->quant_cof_buffer); av_freep(&ctx->lpc_cof_buffer); + av_freep(&ctx->lpc_cof_reversed_buffer); av_freep(&ctx->prev_raw_samples); av_freep(&ctx->raw_samples); av_freep(&ctx->raw_buffer); @@ -1419,9 +1421,12 @@ static av_cold int decode_init(AVCodecContext *avctx) num_buffers * sconf->max_order); ctx->lpc_cof_buffer = av_malloc(sizeof(*ctx->lpc_cof_buffer) * num_buffers * sconf->max_order); + ctx->lpc_cof_reversed_buffer = av_malloc(sizeof(*ctx->lpc_cof_buffer) * + sconf->max_order); if (!ctx->quant_cof || !ctx->lpc_cof || - !ctx->quant_cof_buffer || !ctx->lpc_cof_buffer) { + !ctx->quant_cof_buffer || !ctx->lpc_cof_buffer || + !ctx->lpc_cof_reversed_buffer) { av_log(avctx, AV_LOG_ERROR, "Allocating buffer memory failed.\n"); return AVERROR(ENOMEM); } -- 2.7.4