Untangle fft third party lib from dependon WebRTC

TBR=phoglund

Bug: webrtc:9558
Change-Id: I6cc1936549f008694c3617c1d990524c34da16e3
Reviewed-on: https://webrtc-review.googlesource.com/90411
Commit-Queue: Artem Titov <titovartem@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Oskar Sundbom <ossu@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24115}
diff --git a/modules/audio_coding/BUILD.gn b/modules/audio_coding/BUILD.gn
index 5dc93d3..41bd7a9 100644
--- a/modules/audio_coding/BUILD.gn
+++ b/modules/audio_coding/BUILD.gn
@@ -498,6 +498,7 @@
     "../../rtc_base:compile_assert_c",
     "../../rtc_base/system:arch",
     "../../rtc_base/system:ignore_warnings",
+    "../third_party/fft",
   ]
 }
 
@@ -559,7 +560,7 @@
     "../../rtc_base:compile_assert_c",
     "../../rtc_base:rtc_base_approved",
     "../../rtc_base/system:arch",
-    "../third_party/fft:fft",
+    "../third_party/fft",
   ]
 }
 
@@ -676,6 +677,7 @@
     "../../rtc_base:rtc_base_approved",
     "../../rtc_base:sanitizer",
     "../../system_wrappers:cpu_features_api",
+    "../third_party/fft",
   ]
 
   public_deps = [
diff --git a/modules/audio_coding/codecs/isac/fix/source/transform.c b/modules/audio_coding/codecs/isac/fix/source/transform.c
index 2f1275d..80b244b 100644
--- a/modules/audio_coding/codecs/isac/fix/source/transform.c
+++ b/modules/audio_coding/codecs/isac/fix/source/transform.c
@@ -18,6 +18,7 @@
 #include "modules/audio_coding/codecs/isac/fix/source/codec.h"
 #include "modules/audio_coding/codecs/isac/fix/source/fft.h"
 #include "modules/audio_coding/codecs/isac/fix/source/settings.h"
+#include "modules/third_party/fft/fft.h"
 
 /* Tables are defined in transform_tables.c file or ARM assembly files. */
 /* Cosine table 1 in Q14 */
diff --git a/modules/audio_coding/codecs/isac/main/source/codec.h b/modules/audio_coding/codecs/isac/main/source/codec.h
index c386704..a7c7ddc 100644
--- a/modules/audio_coding/codecs/isac/main/source/codec.h
+++ b/modules/audio_coding/codecs/isac/main/source/codec.h
@@ -22,6 +22,7 @@
 #include <stddef.h>
 
 #include "modules/audio_coding/codecs/isac/main/source/structs.h"
+#include "modules/third_party/fft/fft.h"
 
 void WebRtcIsac_ResetBitstream(Bitstr* bit_stream);
 
diff --git a/modules/audio_coding/codecs/isac/main/source/settings.h b/modules/audio_coding/codecs/isac/main/source/settings.h
index 14a5be8..abce90c 100644
--- a/modules/audio_coding/codecs/isac/main/source/settings.h
+++ b/modules/audio_coding/codecs/isac/main/source/settings.h
@@ -24,9 +24,6 @@
 /* number of samples per frame (either 320 (20ms), 480 (30ms) or 960 (60ms)) */
 #define INITIAL_FRAMESAMPLES 960
 
-#define MAXFFTSIZE 2048
-#define NFACTOR 11
-
 /* do not modify the following; this will have to be modified if we
  * have a 20ms framesize option */
 /**********************************************************************/
diff --git a/modules/audio_coding/codecs/isac/main/source/structs.h b/modules/audio_coding/codecs/isac/main/source/structs.h
index 1d730c7..1255d5b 100644
--- a/modules/audio_coding/codecs/isac/main/source/structs.h
+++ b/modules/audio_coding/codecs/isac/main/source/structs.h
@@ -20,6 +20,7 @@
 
 #include "modules/audio_coding/codecs/isac/bandwidth_info.h"
 #include "modules/audio_coding/codecs/isac/main/source/settings.h"
+#include "modules/third_party/fft/fft.h"
 
 typedef struct Bitstreamstruct {
   uint8_t stream[STREAM_SIZE_MAX];
@@ -228,18 +229,6 @@
 
 } RateModel;
 
-typedef struct {
-  unsigned int SpaceAlloced;
-  unsigned int MaxPermAlloced;
-  double Tmp0[MAXFFTSIZE];
-  double Tmp1[MAXFFTSIZE];
-  double Tmp2[MAXFFTSIZE];
-  double Tmp3[MAXFFTSIZE];
-  int Perm[MAXFFTSIZE];
-  int factor[NFACTOR];
-
-} FFTstr;
-
 /* The following strutc is used to store data from encoding, to make it
    fast and easy to construct a new bitstream with a different Bandwidth
    estimate. All values (except framelength and minBytes) is double size to
diff --git a/modules/third_party/fft/BUILD.gn b/modules/third_party/fft/BUILD.gn
index 1a8e79b..dd362a0 100644
--- a/modules/third_party/fft/BUILD.gn
+++ b/modules/third_party/fft/BUILD.gn
@@ -9,12 +9,8 @@
 import("../../../webrtc.gni")
 
 rtc_source_set("fft") {
-  poisonous = [ "audio_codecs" ]
   sources = [
     "fft.c",
     "fft.h",
   ]
-  deps = [
-    "../../audio_coding:isac_vad",
-  ]
 }
diff --git a/modules/third_party/fft/README.chromium b/modules/third_party/fft/README.chromium
index a373b99..94d20d4 100644
--- a/modules/third_party/fft/README.chromium
+++ b/modules/third_party/fft/README.chromium
@@ -2,7 +2,7 @@
 Short Name: fft
 URL:
 Version: 0
-Date: 2018-02-01
+Date: 2018-07-26
 License: Custom license
 License File: LICENSE
 Security Critical: yes
diff --git a/modules/third_party/fft/fft.c b/modules/third_party/fft/fft.c
index ffce99b..7260462 100644
--- a/modules/third_party/fft/fft.c
+++ b/modules/third_party/fft/fft.c
@@ -415,7 +415,7 @@
   }
 
   /* test that mfactors is in range */
-  if (mfactor > NFACTOR)
+  if (mfactor > FFT_NFACTOR)
   {
     return -1;
   }
diff --git a/modules/third_party/fft/fft.h b/modules/third_party/fft/fft.h
index 34e5f94..6f997e4 100644
--- a/modules/third_party/fft/fft.h
+++ b/modules/third_party/fft/fft.h
@@ -27,10 +27,23 @@
  * See the comments in the code for correct usage!
  */
 
-#ifndef MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_SOURCE_FFT_H_
-#define MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_SOURCE_FFT_H_
+#ifndef MODULES_THIRD_PARTY_FFT_FFT_H_
+#define MODULES_THIRD_PARTY_FFT_FFT_H_
 
-#include "modules/audio_coding/codecs/isac/main/source/structs.h"
+#define FFT_MAXFFTSIZE 2048
+#define FFT_NFACTOR 11
+
+typedef struct {
+  unsigned int SpaceAlloced;
+  unsigned int MaxPermAlloced;
+  double Tmp0[FFT_MAXFFTSIZE];
+  double Tmp1[FFT_MAXFFTSIZE];
+  double Tmp2[FFT_MAXFFTSIZE];
+  double Tmp3[FFT_MAXFFTSIZE];
+  int Perm[FFT_MAXFFTSIZE];
+  int factor[FFT_NFACTOR];
+
+} FFTstr;
 
 /* double precision routine */
 
@@ -42,4 +55,4 @@
                      double scaling,
                      FFTstr* fftstate);
 
-#endif /* MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_SOURCE_FFT_H_ */
+#endif /* MODULES_THIRD_PARTY_FFT_FFT_H_ */