Mercurial > libavcodec.hg
comparison lpc.h @ 7791:da7996a575f3 libavcodec
Cosmetics: s/LPC_type/LPC_TYPE/
author | vitor |
---|---|
date | Thu, 04 Sep 2008 22:17:27 +0000 |
parents | ffd4b1364b62 |
children | 84963c795459 |
comparison
equal
deleted
inserted
replaced
7790:209a9ad96a6c | 7791:da7996a575f3 |
---|---|
44 int max_order, int precision, | 44 int max_order, int precision, |
45 int32_t coefs[][MAX_LPC_ORDER], int *shift, int use_lpc, | 45 int32_t coefs[][MAX_LPC_ORDER], int *shift, int use_lpc, |
46 int omethod, int max_shift, int zero_shift); | 46 int omethod, int max_shift, int zero_shift); |
47 | 47 |
48 #ifdef LPC_USE_DOUBLE | 48 #ifdef LPC_USE_DOUBLE |
49 #define LPC_type double | 49 #define LPC_TYPE double |
50 #else | 50 #else |
51 #define LPC_type float | 51 #define LPC_TYPE float |
52 #endif | 52 #endif |
53 | 53 |
54 /** | 54 /** |
55 * Levinson-Durbin recursion. | 55 * Levinson-Durbin recursion. |
56 * Produces LPC coefficients from autocorrelation data. | 56 * Produces LPC coefficients from autocorrelation data. |
57 */ | 57 */ |
58 static inline int compute_lpc_coefs(const LPC_type *autoc, int max_order, | 58 static inline int compute_lpc_coefs(const LPC_TYPE *autoc, int max_order, |
59 LPC_type *lpc, int lpc_stride, int fail, | 59 LPC_TYPE *lpc, int lpc_stride, int fail, |
60 int normalize) | 60 int normalize) |
61 { | 61 { |
62 int i, j; | 62 int i, j; |
63 LPC_type err; | 63 LPC_TYPE err; |
64 LPC_type *lpc_last = lpc; | 64 LPC_TYPE *lpc_last = lpc; |
65 | 65 |
66 if (normalize) | 66 if (normalize) |
67 err = *autoc++; | 67 err = *autoc++; |
68 | 68 |
69 if (fail && (autoc[max_order - 1] == 0 || err <= 0)) | 69 if (fail && (autoc[max_order - 1] == 0 || err <= 0)) |
70 return -1; | 70 return -1; |
71 | 71 |
72 for(i=0; i<max_order; i++) { | 72 for(i=0; i<max_order; i++) { |
73 LPC_type r = -autoc[i]; | 73 LPC_TYPE r = -autoc[i]; |
74 | 74 |
75 if (normalize) { | 75 if (normalize) { |
76 for(j=0; j<i; j++) | 76 for(j=0; j<i; j++) |
77 r -= lpc_last[j] * autoc[i-j-1]; | 77 r -= lpc_last[j] * autoc[i-j-1]; |
78 | 78 |
81 } | 81 } |
82 | 82 |
83 lpc[i] = r; | 83 lpc[i] = r; |
84 | 84 |
85 for(j=0; j < (i+1)>>1; j++) { | 85 for(j=0; j < (i+1)>>1; j++) { |
86 LPC_type f = lpc_last[ j]; | 86 LPC_TYPE f = lpc_last[ j]; |
87 LPC_type b = lpc_last[i-1-j]; | 87 LPC_TYPE b = lpc_last[i-1-j]; |
88 lpc[ j] = f + r * b; | 88 lpc[ j] = f + r * b; |
89 lpc[i-1-j] = b + r * f; | 89 lpc[i-1-j] = b + r * f; |
90 } | 90 } |
91 | 91 |
92 if (fail && err < 0) | 92 if (fail && err < 0) |