Mercurial > libavcodec.hg
comparison ra288.c @ 11983:5071d562408d libavcodec
ra288: convert VLAs to fixed size
author | mru |
---|---|
date | Sun, 27 Jun 2010 19:30:31 +0000 |
parents | 8b6f3d3b55cb |
children |
comparison
equal
deleted
inserted
replaced
11982:669bf7f6c986 | 11983:5071d562408d |
---|---|
24 #include "get_bits.h" | 24 #include "get_bits.h" |
25 #include "ra288.h" | 25 #include "ra288.h" |
26 #include "lpc.h" | 26 #include "lpc.h" |
27 #include "celp_math.h" | 27 #include "celp_math.h" |
28 #include "celp_filters.h" | 28 #include "celp_filters.h" |
29 | |
30 #define MAX_BACKWARD_FILTER_ORDER 36 | |
31 #define MAX_BACKWARD_FILTER_LEN 40 | |
32 #define MAX_BACKWARD_FILTER_NONREC 35 | |
29 | 33 |
30 typedef struct { | 34 typedef struct { |
31 float sp_lpc[36]; ///< LPC coefficients for speech data (spec: A) | 35 float sp_lpc[36]; ///< LPC coefficients for speech data (spec: A) |
32 float gain_lpc[10]; ///< LPC coefficients for gain (spec: GB) | 36 float gain_lpc[10]; ///< LPC coefficients for gain (spec: GB) |
33 | 37 |
118 */ | 122 */ |
119 static void do_hybrid_window(int order, int n, int non_rec, float *out, | 123 static void do_hybrid_window(int order, int n, int non_rec, float *out, |
120 float *hist, float *out2, const float *window) | 124 float *hist, float *out2, const float *window) |
121 { | 125 { |
122 int i; | 126 int i; |
123 float buffer1[order + 1]; | 127 float buffer1[MAX_BACKWARD_FILTER_ORDER + 1]; |
124 float buffer2[order + 1]; | 128 float buffer2[MAX_BACKWARD_FILTER_ORDER + 1]; |
125 float work[order + n + non_rec]; | 129 float work[MAX_BACKWARD_FILTER_ORDER + MAX_BACKWARD_FILTER_LEN + MAX_BACKWARD_FILTER_NONREC]; |
126 | 130 |
127 apply_window(work, window, hist, order + n + non_rec); | 131 apply_window(work, window, hist, order + n + non_rec); |
128 | 132 |
129 convolve(buffer1, work + order , n , order); | 133 convolve(buffer1, work + order , n , order); |
130 convolve(buffer2, work + order + n, non_rec, order); | 134 convolve(buffer2, work + order + n, non_rec, order); |
143 */ | 147 */ |
144 static void backward_filter(float *hist, float *rec, const float *window, | 148 static void backward_filter(float *hist, float *rec, const float *window, |
145 float *lpc, const float *tab, | 149 float *lpc, const float *tab, |
146 int order, int n, int non_rec, int move_size) | 150 int order, int n, int non_rec, int move_size) |
147 { | 151 { |
148 float temp[order+1]; | 152 float temp[MAX_BACKWARD_FILTER_ORDER+1]; |
149 | 153 |
150 do_hybrid_window(order, n, non_rec, temp, hist, rec, window); | 154 do_hybrid_window(order, n, non_rec, temp, hist, rec, window); |
151 | 155 |
152 if (!compute_lpc_coefs(temp, order, lpc, 0, 1, 1)) | 156 if (!compute_lpc_coefs(temp, order, lpc, 0, 1, 1)) |
153 apply_window(lpc, lpc, tab, order); | 157 apply_window(lpc, lpc, tab, order); |