aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec/lpc.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2015-07-06 19:11:42 +0200
committerMichael Niedermayer <michaelni@gmx.at>2015-07-06 19:11:42 +0200
commita3a61d4663ab7f2a26dd6d246d3884a166c8c626 (patch)
tree3223f012b330ced0278c3887d2e5c4a44614176e /libavcodec/lpc.c
parent709bb45c660ae7c2d065bcade931e068620f9b92 (diff)
downloadffmpeg-a3a61d4663ab7f2a26dd6d246d3884a166c8c626.tar.gz
avcodec/lpc: Fix lpc_apply_welch_window_c() for odd len
Also removes assert this fixes an assertion failure on non-x86 Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/lpc.c')
-rw-r--r--libavcodec/lpc.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/libavcodec/lpc.c b/libavcodec/lpc.c
index deb02e7f58..07fc29265a 100644
--- a/libavcodec/lpc.c
+++ b/libavcodec/lpc.c
@@ -37,13 +37,19 @@ static void lpc_apply_welch_window_c(const int32_t *data, int len,
double w;
double c;
- /* The optimization in commit fa4ed8c does not support odd len.
- * If someone wants odd len extend that change. */
- av_assert2(!(len & 1));
-
n2 = (len >> 1);
c = 2.0 / (len - 1.0);
+ if (len & 1) {
+ for(i=0; i<n2; i++) {
+ w = c - i - 1.0;
+ w = 1.0 - (w * w);
+ w_data[i] = data[i] * w;
+ w_data[len-1-i] = data[len-1-i] * w;
+ }
+ return;
+ }
+
w_data+=n2;
data+=n2;
for(i=0; i<n2; i++) {