[FFmpeg-devel] [PATCH] SIPR: kill variable-length arrays

Vitor Sessak vitor1001
Wed Jan 13 02:05:48 CET 2010


Mans Rullgard wrote:
> Two of these are in fact constant size, so use the constant instead of
> a variable in the declarations.  The remaining one is small enough
> that always using the maximum size is acceptable.
> ---
>  libavcodec/sipr.c |    8 +++++---
>  1 files changed, 5 insertions(+), 3 deletions(-)
> 
> diff --git a/libavcodec/sipr.c b/libavcodec/sipr.c
> index 7bfa3ab..e84e353 100644
> --- a/libavcodec/sipr.c
> +++ b/libavcodec/sipr.c
> @@ -46,6 +46,8 @@
>  /**  Subframe size for all modes except 16k */
>  #define SUBFR_SIZE           48
>  
> +#define MAX_SUBFRAME_COUNT   5
> +
>  #include "siprdata.h"
>  
>  typedef enum {
> @@ -233,8 +235,8 @@ static void decode_parameters(SiprParameters* parms, GetBitContext *pgb,
>  static void lsp2lpc_sipr(const double *lsp, float *Az)
>  {
>      int lp_half_order = LP_FILTER_ORDER >> 1;
> -    double buf[lp_half_order + 1];
> -    double pa[lp_half_order + 1];
> +    double buf[(LP_FILTER_ORDER >> 1) + 1];
> +    double pa[(LP_FILTER_ORDER >> 1) + 1];
>      double *qa = buf + 1;
>      int i,j;
>  
> @@ -409,7 +411,7 @@ static void decode_frame(SiprContext *ctx, SiprParameters *params,
>  {
>      int i, j;
>      int frame_size = ctx->m.subframe_count * SUBFR_SIZE;
> -    float Az[LP_FILTER_ORDER * ctx->m.subframe_count];
> +    float Az[LP_FILTER_ORDER * MAX_SUBFRAME_COUNT];
>      float *excitation;
>      float ir_buf[SUBFR_SIZE + LP_FILTER_ORDER];
>      float lsf_new[LP_FILTER_ORDER];

Patch ok.

-Vitor



More information about the ffmpeg-devel mailing list