From bf0eaada0ae488421358a5df58c116f77152d78e Mon Sep 17 00:00:00 2001
From: Jean-Marc Valin <jmvalin@amazon.com>
Date: Thu, 22 Jun 2023 01:14:08 -0400
Subject: [PATCH] Remove useless LPCNet files

---
 dnn/_kiss_fft_guts.h | 182 -------------
 dnn/ceps_vq_train.c  | 619 -------------------------------------------
 dnn/kiss_fft.c       | 601 -----------------------------------------
 dnn/kiss_fft.h       | 202 --------------
 dnn/opus_types.h     | 159 -----------
 dnn/pitch.c          |  84 ------
 dnn/test_lpcnet.c    |  69 -----
 lpcnet_headers.mk    |   1 +
 8 files changed, 1 insertion(+), 1916 deletions(-)
 delete mode 100644 dnn/_kiss_fft_guts.h
 delete mode 100644 dnn/ceps_vq_train.c
 delete mode 100644 dnn/kiss_fft.c
 delete mode 100644 dnn/kiss_fft.h
 delete mode 100644 dnn/opus_types.h
 delete mode 100644 dnn/pitch.c
 delete mode 100644 dnn/test_lpcnet.c

diff --git a/dnn/_kiss_fft_guts.h b/dnn/_kiss_fft_guts.h
deleted file mode 100644
index 17392b3e9..000000000
--- a/dnn/_kiss_fft_guts.h
+++ /dev/null
@@ -1,182 +0,0 @@
-/*Copyright (c) 2003-2004, Mark Borgerding
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-   modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-       this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright notice,
-       this list of conditions and the following disclaimer in the
-       documentation and/or other materials provided with the distribution.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-  POSSIBILITY OF SUCH DAMAGE.*/
-
-#ifndef KISS_FFT_GUTS_H
-#define KISS_FFT_GUTS_H
-
-#define MIN(a,b) ((a)<(b) ? (a):(b))
-#define MAX(a,b) ((a)>(b) ? (a):(b))
-
-/* kiss_fft.h
-   defines kiss_fft_scalar as either short or a float type
-   and defines
-   typedef struct { kiss_fft_scalar r; kiss_fft_scalar i; }kiss_fft_cpx; */
-#include "kiss_fft.h"
-
-/*
-  Explanation of macros dealing with complex math:
-
-   C_MUL(m,a,b)         : m = a*b
-   C_FIXDIV( c , div )  : if a fixed point impl., c /= div. noop otherwise
-   C_SUB( res, a,b)     : res = a - b
-   C_SUBFROM( res , a)  : res -= a
-   C_ADDTO( res , a)    : res += a
- * */
-#ifdef FIXED_POINT
-#include "arch.h"
-
-
-#define SAMP_MAX 2147483647
-#define TWID_MAX 32767
-#define TRIG_UPSCALE 1
-
-#define SAMP_MIN -SAMP_MAX
-
-
-#   define S_MUL(a,b) MULT16_32_Q15(b, a)
-
-#   define C_MUL(m,a,b) \
-      do{ (m).r = SUB32_ovflw(S_MUL((a).r,(b).r) , S_MUL((a).i,(b).i)); \
-          (m).i = ADD32_ovflw(S_MUL((a).r,(b).i) , S_MUL((a).i,(b).r)); }while(0)
-
-#   define C_MULC(m,a,b) \
-      do{ (m).r = ADD32_ovflw(S_MUL((a).r,(b).r) , S_MUL((a).i,(b).i)); \
-          (m).i = SUB32_ovflw(S_MUL((a).i,(b).r) , S_MUL((a).r,(b).i)); }while(0)
-
-#   define C_MULBYSCALAR( c, s ) \
-      do{ (c).r =  S_MUL( (c).r , s ) ;\
-          (c).i =  S_MUL( (c).i , s ) ; }while(0)
-
-#   define DIVSCALAR(x,k) \
-        (x) = S_MUL(  x, (TWID_MAX-((k)>>1))/(k)+1 )
-
-#   define C_FIXDIV(c,div) \
-        do {    DIVSCALAR( (c).r , div);  \
-                DIVSCALAR( (c).i  , div); }while (0)
-
-#define  C_ADD( res, a,b)\
-    do {(res).r=ADD32_ovflw((a).r,(b).r);  (res).i=ADD32_ovflw((a).i,(b).i); \
-    }while(0)
-#define  C_SUB( res, a,b)\
-    do {(res).r=SUB32_ovflw((a).r,(b).r);  (res).i=SUB32_ovflw((a).i,(b).i); \
-    }while(0)
-#define C_ADDTO( res , a)\
-    do {(res).r = ADD32_ovflw((res).r, (a).r);  (res).i = ADD32_ovflw((res).i,(a).i);\
-    }while(0)
-
-#define C_SUBFROM( res , a)\
-    do {(res).r = ADD32_ovflw((res).r,(a).r);  (res).i = SUB32_ovflw((res).i,(a).i); \
-    }while(0)
-
-#if defined(OPUS_ARM_INLINE_ASM)
-#include "arm/kiss_fft_armv4.h"
-#endif
-
-#if defined(OPUS_ARM_INLINE_EDSP)
-#include "arm/kiss_fft_armv5e.h"
-#endif
-#if defined(MIPSr1_ASM)
-#include "mips/kiss_fft_mipsr1.h"
-#endif
-
-#else  /* not FIXED_POINT*/
-
-#   define S_MUL(a,b) ( (a)*(b) )
-#define C_MUL(m,a,b) \
-    do{ (m).r = (a).r*(b).r - (a).i*(b).i;\
-        (m).i = (a).r*(b).i + (a).i*(b).r; }while(0)
-#define C_MULC(m,a,b) \
-    do{ (m).r = (a).r*(b).r + (a).i*(b).i;\
-        (m).i = (a).i*(b).r - (a).r*(b).i; }while(0)
-
-#define C_MUL4(m,a,b) C_MUL(m,a,b)
-
-#   define C_FIXDIV(c,div) /* NOOP */
-#   define C_MULBYSCALAR( c, s ) \
-    do{ (c).r *= (s);\
-        (c).i *= (s); }while(0)
-#endif
-
-#ifndef CHECK_OVERFLOW_OP
-#  define CHECK_OVERFLOW_OP(a,op,b) /* noop */
-#endif
-
-#ifndef C_ADD
-#define  C_ADD( res, a,b)\
-    do { \
-            CHECK_OVERFLOW_OP((a).r,+,(b).r)\
-            CHECK_OVERFLOW_OP((a).i,+,(b).i)\
-            (res).r=(a).r+(b).r;  (res).i=(a).i+(b).i; \
-    }while(0)
-#define  C_SUB( res, a,b)\
-    do { \
-            CHECK_OVERFLOW_OP((a).r,-,(b).r)\
-            CHECK_OVERFLOW_OP((a).i,-,(b).i)\
-            (res).r=(a).r-(b).r;  (res).i=(a).i-(b).i; \
-    }while(0)
-#define C_ADDTO( res , a)\
-    do { \
-            CHECK_OVERFLOW_OP((res).r,+,(a).r)\
-            CHECK_OVERFLOW_OP((res).i,+,(a).i)\
-            (res).r += (a).r;  (res).i += (a).i;\
-    }while(0)
-
-#define C_SUBFROM( res , a)\
-    do {\
-            CHECK_OVERFLOW_OP((res).r,-,(a).r)\
-            CHECK_OVERFLOW_OP((res).i,-,(a).i)\
-            (res).r -= (a).r;  (res).i -= (a).i; \
-    }while(0)
-#endif /* C_ADD defined */
-
-#ifdef FIXED_POINT
-/*#  define KISS_FFT_COS(phase)  TRIG_UPSCALE*floor(MIN(32767,MAX(-32767,.5+32768 * cos (phase))))
-#  define KISS_FFT_SIN(phase)  TRIG_UPSCALE*floor(MIN(32767,MAX(-32767,.5+32768 * sin (phase))))*/
-#  define KISS_FFT_COS(phase)  floor(.5+TWID_MAX*cos (phase))
-#  define KISS_FFT_SIN(phase)  floor(.5+TWID_MAX*sin (phase))
-#  define HALF_OF(x) ((x)>>1)
-#elif defined(USE_SIMD)
-#  define KISS_FFT_COS(phase) _mm_set1_ps( cos(phase) )
-#  define KISS_FFT_SIN(phase) _mm_set1_ps( sin(phase) )
-#  define HALF_OF(x) ((x)*_mm_set1_ps(.5f))
-#else
-#  define KISS_FFT_COS(phase) (kiss_fft_scalar) cos(phase)
-#  define KISS_FFT_SIN(phase) (kiss_fft_scalar) sin(phase)
-#  define HALF_OF(x) ((x)*.5f)
-#endif
-
-#define  kf_cexp(x,phase) \
-        do{ \
-                (x)->r = KISS_FFT_COS(phase);\
-                (x)->i = KISS_FFT_SIN(phase);\
-        }while(0)
-
-#define  kf_cexp2(x,phase) \
-   do{ \
-      (x)->r = TRIG_UPSCALE*celt_cos_norm((phase));\
-      (x)->i = TRIG_UPSCALE*celt_cos_norm((phase)-32768);\
-}while(0)
-
-#endif /* KISS_FFT_GUTS_H */
diff --git a/dnn/ceps_vq_train.c b/dnn/ceps_vq_train.c
deleted file mode 100644
index c8e527512..000000000
--- a/dnn/ceps_vq_train.c
+++ /dev/null
@@ -1,619 +0,0 @@
-
-#include <valgrind/memcheck.h>
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <math.h>
-
-#define MIN(a,b) ((a)<(b)?(a):(b))
-#define COEF 0.0f
-#define MAX_ENTRIES 16384
-
-#define MULTI 4
-#define MULTI_MASK (MULTI-1)
-
-void compute_weights(const float *x, float *w, int ndim)
-{
-  int i;
-  w[0] = MIN(x[0], x[1]-x[0]);
-  for (i=1;i<ndim-1;i++)
-    w[i] = MIN(x[i]-x[i-1], x[i+1]-x[i]);
-  w[ndim-1] = MIN(x[ndim-1]-x[ndim-2], M_PI-x[ndim-1]);
-  
-  for (i=0;i<ndim;i++)
-    w[i] = 1./(.01+w[i]);
-  w[0]*=3;
-  w[1]*=2;
-  /*
-  for (i=0;i<ndim;i++)
-    w[i] = 1;*/
-}
-
-int find_nearest(const float *codebook, int nb_entries, const float *x, int ndim, float *dist)
-{
-  int i, j;
-  float min_dist = 1e15;
-  int nearest = 0;
-  
-  for (i=0;i<nb_entries;i++)
-  {
-    float dist=0;
-    for (j=0;j<ndim;j++)
-      dist += (x[j]-codebook[i*ndim+j])*(x[j]-codebook[i*ndim+j]);
-    if (dist<min_dist)
-    {
-      min_dist = dist;
-      nearest = i;
-    }
-  }
-  if (dist)
-    *dist = min_dist;
-  return nearest;
-}
-
-int find_nearest_multi(const float *codebook, int nb_entries, const float *x, int ndim, float *dist, int sign)
-{
-  int i, j;
-  float min_dist = 1e15;
-  int nearest = 0;
-
-  for (i=0;i<nb_entries;i++)
-  {
-    int offset;
-    float dist=0;
-    offset = (i&MULTI_MASK)*ndim;
-    for (j=0;j<ndim;j++)
-      dist += (x[offset+j]-codebook[i*ndim+j])*(x[offset+j]-codebook[i*ndim+j]);
-    if (dist<min_dist)
-    {
-      min_dist = dist;
-      nearest = i;
-    }
-  }
-  if (sign) {
-    for (i=0;i<nb_entries;i++)
-    {
-      int offset;
-      float dist=0;
-      offset = (i&MULTI_MASK)*ndim;
-      for (j=0;j<ndim;j++)
-        dist += (x[offset+j]+codebook[i*ndim+j])*(x[offset+j]+codebook[i*ndim+j]);
-      if (dist<min_dist)
-      {
-        min_dist = dist;
-        nearest = i+nb_entries;
-      }
-    }
-  }
-  if (dist)
-    *dist = min_dist;
-  return nearest;
-}
-
-
-int find_nearest_weighted(const float *codebook, int nb_entries, float *x, const float *w, int ndim)
-{
-  int i, j;
-  float min_dist = 1e15;
-  int nearest = 0;
-  
-  for (i=0;i<nb_entries;i++)
-  {
-    float dist=0;
-    for (j=0;j<ndim;j++)
-      dist += w[j]*(x[j]-codebook[i*ndim+j])*(x[j]-codebook[i*ndim+j]);
-    if (dist<min_dist)
-    {
-      min_dist = dist;
-      nearest = i;
-    }
-  }
-  return nearest;
-}
-
-int quantize_lsp(const float *x, const float *codebook1, const float *codebook2, 
-		 const float *codebook3, int nb_entries, float *xq, int ndim)
-{
-  int i, n1, n2, n3;
-  float err[ndim], err2[ndim], err3[ndim];
-  float w[ndim], w2[ndim], w3[ndim];
-  
-  w[0] = MIN(x[0], x[1]-x[0]);
-  for (i=1;i<ndim-1;i++)
-    w[i] = MIN(x[i]-x[i-1], x[i+1]-x[i]);
-  w[ndim-1] = MIN(x[ndim-1]-x[ndim-2], M_PI-x[ndim-1]);
-  
-  /*
-  for (i=0;i<ndim;i++)
-    w[i] = 1./(.003+w[i]);
-  w[0]*=3;
-  w[1]*=2;*/
-  compute_weights(x, w, ndim);
-  
-  for (i=0;i<ndim;i++)
-    err[i] = x[i]-COEF*xq[i];
-  n1 = find_nearest(codebook1, nb_entries, err, ndim, NULL);
-  
-  for (i=0;i<ndim;i++)
-  {
-    xq[i] = COEF*xq[i] + codebook1[ndim*n1+i];
-    err[i] -= codebook1[ndim*n1+i];
-  }
-  for (i=0;i<ndim/2;i++)
-  {
-    err2[i] = err[2*i];  
-    err3[i] = err[2*i+1];
-    w2[i] = w[2*i];  
-    w3[i] = w[2*i+1];
-  }
-  n2 = find_nearest_weighted(codebook2, nb_entries, err2, w2, ndim/2);
-  n3 = find_nearest_weighted(codebook3, nb_entries, err3, w3, ndim/2);
-  
-  for (i=0;i<ndim/2;i++)
-  {
-    xq[2*i] += codebook2[ndim*n2/2+i];
-    xq[2*i+1] += codebook3[ndim*n3/2+i];
-  }
-  return 0;
-}
-
-void split(float *codebook, int nb_entries, int ndim)
-{
-  int i,j;
-  for (i=0;i<nb_entries;i++)
-  {
-    for (j=0;j<ndim;j++)
-    {
-      float delta = .01*(rand()/(float)RAND_MAX-.5);
-      codebook[i*ndim+j] += delta;
-      codebook[(i+nb_entries)*ndim+j] = codebook[i*ndim+j] - delta;
-    }
-  }
-}
-
-
-void split1(float *codebook, int nb_entries, const float *data, int nb_vectors, int ndim)
-{
-  int i,j;
-  int nearest[nb_vectors];
-  float dist[nb_entries];
-  int count[nb_entries];
-  int worst;
-  for (i=0;i<nb_entries;i++)
-    dist[i] = 0;
-  for (i=0;i<nb_entries;i++)
-    count[i]=0;
-  for (i=0;i<nb_vectors;i++)
-  {
-    float d;
-    nearest[i] = find_nearest(codebook, nb_entries, data+i*ndim, ndim, &d);
-    dist[nearest[i]] += d;
-    count[nearest[i]]++;
-  }
-
-  worst=0;
-  for (i=1;i<nb_entries;i++)
-  {
-    if (dist[i] > dist[worst])
-      worst=i;
-  }
-  
-  for (j=0;j<ndim;j++)
-  {
-    float delta = .001*(rand()/(float)RAND_MAX-.5);
-    codebook[worst*ndim+j] += delta;
-    codebook[nb_entries*ndim+j] = codebook[worst*ndim+j] - delta;
-  }
-}
-
-
-
-void update(float *data, int nb_vectors, float *codebook, int nb_entries, int ndim)
-{
-  int i,j;
-  int count[nb_entries];
-  int nearest[nb_vectors];
-  double err=0;
-
-  for (i=0;i<nb_entries;i++)
-    count[i] = 0;
-  
-  for (i=0;i<nb_vectors;i++)
-  {
-    float dist;
-    nearest[i] = find_nearest(codebook, nb_entries, data+i*ndim, ndim, &dist);
-    err += dist;
-  }
-  printf("RMS error = %f\n", sqrt(err/nb_vectors/ndim));
-  for (i=0;i<nb_entries*ndim;i++)
-    codebook[i] = 0;
-  
-  for (i=0;i<nb_vectors;i++)
-  {
-    int n = nearest[i];
-    count[n]++;
-    for (j=0;j<ndim;j++)
-      codebook[n*ndim+j] += data[i*ndim+j];
-  }
-
-  float w2=0;
-  int min_count = 1000000000;
-  int small=0;
-  for (i=0;i<nb_entries;i++)
-  { 
-    for (j=0;j<ndim;j++)
-      codebook[i*ndim+j] *= (1./count[i]);
-    w2 += (count[i]/(float)nb_vectors)*(count[i]/(float)nb_vectors);
-    if (count[i] < min_count) min_count = count[i];
-    small += (count[i] < 50);
-  }
-  fprintf(stderr, "%f / %d, min = %d, small=%d\n", 1./w2, nb_entries, min_count, small);
-}
-
-void update_multi(float *data, int nb_vectors, float *codebook, int nb_entries, int ndim, int sign)
-{
-  int i,j;
-  int count[nb_entries];
-  int idcount[8]={0};
-  int nearest[nb_vectors];
-  double err=0;
-
-  for (i=0;i<nb_entries;i++)
-    count[i] = 0;
-
-  for (i=0;i<nb_vectors;i++)
-  {
-    float dist;
-    nearest[i] = find_nearest_multi(codebook, nb_entries, data+MULTI*i*ndim, ndim, &dist, sign);
-    err += dist;
-  }
-  printf("RMS error = %f\n", sqrt(err/nb_vectors/ndim));
-  for (i=0;i<nb_entries*ndim;i++)
-    codebook[i] = 0;
-
-  for (i=0;i<nb_vectors;i++)
-  {
-    int n = nearest[i] % nb_entries;
-    float sign = nearest[i] < nb_entries ? 1 : -1;
-    count[n]++;
-    idcount[(n&MULTI_MASK) + 4*(sign!=1)]++;
-    for (j=0;j<ndim;j++)
-      codebook[n*ndim+j] += sign*data[(MULTI*i + (n&MULTI_MASK))*ndim+j];
-  }
-
-  float w2=0;
-  int min_count = 1000000000;
-  int small=0;
-  for (i=0;i<nb_entries;i++)
-  {
-    for (j=0;j<ndim;j++)
-      codebook[i*ndim+j] *= (1./count[i]);
-    w2 += (count[i]/(float)nb_vectors)*(count[i]/(float)nb_vectors);
-    if (count[i] < min_count) min_count = count[i];
-    small += (count[i] < 50);
-  }
-  fprintf(stderr, "%d %d %d %d %d %d %d %d ", idcount[0], idcount[1], idcount[2], idcount[3], idcount[4], idcount[5], idcount[6], idcount[7]);
-  fprintf(stderr, "| %f / %d, min = %d, small=%d\n", 1./w2, nb_entries, min_count, small);
-}
-
-
-void update_weighted(float *data, float *weight, int nb_vectors, float *codebook, int nb_entries, int ndim)
-{
-  int i,j;
-  float count[MAX_ENTRIES][ndim];
-  int nearest[nb_vectors];
-  
-  for (i=0;i<nb_entries;i++)
-    for (j=0;j<ndim;j++)
-      count[i][j] = 0;
-  
-  for (i=0;i<nb_vectors;i++)
-  {
-    nearest[i] = find_nearest_weighted(codebook, nb_entries, data+i*ndim, weight+i*ndim, ndim);
-  }
-  for (i=0;i<nb_entries*ndim;i++)
-    codebook[i] = 0;
-  
-  for (i=0;i<nb_vectors;i++)
-  {
-    int n = nearest[i];
-    for (j=0;j<ndim;j++)
-    {
-      float w = sqrt(weight[i*ndim+j]);
-      count[n][j]+=w;
-      codebook[n*ndim+j] += w*data[i*ndim+j];
-    }
-  }
-
-  //float w2=0;
-  for (i=0;i<nb_entries;i++)
-  { 
-    for (j=0;j<ndim;j++)
-      codebook[i*ndim+j] *= (1./count[i][j]);
-    //w2 += (count[i]/(float)nb_vectors)*(count[i]/(float)nb_vectors);
-  }
-  //fprintf(stderr, "%f / %d\n", 1./w2, nb_entries);
-}
-
-void vq_train(float *data, int nb_vectors, float *codebook, int nb_entries, int ndim)
-{
-  int i, j, e;
-  e = 1;
-  for (j=0;j<ndim;j++)
-    codebook[j] = 0;
-  for (i=0;i<nb_vectors;i++)
-    for (j=0;j<ndim;j++)
-      codebook[j] += data[i*ndim+j];
-  for (j=0;j<ndim;j++)
-    codebook[j] *= (1./nb_vectors);
-  
-  
-  while (e< nb_entries)
-  {
-#if 1
-    split(codebook, e, ndim);
-    e<<=1;
-#else
-    split1(codebook, e, data, nb_vectors, ndim);
-    e++;
-#endif
-    fprintf(stderr, "%d\n", e);
-    for (j=0;j<4;j++)
-      update(data, nb_vectors, codebook, e, ndim);
-  }
-  for (j=0;j<20;j++)
-    update(data, nb_vectors, codebook, e, ndim);
-}
-
-void vq_train_multi(float *data, int nb_vectors, float *codebook, int nb_entries, int ndim, int sign)
-{
-  int i, j, e;
-#if 1
-  for (e=0;e<MULTI;e++) {
-    for (j=0;j<ndim;j++)
-      codebook[e*ndim+j] = 0;
-    for (i=0;i<nb_vectors;i++)
-      for (j=0;j<ndim;j++)
-        codebook[e*ndim+j] += data[(MULTI*i+e)*ndim+j];
-    for (j=0;j<ndim;j++) {
-      float delta = .01*(rand()/(float)RAND_MAX-.5);
-      codebook[e*ndim+j] *= (1./nb_vectors);
-      codebook[e*ndim+j] += delta;
-    }
-  }
-#else
-  for (i=0;i<MULTI*ndim;i++) codebook[i] = .01*(rand()/(float)RAND_MAX-.5);
-#endif
-  e = MULTI;
-  for (j=0;j<10;j++)
-    update_multi(data, nb_vectors, codebook, e, ndim, sign);
-
-  while (e < nb_entries)
-  {
-    split(codebook, e, ndim);
-    e<<=1;
-    fprintf(stderr, "%d\n", e);
-    for (j=0;j<4;j++)
-      update_multi(data, nb_vectors, codebook, e, ndim, sign);
-  }
-  for (j=0;j<20;j++)
-    update_multi(data, nb_vectors, codebook, e, ndim, sign);
-}
-
-
-void vq_train_weighted(float *data, float *weight, int nb_vectors, float *codebook, int nb_entries, int ndim)
-{
-  int i, j, e;
-  e = 1;
-  for (j=0;j<ndim;j++)
-    codebook[j] = 0;
-  for (i=0;i<nb_vectors;i++)
-    for (j=0;j<ndim;j++)
-      codebook[j] += data[i*ndim+j];
-  for (j=0;j<ndim;j++)
-    codebook[j] *= (1./nb_vectors);
-  
-  
-  while (e< nb_entries)
-  {
-#if 0
-    split(codebook, e, ndim);
-    e<<=1;
-#else
-    split1(codebook, e, data, nb_vectors, ndim);
-    e++;
-#endif
-    fprintf(stderr, "%d\n", e);
-    for (j=0;j<ndim;j++)
-      update_weighted(data, weight, nb_vectors, codebook, e, ndim);
-  }
-}
-
-
-int main(int argc, char **argv)
-{
-  int i,j;
-  int nb_vectors, nb_entries, nb_entries1, nb_entries2a, nb_entries2b, ndim, ndim0, total_dim;
-  float *data, *pred, *multi_data, *multi_data2, *qdata;
-  float *codebook, *codebook2, *codebook3, *codebook_diff2, *codebook_diff4;
-  float *delta;
-  double err;
-  FILE *fout;
-  
-  ndim = atoi(argv[1]);
-  ndim0 = ndim-1;
-  total_dim = atoi(argv[2]);
-  nb_vectors = atoi(argv[3]);
-  nb_entries = 1<<atoi(argv[4]);
-  nb_entries1 = 1024;
-  nb_entries2a = 4096;
-  nb_entries2b = 64;
-  
-  data = malloc((nb_vectors*ndim+total_dim)*sizeof(*data));
-  qdata = malloc((nb_vectors*ndim+total_dim)*sizeof(*qdata));
-  pred = malloc(nb_vectors*ndim0*sizeof(*pred));
-  multi_data = malloc(MULTI*nb_vectors*ndim*sizeof(*multi_data));
-  multi_data2 = malloc(MULTI*nb_vectors*ndim*sizeof(*multi_data));
-  codebook = malloc(nb_entries*ndim0*sizeof(*codebook));
-  codebook2 = malloc(nb_entries1*ndim0*sizeof(*codebook2));
-  codebook3 = malloc(nb_entries1*ndim0*sizeof(*codebook3));
-  codebook_diff4 = malloc(nb_entries2a*ndim*sizeof(*codebook_diff4));
-  codebook_diff2 = malloc(nb_entries2b*ndim*sizeof(*codebook_diff2));
-  
-  for (i=0;i<nb_vectors;i++)
-  {
-    fread(&data[i*ndim], sizeof(float), total_dim, stdin);
-    if (feof(stdin))
-      break;
-  }
-  nb_vectors = i;
-  VALGRIND_CHECK_MEM_IS_DEFINED(data, nb_entries*ndim);
-
-  for (i=0;i<4;i++)
-  {
-    for (j=0;j<ndim0;j++)
-      pred[i*ndim0+j] = 0;
-  }
-  for (i=4;i<nb_vectors;i++)
-  {
-    for (j=0;j<ndim0;j++)
-      pred[i*ndim0+j] = data[i*ndim+j+1] - COEF*data[(i-4)*ndim+j+1];
-  }
-#if 1
-  VALGRIND_CHECK_MEM_IS_DEFINED(pred, nb_entries*ndim0);
-  vq_train(pred, nb_vectors, codebook, nb_entries, ndim0);
-  
-  delta = malloc(nb_vectors*ndim0*sizeof(*data));
-  err = 0;
-  for (i=0;i<nb_vectors;i++)
-  {
-    int nearest = find_nearest(codebook, nb_entries, &pred[i*ndim0], ndim0, NULL);
-    qdata[i*ndim] = data[i*ndim];
-    for (j=0;j<ndim0;j++)
-    {
-      qdata[i*ndim+j+1] = codebook[nearest*ndim0+j];
-      delta[i*ndim0+j] = pred[i*ndim0+j] - codebook[nearest*ndim0+j];
-      err += delta[i*ndim0+j]*delta[i*ndim0+j];
-    }
-    //printf("\n");
-  }
-  fprintf(stderr, "Cepstrum RMS error: %f\n", sqrt(err/nb_vectors/ndim));
-
-  vq_train(delta, nb_vectors, codebook2, nb_entries1, ndim0);
-  
-  err=0;
-  for (i=0;i<nb_vectors;i++)
-  {
-    int n1;
-    n1 = find_nearest(codebook2, nb_entries1, &delta[i*ndim0], ndim0, NULL);
-    for (j=0;j<ndim0;j++)
-    {
-      qdata[i*ndim+j+1] += codebook2[n1*ndim0+j];
-      //delta[i*ndim0+j] = delta[i*ndim0+j] - codebook2[n1*ndim0+j];
-      delta[i*ndim0+j] = data[i*ndim+j+1] - qdata[i*ndim+j+1];
-      err += delta[i*ndim0+j]*delta[i*ndim0+j];
-    }
-  }
-  fprintf(stderr, "Cepstrum RMS error after stage 2: %f)\n", sqrt(err/nb_vectors/ndim));
-
-  vq_train(delta, nb_vectors, codebook3, nb_entries1, ndim0);
-  err=0;
-  for (i=0;i<nb_vectors;i++)
-  {
-    int n1;
-    n1 = find_nearest(codebook3, nb_entries1, &delta[i*ndim0], ndim0, NULL);
-    for (j=0;j<ndim0;j++)
-    {
-      qdata[i*ndim+j+1] += codebook3[n1*ndim0+j];
-      //delta[i*ndim0+j] = delta[i*ndim0+j] - codebook2[n1*ndim0+j];
-      delta[i*ndim0+j] = data[i*ndim+j+1] - qdata[i*ndim+j+1];
-      err += delta[i*ndim0+j]*delta[i*ndim0+j];
-    }
-  }
-  fprintf(stderr, "Cepstrum RMS error after stage 3: %f)\n", sqrt(err/nb_vectors/ndim));
-#else
-  qdata = data;
-#endif
-  for (i=0;i<nb_vectors-4;i++)
-  {
-    for (j=0;j<ndim;j++)
-      multi_data[MULTI*i*ndim+j]     = data[(i+1)*ndim+j] - .5*(qdata[i*ndim+j]+qdata[(i+2)*ndim+j]);
-    for (j=0;j<ndim;j++)
-      multi_data[(MULTI*i+1)*ndim+j] = data[(i+1)*ndim+j] - .5*(qdata[i*ndim+j]+qdata[(i+2)*ndim+j]);
-    for (j=0;j<ndim;j++)
-      multi_data[(MULTI*i+2)*ndim+j] = data[(i+1)*ndim+j] - qdata[i*ndim+j];
-    for (j=0;j<ndim;j++)
-      multi_data[(MULTI*i+3)*ndim+j] = data[(i+1)*ndim+j] - qdata[(i+2)*ndim+j];
-    //for (j=0;j<4*ndim;j++) printf("%f ", multi_data[MULTI*i*ndim + j]);
-    //printf("\n");
-  }
-
-  for (i=0;i<nb_vectors-4;i++)
-  {
-    for (j=0;j<ndim;j++)
-      multi_data2[MULTI*i*ndim+j]     = data[(i+2)*ndim+j] - .5*(qdata[i*ndim+j]+qdata[(i+4)*ndim+j]);
-    for (j=0;j<ndim;j++)
-      multi_data2[(MULTI*i+1)*ndim+j] = data[(i+2)*ndim+j] - .5*(qdata[i*ndim+j]+qdata[(i+4)*ndim+j]);
-    for (j=0;j<ndim;j++)
-      multi_data2[(MULTI*i+2)*ndim+j] = data[(i+2)*ndim+j] - qdata[i*ndim+j];
-    for (j=0;j<ndim;j++)
-      multi_data2[(MULTI*i+3)*ndim+j] = data[(i+2)*ndim+j] - qdata[(i+4)*ndim+j];
-  }
-
-  vq_train_multi(multi_data2, nb_vectors-4, codebook_diff4, nb_entries2a, ndim, 1);
-
-  printf("done\n");
-  vq_train_multi(multi_data, nb_vectors-4, codebook_diff2, nb_entries2b, ndim, 0);
-
-
-  fout = fopen("ceps_codebooks.c", "w");
-  fprintf(fout, "/* This file is automatically generated */\n\n");
-  fprintf(fout, "float ceps_codebook1[%d*%d] = {\n",nb_entries, ndim0);
-  
-  for (i=0;i<nb_entries;i++)
-  {
-    for (j=0;j<ndim0;j++)
-      fprintf(fout, "%f, ", codebook[i*ndim0+j]);
-    fprintf(fout, "\n");
-  }
-  fprintf(fout, "};\n\n");
-
-  fprintf(fout, "float ceps_codebook2[%d*%d] = {\n",nb_entries1, ndim0);
-  for (i=0;i<nb_entries1;i++)
-  {
-    for (j=0;j<ndim0;j++)
-      fprintf(fout, "%f, ", codebook2[i*ndim0+j]);
-    fprintf(fout, "\n");
-  }
-  fprintf(fout, "};\n\n");
-
-  fprintf(fout, "float ceps_codebook3[%d*%d] = {\n",nb_entries1, ndim0);
-  for (i=0;i<nb_entries1;i++)
-  {
-    for (j=0;j<ndim0;j++)
-      fprintf(fout, "%f, ", codebook3[i*ndim0+j]);
-    fprintf(fout, "\n");
-  }
-  fprintf(fout, "};\n\n");
-
-  fprintf(fout, "float ceps_codebook_diff4[%d*%d] = {\n",nb_entries2a, ndim);
-  for (i=0;i<nb_entries2a;i++)
-  {
-    for (j=0;j<ndim;j++)
-      fprintf(fout, "%f, ", codebook_diff4[i*ndim+j]);
-    fprintf(fout, "\n");
-  }
-  fprintf(fout, "};\n\n");
-
-  fprintf(fout, "float ceps_codebook_diff2[%d*%d] = {\n",nb_entries2b, ndim);
-  for (i=0;i<nb_entries2b;i++)
-  {
-    for (j=0;j<ndim;j++)
-      fprintf(fout, "%f, ", codebook_diff2[i*ndim+j]);
-    fprintf(fout, "\n");
-  }
-  fprintf(fout, "};\n\n");
-  
-  fclose(fout);
-  return 0;
-}
diff --git a/dnn/kiss_fft.c b/dnn/kiss_fft.c
deleted file mode 100644
index e647214d5..000000000
--- a/dnn/kiss_fft.c
+++ /dev/null
@@ -1,601 +0,0 @@
-/*Copyright (c) 2003-2004, Mark Borgerding
-  Lots of modifications by Jean-Marc Valin
-  Copyright (c) 2005-2007, Xiph.Org Foundation
-  Copyright (c) 2008,      Xiph.Org Foundation, CSIRO
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-   modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-       this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright notice,
-       this list of conditions and the following disclaimer in the
-       documentation and/or other materials provided with the distribution.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-  POSSIBILITY OF SUCH DAMAGE.*/
-
-/* This code is originally from Mark Borgerding's KISS-FFT but has been
-   heavily modified to better suit Opus */
-
-#ifndef SKIP_CONFIG_H
-#  ifdef HAVE_CONFIG_H
-#    include "config.h"
-#  endif
-#endif
-
-#include "_kiss_fft_guts.h"
-#define CUSTOM_MODES
-
-/* The guts header contains all the multiplication and addition macros that are defined for
-   complex numbers.  It also delares the kf_ internal functions.
-*/
-
-static void kf_bfly2(
-                     kiss_fft_cpx * Fout,
-                     int m,
-                     int N
-                    )
-{
-   kiss_fft_cpx * Fout2;
-   int i;
-   (void)m;
-#ifdef CUSTOM_MODES
-   if (m==1)
-   {
-      celt_assert(m==1);
-      for (i=0;i<N;i++)
-      {
-         kiss_fft_cpx t;
-         Fout2 = Fout + 1;
-         t = *Fout2;
-         C_SUB( *Fout2 ,  *Fout , t );
-         C_ADDTO( *Fout ,  t );
-         Fout += 2;
-      }
-   } else
-#endif
-   {
-      opus_val16 tw;
-      tw = QCONST16(0.7071067812f, 15);
-      /* We know that m==4 here because the radix-2 is just after a radix-4 */
-      celt_assert(m==4);
-      for (i=0;i<N;i++)
-      {
-         kiss_fft_cpx t;
-         Fout2 = Fout + 4;
-         t = Fout2[0];
-         C_SUB( Fout2[0] ,  Fout[0] , t );
-         C_ADDTO( Fout[0] ,  t );
-
-         t.r = S_MUL(ADD32_ovflw(Fout2[1].r, Fout2[1].i), tw);
-         t.i = S_MUL(SUB32_ovflw(Fout2[1].i, Fout2[1].r), tw);
-         C_SUB( Fout2[1] ,  Fout[1] , t );
-         C_ADDTO( Fout[1] ,  t );
-
-         t.r = Fout2[2].i;
-         t.i = -Fout2[2].r;
-         C_SUB( Fout2[2] ,  Fout[2] , t );
-         C_ADDTO( Fout[2] ,  t );
-
-         t.r = S_MUL(SUB32_ovflw(Fout2[3].i, Fout2[3].r), tw);
-         t.i = S_MUL(NEG32_ovflw(ADD32_ovflw(Fout2[3].i, Fout2[3].r)), tw);
-         C_SUB( Fout2[3] ,  Fout[3] , t );
-         C_ADDTO( Fout[3] ,  t );
-         Fout += 8;
-      }
-   }
-}
-
-static void kf_bfly4(
-                     kiss_fft_cpx * Fout,
-                     const size_t fstride,
-                     const kiss_fft_state *st,
-                     int m,
-                     int N,
-                     int mm
-                    )
-{
-   int i;
-
-   if (m==1)
-   {
-      /* Degenerate case where all the twiddles are 1. */
-      for (i=0;i<N;i++)
-      {
-         kiss_fft_cpx scratch0, scratch1;
-
-         C_SUB( scratch0 , *Fout, Fout[2] );
-         C_ADDTO(*Fout, Fout[2]);
-         C_ADD( scratch1 , Fout[1] , Fout[3] );
-         C_SUB( Fout[2], *Fout, scratch1 );
-         C_ADDTO( *Fout , scratch1 );
-         C_SUB( scratch1 , Fout[1] , Fout[3] );
-
-         Fout[1].r = ADD32_ovflw(scratch0.r, scratch1.i);
-         Fout[1].i = SUB32_ovflw(scratch0.i, scratch1.r);
-         Fout[3].r = SUB32_ovflw(scratch0.r, scratch1.i);
-         Fout[3].i = ADD32_ovflw(scratch0.i, scratch1.r);
-         Fout+=4;
-      }
-   } else {
-      int j;
-      kiss_fft_cpx scratch[6];
-      const kiss_twiddle_cpx *tw1,*tw2,*tw3;
-      const int m2=2*m;
-      const int m3=3*m;
-      kiss_fft_cpx * Fout_beg = Fout;
-      for (i=0;i<N;i++)
-      {
-         Fout = Fout_beg + i*mm;
-         tw3 = tw2 = tw1 = st->twiddles;
-         /* m is guaranteed to be a multiple of 4. */
-         for (j=0;j<m;j++)
-         {
-            C_MUL(scratch[0],Fout[m] , *tw1 );
-            C_MUL(scratch[1],Fout[m2] , *tw2 );
-            C_MUL(scratch[2],Fout[m3] , *tw3 );
-
-            C_SUB( scratch[5] , *Fout, scratch[1] );
-            C_ADDTO(*Fout, scratch[1]);
-            C_ADD( scratch[3] , scratch[0] , scratch[2] );
-            C_SUB( scratch[4] , scratch[0] , scratch[2] );
-            C_SUB( Fout[m2], *Fout, scratch[3] );
-            tw1 += fstride;
-            tw2 += fstride*2;
-            tw3 += fstride*3;
-            C_ADDTO( *Fout , scratch[3] );
-
-            Fout[m].r = ADD32_ovflw(scratch[5].r, scratch[4].i);
-            Fout[m].i = SUB32_ovflw(scratch[5].i, scratch[4].r);
-            Fout[m3].r = SUB32_ovflw(scratch[5].r, scratch[4].i);
-            Fout[m3].i = ADD32_ovflw(scratch[5].i, scratch[4].r);
-            ++Fout;
-         }
-      }
-   }
-}
-
-
-#ifndef RADIX_TWO_ONLY
-
-static void kf_bfly3(
-                     kiss_fft_cpx * Fout,
-                     const size_t fstride,
-                     const kiss_fft_state *st,
-                     int m,
-                     int N,
-                     int mm
-                    )
-{
-   int i;
-   size_t k;
-   const size_t m2 = 2*m;
-   const kiss_twiddle_cpx *tw1,*tw2;
-   kiss_fft_cpx scratch[5];
-   kiss_twiddle_cpx epi3;
-
-   kiss_fft_cpx * Fout_beg = Fout;
-#ifdef FIXED_POINT
-   /*epi3.r = -16384;*/ /* Unused */
-   epi3.i = -28378;
-#else
-   epi3 = st->twiddles[fstride*m];
-#endif
-   for (i=0;i<N;i++)
-   {
-      Fout = Fout_beg + i*mm;
-      tw1=tw2=st->twiddles;
-      /* For non-custom modes, m is guaranteed to be a multiple of 4. */
-      k=m;
-      do {
-
-         C_MUL(scratch[1],Fout[m] , *tw1);
-         C_MUL(scratch[2],Fout[m2] , *tw2);
-
-         C_ADD(scratch[3],scratch[1],scratch[2]);
-         C_SUB(scratch[0],scratch[1],scratch[2]);
-         tw1 += fstride;
-         tw2 += fstride*2;
-
-         Fout[m].r = SUB32_ovflw(Fout->r, HALF_OF(scratch[3].r));
-         Fout[m].i = SUB32_ovflw(Fout->i, HALF_OF(scratch[3].i));
-
-         C_MULBYSCALAR( scratch[0] , epi3.i );
-
-         C_ADDTO(*Fout,scratch[3]);
-
-         Fout[m2].r = ADD32_ovflw(Fout[m].r, scratch[0].i);
-         Fout[m2].i = SUB32_ovflw(Fout[m].i, scratch[0].r);
-
-         Fout[m].r = SUB32_ovflw(Fout[m].r, scratch[0].i);
-         Fout[m].i = ADD32_ovflw(Fout[m].i, scratch[0].r);
-
-         ++Fout;
-      } while(--k);
-   }
-}
-
-
-#ifndef OVERRIDE_kf_bfly5
-static void kf_bfly5(
-                     kiss_fft_cpx * Fout,
-                     const size_t fstride,
-                     const kiss_fft_state *st,
-                     int m,
-                     int N,
-                     int mm
-                    )
-{
-   kiss_fft_cpx *Fout0,*Fout1,*Fout2,*Fout3,*Fout4;
-   int i, u;
-   kiss_fft_cpx scratch[13];
-   const kiss_twiddle_cpx *tw;
-   kiss_twiddle_cpx ya,yb;
-   kiss_fft_cpx * Fout_beg = Fout;
-
-#ifdef FIXED_POINT
-   ya.r = 10126;
-   ya.i = -31164;
-   yb.r = -26510;
-   yb.i = -19261;
-#else
-   ya = st->twiddles[fstride*m];
-   yb = st->twiddles[fstride*2*m];
-#endif
-   tw=st->twiddles;
-
-   for (i=0;i<N;i++)
-   {
-      Fout = Fout_beg + i*mm;
-      Fout0=Fout;
-      Fout1=Fout0+m;
-      Fout2=Fout0+2*m;
-      Fout3=Fout0+3*m;
-      Fout4=Fout0+4*m;
-
-      /* For non-custom modes, m is guaranteed to be a multiple of 4. */
-      for ( u=0; u<m; ++u ) {
-         scratch[0] = *Fout0;
-
-         C_MUL(scratch[1] ,*Fout1, tw[u*fstride]);
-         C_MUL(scratch[2] ,*Fout2, tw[2*u*fstride]);
-         C_MUL(scratch[3] ,*Fout3, tw[3*u*fstride]);
-         C_MUL(scratch[4] ,*Fout4, tw[4*u*fstride]);
-
-         C_ADD( scratch[7],scratch[1],scratch[4]);
-         C_SUB( scratch[10],scratch[1],scratch[4]);
-         C_ADD( scratch[8],scratch[2],scratch[3]);
-         C_SUB( scratch[9],scratch[2],scratch[3]);
-
-         Fout0->r = ADD32_ovflw(Fout0->r, ADD32_ovflw(scratch[7].r, scratch[8].r));
-         Fout0->i = ADD32_ovflw(Fout0->i, ADD32_ovflw(scratch[7].i, scratch[8].i));
-
-         scratch[5].r = ADD32_ovflw(scratch[0].r, ADD32_ovflw(S_MUL(scratch[7].r,ya.r), S_MUL(scratch[8].r,yb.r)));
-         scratch[5].i = ADD32_ovflw(scratch[0].i, ADD32_ovflw(S_MUL(scratch[7].i,ya.r), S_MUL(scratch[8].i,yb.r)));
-
-         scratch[6].r =  ADD32_ovflw(S_MUL(scratch[10].i,ya.i), S_MUL(scratch[9].i,yb.i));
-         scratch[6].i = NEG32_ovflw(ADD32_ovflw(S_MUL(scratch[10].r,ya.i), S_MUL(scratch[9].r,yb.i)));
-
-         C_SUB(*Fout1,scratch[5],scratch[6]);
-         C_ADD(*Fout4,scratch[5],scratch[6]);
-
-         scratch[11].r = ADD32_ovflw(scratch[0].r, ADD32_ovflw(S_MUL(scratch[7].r,yb.r), S_MUL(scratch[8].r,ya.r)));
-         scratch[11].i = ADD32_ovflw(scratch[0].i, ADD32_ovflw(S_MUL(scratch[7].i,yb.r), S_MUL(scratch[8].i,ya.r)));
-         scratch[12].r = SUB32_ovflw(S_MUL(scratch[9].i,ya.i), S_MUL(scratch[10].i,yb.i));
-         scratch[12].i = SUB32_ovflw(S_MUL(scratch[10].r,yb.i), S_MUL(scratch[9].r,ya.i));
-
-         C_ADD(*Fout2,scratch[11],scratch[12]);
-         C_SUB(*Fout3,scratch[11],scratch[12]);
-
-         ++Fout0;++Fout1;++Fout2;++Fout3;++Fout4;
-      }
-   }
-}
-#endif /* OVERRIDE_kf_bfly5 */
-
-
-#endif
-
-
-#ifdef CUSTOM_MODES
-
-static
-void compute_bitrev_table(
-         int Fout,
-         opus_int16 *f,
-         const size_t fstride,
-         int in_stride,
-         opus_int16 * factors,
-         const kiss_fft_state *st
-            )
-{
-   const int p=*factors++; /* the radix  */
-   const int m=*factors++; /* stage's fft length/p */
-
-    /*printf ("fft %d %d %d %d %d %d\n", p*m, m, p, s2, fstride*in_stride, N);*/
-   if (m==1)
-   {
-      int j;
-      for (j=0;j<p;j++)
-      {
-         *f = Fout+j;
-         f += fstride*in_stride;
-      }
-   } else {
-      int j;
-      for (j=0;j<p;j++)
-      {
-         compute_bitrev_table( Fout , f, fstride*p, in_stride, factors,st);
-         f += fstride*in_stride;
-         Fout += m;
-      }
-   }
-}
-
-/*  facbuf is populated by p1,m1,p2,m2, ...
-    where
-    p[i] * m[i] = m[i-1]
-    m0 = n                  */
-static
-int kf_factor(int n,opus_int16 * facbuf)
-{
-    int p=4;
-    int i;
-    int stages=0;
-    int nbak = n;
-
-    /*factor out powers of 4, powers of 2, then any remaining primes */
-    do {
-        while (n % p) {
-            switch (p) {
-                case 4: p = 2; break;
-                case 2: p = 3; break;
-                default: p += 2; break;
-            }
-            if (p>32000 || (opus_int32)p*(opus_int32)p > n)
-                p = n;          /* no more factors, skip to end */
-        }
-        n /= p;
-#ifdef RADIX_TWO_ONLY
-        if (p!=2 && p != 4)
-#else
-        if (p>5)
-#endif
-        {
-           return 0;
-        }
-        facbuf[2*stages] = p;
-        if (p==2 && stages > 1)
-        {
-           facbuf[2*stages] = 4;
-           facbuf[2] = 2;
-        }
-        stages++;
-    } while (n > 1);
-    n = nbak;
-    /* Reverse the order to get the radix 4 at the end, so we can use the
-       fast degenerate case. It turns out that reversing the order also
-       improves the noise behaviour. */
-    for (i=0;i<stages/2;i++)
-    {
-       int tmp;
-       tmp = facbuf[2*i];
-       facbuf[2*i] = facbuf[2*(stages-i-1)];
-       facbuf[2*(stages-i-1)] = tmp;
-    }
-    for (i=0;i<stages;i++)
-    {
-        n /= facbuf[2*i];
-        facbuf[2*i+1] = n;
-    }
-    return 1;
-}
-
-static void compute_twiddles(kiss_twiddle_cpx *twiddles, int nfft)
-{
-   int i;
-#ifdef FIXED_POINT
-   for (i=0;i<nfft;++i) {
-      opus_val32 phase = -i;
-      kf_cexp2(twiddles+i, DIV32(SHL32(phase,17),nfft));
-   }
-#else
-   for (i=0;i<nfft;++i) {
-      const double pi=3.14159265358979323846264338327;
-      double phase = ( -2*pi /nfft ) * i;
-      kf_cexp(twiddles+i, phase );
-   }
-#endif
-}
-
-int opus_fft_alloc_arch_c(kiss_fft_state *st) {
-   (void)st;
-   return 0;
-}
-
-/*
- *
- * Allocates all necessary storage space for the fft and ifft.
- * The return value is a contiguous block of memory.  As such,
- * It can be freed with free().
- * */
-kiss_fft_state *opus_fft_alloc_twiddles(int nfft,void * mem,size_t * lenmem,
-                                        const kiss_fft_state *base, int arch)
-{
-    kiss_fft_state *st=NULL;
-    size_t memneeded = sizeof(struct kiss_fft_state); /* twiddle factors*/
-
-    if ( lenmem==NULL ) {
-        st = ( kiss_fft_state*)KISS_FFT_MALLOC( memneeded );
-    }else{
-        if (mem != NULL && *lenmem >= memneeded)
-            st = (kiss_fft_state*)mem;
-        *lenmem = memneeded;
-    }
-    if (st) {
-        opus_int16 *bitrev;
-        kiss_twiddle_cpx *twiddles;
-
-        st->nfft=nfft;
-#ifdef FIXED_POINT
-        st->scale_shift = celt_ilog2(st->nfft);
-        if (st->nfft == 1<<st->scale_shift)
-           st->scale = Q15ONE;
-        else
-           st->scale = (1073741824+st->nfft/2)/st->nfft>>(15-st->scale_shift);
-#else
-        st->scale = 1.f/nfft;
-#endif
-        if (base != NULL)
-        {
-           st->twiddles = base->twiddles;
-           st->shift = 0;
-           while (st->shift < 32 && nfft<<st->shift != base->nfft)
-              st->shift++;
-           if (st->shift>=32)
-              goto fail;
-        } else {
-           st->twiddles = twiddles = (kiss_twiddle_cpx*)KISS_FFT_MALLOC(sizeof(kiss_twiddle_cpx)*nfft);
-           compute_twiddles(twiddles, nfft);
-           st->shift = -1;
-        }
-        if (!kf_factor(nfft,st->factors))
-        {
-           goto fail;
-        }
-
-        /* bitrev */
-        st->bitrev = bitrev = (opus_int16*)KISS_FFT_MALLOC(sizeof(opus_int16)*nfft);
-        if (st->bitrev==NULL)
-            goto fail;
-        compute_bitrev_table(0, bitrev, 1,1, st->factors,st);
-
-        /* Initialize architecture specific fft parameters */
-        if (opus_fft_alloc_arch(st, arch))
-            goto fail;
-    }
-    return st;
-fail:
-    opus_fft_free(st, arch);
-    return NULL;
-}
-
-kiss_fft_state *opus_fft_alloc(int nfft,void * mem,size_t * lenmem, int arch)
-{
-   return opus_fft_alloc_twiddles(nfft, mem, lenmem, NULL, arch);
-}
-
-void opus_fft_free_arch_c(kiss_fft_state *st) {
-   (void)st;
-}
-
-void opus_fft_free(const kiss_fft_state *cfg, int arch)
-{
-   if (cfg)
-   {
-      opus_fft_free_arch((kiss_fft_state *)cfg, arch);
-      free((opus_int16*)cfg->bitrev);
-      if (cfg->shift < 0)
-         free((kiss_twiddle_cpx*)cfg->twiddles);
-      free((kiss_fft_state*)cfg);
-   }
-}
-
-#endif /* CUSTOM_MODES */
-
-void opus_fft_impl(const kiss_fft_state *st,kiss_fft_cpx *fout)
-{
-    int m2, m;
-    int p;
-    int L;
-    int fstride[MAXFACTORS];
-    int i;
-    int shift;
-
-    /* st->shift can be -1 */
-    shift = st->shift>0 ? st->shift : 0;
-
-    fstride[0] = 1;
-    L=0;
-    do {
-       p = st->factors[2*L];
-       m = st->factors[2*L+1];
-       fstride[L+1] = fstride[L]*p;
-       L++;
-    } while(m!=1);
-    m = st->factors[2*L-1];
-    for (i=L-1;i>=0;i--)
-    {
-       if (i!=0)
-          m2 = st->factors[2*i-1];
-       else
-          m2 = 1;
-       switch (st->factors[2*i])
-       {
-       case 2:
-          kf_bfly2(fout, m, fstride[i]);
-          break;
-       case 4:
-          kf_bfly4(fout,fstride[i]<<shift,st,m, fstride[i], m2);
-          break;
- #ifndef RADIX_TWO_ONLY
-       case 3:
-          kf_bfly3(fout,fstride[i]<<shift,st,m, fstride[i], m2);
-          break;
-       case 5:
-          kf_bfly5(fout,fstride[i]<<shift,st,m, fstride[i], m2);
-          break;
- #endif
-       }
-       m = m2;
-    }
-}
-
-void opus_fft_c(const kiss_fft_state *st,const kiss_fft_cpx *fin,kiss_fft_cpx *fout)
-{
-   int i;
-   opus_val16 scale;
-#ifdef FIXED_POINT
-   /* Allows us to scale with MULT16_32_Q16(), which is faster than
-      MULT16_32_Q15() on ARM. */
-   int scale_shift = st->scale_shift-1;
-#endif
-   scale = st->scale;
-
-   celt_assert2 (fin != fout, "In-place FFT not supported");
-   /* Bit-reverse the input */
-   for (i=0;i<st->nfft;i++)
-   {
-      kiss_fft_cpx x = fin[i];
-      fout[st->bitrev[i]].r = SHR32(MULT16_32_Q16(scale, x.r), scale_shift);
-      fout[st->bitrev[i]].i = SHR32(MULT16_32_Q16(scale, x.i), scale_shift);
-   }
-   opus_fft_impl(st, fout);
-}
-
-
-void opus_ifft_c(const kiss_fft_state *st,const kiss_fft_cpx *fin,kiss_fft_cpx *fout)
-{
-   int i;
-   celt_assert2 (fin != fout, "In-place FFT not supported");
-   /* Bit-reverse the input */
-   for (i=0;i<st->nfft;i++)
-      fout[st->bitrev[i]] = fin[i];
-   for (i=0;i<st->nfft;i++)
-      fout[i].i = -fout[i].i;
-   opus_fft_impl(st, fout);
-   for (i=0;i<st->nfft;i++)
-      fout[i].i = -fout[i].i;
-}
diff --git a/dnn/kiss_fft.h b/dnn/kiss_fft.h
deleted file mode 100644
index acbc1927b..000000000
--- a/dnn/kiss_fft.h
+++ /dev/null
@@ -1,202 +0,0 @@
-/*Copyright (c) 2003-2004, Mark Borgerding
-  Lots of modifications by Jean-Marc Valin
-  Copyright (c) 2005-2007, Xiph.Org Foundation
-  Copyright (c) 2008,      Xiph.Org Foundation, CSIRO
-
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-   modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-       this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright notice,
-       this list of conditions and the following disclaimer in the
-       documentation and/or other materials provided with the distribution.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-  POSSIBILITY OF SUCH DAMAGE.*/
-
-#ifndef KISS_FFT_H
-#define KISS_FFT_H
-
-#include <stdlib.h>
-#include <math.h>
-#include "arch.h"
-
-#include <stdlib.h>
-#define lpcnet_alloc(x) malloc(x)
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifdef USE_SIMD
-# include <xmmintrin.h>
-# define kiss_fft_scalar __m128
-#define KISS_FFT_MALLOC(nbytes) memalign(16,nbytes)
-#else
-#define KISS_FFT_MALLOC lpcnet_alloc
-#endif
-
-#ifdef FIXED_POINT
-#include "arch.h"
-
-#  define kiss_fft_scalar opus_int32
-#  define kiss_twiddle_scalar opus_int16
-
-
-#else
-# ifndef kiss_fft_scalar
-/*  default is float */
-#   define kiss_fft_scalar float
-#   define kiss_twiddle_scalar float
-#   define KF_SUFFIX _celt_single
-# endif
-#endif
-
-typedef struct {
-    kiss_fft_scalar r;
-    kiss_fft_scalar i;
-}kiss_fft_cpx;
-
-typedef struct {
-   kiss_twiddle_scalar r;
-   kiss_twiddle_scalar i;
-}kiss_twiddle_cpx;
-
-#define MAXFACTORS 8
-/* e.g. an fft of length 128 has 4 factors
- as far as kissfft is concerned
- 4*4*4*2
- */
-
-typedef struct arch_fft_state{
-   int is_supported;
-   void *priv;
-} arch_fft_state;
-
-typedef struct kiss_fft_state{
-    int nfft;
-    opus_val16 scale;
-#ifdef FIXED_POINT
-    int scale_shift;
-#endif
-    int shift;
-    opus_int16 factors[2*MAXFACTORS];
-    const opus_int16 *bitrev;
-    const kiss_twiddle_cpx *twiddles;
-    arch_fft_state *arch_fft;
-} kiss_fft_state;
-
-#if defined(HAVE_ARM_NE10)
-#include "arm/fft_arm.h"
-#endif
-
-/*typedef struct kiss_fft_state* kiss_fft_cfg;*/
-
-/**
- *  opus_fft_alloc
- *
- *  Initialize a FFT (or IFFT) algorithm's cfg/state buffer.
- *
- *  typical usage:      kiss_fft_cfg mycfg=opus_fft_alloc(1024,0,NULL,NULL);
- *
- *  The return value from fft_alloc is a cfg buffer used internally
- *  by the fft routine or NULL.
- *
- *  If lenmem is NULL, then opus_fft_alloc will allocate a cfg buffer using malloc.
- *  The returned value should be free()d when done to avoid memory leaks.
- *
- *  The state can be placed in a user supplied buffer 'mem':
- *  If lenmem is not NULL and mem is not NULL and *lenmem is large enough,
- *      then the function places the cfg in mem and the size used in *lenmem
- *      and returns mem.
- *
- *  If lenmem is not NULL and ( mem is NULL or *lenmem is not large enough),
- *      then the function returns NULL and places the minimum cfg
- *      buffer size in *lenmem.
- * */
-
-kiss_fft_state *opus_fft_alloc_twiddles(int nfft,void * mem,size_t * lenmem, const kiss_fft_state *base, int arch);
-
-kiss_fft_state *opus_fft_alloc(int nfft,void * mem,size_t * lenmem, int arch);
-
-/**
- * opus_fft(cfg,in_out_buf)
- *
- * Perform an FFT on a complex input buffer.
- * for a forward FFT,
- * fin should be  f[0] , f[1] , ... ,f[nfft-1]
- * fout will be   F[0] , F[1] , ... ,F[nfft-1]
- * Note that each element is complex and can be accessed like
-    f[k].r and f[k].i
- * */
-void opus_fft_c(const kiss_fft_state *cfg,const kiss_fft_cpx *fin,kiss_fft_cpx *fout);
-void opus_ifft_c(const kiss_fft_state *cfg,const kiss_fft_cpx *fin,kiss_fft_cpx *fout);
-
-void opus_fft_impl(const kiss_fft_state *st,kiss_fft_cpx *fout);
-void opus_ifft_impl(const kiss_fft_state *st,kiss_fft_cpx *fout);
-
-void opus_fft_free(const kiss_fft_state *cfg, int arch);
-
-
-void opus_fft_free_arch_c(kiss_fft_state *st);
-int opus_fft_alloc_arch_c(kiss_fft_state *st);
-
-#if !defined(OVERRIDE_OPUS_FFT)
-/* Is run-time CPU detection enabled on this platform? */
-#if defined(OPUS_HAVE_RTCD) && (defined(HAVE_ARM_NE10))
-
-extern int (*const OPUS_FFT_ALLOC_ARCH_IMPL[OPUS_ARCHMASK+1])(
- kiss_fft_state *st);
-
-#define opus_fft_alloc_arch(_st, arch) \
-         ((*OPUS_FFT_ALLOC_ARCH_IMPL[(arch)&OPUS_ARCHMASK])(_st))
-
-extern void (*const OPUS_FFT_FREE_ARCH_IMPL[OPUS_ARCHMASK+1])(
- kiss_fft_state *st);
-#define opus_fft_free_arch(_st, arch) \
-         ((*OPUS_FFT_FREE_ARCH_IMPL[(arch)&OPUS_ARCHMASK])(_st))
-
-extern void (*const OPUS_FFT[OPUS_ARCHMASK+1])(const kiss_fft_state *cfg,
- const kiss_fft_cpx *fin, kiss_fft_cpx *fout);
-#define opus_fft(_cfg, _fin, _fout, arch) \
-   ((*OPUS_FFT[(arch)&OPUS_ARCHMASK])(_cfg, _fin, _fout))
-
-extern void (*const OPUS_IFFT[OPUS_ARCHMASK+1])(const kiss_fft_state *cfg,
- const kiss_fft_cpx *fin, kiss_fft_cpx *fout);
-#define opus_ifft(_cfg, _fin, _fout, arch) \
-   ((*OPUS_IFFT[(arch)&OPUS_ARCHMASK])(_cfg, _fin, _fout))
-
-#else /* else for if defined(OPUS_HAVE_RTCD) && (defined(HAVE_ARM_NE10)) */
-
-#define opus_fft_alloc_arch(_st, arch) \
-         ((void)(arch), opus_fft_alloc_arch_c(_st))
-
-#define opus_fft_free_arch(_st, arch) \
-         ((void)(arch), opus_fft_free_arch_c(_st))
-
-#define opus_fft(_cfg, _fin, _fout, arch) \
-         ((void)(arch), opus_fft_c(_cfg, _fin, _fout))
-
-#define opus_ifft(_cfg, _fin, _fout, arch) \
-         ((void)(arch), opus_ifft_c(_cfg, _fin, _fout))
-
-#endif /* end if defined(OPUS_HAVE_RTCD) && (defined(HAVE_ARM_NE10)) */
-#endif /* end if !defined(OVERRIDE_OPUS_FFT) */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/dnn/opus_types.h b/dnn/opus_types.h
deleted file mode 100644
index 718082666..000000000
--- a/dnn/opus_types.h
+++ /dev/null
@@ -1,159 +0,0 @@
-/* (C) COPYRIGHT 1994-2002 Xiph.Org Foundation */
-/* Modified by Jean-Marc Valin */
-/*
-   Redistribution and use in source and binary forms, with or without
-   modification, are permitted provided that the following conditions
-   are met:
-
-   - Redistributions of source code must retain the above copyright
-   notice, this list of conditions and the following disclaimer.
-
-   - Redistributions in binary form must reproduce the above copyright
-   notice, this list of conditions and the following disclaimer in the
-   documentation and/or other materials provided with the distribution.
-
-   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-   ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-   OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-   EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-   PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-   PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-   LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-   SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-/* opus_types.h based on ogg_types.h from libogg */
-
-/**
-   @file opus_types.h
-   @brief Opus reference implementation types
-*/
-#ifndef OPUS_TYPES_H
-#define OPUS_TYPES_H
-
-/* Use the real stdint.h if it's there (taken from Paul Hsieh's pstdint.h) */
-#if (defined(__STDC__) && __STDC__ && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || (defined(__GNUC__) && (defined(_STDINT_H) || defined(_STDINT_H_)) || defined (HAVE_STDINT_H))
-#include <stdint.h>
-
-   typedef int16_t opus_int16;
-   typedef uint16_t opus_uint16;
-   typedef int32_t opus_int32;
-   typedef uint32_t opus_uint32;
-#elif defined(_WIN32)
-
-#  if defined(__CYGWIN__)
-#    include <_G_config.h>
-     typedef _G_int32_t opus_int32;
-     typedef _G_uint32_t opus_uint32;
-     typedef _G_int16 opus_int16;
-     typedef _G_uint16 opus_uint16;
-#  elif defined(__MINGW32__)
-     typedef short opus_int16;
-     typedef unsigned short opus_uint16;
-     typedef int opus_int32;
-     typedef unsigned int opus_uint32;
-#  elif defined(__MWERKS__)
-     typedef int opus_int32;
-     typedef unsigned int opus_uint32;
-     typedef short opus_int16;
-     typedef unsigned short opus_uint16;
-#  else
-     /* MSVC/Borland */
-     typedef __int32 opus_int32;
-     typedef unsigned __int32 opus_uint32;
-     typedef __int16 opus_int16;
-     typedef unsigned __int16 opus_uint16;
-#  endif
-
-#elif defined(__MACOS__)
-
-#  include <sys/types.h>
-   typedef SInt16 opus_int16;
-   typedef UInt16 opus_uint16;
-   typedef SInt32 opus_int32;
-   typedef UInt32 opus_uint32;
-
-#elif (defined(__APPLE__) && defined(__MACH__)) /* MacOS X Framework build */
-
-#  include <sys/types.h>
-   typedef int16_t opus_int16;
-   typedef u_int16_t opus_uint16;
-   typedef int32_t opus_int32;
-   typedef u_int32_t opus_uint32;
-
-#elif defined(__BEOS__)
-
-   /* Be */
-#  include <inttypes.h>
-   typedef int16 opus_int16;
-   typedef u_int16 opus_uint16;
-   typedef int32_t opus_int32;
-   typedef u_int32_t opus_uint32;
-
-#elif defined (__EMX__)
-
-   /* OS/2 GCC */
-   typedef short opus_int16;
-   typedef unsigned short opus_uint16;
-   typedef int opus_int32;
-   typedef unsigned int opus_uint32;
-
-#elif defined (DJGPP)
-
-   /* DJGPP */
-   typedef short opus_int16;
-   typedef unsigned short opus_uint16;
-   typedef int opus_int32;
-   typedef unsigned int opus_uint32;
-
-#elif defined(R5900)
-
-   /* PS2 EE */
-   typedef int opus_int32;
-   typedef unsigned opus_uint32;
-   typedef short opus_int16;
-   typedef unsigned short opus_uint16;
-
-#elif defined(__SYMBIAN32__)
-
-   /* Symbian GCC */
-   typedef signed short opus_int16;
-   typedef unsigned short opus_uint16;
-   typedef signed int opus_int32;
-   typedef unsigned int opus_uint32;
-
-#elif defined(CONFIG_TI_C54X) || defined (CONFIG_TI_C55X)
-
-   typedef short opus_int16;
-   typedef unsigned short opus_uint16;
-   typedef long opus_int32;
-   typedef unsigned long opus_uint32;
-
-#elif defined(CONFIG_TI_C6X)
-
-   typedef short opus_int16;
-   typedef unsigned short opus_uint16;
-   typedef int opus_int32;
-   typedef unsigned int opus_uint32;
-
-#else
-
-   /* Give up, take a reasonable guess */
-   typedef short opus_int16;
-   typedef unsigned short opus_uint16;
-   typedef int opus_int32;
-   typedef unsigned int opus_uint32;
-
-#endif
-
-#define opus_int         int                     /* used for counters etc; at least 16 bits */
-#define opus_int64       long long
-#define opus_int8        signed char
-
-#define opus_uint        unsigned int            /* used for counters etc; at least 16 bits */
-#define opus_uint64      unsigned long long
-#define opus_uint8       unsigned char
-
-#endif  /* OPUS_TYPES_H */
diff --git a/dnn/pitch.c b/dnn/pitch.c
deleted file mode 100644
index 0fd50233f..000000000
--- a/dnn/pitch.c
+++ /dev/null
@@ -1,84 +0,0 @@
-/* Copyright (c) 2007-2008 CSIRO
-   Copyright (c) 2007-2009 Xiph.Org Foundation
-   Written by Jean-Marc Valin */
-/**
-   @file pitch.c
-   @brief Pitch analysis
- */
-
-/*
-   Redistribution and use in source and binary forms, with or without
-   modification, are permitted provided that the following conditions
-   are met:
-
-   - Redistributions of source code must retain the above copyright
-   notice, this list of conditions and the following disclaimer.
-
-   - Redistributions in binary form must reproduce the above copyright
-   notice, this list of conditions and the following disclaimer in the
-   documentation and/or other materials provided with the distribution.
-
-   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-   ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
-   OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-   EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-   PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-   PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-   LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-   SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "pitch.h"
-#include "common.h"
-#include "math.h"
-
-
-
-void celt_pitch_xcorr(const opus_val16 *_x, const opus_val16 *_y,
-      opus_val32 *xcorr, int len, int max_pitch)
-{
-
-#if 0 /* This is a simple version of the pitch correlation that should work
-         well on DSPs like Blackfin and TI C5x/C6x */
-   int i, j;
-   for (i=0;i<max_pitch;i++)
-   {
-      opus_val32 sum = 0;
-      for (j=0;j<len;j++)
-         sum = MAC16_16(sum, _x[j], _y[i+j]);
-      xcorr[i] = sum;
-   }
-
-#else /* Unrolled version of the pitch correlation -- runs faster on x86 and ARM */
-   int i;
-   /*The EDSP version requires that max_pitch is at least 1, and that _x is
-      32-bit aligned.
-     Since it's hard to put asserts in assembly, put them here.*/
-   celt_assert(max_pitch>0);
-   celt_assert((((unsigned char *)_x-(unsigned char *)NULL)&3)==0);
-   for (i=0;i<max_pitch-3;i+=4)
-   {
-      opus_val32 sum[4]={0,0,0,0};
-      xcorr_kernel(_x, _y+i, sum, len);
-      xcorr[i]=sum[0];
-      xcorr[i+1]=sum[1];
-      xcorr[i+2]=sum[2];
-      xcorr[i+3]=sum[3];
-   }
-   /* In case max_pitch isn't a multiple of 4, do non-unrolled version. */
-   for (;i<max_pitch;i++)
-   {
-      opus_val32 sum;
-      sum = celt_inner_prod(_x, _y+i, len);
-      xcorr[i] = sum;
-   }
-#endif
-}
-
diff --git a/dnn/test_lpcnet.c b/dnn/test_lpcnet.c
deleted file mode 100644
index 01917993f..000000000
--- a/dnn/test_lpcnet.c
+++ /dev/null
@@ -1,69 +0,0 @@
-/* Copyright (c) 2018 Mozilla */
-/*
-   Redistribution and use in source and binary forms, with or without
-   modification, are permitted provided that the following conditions
-   are met:
-
-   - Redistributions of source code must retain the above copyright
-   notice, this list of conditions and the following disclaimer.
-
-   - Redistributions in binary form must reproduce the above copyright
-   notice, this list of conditions and the following disclaimer in the
-   documentation and/or other materials provided with the distribution.
-
-   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-   ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-   A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
-   CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-   EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-   PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-   PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-   LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-   SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-#include <math.h>
-#include <stdio.h>
-#include "arch.h"
-#include "lpcnet.h"
-#include "freq.h"
-
-
-int main(int argc, char **argv) {
-    FILE *fin, *fout;
-    LPCNetState *net;
-    net = lpcnet_create();
-    if (argc != 3)
-    {
-        fprintf(stderr, "usage: test_lpcnet <features.f32> <output.pcm>\n");
-        return 0;
-    }
-    fin = fopen(argv[1], "rb");
-    if (fin == NULL) {
-	fprintf(stderr, "Can't open %s\n", argv[1]);
-	exit(1);
-    }
-
-    fout = fopen(argv[2], "wb");
-    if (fout == NULL) {
-	fprintf(stderr, "Can't open %s\n", argv[2]);
-	exit(1);
-    }
-
-    while (1) {
-        float in_features[NB_TOTAL_FEATURES];
-        float features[NB_FEATURES];
-        short pcm[FRAME_SIZE];
-        fread(in_features, sizeof(features[0]), NB_TOTAL_FEATURES, fin);
-        if (feof(fin)) break;
-        RNN_COPY(features, in_features, NB_FEATURES);
-        lpcnet_synthesize(net, features, pcm, FRAME_SIZE);
-        fwrite(pcm, sizeof(pcm[0]), FRAME_SIZE, fout);
-    }
-    fclose(fin);
-    fclose(fout);
-    lpcnet_destroy(net);
-    return 0;
-}
diff --git a/lpcnet_headers.mk b/lpcnet_headers.mk
index 90a827c6f..5a31c7bfc 100644
--- a/lpcnet_headers.mk
+++ b/lpcnet_headers.mk
@@ -5,6 +5,7 @@ silk/dred_decoder.h \
 silk/dred_encoder.h \
 dnn/include/dred_rdovae.h \
 dnn/include/lpcnet.h \
+dnn/arch.h \
 dnn/burg.h \
 dnn/common.h \
 dnn/freq.h \
-- 
GitLab