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);