comparison lsp.c @ 10502:f132cde57bbe libavcodec

Do not hardcode filter order in ff_acelp_lspd2lpc()
author vitor
date Mon, 09 Nov 2009 12:06:19 +0000
parents 9f35b262d3f0
children a1d84a5cf21d
comparison
equal deleted inserted replaced
10501:bdf4a9ca162a 10502:f132cde57bbe
153 f[j] += f[j-1] * val + f[j-2]; 153 f[j] += f[j-1] * val + f[j-2];
154 f[1] += val; 154 f[1] += val;
155 } 155 }
156 } 156 }
157 157
158 void ff_acelp_lspd2lpc(const double *lsp, float *lpc) 158 void ff_acelp_lspd2lpc(const double *lsp, float *lpc, int lp_half_order)
159 { 159 {
160 double pa[6], qa[6]; 160 double pa[lp_half_order+1], qa[lp_half_order+1];
161 int i; 161 float *lpc2 = lpc + (lp_half_order << 1) - 1;
162 162
163 lsp2polyf(lsp, pa, 5); 163 lsp2polyf(lsp, pa, lp_half_order);
164 lsp2polyf(lsp + 1, qa, 5); 164 lsp2polyf(lsp + 1, qa, lp_half_order);
165 165
166 for (i=4; i>=0; i--) 166 while (lp_half_order--) {
167 { 167 double paf = pa[lp_half_order+1] + pa[lp_half_order];
168 double paf = pa[i+1] + pa[i]; 168 double qaf = qa[lp_half_order+1] - qa[lp_half_order];
169 double qaf = qa[i+1] - qa[i];
170 169
171 lpc[i ] = 0.5*(paf+qaf); 170 lpc [ lp_half_order] = 0.5*(paf+qaf);
172 lpc[9-i] = 0.5*(paf-qaf); 171 lpc2[-lp_half_order] = 0.5*(paf-qaf);
173 } 172 }
174 } 173 }