Mercurial > libavcodec.hg
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 } |