[ACM] iSAC audio codec removed

Note: this CL has to leave behind one part of iSAC, which is its VAD
currently used by AGC1 in APM. The target visibility has been
restricted and the VAD will be removed together with AGC1 when the
time comes.

Tested: see https://chromium-review.googlesource.com/c/chromium/src/+/4013319

Bug: webrtc:14450
Change-Id: I69cc518b16280eae62a1f1977cdbfa24c08cf5f9
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/282421
Reviewed-by: Henrik Lundin <henrik.lundin@webrtc.org>
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Commit-Queue: Alessio Bazzica <alessiob@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#38652}
diff --git a/modules/audio_coding/BUILD.gn b/modules/audio_coding/BUILD.gn
index 0d67cfa..65c849d 100644
--- a/modules/audio_coding/BUILD.gn
+++ b/modules/audio_coding/BUILD.gn
@@ -381,50 +381,8 @@
   absl_deps = [ "//third_party/abseil-cpp/absl/base:core_headers" ]
 }
 
-rtc_source_set("isac_common") {
-  poisonous = [ "audio_codecs" ]
-  sources = [
-    "codecs/isac/audio_decoder_isac_t.h",
-    "codecs/isac/audio_decoder_isac_t_impl.h",
-    "codecs/isac/audio_encoder_isac_t.h",
-    "codecs/isac/audio_encoder_isac_t_impl.h",
-  ]
-  deps = [
-    ":isac_bwinfo",
-    "../../api:scoped_refptr",
-    "../../api/audio_codecs:audio_codecs_api",
-    "../../api/units:time_delta",
-    "../../rtc_base:checks",
-    "../../rtc_base:safe_minmax",
-    "../../system_wrappers:field_trial",
-  ]
-  absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
-}
-
-rtc_library("isac") {
-  visibility += [ "*" ]
-  poisonous = [ "audio_codecs" ]
-  sources = [
-    "codecs/isac/main/include/audio_decoder_isac.h",
-    "codecs/isac/main/include/audio_encoder_isac.h",
-    "codecs/isac/main/source/audio_decoder_isac.cc",
-    "codecs/isac/main/source/audio_encoder_isac.cc",
-  ]
-
-  deps = [
-    ":isac_common",
-    "../../api/audio_codecs:audio_codecs_api",
-  ]
-  public_deps = [ ":isac_c" ]  # no-presubmit-check TODO(webrtc:8603)
-}
-
-rtc_source_set("isac_bwinfo") {
-  sources = [ "codecs/isac/bandwidth_info.h" ]
-  deps = []
-}
-
 rtc_library("isac_vad") {
-  visibility += webrtc_default_visibility
+  visibility += [ "../audio_processing/vad:*" ]
   sources = [
     "codecs/isac/main/source/filter_functions.c",
     "codecs/isac/main/source/filter_functions.h",
@@ -447,247 +405,9 @@
   ]
 }
 
-rtc_library("isac_c") {
-  poisonous = [ "audio_codecs" ]
-  sources = [
-    "codecs/isac/main/include/isac.h",
-    "codecs/isac/main/source/arith_routines.c",
-    "codecs/isac/main/source/arith_routines.h",
-    "codecs/isac/main/source/arith_routines_hist.c",
-    "codecs/isac/main/source/arith_routines_logist.c",
-    "codecs/isac/main/source/bandwidth_estimator.c",
-    "codecs/isac/main/source/bandwidth_estimator.h",
-    "codecs/isac/main/source/codec.h",
-    "codecs/isac/main/source/crc.c",
-    "codecs/isac/main/source/crc.h",
-    "codecs/isac/main/source/decode.c",
-    "codecs/isac/main/source/decode_bwe.c",
-    "codecs/isac/main/source/encode.c",
-    "codecs/isac/main/source/encode_lpc_swb.c",
-    "codecs/isac/main/source/encode_lpc_swb.h",
-    "codecs/isac/main/source/entropy_coding.c",
-    "codecs/isac/main/source/entropy_coding.h",
-    "codecs/isac/main/source/filterbanks.c",
-    "codecs/isac/main/source/intialize.c",
-    "codecs/isac/main/source/isac.c",
-    "codecs/isac/main/source/isac_float_type.h",
-    "codecs/isac/main/source/lattice.c",
-    "codecs/isac/main/source/lpc_analysis.c",
-    "codecs/isac/main/source/lpc_analysis.h",
-    "codecs/isac/main/source/lpc_gain_swb_tables.c",
-    "codecs/isac/main/source/lpc_gain_swb_tables.h",
-    "codecs/isac/main/source/lpc_shape_swb12_tables.c",
-    "codecs/isac/main/source/lpc_shape_swb12_tables.h",
-    "codecs/isac/main/source/lpc_shape_swb16_tables.c",
-    "codecs/isac/main/source/lpc_shape_swb16_tables.h",
-    "codecs/isac/main/source/lpc_tables.c",
-    "codecs/isac/main/source/lpc_tables.h",
-    "codecs/isac/main/source/pitch_gain_tables.c",
-    "codecs/isac/main/source/pitch_gain_tables.h",
-    "codecs/isac/main/source/pitch_lag_tables.c",
-    "codecs/isac/main/source/pitch_lag_tables.h",
-    "codecs/isac/main/source/spectrum_ar_model_tables.c",
-    "codecs/isac/main/source/spectrum_ar_model_tables.h",
-    "codecs/isac/main/source/transform.c",
-  ]
-
-  if (is_linux || is_chromeos) {
-    libs = [ "m" ]
-  }
-
-  deps = [
-    ":isac_bwinfo",
-    ":isac_vad",
-    "../../common_audio",
-    "../../common_audio:common_audio_c",
-    "../../rtc_base:checks",
-    "../../rtc_base:compile_assert_c",
-    "../../rtc_base/system:arch",
-    "../third_party/fft",
-  ]
-}
-
-rtc_library("isac_fix") {
-  visibility += [ "*" ]
-  poisonous = [ "audio_codecs" ]
-  sources = [
-    "codecs/isac/fix/source/audio_decoder_isacfix.cc",
-    "codecs/isac/fix/source/audio_encoder_isacfix.cc",
-  ]
-
-  deps = [
-    ":isac_common",
-    "../../api/audio_codecs:audio_codecs_api",
-    "../../common_audio",
-    "../../system_wrappers",
-  ]
-  public_deps = [ ":isac_fix_c" ]  # no-presubmit-check TODO(webrtc:8603)
-
-  if (rtc_build_with_neon) {
-    deps += [ ":isac_neon" ]
-  }
-}
-
-rtc_library("isac_fix_common") {
-  poisonous = [ "audio_codecs" ]
-  sources = [
-    "codecs/isac/fix/source/codec.h",
-    "codecs/isac/fix/source/entropy_coding.h",
-    "codecs/isac/fix/source/fft.c",
-    "codecs/isac/fix/source/fft.h",
-    "codecs/isac/fix/source/filterbank_internal.h",
-    "codecs/isac/fix/source/settings.h",
-    "codecs/isac/fix/source/structs.h",
-    "codecs/isac/fix/source/transform_tables.c",
-  ]
-  deps = [
-    ":isac_bwinfo",
-    "../../common_audio",
-    "../../common_audio:common_audio_c",
-  ]
-}
-
-rtc_source_set("isac_fix_c_arm_asm") {
-  poisonous = [ "audio_codecs" ]
-  sources = []
-  if (current_cpu == "arm" && arm_version >= 7) {
-    sources += [
-      "codecs/isac/fix/source/lattice_armv7.S",
-      "codecs/isac/fix/source/pitch_filter_armv6.S",
-    ]
-    deps = [
-      ":isac_fix_common",
-      "../../rtc_base/system:asm_defines",
-    ]
-  }
-}
-
-rtc_library("isac_fix_c") {
-  poisonous = [ "audio_codecs" ]
-  sources = [
-    "codecs/isac/fix/include/audio_decoder_isacfix.h",
-    "codecs/isac/fix/include/audio_encoder_isacfix.h",
-    "codecs/isac/fix/include/isacfix.h",
-    "codecs/isac/fix/source/arith_routines.c",
-    "codecs/isac/fix/source/arith_routines_hist.c",
-    "codecs/isac/fix/source/arith_routines_logist.c",
-    "codecs/isac/fix/source/arith_routins.h",
-    "codecs/isac/fix/source/bandwidth_estimator.c",
-    "codecs/isac/fix/source/bandwidth_estimator.h",
-    "codecs/isac/fix/source/decode.c",
-    "codecs/isac/fix/source/decode_bwe.c",
-    "codecs/isac/fix/source/decode_plc.c",
-    "codecs/isac/fix/source/encode.c",
-    "codecs/isac/fix/source/entropy_coding.c",
-    "codecs/isac/fix/source/filterbank_tables.c",
-    "codecs/isac/fix/source/filterbank_tables.h",
-    "codecs/isac/fix/source/filterbanks.c",
-    "codecs/isac/fix/source/filters.c",
-    "codecs/isac/fix/source/initialize.c",
-    "codecs/isac/fix/source/isac_fix_type.h",
-    "codecs/isac/fix/source/isacfix.c",
-    "codecs/isac/fix/source/lattice.c",
-    "codecs/isac/fix/source/lattice_c.c",
-    "codecs/isac/fix/source/lpc_masking_model.c",
-    "codecs/isac/fix/source/lpc_masking_model.h",
-    "codecs/isac/fix/source/lpc_tables.c",
-    "codecs/isac/fix/source/lpc_tables.h",
-    "codecs/isac/fix/source/pitch_estimator.c",
-    "codecs/isac/fix/source/pitch_estimator.h",
-    "codecs/isac/fix/source/pitch_estimator_c.c",
-    "codecs/isac/fix/source/pitch_filter.c",
-    "codecs/isac/fix/source/pitch_filter_c.c",
-    "codecs/isac/fix/source/pitch_gain_tables.c",
-    "codecs/isac/fix/source/pitch_gain_tables.h",
-    "codecs/isac/fix/source/pitch_lag_tables.c",
-    "codecs/isac/fix/source/pitch_lag_tables.h",
-    "codecs/isac/fix/source/spectrum_ar_model_tables.c",
-    "codecs/isac/fix/source/spectrum_ar_model_tables.h",
-    "codecs/isac/fix/source/transform.c",
-  ]
-
-  deps = [
-    ":isac_bwinfo",
-    ":isac_common",
-    ":isac_fix_common",
-    "../../api/audio_codecs:audio_codecs_api",
-    "../../common_audio",
-    "../../common_audio:common_audio_c",
-    "../../rtc_base:checks",
-    "../../rtc_base:compile_assert_c",
-    "../../rtc_base:sanitizer",
-    "../../system_wrappers",
-    "../third_party/fft",
-  ]
-
-  if (rtc_build_with_neon) {
-    deps += [ ":isac_neon" ]
-
-    # TODO(bugs.webrtc.org/9579): Consider moving the usage of NEON from
-    # pitch_estimator_c.c into the "isac_neon" target and delete this flag:
-    if (current_cpu != "arm64") {
-      suppressed_configs += [ "//build/config/compiler:compiler_arm_fpu" ]
-      cflags = [ "-mfpu=neon" ]
-    }
-  }
-
-  if (current_cpu == "arm" && arm_version >= 7) {
-    sources -= [
-      "codecs/isac/fix/source/lattice_c.c",
-      "codecs/isac/fix/source/pitch_filter_c.c",
-    ]
-    deps += [ ":isac_fix_c_arm_asm" ]
-  }
-
-  if (current_cpu == "mipsel") {
-    sources += [
-      "codecs/isac/fix/source/entropy_coding_mips.c",
-      "codecs/isac/fix/source/filters_mips.c",
-      "codecs/isac/fix/source/lattice_mips.c",
-      "codecs/isac/fix/source/pitch_estimator_mips.c",
-      "codecs/isac/fix/source/transform_mips.c",
-    ]
-    sources -= [
-      "codecs/isac/fix/source/lattice_c.c",
-      "codecs/isac/fix/source/pitch_estimator_c.c",
-    ]
-    if (mips_dsp_rev > 0) {
-      sources += [ "codecs/isac/fix/source/filterbanks_mips.c" ]
-    }
-    if (mips_dsp_rev > 1) {
-      sources += [
-        "codecs/isac/fix/source/lpc_masking_model_mips.c",
-        "codecs/isac/fix/source/pitch_filter_mips.c",
-      ]
-      sources -= [ "codecs/isac/fix/source/pitch_filter_c.c" ]
-    }
-  }
-}
-
-if (rtc_build_with_neon) {
-  rtc_library("isac_neon") {
-    poisonous = [ "audio_codecs" ]
-    sources = [
-      "codecs/isac/fix/source/entropy_coding_neon.c",
-      "codecs/isac/fix/source/filterbanks_neon.c",
-      "codecs/isac/fix/source/filters_neon.c",
-      "codecs/isac/fix/source/lattice_neon.c",
-      "codecs/isac/fix/source/transform_neon.c",
-    ]
-
-    if (current_cpu != "arm64") {
-      # Enable compilation for the NEON instruction set.
-      suppressed_configs += [ "//build/config/compiler:compiler_arm_fpu" ]
-      cflags = [ "-mfpu=neon" ]
-    }
-
-    deps = [
-      ":isac_fix_common",
-      "../../common_audio",
-      "../../common_audio:common_audio_c",
-      "../../rtc_base:checks",
-    ]
-  }
+rtc_source_set("isac_bwinfo") {
+  sources = [ "codecs/isac/bandwidth_info.h" ]
+  deps = []
 }
 
 rtc_library("pcm16b") {
@@ -1291,11 +1011,6 @@
   if (rtc_include_opus) {
     audio_coding_deps += [ ":webrtc_opus" ]
   }
-  if (current_cpu == "arm") {
-    audio_coding_deps += [ ":isac_fix" ]
-  } else {
-    audio_coding_deps += [ ":isac" ]
-  }
   if (!build_with_mozilla && !build_with_chromium) {
     audio_coding_deps += [ ":red" ]
   }
@@ -1327,11 +1042,7 @@
         ":g711_test",
         ":g722_test",
         ":ilbc_test",
-        ":isac_api_test",
-        ":isac_switch_samprate_test",
-        ":isac_test",
         ":neteq_ilbc_quality_test",
-        ":neteq_isac_quality_test",
         ":neteq_opus_quality_test",
         ":neteq_pcm16b_quality_test",
         ":neteq_pcmu_quality_test",
@@ -1371,8 +1082,6 @@
       "test/Tester.cc",
       "test/TwoWayCommunication.cc",
       "test/TwoWayCommunication.h",
-      "test/iSACTest.cc",
-      "test/iSACTest.h",
       "test/target_delay_unittest.cc",
     ]
     deps = [
@@ -1397,8 +1106,6 @@
       "../../api/audio_codecs/g722:audio_encoder_g722",
       "../../api/audio_codecs/ilbc:audio_decoder_ilbc",
       "../../api/audio_codecs/ilbc:audio_encoder_ilbc",
-      "../../api/audio_codecs/isac:audio_decoder_isac_float",
-      "../../api/audio_codecs/isac:audio_encoder_isac_float",
       "../../api/audio_codecs/opus:audio_decoder_opus",
       "../../api/audio_codecs/opus:audio_encoder_opus",
       "../../common_audio",
@@ -1513,8 +1220,6 @@
 
       deps = [
                ":ilbc",
-               ":isac",
-               ":isac_fix",
                ":neteq",
                ":neteq_input_audio_tools",
                ":neteq_tools",
@@ -1619,12 +1324,10 @@
       testonly = true
       defines = []
       deps = [
-        ":isac_fix_common",
         "../../rtc_base:macromagic",
         "../../test:fileutils",
       ]
       sources = [
-        "codecs/isac/fix/test/isac_speed_test.cc",
         "codecs/opus/opus_speed_test.cc",
         "codecs/tools/audio_codec_speed_test.cc",
         "codecs/tools/audio_codec_speed_test.h",
@@ -1647,7 +1350,6 @@
       }
 
       deps += [
-        ":isac_fix",
         ":webrtc_opus",
         "../../rtc_base:checks",
         "../../test:test_main",
@@ -1723,7 +1425,6 @@
         "../../api/audio_codecs/g711:audio_encoder_g711",
         "../../api/audio_codecs/g722:audio_encoder_g722",
         "../../api/audio_codecs/ilbc:audio_encoder_ilbc",
-        "../../api/audio_codecs/isac:audio_encoder_isac",
         "../../api/audio_codecs/opus:audio_encoder_opus",
         "../../rtc_base:safe_conversions",
         "//third_party/abseil-cpp/absl/flags:flag",
@@ -1832,21 +1533,6 @@
       ]
     }
 
-    rtc_executable("neteq_isac_quality_test") {
-      testonly = true
-
-      sources = [ "neteq/test/neteq_isac_quality_test.cc" ]
-
-      deps = [
-        ":isac_fix",
-        ":neteq",
-        ":neteq_quality_test_support",
-        "../../test:test_main",
-        "//testing/gtest",
-        "//third_party/abseil-cpp/absl/flags:flag",
-      ]
-    }
-
     rtc_executable("neteq_pcmu_quality_test") {
       testonly = true
 
@@ -1884,28 +1570,6 @@
     }
   }
 
-  rtc_library("isac_test_util") {
-    testonly = true
-    sources = [
-      "codecs/isac/main/util/utility.c",
-      "codecs/isac/main/util/utility.h",
-    ]
-  }
-
-  if (!build_with_chromium) {
-    rtc_executable("isac_test") {
-      testonly = true
-
-      sources = [ "codecs/isac/main/test/simpleKenny.c" ]
-
-      deps = [
-        ":isac",
-        ":isac_test_util",
-        "../../rtc_base:macromagic",
-      ]
-    }
-  }
-
   rtc_executable("g711_test") {
     testonly = true
 
@@ -1923,32 +1587,6 @@
   }
 
   if (!build_with_chromium) {
-    rtc_executable("isac_api_test") {
-      testonly = true
-
-      sources = [ "codecs/isac/main/test/ReleaseTest-API/ReleaseTest-API.cc" ]
-
-      deps = [
-        ":isac",
-        ":isac_test_util",
-        "../../rtc_base:macromagic",
-      ]
-    }
-
-    rtc_executable("isac_switch_samprate_test") {
-      testonly = true
-
-      sources =
-          [ "codecs/isac/main/test/SwitchingSampRate/SwitchingSampRate.cc" ]
-
-      deps = [
-        ":isac",
-        ":isac_test_util",
-        "../../common_audio",
-        "../../common_audio:common_audio_c",
-      ]
-    }
-
     rtc_executable("ilbc_test") {
       testonly = true
 
@@ -1997,13 +1635,6 @@
         "codecs/cng/audio_encoder_cng_unittest.cc",
         "codecs/cng/cng_unittest.cc",
         "codecs/ilbc/ilbc_unittest.cc",
-        "codecs/isac/fix/source/filterbanks_unittest.cc",
-        "codecs/isac/fix/source/filters_unittest.cc",
-        "codecs/isac/fix/source/lpc_masking_model_unittest.cc",
-        "codecs/isac/fix/source/transform_unittest.cc",
-        "codecs/isac/isac_webrtc_api_test.cc",
-        "codecs/isac/main/source/audio_encoder_isac_unittest.cc",
-        "codecs/isac/main/source/isac_unittest.cc",
         "codecs/legacy_encoded_audio_frame_unittest.cc",
         "codecs/opus/audio_decoder_multi_channel_opus_unittest.cc",
         "codecs/opus/audio_encoder_multi_channel_opus_unittest.cc",
@@ -2070,11 +1701,6 @@
         ":default_neteq_factory",
         ":g711",
         ":ilbc",
-        ":isac",
-        ":isac_c",
-        ":isac_common",
-        ":isac_fix",
-        ":isac_fix_common",
         ":legacy_encoded_audio_frame",
         ":mocks",
         ":neteq",
@@ -2094,10 +1720,6 @@
         "../../api/audio_codecs:audio_codecs_api",
         "../../api/audio_codecs:builtin_audio_decoder_factory",
         "../../api/audio_codecs:builtin_audio_encoder_factory",
-        "../../api/audio_codecs/isac:audio_decoder_isac_fix",
-        "../../api/audio_codecs/isac:audio_decoder_isac_float",
-        "../../api/audio_codecs/isac:audio_encoder_isac_fix",
-        "../../api/audio_codecs/isac:audio_encoder_isac_float",
         "../../api/audio_codecs/opus:audio_decoder_multiopus",
         "../../api/audio_codecs/opus:audio_decoder_opus",
         "../../api/audio_codecs/opus:audio_encoder_multiopus",
diff --git a/modules/audio_coding/acm2/acm_receiver_unittest.cc b/modules/audio_coding/acm2/acm_receiver_unittest.cc
index e73acc2..6dd44b6 100644
--- a/modules/audio_coding/acm2/acm_receiver_unittest.cc
+++ b/modules/audio_coding/acm2/acm_receiver_unittest.cc
@@ -13,6 +13,7 @@
 #include <algorithm>  // std::min
 #include <memory>
 
+#include "absl/types/optional.h"
 #include "api/audio_codecs/builtin_audio_decoder_factory.h"
 #include "api/audio_codecs/builtin_audio_encoder_factory.h"
 #include "modules/audio_coding/codecs/cng/audio_encoder_cng.h"
@@ -64,12 +65,14 @@
                             const SdpAudioFormat& format,
                             const std::map<int, int> cng_payload_types = {}) {
     // Create the speech encoder.
-    AudioCodecInfo info = encoder_factory_->QueryAudioEncoder(format).value();
+    absl::optional<AudioCodecInfo> info =
+        encoder_factory_->QueryAudioEncoder(format);
+    RTC_CHECK(info.has_value());
     std::unique_ptr<AudioEncoder> enc =
         encoder_factory_->MakeAudioEncoder(payload_type, format, absl::nullopt);
 
     // If we have a compatible CN specification, stack a CNG on top.
-    auto it = cng_payload_types.find(info.sample_rate_hz);
+    auto it = cng_payload_types.find(info->sample_rate_hz);
     if (it != cng_payload_types.end()) {
       AudioEncoderCngConfig config;
       config.speech_encoder = std::move(enc);
@@ -81,7 +84,7 @@
 
     // Actually start using the new encoder.
     acm_->SetEncoder(std::move(enc));
-    return info;
+    return *info;
   }
 
   int InsertOnePacketOfSilence(const AudioCodecInfo& info) {
@@ -148,8 +151,7 @@
 #define MAYBE_SampleRate SampleRate
 #endif
 TEST_F(AcmReceiverTestOldApi, MAYBE_SampleRate) {
-  const std::map<int, SdpAudioFormat> codecs = {{0, {"ISAC", 16000, 1}},
-                                                {1, {"ISAC", 32000, 1}}};
+  const std::map<int, SdpAudioFormat> codecs = {{0, {"OPUS", 48000, 2}}};
   receiver_->SetCodecs(codecs);
 
   constexpr int kOutSampleRateHz = 8000;  // Different than codec sample rate.
@@ -233,15 +235,6 @@
 }
 
 #if defined(WEBRTC_ANDROID)
-#define MAYBE_VerifyAudioFrameISAC DISABLED_VerifyAudioFrameISAC
-#else
-#define MAYBE_VerifyAudioFrameISAC VerifyAudioFrameISAC
-#endif
-TEST_F(AcmReceiverTestFaxModeOldApi, MAYBE_VerifyAudioFrameISAC) {
-  RunVerifyAudioFrame({"ISAC", 16000, 1});
-}
-
-#if defined(WEBRTC_ANDROID)
 #define MAYBE_VerifyAudioFrameOpus DISABLED_VerifyAudioFrameOpus
 #else
 #define MAYBE_VerifyAudioFrameOpus VerifyAudioFrameOpus
@@ -310,12 +303,10 @@
 #else
 #define MAYBE_LastAudioCodec LastAudioCodec
 #endif
-#if defined(WEBRTC_CODEC_ISAC)
+#if defined(WEBRTC_CODEC_OPUS)
 TEST_F(AcmReceiverTestOldApi, MAYBE_LastAudioCodec) {
-  const std::map<int, SdpAudioFormat> codecs = {{0, {"ISAC", 16000, 1}},
-                                                {1, {"PCMA", 8000, 1}},
-                                                {2, {"ISAC", 32000, 1}},
-                                                {3, {"L16", 32000, 1}}};
+  const std::map<int, SdpAudioFormat> codecs = {
+      {0, {"PCMU", 8000, 1}}, {1, {"PCMA", 8000, 1}}, {2, {"L16", 32000, 1}}};
   const std::map<int, int> cng_payload_types = {
       {8000, 100}, {16000, 101}, {32000, 102}};
   {
diff --git a/modules/audio_coding/acm2/audio_coding_module_unittest.cc b/modules/audio_coding/acm2/audio_coding_module_unittest.cc
index 7e4b764..f1eb81c 100644
--- a/modules/audio_coding/acm2/audio_coding_module_unittest.cc
+++ b/modules/audio_coding/acm2/audio_coding_module_unittest.cc
@@ -30,7 +30,6 @@
 #include "modules/audio_coding/codecs/cng/audio_encoder_cng.h"
 #include "modules/audio_coding/codecs/g711/audio_decoder_pcm.h"
 #include "modules/audio_coding/codecs/g711/audio_encoder_pcm.h"
-#include "modules/audio_coding/codecs/isac/main/include/audio_encoder_isac.h"
 #include "modules/audio_coding/include/audio_coding_module_typedefs.h"
 #include "modules/audio_coding/neteq/tools/audio_checksum.h"
 #include "modules/audio_coding/neteq/tools/audio_loop.h"
@@ -302,44 +301,6 @@
   EXPECT_EQ(AudioFrameType::kAudioFrameSpeech, packet_cb_.last_frame_type());
 }
 
-#if defined(WEBRTC_CODEC_ISAC) || defined(WEBRTC_CODEC_ISACFX)
-// Verifies that the RTP timestamp series is not reset when the codec is
-// changed.
-TEST_F(AudioCodingModuleTestOldApi, TimestampSeriesContinuesWhenCodecChanges) {
-  RegisterCodec();  // This registers the default codec.
-  uint32_t expected_ts = input_frame_.timestamp_;
-  int blocks_per_packet = pac_size_ / (kSampleRateHz / 100);
-  // Encode 5 packets of the first codec type.
-  const int kNumPackets1 = 5;
-  for (int j = 0; j < kNumPackets1; ++j) {
-    for (int i = 0; i < blocks_per_packet; ++i) {
-      EXPECT_EQ(j, packet_cb_.num_calls());
-      InsertAudio();
-    }
-    EXPECT_EQ(j + 1, packet_cb_.num_calls());
-    EXPECT_EQ(expected_ts, packet_cb_.last_timestamp());
-    expected_ts += pac_size_;
-  }
-
-  // Change codec.
-  audio_format_ = SdpAudioFormat("ISAC", kSampleRateHz, 1);
-  pac_size_ = 480;
-  RegisterCodec();
-  blocks_per_packet = pac_size_ / (kSampleRateHz / 100);
-  // Encode another 5 packets.
-  const int kNumPackets2 = 5;
-  for (int j = 0; j < kNumPackets2; ++j) {
-    for (int i = 0; i < blocks_per_packet; ++i) {
-      EXPECT_EQ(kNumPackets1 + j, packet_cb_.num_calls());
-      InsertAudio();
-    }
-    EXPECT_EQ(kNumPackets1 + j + 1, packet_cb_.num_calls());
-    EXPECT_EQ(expected_ts, packet_cb_.last_timestamp());
-    expected_ts += pac_size_;
-  }
-}
-#endif
-
 // Introduce this class to set different expectations on the number of encoded
 // bytes. This class expects all encoded packets to be 9 bytes (matching one
 // CNG SID frame) or 0 bytes. This test depends on `input_frame_` containing
@@ -420,8 +381,7 @@
   DoTest(k10MsBlocksPerPacket, kCngPayloadType);
 }
 
-// A multi-threaded test for ACM. This base class is using the PCM16b 16 kHz
-// codec, while the derive class AcmIsacMtTest is using iSAC.
+// A multi-threaded test for ACM that uses the PCM16b 16 kHz codec.
 class AudioCodingModuleMtTestOldApi : public AudioCodingModuleTestOldApi {
  protected:
   static const int kNumPackets = 500;
@@ -560,272 +520,6 @@
   EXPECT_TRUE(RunTest());
 }
 
-// This is a multi-threaded ACM test using iSAC. The test encodes audio
-// from a PCM file. The most recent encoded frame is used as input to the
-// receiving part. Depending on timing, it may happen that the same RTP packet
-// is inserted into the receiver multiple times, but this is a valid use-case,
-// and simplifies the test code a lot.
-class AcmIsacMtTestOldApi : public AudioCodingModuleMtTestOldApi {
- protected:
-  static const int kNumPackets = 500;
-  static const int kNumPullCalls = 500;
-
-  AcmIsacMtTestOldApi()
-      : AudioCodingModuleMtTestOldApi(), last_packet_number_(0) {}
-
-  ~AcmIsacMtTestOldApi() {}
-
-  void SetUp() override {
-    AudioCodingModuleTestOldApi::SetUp();
-    RegisterCodec();  // Must be called before the threads start below.
-
-    // Set up input audio source to read from specified file, loop after 5
-    // seconds, and deliver blocks of 10 ms.
-    const std::string input_file_name =
-        webrtc::test::ResourcePath("audio_coding/speech_mono_16kHz", "pcm");
-    audio_loop_.Init(input_file_name, 5 * kSampleRateHz, kNumSamples10ms);
-
-    // Generate one packet to have something to insert.
-    int loop_counter = 0;
-    while (packet_cb_.last_payload_len_bytes() == 0) {
-      InsertAudio();
-      ASSERT_LT(loop_counter++, 10);
-    }
-    // Set `last_packet_number_` to one less that `num_calls` so that the packet
-    // will be fetched in the next InsertPacket() call.
-    last_packet_number_ = packet_cb_.num_calls() - 1;
-
-    StartThreads();
-  }
-
-  void RegisterCodec() override {
-    static_assert(kSampleRateHz == 16000, "test designed for iSAC 16 kHz");
-    audio_format_ = SdpAudioFormat("isac", kSampleRateHz, 1);
-    pac_size_ = 480;
-
-    // Register iSAC codec in ACM, effectively unregistering the PCM16B codec
-    // registered in AudioCodingModuleTestOldApi::SetUp();
-    acm_->SetReceiveCodecs({{kPayloadType, *audio_format_}});
-    acm_->SetEncoder(CreateBuiltinAudioEncoderFactory()->MakeAudioEncoder(
-        kPayloadType, *audio_format_, absl::nullopt));
-  }
-
-  void InsertPacket() override {
-    int num_calls = packet_cb_.num_calls();  // Store locally for thread safety.
-    if (num_calls > last_packet_number_) {
-      // Get the new payload out from the callback handler.
-      // Note that since we swap buffers here instead of directly inserting
-      // a pointer to the data in `packet_cb_`, we avoid locking the callback
-      // for the duration of the IncomingPacket() call.
-      packet_cb_.SwapBuffers(&last_payload_vec_);
-      ASSERT_GT(last_payload_vec_.size(), 0u);
-      rtp_utility_->Forward(&rtp_header_);
-      last_packet_number_ = num_calls;
-    }
-    ASSERT_GT(last_payload_vec_.size(), 0u);
-    ASSERT_EQ(0, acm_->IncomingPacket(&last_payload_vec_[0],
-                                      last_payload_vec_.size(), rtp_header_));
-  }
-
-  void InsertAudio() override {
-    // TODO(kwiberg): Use std::copy here. Might be complications because AFAICS
-    // this call confuses the number of samples with the number of bytes, and
-    // ends up copying only half of what it should.
-    memcpy(input_frame_.mutable_data(), audio_loop_.GetNextBlock().data(),
-           kNumSamples10ms);
-    AudioCodingModuleTestOldApi::InsertAudio();
-  }
-
-  // Override the verification function with no-op, since iSAC produces variable
-  // payload sizes.
-  void VerifyEncoding() override {}
-
-  // This method is the same as AudioCodingModuleMtTestOldApi::TestDone(), but
-  // here it is using the constants defined in this class (i.e., shorter test
-  // run).
-  bool TestDone() override {
-    if (packet_cb_.num_calls() > kNumPackets) {
-      MutexLock lock(&mutex_);
-      if (pull_audio_count_ > kNumPullCalls) {
-        // Both conditions for completion are met. End the test.
-        return true;
-      }
-    }
-    return false;
-  }
-
-  int last_packet_number_;
-  std::vector<uint8_t> last_payload_vec_;
-  test::AudioLoop audio_loop_;
-};
-
-#if defined(WEBRTC_IOS)
-#define MAYBE_DoTest DISABLED_DoTest
-#else
-#define MAYBE_DoTest DoTest
-#endif
-#if defined(WEBRTC_CODEC_ISAC) || defined(WEBRTC_CODEC_ISACFX)
-TEST_F(AcmIsacMtTestOldApi, MAYBE_DoTest) {
-  EXPECT_TRUE(RunTest());
-}
-#endif
-
-class AcmReRegisterIsacMtTestOldApi : public AudioCodingModuleTestOldApi {
- protected:
-  static const int kRegisterAfterNumPackets = 5;
-  static const int kNumPackets = 10;
-  static const int kPacketSizeMs = 30;
-  static const int kPacketSizeSamples = kPacketSizeMs * 16;
-
-  AcmReRegisterIsacMtTestOldApi()
-      : AudioCodingModuleTestOldApi(),
-        codec_registered_(false),
-        receive_packet_count_(0),
-        next_insert_packet_time_ms_(0),
-        fake_clock_(new SimulatedClock(0)) {
-    AudioEncoderIsacFloatImpl::Config config;
-    config.payload_type = kPayloadType;
-    isac_encoder_.reset(new AudioEncoderIsacFloatImpl(config));
-    clock_ = fake_clock_.get();
-  }
-
-  void SetUp() override {
-    AudioCodingModuleTestOldApi::SetUp();
-    // Set up input audio source to read from specified file, loop after 5
-    // seconds, and deliver blocks of 10 ms.
-    const std::string input_file_name =
-        webrtc::test::ResourcePath("audio_coding/speech_mono_16kHz", "pcm");
-    audio_loop_.Init(input_file_name, 5 * kSampleRateHz, kNumSamples10ms);
-    RegisterCodec();  // Must be called before the threads start below.
-    StartThreads();
-  }
-
-  void RegisterCodec() override {
-    // Register iSAC codec in ACM, effectively unregistering the PCM16B codec
-    // registered in AudioCodingModuleTestOldApi::SetUp();
-    // Only register the decoder for now. The encoder is registered later.
-    static_assert(kSampleRateHz == 16000, "test designed for iSAC 16 kHz");
-    acm_->SetReceiveCodecs({{kPayloadType, {"ISAC", kSampleRateHz, 1}}});
-  }
-
-  void StartThreads() {
-    quit_.store(false);
-    const auto attributes =
-        rtc::ThreadAttributes().SetPriority(rtc::ThreadPriority::kRealtime);
-    receive_thread_ = rtc::PlatformThread::SpawnJoinable(
-        [this] {
-          while (!quit_.load() && CbReceiveImpl()) {
-          }
-        },
-        "receive", attributes);
-    codec_registration_thread_ = rtc::PlatformThread::SpawnJoinable(
-        [this] {
-          while (!quit_.load()) {
-            CbCodecRegistrationImpl();
-          }
-        },
-        "codec_registration", attributes);
-  }
-
-  void TearDown() override {
-    AudioCodingModuleTestOldApi::TearDown();
-    quit_.store(true);
-    receive_thread_.Finalize();
-    codec_registration_thread_.Finalize();
-  }
-
-  bool RunTest() { return test_complete_.Wait(TimeDelta::Minutes(10)); }
-
-  bool CbReceiveImpl() {
-    SleepMs(1);
-    rtc::Buffer encoded;
-    AudioEncoder::EncodedInfo info;
-    {
-      MutexLock lock(&mutex_);
-      if (clock_->TimeInMilliseconds() < next_insert_packet_time_ms_) {
-        return true;
-      }
-      next_insert_packet_time_ms_ += kPacketSizeMs;
-      ++receive_packet_count_;
-
-      // Encode new frame.
-      uint32_t input_timestamp = rtp_header_.timestamp;
-      while (info.encoded_bytes == 0) {
-        info = isac_encoder_->Encode(input_timestamp,
-                                     audio_loop_.GetNextBlock(), &encoded);
-        input_timestamp += 160;  // 10 ms at 16 kHz.
-      }
-      EXPECT_EQ(rtp_header_.timestamp + kPacketSizeSamples, input_timestamp);
-      EXPECT_EQ(rtp_header_.timestamp, info.encoded_timestamp);
-      EXPECT_EQ(rtp_header_.payloadType, info.payload_type);
-    }
-    // Now we're not holding the crit sect when calling ACM.
-
-    // Insert into ACM.
-    EXPECT_EQ(0, acm_->IncomingPacket(encoded.data(), info.encoded_bytes,
-                                      rtp_header_));
-
-    // Pull audio.
-    for (int i = 0; i < rtc::CheckedDivExact(kPacketSizeMs, 10); ++i) {
-      AudioFrame audio_frame;
-      bool muted;
-      EXPECT_EQ(0, acm_->PlayoutData10Ms(-1 /* default output frequency */,
-                                         &audio_frame, &muted));
-      if (muted) {
-        ADD_FAILURE();
-        return false;
-      }
-      fake_clock_->AdvanceTimeMilliseconds(10);
-    }
-    rtp_utility_->Forward(&rtp_header_);
-    return true;
-  }
-
-  void CbCodecRegistrationImpl() {
-    SleepMs(1);
-    if (HasFatalFailure()) {
-      // End the test early if a fatal failure (ASSERT_*) has occurred.
-      test_complete_.Set();
-    }
-    MutexLock lock(&mutex_);
-    if (!codec_registered_ &&
-        receive_packet_count_ > kRegisterAfterNumPackets) {
-      // Register the iSAC encoder.
-      acm_->SetEncoder(CreateBuiltinAudioEncoderFactory()->MakeAudioEncoder(
-          kPayloadType, *audio_format_, absl::nullopt));
-      codec_registered_ = true;
-    }
-    if (codec_registered_ && receive_packet_count_ > kNumPackets) {
-      test_complete_.Set();
-    }
-  }
-
-  rtc::PlatformThread receive_thread_;
-  rtc::PlatformThread codec_registration_thread_;
-  // Used to force worker threads to stop looping.
-  std::atomic<bool> quit_;
-
-  rtc::Event test_complete_;
-  Mutex mutex_;
-  bool codec_registered_ RTC_GUARDED_BY(mutex_);
-  int receive_packet_count_ RTC_GUARDED_BY(mutex_);
-  int64_t next_insert_packet_time_ms_ RTC_GUARDED_BY(mutex_);
-  std::unique_ptr<AudioEncoderIsacFloatImpl> isac_encoder_;
-  std::unique_ptr<SimulatedClock> fake_clock_;
-  test::AudioLoop audio_loop_;
-};
-
-#if defined(WEBRTC_IOS)
-#define MAYBE_DoTest DISABLED_DoTest
-#else
-#define MAYBE_DoTest DoTest
-#endif
-#if defined(WEBRTC_CODEC_ISAC) || defined(WEBRTC_CODEC_ISACFX)
-TEST_F(AcmReRegisterIsacMtTestOldApi, MAYBE_DoTest) {
-  EXPECT_TRUE(RunTest());
-}
-#endif
-
 // Disabling all of these tests on iOS until file support has been added.
 // See https://code.google.com/p/webrtc/issues/detail?id=4752 for details.
 #if !defined(WEBRTC_IOS)
@@ -1025,38 +719,6 @@
 
 class AcmSenderBitExactnessNewApi : public AcmSenderBitExactnessOldApi {};
 
-// Run bit exactness tests only for release builds.
-#if (defined(WEBRTC_CODEC_ISAC) || defined(WEBRTC_CODEC_ISACFX)) && \
-    defined(NDEBUG) && defined(WEBRTC_LINUX) && defined(WEBRTC_ARCH_X86_64)
-TEST_F(AcmSenderBitExactnessOldApi, IsacWb30ms) {
-  ASSERT_NO_FATAL_FAILURE(SetUpTest("ISAC", 16000, 1, 103, 480, 480));
-  Run(/*audio_checksum_ref=*/"37ecdabad1698a857cf811e6d1fa91df",
-      /*payload_checksum_ref=*/"3c79f16f34218271f3dca4e2b1dfe1bb",
-      /*expected_packets=*/33,
-      /*expected_channels=*/test::AcmReceiveTestOldApi::kMonoOutput);
-}
-
-TEST_F(AcmSenderBitExactnessOldApi, IsacWb60ms) {
-  ASSERT_NO_FATAL_FAILURE(SetUpTest("ISAC", 16000, 1, 103, 960, 960));
-  Run(/*audio_checksum_ref=*/"0e9078d23454901496a88362ba0740c3",
-      /*payload_checksum_ref=*/"9e0a0ab743ad987b55b8e14802769c56",
-      /*expected_packets=*/16,
-      /*expected_channels=*/test::AcmReceiveTestOldApi::kMonoOutput);
-}
-#endif
-
-// Run bit exactness test only for release build.
-#if defined(WEBRTC_CODEC_ISAC) && defined(NDEBUG) && defined(WEBRTC_LINUX) && \
-    defined(WEBRTC_ARCH_X86_64)
-TEST_F(AcmSenderBitExactnessOldApi, IsacSwb30ms) {
-  ASSERT_NO_FATAL_FAILURE(SetUpTest("ISAC", 32000, 1, 104, 960, 960));
-  Run(/*audio_checksum_ref=*/"f4cf577f28a0dcbac33358b757518e0c",
-      /*payload_checksum_ref=*/"ce86106a93419aefb063097108ec94ab",
-      /*expected_packets=*/33,
-      /*expected_channels=*/test::AcmReceiveTestOldApi::kMonoOutput);
-}
-#endif
-
 TEST_F(AcmSenderBitExactnessOldApi, Pcm16_8000khz_10ms) {
   ASSERT_NO_FATAL_FAILURE(SetUpTest("L16", 8000, 1, 107, 80, 80));
   Run(/*audio_checksum_ref=*/"69118ed438ac76252d023e0463819471",
diff --git a/modules/audio_coding/audio_coding.gni b/modules/audio_coding/audio_coding.gni
index bf67d9c..3b14709 100644
--- a/modules/audio_coding/audio_coding.gni
+++ b/modules/audio_coding/audio_coding.gni
@@ -20,11 +20,6 @@
 } else {
   audio_codec_defines += [ "WEBRTC_OPUS_SUPPORT_120MS_PTIME=0" ]
 }
-if (current_cpu == "arm") {
-  audio_codec_defines += [ "WEBRTC_CODEC_ISACFX" ]
-} else {
-  audio_codec_defines += [ "WEBRTC_CODEC_ISAC" ]
-}
 
 audio_coding_defines = audio_codec_defines
 neteq_defines = audio_codec_defines
diff --git a/modules/audio_coding/codecs/builtin_audio_decoder_factory_unittest.cc b/modules/audio_coding/codecs/builtin_audio_decoder_factory_unittest.cc
index 109da78..4a2b261 100644
--- a/modules/audio_coding/codecs/builtin_audio_decoder_factory_unittest.cc
+++ b/modules/audio_coding/codecs/builtin_audio_decoder_factory_unittest.cc
@@ -75,31 +75,6 @@
       adf->MakeAudioDecoder(SdpAudioFormat("ilbc", 16000, 1), absl::nullopt));
 }
 
-TEST(AudioDecoderFactoryTest, CreateIsac) {
-  rtc::scoped_refptr<AudioDecoderFactory> adf =
-      CreateBuiltinAudioDecoderFactory();
-  ASSERT_TRUE(adf);
-  // iSAC supports 16 kHz, 1 channel. The float implementation additionally
-  // supports 32 kHz, 1 channel.
-  EXPECT_FALSE(
-      adf->MakeAudioDecoder(SdpAudioFormat("isac", 16000, 0), absl::nullopt));
-  EXPECT_TRUE(
-      adf->MakeAudioDecoder(SdpAudioFormat("isac", 16000, 1), absl::nullopt));
-  EXPECT_FALSE(
-      adf->MakeAudioDecoder(SdpAudioFormat("isac", 16000, 2), absl::nullopt));
-  EXPECT_FALSE(
-      adf->MakeAudioDecoder(SdpAudioFormat("isac", 8000, 1), absl::nullopt));
-  EXPECT_FALSE(
-      adf->MakeAudioDecoder(SdpAudioFormat("isac", 48000, 1), absl::nullopt));
-#ifdef WEBRTC_ARCH_ARM
-  EXPECT_FALSE(
-      adf->MakeAudioDecoder(SdpAudioFormat("isac", 32000, 1), absl::nullopt));
-#else
-  EXPECT_TRUE(
-      adf->MakeAudioDecoder(SdpAudioFormat("isac", 32000, 1), absl::nullopt));
-#endif
-}
-
 TEST(AudioDecoderFactoryTest, CreateL16) {
   rtc::scoped_refptr<AudioDecoderFactory> adf =
       CreateBuiltinAudioDecoderFactory();
@@ -125,9 +100,6 @@
 #ifdef WEBRTC_CODEC_OPUS
     "opus",
 #endif
-#if defined(WEBRTC_CODEC_ISAC) || defined(WEBRTC_CODEC_ISACFX)
-    "isac",
-#endif
 #ifdef WEBRTC_CODEC_ILBC
     "ilbc",
 #endif
diff --git a/modules/audio_coding/codecs/isac/audio_decoder_isac_t.h b/modules/audio_coding/codecs/isac/audio_decoder_isac_t.h
deleted file mode 100644
index aae708f..0000000
--- a/modules/audio_coding/codecs/isac/audio_decoder_isac_t.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- *  Copyright (c) 2015 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef MODULES_AUDIO_CODING_CODECS_ISAC_AUDIO_DECODER_ISAC_T_H_
-#define MODULES_AUDIO_CODING_CODECS_ISAC_AUDIO_DECODER_ISAC_T_H_
-
-#include <vector>
-
-#include "absl/types/optional.h"
-#include "api/audio_codecs/audio_decoder.h"
-#include "api/scoped_refptr.h"
-
-namespace webrtc {
-
-template <typename T>
-class AudioDecoderIsacT final : public AudioDecoder {
- public:
-  struct Config {
-    bool IsOk() const;
-    int sample_rate_hz = 16000;
-  };
-  explicit AudioDecoderIsacT(const Config& config);
-  virtual ~AudioDecoderIsacT() override;
-
-  AudioDecoderIsacT(const AudioDecoderIsacT&) = delete;
-  AudioDecoderIsacT& operator=(const AudioDecoderIsacT&) = delete;
-
-  bool HasDecodePlc() const override;
-  size_t DecodePlc(size_t num_frames, int16_t* decoded) override;
-  void Reset() override;
-  int ErrorCode() override;
-  int SampleRateHz() const override;
-  size_t Channels() const override;
-  int DecodeInternal(const uint8_t* encoded,
-                     size_t encoded_len,
-                     int sample_rate_hz,
-                     int16_t* decoded,
-                     SpeechType* speech_type) override;
-
- private:
-  typename T::instance_type* isac_state_;
-  int sample_rate_hz_;
-};
-
-}  // namespace webrtc
-
-#endif  // MODULES_AUDIO_CODING_CODECS_ISAC_AUDIO_DECODER_ISAC_T_H_
diff --git a/modules/audio_coding/codecs/isac/audio_decoder_isac_t_impl.h b/modules/audio_coding/codecs/isac/audio_decoder_isac_t_impl.h
deleted file mode 100644
index 9aa4988..0000000
--- a/modules/audio_coding/codecs/isac/audio_decoder_isac_t_impl.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- *  Copyright (c) 2015 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef MODULES_AUDIO_CODING_CODECS_ISAC_AUDIO_DECODER_ISAC_T_IMPL_H_
-#define MODULES_AUDIO_CODING_CODECS_ISAC_AUDIO_DECODER_ISAC_T_IMPL_H_
-
-#include "modules/audio_coding/codecs/isac/audio_decoder_isac_t.h"
-#include "rtc_base/checks.h"
-
-namespace webrtc {
-
-template <typename T>
-bool AudioDecoderIsacT<T>::Config::IsOk() const {
-  return (sample_rate_hz == 16000 || sample_rate_hz == 32000);
-}
-
-template <typename T>
-AudioDecoderIsacT<T>::AudioDecoderIsacT(const Config& config)
-    : sample_rate_hz_(config.sample_rate_hz) {
-  RTC_CHECK(config.IsOk()) << "Unsupported sample rate "
-                           << config.sample_rate_hz;
-  RTC_CHECK_EQ(0, T::Create(&isac_state_));
-  T::DecoderInit(isac_state_);
-  RTC_CHECK_EQ(0, T::SetDecSampRate(isac_state_, sample_rate_hz_));
-}
-
-template <typename T>
-AudioDecoderIsacT<T>::~AudioDecoderIsacT() {
-  RTC_CHECK_EQ(0, T::Free(isac_state_));
-}
-
-template <typename T>
-int AudioDecoderIsacT<T>::DecodeInternal(const uint8_t* encoded,
-                                         size_t encoded_len,
-                                         int sample_rate_hz,
-                                         int16_t* decoded,
-                                         SpeechType* speech_type) {
-  RTC_CHECK_EQ(sample_rate_hz_, sample_rate_hz);
-  int16_t temp_type = 1;  // Default is speech.
-  int ret =
-      T::DecodeInternal(isac_state_, encoded, encoded_len, decoded, &temp_type);
-  *speech_type = ConvertSpeechType(temp_type);
-  return ret;
-}
-
-template <typename T>
-bool AudioDecoderIsacT<T>::HasDecodePlc() const {
-  return false;
-}
-
-template <typename T>
-size_t AudioDecoderIsacT<T>::DecodePlc(size_t num_frames, int16_t* decoded) {
-  return T::DecodePlc(isac_state_, decoded, num_frames);
-}
-
-template <typename T>
-void AudioDecoderIsacT<T>::Reset() {
-  T::DecoderInit(isac_state_);
-}
-
-template <typename T>
-int AudioDecoderIsacT<T>::ErrorCode() {
-  return T::GetErrorCode(isac_state_);
-}
-
-template <typename T>
-int AudioDecoderIsacT<T>::SampleRateHz() const {
-  return sample_rate_hz_;
-}
-
-template <typename T>
-size_t AudioDecoderIsacT<T>::Channels() const {
-  return 1;
-}
-
-}  // namespace webrtc
-
-#endif  // MODULES_AUDIO_CODING_CODECS_ISAC_AUDIO_DECODER_ISAC_T_IMPL_H_
diff --git a/modules/audio_coding/codecs/isac/audio_encoder_isac_t.h b/modules/audio_coding/codecs/isac/audio_encoder_isac_t.h
deleted file mode 100644
index c382ea0..0000000
--- a/modules/audio_coding/codecs/isac/audio_encoder_isac_t.h
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- *  Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef MODULES_AUDIO_CODING_CODECS_ISAC_AUDIO_ENCODER_ISAC_T_H_
-#define MODULES_AUDIO_CODING_CODECS_ISAC_AUDIO_ENCODER_ISAC_T_H_
-
-#include <utility>
-#include <vector>
-
-#include "absl/types/optional.h"
-#include "api/audio_codecs/audio_encoder.h"
-#include "api/scoped_refptr.h"
-#include "api/units/time_delta.h"
-#include "system_wrappers/include/field_trial.h"
-
-namespace webrtc {
-
-template <typename T>
-class AudioEncoderIsacT final : public AudioEncoder {
- public:
-  // Allowed combinations of sample rate, frame size, and bit rate are
-  //  - 16000 Hz, 30 ms, 10000-32000 bps
-  //  - 16000 Hz, 60 ms, 10000-32000 bps
-  //  - 32000 Hz, 30 ms, 10000-56000 bps (if T has super-wideband support)
-  struct Config {
-    bool IsOk() const;
-    int payload_type = 103;
-    int sample_rate_hz = 16000;
-    int frame_size_ms = 30;
-    int bit_rate = kDefaultBitRate;  // Limit on the short-term average bit
-                                     // rate, in bits/s.
-    int max_payload_size_bytes = -1;
-    int max_bit_rate = -1;
-  };
-
-  explicit AudioEncoderIsacT(const Config& config);
-  ~AudioEncoderIsacT() override;
-
-  AudioEncoderIsacT(const AudioEncoderIsacT&) = delete;
-  AudioEncoderIsacT& operator=(const AudioEncoderIsacT&) = delete;
-
-  int SampleRateHz() const override;
-  size_t NumChannels() const override;
-  size_t Num10MsFramesInNextPacket() const override;
-  size_t Max10MsFramesInAPacket() const override;
-  int GetTargetBitrate() const override;
-  void SetTargetBitrate(int target_bps) override;
-  void OnReceivedTargetAudioBitrate(int target_bps) override;
-  void OnReceivedUplinkBandwidth(
-      int target_audio_bitrate_bps,
-      absl::optional<int64_t> bwe_period_ms) override;
-  void OnReceivedUplinkAllocation(BitrateAllocationUpdate update) override;
-  void OnReceivedOverhead(size_t overhead_bytes_per_packet) override;
-  EncodedInfo EncodeImpl(uint32_t rtp_timestamp,
-                         rtc::ArrayView<const int16_t> audio,
-                         rtc::Buffer* encoded) override;
-  void Reset() override;
-  absl::optional<std::pair<TimeDelta, TimeDelta>> GetFrameLengthRange()
-      const override;
-
- private:
-  // This value is taken from STREAM_SIZE_MAX_60 for iSAC float (60 ms) and
-  // STREAM_MAXW16_60MS for iSAC fix (60 ms).
-  static const size_t kSufficientEncodeBufferSizeBytes = 400;
-
-  static constexpr int kDefaultBitRate = 32000;
-  static constexpr int kMinBitrateBps = 10000;
-  static constexpr int MaxBitrateBps(int sample_rate_hz) {
-    return sample_rate_hz == 32000 ? 56000 : 32000;
-  }
-
-  void SetTargetBitrate(int target_bps, bool subtract_per_packet_overhead);
-
-  // Recreate the iSAC encoder instance with the given settings, and save them.
-  void RecreateEncoderInstance(const Config& config);
-
-  Config config_;
-  typename T::instance_type* isac_state_ = nullptr;
-
-  // Have we accepted input but not yet emitted it in a packet?
-  bool packet_in_progress_ = false;
-
-  // Timestamp of the first input of the currently in-progress packet.
-  uint32_t packet_timestamp_;
-
-  // Timestamp of the previously encoded packet.
-  uint32_t last_encoded_timestamp_;
-
-  // Cache the value of the "WebRTC-SendSideBwe-WithOverhead" field trial.
-  const bool send_side_bwe_with_overhead_ =
-      !field_trial::IsDisabled("WebRTC-SendSideBwe-WithOverhead");
-
-  // When we send a packet, expect this many bytes of headers to be added to it.
-  // Start out with a reasonable default that we can use until we receive a real
-  // value.
-  DataSize overhead_per_packet_ = DataSize::Bytes(28);
-};
-
-}  // namespace webrtc
-
-#endif  // MODULES_AUDIO_CODING_CODECS_ISAC_AUDIO_ENCODER_ISAC_T_H_
diff --git a/modules/audio_coding/codecs/isac/audio_encoder_isac_t_impl.h b/modules/audio_coding/codecs/isac/audio_encoder_isac_t_impl.h
deleted file mode 100644
index 1bd27cf..0000000
--- a/modules/audio_coding/codecs/isac/audio_encoder_isac_t_impl.h
+++ /dev/null
@@ -1,225 +0,0 @@
-/*
- *  Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef MODULES_AUDIO_CODING_CODECS_ISAC_AUDIO_ENCODER_ISAC_T_IMPL_H_
-#define MODULES_AUDIO_CODING_CODECS_ISAC_AUDIO_ENCODER_ISAC_T_IMPL_H_
-
-#include "modules/audio_coding/codecs/isac/audio_encoder_isac_t.h"
-#include "rtc_base/checks.h"
-#include "rtc_base/numerics/safe_minmax.h"
-
-namespace webrtc {
-
-template <typename T>
-bool AudioEncoderIsacT<T>::Config::IsOk() const {
-  if (max_bit_rate < 32000 && max_bit_rate != -1)
-    return false;
-  if (max_payload_size_bytes < 120 && max_payload_size_bytes != -1)
-    return false;
-
-  switch (sample_rate_hz) {
-    case 16000:
-      if (max_bit_rate > 53400)
-        return false;
-      if (max_payload_size_bytes > 400)
-        return false;
-      return (frame_size_ms == 30 || frame_size_ms == 60) &&
-             (bit_rate == 0 || (bit_rate >= 10000 && bit_rate <= 32000));
-    case 32000:
-      if (max_bit_rate > 160000)
-        return false;
-      if (max_payload_size_bytes > 600)
-        return false;
-      return T::has_swb &&
-             (frame_size_ms == 30 &&
-              (bit_rate == 0 || (bit_rate >= 10000 && bit_rate <= 56000)));
-    default:
-      return false;
-  }
-}
-
-template <typename T>
-AudioEncoderIsacT<T>::AudioEncoderIsacT(const Config& config) {
-  RecreateEncoderInstance(config);
-}
-
-template <typename T>
-AudioEncoderIsacT<T>::~AudioEncoderIsacT() {
-  RTC_CHECK_EQ(0, T::Free(isac_state_));
-}
-
-template <typename T>
-int AudioEncoderIsacT<T>::SampleRateHz() const {
-  return T::EncSampRate(isac_state_);
-}
-
-template <typename T>
-size_t AudioEncoderIsacT<T>::NumChannels() const {
-  return 1;
-}
-
-template <typename T>
-size_t AudioEncoderIsacT<T>::Num10MsFramesInNextPacket() const {
-  const int samples_in_next_packet = T::GetNewFrameLen(isac_state_);
-  return static_cast<size_t>(rtc::CheckedDivExact(
-      samples_in_next_packet, rtc::CheckedDivExact(SampleRateHz(), 100)));
-}
-
-template <typename T>
-size_t AudioEncoderIsacT<T>::Max10MsFramesInAPacket() const {
-  return 6;  // iSAC puts at most 60 ms in a packet.
-}
-
-template <typename T>
-int AudioEncoderIsacT<T>::GetTargetBitrate() const {
-  return config_.bit_rate == 0 ? kDefaultBitRate : config_.bit_rate;
-}
-
-template <typename T>
-void AudioEncoderIsacT<T>::SetTargetBitrate(int target_bps) {
-  // Set target bitrate directly without subtracting per-packet overhead,
-  // because that's what AudioEncoderOpus does.
-  SetTargetBitrate(target_bps,
-                   /*subtract_per_packet_overhead=*/false);
-}
-
-template <typename T>
-void AudioEncoderIsacT<T>::OnReceivedTargetAudioBitrate(int target_bps) {
-  // Set target bitrate directly without subtracting per-packet overhead,
-  // because that's what AudioEncoderOpus does.
-  SetTargetBitrate(target_bps,
-                   /*subtract_per_packet_overhead=*/false);
-}
-
-template <typename T>
-void AudioEncoderIsacT<T>::OnReceivedUplinkBandwidth(
-    int target_audio_bitrate_bps,
-    absl::optional<int64_t> /*bwe_period_ms*/) {
-  // Set target bitrate, subtracting the per-packet overhead if
-  // WebRTC-SendSideBwe-WithOverhead is enabled, because that's what
-  // AudioEncoderOpus does.
-  SetTargetBitrate(
-      target_audio_bitrate_bps,
-      /*subtract_per_packet_overhead=*/send_side_bwe_with_overhead_);
-}
-
-template <typename T>
-void AudioEncoderIsacT<T>::OnReceivedUplinkAllocation(
-    BitrateAllocationUpdate update) {
-  // Set target bitrate, subtracting the per-packet overhead if
-  // WebRTC-SendSideBwe-WithOverhead is enabled, because that's what
-  // AudioEncoderOpus does.
-  SetTargetBitrate(
-      update.target_bitrate.bps<int>(),
-      /*subtract_per_packet_overhead=*/send_side_bwe_with_overhead_);
-}
-
-template <typename T>
-void AudioEncoderIsacT<T>::OnReceivedOverhead(
-    size_t overhead_bytes_per_packet) {
-  overhead_per_packet_ = DataSize::Bytes(overhead_bytes_per_packet);
-}
-
-template <typename T>
-AudioEncoder::EncodedInfo AudioEncoderIsacT<T>::EncodeImpl(
-    uint32_t rtp_timestamp,
-    rtc::ArrayView<const int16_t> audio,
-    rtc::Buffer* encoded) {
-  if (!packet_in_progress_) {
-    // Starting a new packet; remember the timestamp for later.
-    packet_in_progress_ = true;
-    packet_timestamp_ = rtp_timestamp;
-  }
-  size_t encoded_bytes = encoded->AppendData(
-      kSufficientEncodeBufferSizeBytes, [&](rtc::ArrayView<uint8_t> encoded) {
-        int r = T::Encode(isac_state_, audio.data(), encoded.data());
-
-        if (T::GetErrorCode(isac_state_) == 6450) {
-          // Isac is not able to effectively compress all types of signals. This
-          // is a limitation of the codec that cannot be easily fixed.
-          r = 0;
-        }
-        RTC_CHECK_GE(r, 0) << "Encode failed (error code "
-                           << T::GetErrorCode(isac_state_) << ")";
-
-        return static_cast<size_t>(r);
-      });
-
-  if (encoded_bytes == 0)
-    return EncodedInfo();
-
-  // Got enough input to produce a packet. Return the saved timestamp from
-  // the first chunk of input that went into the packet.
-  packet_in_progress_ = false;
-  EncodedInfo info;
-  info.encoded_bytes = encoded_bytes;
-  info.encoded_timestamp = packet_timestamp_;
-  info.payload_type = config_.payload_type;
-  info.encoder_type = CodecType::kIsac;
-  return info;
-}
-
-template <typename T>
-void AudioEncoderIsacT<T>::Reset() {
-  RecreateEncoderInstance(config_);
-}
-
-template <typename T>
-absl::optional<std::pair<TimeDelta, TimeDelta>>
-AudioEncoderIsacT<T>::GetFrameLengthRange() const {
-  return {{TimeDelta::Millis(config_.frame_size_ms),
-           TimeDelta::Millis(config_.frame_size_ms)}};
-}
-
-template <typename T>
-void AudioEncoderIsacT<T>::SetTargetBitrate(int target_bps,
-                                            bool subtract_per_packet_overhead) {
-  if (subtract_per_packet_overhead) {
-    const DataRate overhead_rate =
-        overhead_per_packet_ / TimeDelta::Millis(config_.frame_size_ms);
-    target_bps -= overhead_rate.bps();
-  }
-  target_bps = rtc::SafeClamp(target_bps, kMinBitrateBps,
-                              MaxBitrateBps(config_.sample_rate_hz));
-  int result = T::Control(isac_state_, target_bps, config_.frame_size_ms);
-  RTC_DCHECK_EQ(result, 0);
-  config_.bit_rate = target_bps;
-}
-
-template <typename T>
-void AudioEncoderIsacT<T>::RecreateEncoderInstance(const Config& config) {
-  RTC_CHECK(config.IsOk());
-  packet_in_progress_ = false;
-  if (isac_state_)
-    RTC_CHECK_EQ(0, T::Free(isac_state_));
-  RTC_CHECK_EQ(0, T::Create(&isac_state_));
-  RTC_CHECK_EQ(0, T::EncoderInit(isac_state_, /*coding_mode=*/1));
-  RTC_CHECK_EQ(0, T::SetEncSampRate(isac_state_, config.sample_rate_hz));
-  const int bit_rate = config.bit_rate == 0 ? kDefaultBitRate : config.bit_rate;
-  RTC_CHECK_EQ(0, T::Control(isac_state_, bit_rate, config.frame_size_ms));
-
-  if (config.max_payload_size_bytes != -1)
-    RTC_CHECK_EQ(
-        0, T::SetMaxPayloadSize(isac_state_, config.max_payload_size_bytes));
-  if (config.max_bit_rate != -1)
-    RTC_CHECK_EQ(0, T::SetMaxRate(isac_state_, config.max_bit_rate));
-
-  // Set the decoder sample rate even though we just use the encoder. This
-  // doesn't appear to be necessary to produce a valid encoding, but without it
-  // we get an encoding that isn't bit-for-bit identical with what a combined
-  // encoder+decoder object produces.
-  RTC_CHECK_EQ(0, T::SetDecSampRate(isac_state_, config.sample_rate_hz));
-
-  config_ = config;
-}
-
-}  // namespace webrtc
-
-#endif  // MODULES_AUDIO_CODING_CODECS_ISAC_AUDIO_ENCODER_ISAC_T_IMPL_H_
diff --git a/modules/audio_coding/codecs/isac/empty.cc b/modules/audio_coding/codecs/isac/empty.cc
deleted file mode 100644
index e69de29..0000000
--- a/modules/audio_coding/codecs/isac/empty.cc
+++ /dev/null
diff --git a/modules/audio_coding/codecs/isac/fix/include/audio_decoder_isacfix.h b/modules/audio_coding/codecs/isac/fix/include/audio_decoder_isacfix.h
deleted file mode 100644
index 0b4eadd..0000000
--- a/modules/audio_coding/codecs/isac/fix/include/audio_decoder_isacfix.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- *  Copyright (c) 2015 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef MODULES_AUDIO_CODING_CODECS_ISAC_FIX_INCLUDE_AUDIO_DECODER_ISACFIX_H_
-#define MODULES_AUDIO_CODING_CODECS_ISAC_FIX_INCLUDE_AUDIO_DECODER_ISACFIX_H_
-
-#include "modules/audio_coding/codecs/isac/audio_decoder_isac_t.h"
-#include "modules/audio_coding/codecs/isac/fix/source/isac_fix_type.h"
-
-namespace webrtc {
-
-using AudioDecoderIsacFixImpl = AudioDecoderIsacT<IsacFix>;
-
-}  // namespace webrtc
-#endif  // MODULES_AUDIO_CODING_CODECS_ISAC_FIX_INCLUDE_AUDIO_DECODER_ISACFIX_H_
diff --git a/modules/audio_coding/codecs/isac/fix/include/audio_encoder_isacfix.h b/modules/audio_coding/codecs/isac/fix/include/audio_encoder_isacfix.h
deleted file mode 100644
index f0cc038..0000000
--- a/modules/audio_coding/codecs/isac/fix/include/audio_encoder_isacfix.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- *  Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef MODULES_AUDIO_CODING_CODECS_ISAC_FIX_INCLUDE_AUDIO_ENCODER_ISACFIX_H_
-#define MODULES_AUDIO_CODING_CODECS_ISAC_FIX_INCLUDE_AUDIO_ENCODER_ISACFIX_H_
-
-#include "modules/audio_coding/codecs/isac/audio_encoder_isac_t.h"
-#include "modules/audio_coding/codecs/isac/fix/source/isac_fix_type.h"
-
-namespace webrtc {
-
-using AudioEncoderIsacFixImpl = AudioEncoderIsacT<IsacFix>;
-
-}  // namespace webrtc
-#endif  // MODULES_AUDIO_CODING_CODECS_ISAC_FIX_INCLUDE_AUDIO_ENCODER_ISACFIX_H_
diff --git a/modules/audio_coding/codecs/isac/fix/include/isacfix.h b/modules/audio_coding/codecs/isac/fix/include/isacfix.h
deleted file mode 100644
index dcc7b09..0000000
--- a/modules/audio_coding/codecs/isac/fix/include/isacfix.h
+++ /dev/null
@@ -1,486 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef MODULES_AUDIO_CODING_CODECS_ISAC_FIX_INCLUDE_ISACFIX_H_
-#define MODULES_AUDIO_CODING_CODECS_ISAC_FIX_INCLUDE_ISACFIX_H_
-
-#include <stddef.h>
-
-#include "modules/audio_coding/codecs/isac/bandwidth_info.h"
-
-typedef struct {
-  void* dummy;
-} ISACFIX_MainStruct;
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-/****************************************************************************
- * WebRtcIsacfix_Create(...)
- *
- * This function creates an ISAC instance, which will contain the state
- * information for one coding/decoding channel.
- *
- * Input:
- *      - *ISAC_main_inst   : a pointer to the coder instance.
- *
- * Return value             : 0 - Ok
- *                           -1 - Error
- */
-
-int16_t WebRtcIsacfix_Create(ISACFIX_MainStruct** ISAC_main_inst);
-
-/****************************************************************************
- * WebRtcIsacfix_Free(...)
- *
- * This function frees the ISAC instance created at the beginning.
- *
- * Input:
- *      - ISAC_main_inst    : a ISAC instance.
- *
- * Return value             :  0 - Ok
- *                            -1 - Error
- */
-
-int16_t WebRtcIsacfix_Free(ISACFIX_MainStruct* ISAC_main_inst);
-
-/****************************************************************************
- * WebRtcIsacfix_EncoderInit(...)
- *
- * This function initializes an ISAC instance prior to the encoder calls.
- *
- * Input:
- *     - ISAC_main_inst     : ISAC instance.
- *     - CodingMode         : 0 - Bit rate and frame length are automatically
- *                                adjusted to available bandwidth on
- *                                transmission channel.
- *                            1 - User sets a frame length and a target bit
- *                                rate which is taken as the maximum short-term
- *                                average bit rate.
- *
- * Return value             :  0 - Ok
- *                            -1 - Error
- */
-
-int16_t WebRtcIsacfix_EncoderInit(ISACFIX_MainStruct* ISAC_main_inst,
-                                  int16_t CodingMode);
-
-/****************************************************************************
- * WebRtcIsacfix_Encode(...)
- *
- * This function encodes 10ms frame(s) and inserts it into a package.
- * Input speech length has to be 160 samples (10ms). The encoder buffers those
- * 10ms frames until it reaches the chosen Framesize (480 or 960 samples
- * corresponding to 30 or 60 ms frames), and then proceeds to the encoding.
- *
- * Input:
- *      - ISAC_main_inst    : ISAC instance.
- *      - speechIn          : input speech vector.
- *
- * Output:
- *      - encoded           : the encoded data vector
- *
- * Return value             : >0 - Length (in bytes) of coded data
- *                             0 - The buffer didn't reach the chosen framesize
- *                                 so it keeps buffering speech samples.
- *                            -1 - Error
- */
-
-int WebRtcIsacfix_Encode(ISACFIX_MainStruct* ISAC_main_inst,
-                         const int16_t* speechIn,
-                         uint8_t* encoded);
-
-/****************************************************************************
- * WebRtcIsacfix_DecoderInit(...)
- *
- * This function initializes an ISAC instance prior to the decoder calls.
- *
- * Input:
- *  - ISAC_main_inst : ISAC instance.
- */
-
-void WebRtcIsacfix_DecoderInit(ISACFIX_MainStruct* ISAC_main_inst);
-
-/****************************************************************************
- * WebRtcIsacfix_UpdateBwEstimate1(...)
- *
- * This function updates the estimate of the bandwidth.
- *
- * Input:
- *      - ISAC_main_inst    : ISAC instance.
- *      - encoded           : encoded ISAC frame(s).
- *      - packet_size       : size of the packet in bytes.
- *      - rtp_seq_number    : the RTP number of the packet.
- *      - arr_ts            : the arrival time of the packet (from NetEq)
- *                            in samples.
- *
- * Return value             : 0 - Ok
- *                           -1 - Error
- */
-
-int16_t WebRtcIsacfix_UpdateBwEstimate1(ISACFIX_MainStruct* ISAC_main_inst,
-                                        const uint8_t* encoded,
-                                        size_t packet_size,
-                                        uint16_t rtp_seq_number,
-                                        uint32_t arr_ts);
-
-/****************************************************************************
- * WebRtcIsacfix_UpdateBwEstimate(...)
- *
- * This function updates the estimate of the bandwidth.
- *
- * Input:
- *      - ISAC_main_inst    : ISAC instance.
- *      - encoded           : encoded ISAC frame(s).
- *      - packet_size       : size of the packet in bytes.
- *      - rtp_seq_number    : the RTP number of the packet.
- *      - send_ts           : the send time of the packet from RTP header,
- *                            in samples.
- *      - arr_ts            : the arrival time of the packet (from NetEq)
- *                            in samples.
- *
- * Return value             :  0 - Ok
- *                            -1 - Error
- */
-
-int16_t WebRtcIsacfix_UpdateBwEstimate(ISACFIX_MainStruct* ISAC_main_inst,
-                                       const uint8_t* encoded,
-                                       size_t packet_size,
-                                       uint16_t rtp_seq_number,
-                                       uint32_t send_ts,
-                                       uint32_t arr_ts);
-
-/****************************************************************************
- * WebRtcIsacfix_Decode(...)
- *
- * This function decodes an ISAC frame. Output speech length
- * will be a multiple of 480 samples: 480 or 960 samples,
- * depending on the framesize (30 or 60 ms).
- *
- * Input:
- *      - ISAC_main_inst    : ISAC instance.
- *      - encoded           : encoded ISAC frame(s)
- *      - len               : bytes in encoded vector
- *
- * Output:
- *      - decoded           : The decoded vector
- *
- * Return value             : >0 - number of samples in decoded vector
- *                            -1 - Error
- */
-
-int WebRtcIsacfix_Decode(ISACFIX_MainStruct* ISAC_main_inst,
-                         const uint8_t* encoded,
-                         size_t len,
-                         int16_t* decoded,
-                         int16_t* speechType);
-
-/****************************************************************************
- * WebRtcIsacfix_DecodePlc(...)
- *
- * This function conducts PLC for ISAC frame(s) in wide-band (16kHz sampling).
- * Output speech length  will be "480*noOfLostFrames" samples
- * that is equevalent of "30*noOfLostFrames" millisecond.
- *
- * Input:
- *      - ISAC_main_inst    : ISAC instance.
- *      - noOfLostFrames    : Number of PLC frames (480sample = 30ms)
- *                            to produce
- *                            NOTE! Maximum number is 2 (960 samples = 60ms)
- *
- * Output:
- *      - decoded           : The decoded vector
- *
- * Return value             : Number of samples in decoded PLC vector
- */
-
-size_t WebRtcIsacfix_DecodePlc(ISACFIX_MainStruct* ISAC_main_inst,
-                               int16_t* decoded,
-                               size_t noOfLostFrames);
-
-/****************************************************************************
- * WebRtcIsacfix_ReadFrameLen(...)
- *
- * This function returns the length of the frame represented in the packet.
- *
- * Input:
- *      - encoded           : Encoded bitstream
- *      - encoded_len_bytes : Length of the bitstream in bytes.
- *
- * Output:
- *      - frameLength       : Length of frame in packet (in samples)
- *
- */
-
-int16_t WebRtcIsacfix_ReadFrameLen(const uint8_t* encoded,
-                                   size_t encoded_len_bytes,
-                                   size_t* frameLength);
-
-/****************************************************************************
- * WebRtcIsacfix_Control(...)
- *
- * This function sets the limit on the short-term average bit rate and the
- * frame length. Should be used only in Instantaneous mode.
- *
- * Input:
- *      - ISAC_main_inst    : ISAC instance.
- *      - rate              : limit on the short-term average bit rate,
- *                            in bits/second (between 10000 and 32000)
- *      - framesize         : number of milliseconds per frame (30 or 60)
- *
- * Return value             : 0  - ok
- *                           -1 - Error
- */
-
-int16_t WebRtcIsacfix_Control(ISACFIX_MainStruct* ISAC_main_inst,
-                              int16_t rate,
-                              int framesize);
-
-void WebRtcIsacfix_SetInitialBweBottleneck(ISACFIX_MainStruct* ISAC_main_inst,
-                                           int bottleneck_bits_per_second);
-
-/****************************************************************************
- * WebRtcIsacfix_ControlBwe(...)
- *
- * This function sets the initial values of bottleneck and frame-size if
- * iSAC is used in channel-adaptive mode. Through this API, users can
- * enforce a frame-size for all values of bottleneck. Then iSAC will not
- * automatically change the frame-size.
- *
- *
- * Input:
- *      - ISAC_main_inst    : ISAC instance.
- *      - rateBPS           : initial value of bottleneck in bits/second
- *                            10000 <= rateBPS <= 32000 is accepted
- *      - frameSizeMs       : number of milliseconds per frame (30 or 60)
- *      - enforceFrameSize  : 1 to enforce the given frame-size through out
- *                            the adaptation process, 0 to let iSAC change
- *                            the frame-size if required.
- *
- * Return value             : 0  - ok
- *                           -1 - Error
- */
-
-int16_t WebRtcIsacfix_ControlBwe(ISACFIX_MainStruct* ISAC_main_inst,
-                                 int16_t rateBPS,
-                                 int frameSizeMs,
-                                 int16_t enforceFrameSize);
-
-/****************************************************************************
- * WebRtcIsacfix_version(...)
- *
- * This function returns the version number.
- *
- * Output:
- *      - version      : Pointer to character string
- *
- */
-
-void WebRtcIsacfix_version(char* version);
-
-/****************************************************************************
- * WebRtcIsacfix_GetErrorCode(...)
- *
- * This function can be used to check the error code of an iSAC instance. When
- * a function returns -1 a error code will be set for that instance. The
- * function below extract the code of the last error that occured in the
- * specified instance.
- *
- * Input:
- *  - ISAC_main_inst        : ISAC instance
- *
- * Return value             : Error code
- */
-
-int16_t WebRtcIsacfix_GetErrorCode(ISACFIX_MainStruct* ISAC_main_inst);
-
-/****************************************************************************
- * WebRtcIsacfix_GetUplinkBw(...)
- *
- * This function return iSAC send bitrate
- *
- * Input:
- *      - ISAC_main_inst    : iSAC instance
- *
- * Return value             : <0 Error code
- *                            else bitrate
- */
-
-int32_t WebRtcIsacfix_GetUplinkBw(ISACFIX_MainStruct* ISAC_main_inst);
-
-/****************************************************************************
- * WebRtcIsacfix_SetMaxPayloadSize(...)
- *
- * This function sets a limit for the maximum payload size of iSAC. The same
- * value is used both for 30 and 60 msec packets.
- * The absolute max will be valid until next time the function is called.
- * NOTE! This function may override the function WebRtcIsacfix_SetMaxRate()
- *
- * Input:
- *      - ISAC_main_inst    : iSAC instance
- *      - maxPayloadBytes   : maximum size of the payload in bytes
- *                            valid values are between 100 and 400 bytes
- *
- *
- * Return value             : 0 if sucessful
- *                           -1 if error happens
- */
-
-int16_t WebRtcIsacfix_SetMaxPayloadSize(ISACFIX_MainStruct* ISAC_main_inst,
-                                        int16_t maxPayloadBytes);
-
-/****************************************************************************
- * WebRtcIsacfix_SetMaxRate(...)
- *
- * This function sets the maximum rate which the codec may not exceed for a
- * singel packet. The maximum rate is set in bits per second.
- * The codec has an absolute maximum rate of 53400 bits per second (200 bytes
- * per 30 msec).
- * It is possible to set a maximum rate between 32000 and 53400 bits per second.
- *
- * The rate limit is valid until next time the function is called.
- *
- * NOTE! Packet size will never go above the value set if calling
- * WebRtcIsacfix_SetMaxPayloadSize() (default max packet size is 400 bytes).
- *
- * Input:
- *      - ISAC_main_inst    : iSAC instance
- *      - maxRateInBytes    : maximum rate in bits per second,
- *                            valid values are 32000 to 53400 bits
- *
- * Return value             : 0 if sucessful
- *                           -1 if error happens
- */
-
-int16_t WebRtcIsacfix_SetMaxRate(ISACFIX_MainStruct* ISAC_main_inst,
-                                 int32_t maxRate);
-
-/****************************************************************************
- * WebRtcIsacfix_CreateInternal(...)
- *
- * This function creates the memory that is used to store data in the encoder
- *
- * Input:
- *      - *ISAC_main_inst   : a pointer to the coder instance.
- *
- * Return value             : 0 - Ok
- *                           -1 - Error
- */
-
-int16_t WebRtcIsacfix_CreateInternal(ISACFIX_MainStruct* ISAC_main_inst);
-
-/****************************************************************************
- * WebRtcIsacfix_FreeInternal(...)
- *
- * This function frees the internal memory for storing encoder data.
- *
- * Input:
- *      - ISAC_main_inst        : an ISAC instance.
- *
- * Return value                 :  0 - Ok
- *                                -1 - Error
- */
-
-int16_t WebRtcIsacfix_FreeInternal(ISACFIX_MainStruct* ISAC_main_inst);
-
-/****************************************************************************
- * WebRtcIsacfix_GetNewBitStream(...)
- *
- * This function returns encoded data, with the received bwe-index in the
- * stream. It should always return a complete packet, i.e. only called once
- * even for 60 msec frames
- *
- * Input:
- *      - ISAC_main_inst    : ISAC instance.
- *      - bweIndex          : index of bandwidth estimate to put in new
- * bitstream - scale             : factor for rate change (0.4 ~=> half the
- * rate, 1 no change).
- *
- * Output:
- *      - encoded           : the encoded data vector
- *
- * Return value             : >0 - Length (in bytes) of coded data
- *                            -1 - Error
- */
-
-int16_t WebRtcIsacfix_GetNewBitStream(ISACFIX_MainStruct* ISAC_main_inst,
-                                      int16_t bweIndex,
-                                      float scale,
-                                      uint8_t* encoded);
-
-/****************************************************************************
- * WebRtcIsacfix_GetDownLinkBwIndex(...)
- *
- * This function returns index representing the Bandwidth estimate from
- * other side to this side.
- *
- * Input:
- *      - ISAC_main_inst    : iSAC struct
- *
- * Output:
- *      - rateIndex         : Bandwidth estimate to transmit to other side.
- *
- */
-
-int16_t WebRtcIsacfix_GetDownLinkBwIndex(ISACFIX_MainStruct* ISAC_main_inst,
-                                         int16_t* rateIndex);
-
-/****************************************************************************
- * WebRtcIsacfix_UpdateUplinkBw(...)
- *
- * This function takes an index representing the Bandwidth estimate from
- * this side to other side and updates BWE.
- *
- * Input:
- *      - ISAC_main_inst    : iSAC struct
- *      - rateIndex         : Bandwidth estimate from other side.
- *
- */
-
-int16_t WebRtcIsacfix_UpdateUplinkBw(ISACFIX_MainStruct* ISAC_main_inst,
-                                     int16_t rateIndex);
-
-/****************************************************************************
- * WebRtcIsacfix_ReadBwIndex(...)
- *
- * This function returns the index of the Bandwidth estimate from the bitstream.
- *
- * Input:
- *      - encoded           : Encoded bitstream
- *      - encoded_len_bytes : Length of the bitstream in bytes.
- *
- * Output:
- *      - rateIndex         : Bandwidth estimate in bitstream
- *
- */
-
-int16_t WebRtcIsacfix_ReadBwIndex(const uint8_t* encoded,
-                                  size_t encoded_len_bytes,
-                                  int16_t* rateIndex);
-
-/****************************************************************************
- * WebRtcIsacfix_GetNewFrameLen(...)
- *
- * This function return the next frame length (in samples) of iSAC.
- *
- * Input:
- *      -ISAC_main_inst     : iSAC instance
- *
- * Return value             : frame lenght in samples
- */
-
-int16_t WebRtcIsacfix_GetNewFrameLen(ISACFIX_MainStruct* ISAC_main_inst);
-
-#if defined(__cplusplus)
-}
-#endif
-
-#endif /* MODULES_AUDIO_CODING_CODECS_ISAC_FIX_INCLUDE_ISACFIX_H_ */
diff --git a/modules/audio_coding/codecs/isac/fix/source/arith_routines.c b/modules/audio_coding/codecs/isac/fix/source/arith_routines.c
deleted file mode 100644
index eaeef50..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/arith_routines.c
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * arith_routins.c
- *
- * This C file contains a function for finalizing the bitstream
- * after arithmetic coding.
- *
- */
-
-#include "modules/audio_coding/codecs/isac/fix/source/arith_routins.h"
-
-
-/****************************************************************************
- * WebRtcIsacfix_EncTerminate(...)
- *
- * Final call to the arithmetic coder for an encoder call. This function
- * terminates and return byte stream.
- *
- * Input:
- *      - streamData        : in-/output struct containing bitstream
- *
- * Return value             : number of bytes in the stream
- */
-int16_t WebRtcIsacfix_EncTerminate(Bitstr_enc *streamData)
-{
-  uint16_t *streamPtr;
-  uint16_t negCarry;
-
-  /* point to the right place in the stream buffer */
-  streamPtr = streamData->stream + streamData->stream_index;
-
-  /* find minimum length (determined by current interval width) */
-  if ( streamData->W_upper > 0x01FFFFFF )
-  {
-    streamData->streamval += 0x01000000;
-
-    /* if result is less than the added value we must take care of the carry */
-    if (streamData->streamval < 0x01000000)
-    {
-      /* propagate carry */
-      if (streamData->full == 0) {
-        /* Add value to current value */
-        negCarry = *streamPtr;
-        negCarry += 0x0100;
-        *streamPtr = negCarry;
-
-        /* if value is too big, propagate carry to next byte, and so on */
-        while (!(negCarry))
-        {
-          negCarry = *--streamPtr;
-          negCarry++;
-          *streamPtr = negCarry;
-        }
-      } else {
-        /* propagate carry by adding one to the previous byte in the
-         * stream if that byte is 0xFFFF we need to propagate the carry
-         * furhter back in the stream */
-        while ( !(++(*--streamPtr)) );
-      }
-
-      /* put pointer back to the old value */
-      streamPtr = streamData->stream + streamData->stream_index;
-    }
-    /* write remaining data to bitstream, if "full == 0" first byte has data */
-    if (streamData->full == 0) {
-      *streamPtr++ += (uint16_t)(streamData->streamval >> 24);
-      streamData->full = 1;
-    } else {
-      *streamPtr = (uint16_t)((streamData->streamval >> 24) << 8);
-      streamData->full = 0;
-    }
-  }
-  else
-  {
-    streamData->streamval += 0x00010000;
-
-    /* if result is less than the added value we must take care of the carry */
-    if (streamData->streamval < 0x00010000)
-    {
-      /* propagate carry */
-      if (streamData->full == 0) {
-        /* Add value to current value */
-        negCarry = *streamPtr;
-        negCarry += 0x0100;
-        *streamPtr = negCarry;
-
-        /* if value to big, propagate carry to next byte, and so on */
-        while (!(negCarry))
-        {
-          negCarry = *--streamPtr;
-          negCarry++;
-          *streamPtr = negCarry;
-        }
-      } else {
-        /* Add carry to previous byte */
-        while ( !(++(*--streamPtr)) );
-      }
-
-      /* put pointer back to the old value */
-      streamPtr = streamData->stream + streamData->stream_index;
-    }
-    /* write remaining data (2 bytes) to bitstream */
-    if (streamData->full) {
-      *streamPtr++ = (uint16_t)(streamData->streamval >> 16);
-    } else {
-      *streamPtr++ |= (uint16_t)(streamData->streamval >> 24);
-      *streamPtr = (uint16_t)(streamData->streamval >> 8) & 0xFF00;
-    }
-  }
-
-  /* calculate stream length in bytes */
-  return (((streamPtr - streamData->stream)<<1) + !(streamData->full));
-}
diff --git a/modules/audio_coding/codecs/isac/fix/source/arith_routines_hist.c b/modules/audio_coding/codecs/isac/fix/source/arith_routines_hist.c
deleted file mode 100644
index cad3056..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/arith_routines_hist.c
+++ /dev/null
@@ -1,401 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * arith_routinshist.c
- *
- * This C file contains arithmetic encoding and decoding.
- *
- */
-
-#include "modules/audio_coding/codecs/isac/fix/source/arith_routins.h"
-
-
-/****************************************************************************
- * WebRtcIsacfix_EncHistMulti(...)
- *
- * Encode the histogram interval
- *
- * Input:
- *      - streamData        : in-/output struct containing bitstream
- *      - data              : data vector
- *      - cdf               : array of cdf arrays
- *      - lenData           : data vector length
- *
- * Return value             : 0 if ok
- *                            <0 if error detected
- */
-int WebRtcIsacfix_EncHistMulti(Bitstr_enc *streamData,
-                               const int16_t *data,
-                               const uint16_t *const *cdf,
-                               const int16_t lenData)
-{
-  uint32_t W_lower;
-  uint32_t W_upper;
-  uint32_t W_upper_LSB;
-  uint32_t W_upper_MSB;
-  uint16_t *streamPtr;
-  uint16_t negCarry;
-  uint16_t *maxStreamPtr;
-  uint16_t *streamPtrCarry;
-  uint32_t cdfLo;
-  uint32_t cdfHi;
-  int k;
-
-
-  /* point to beginning of stream buffer
-   * and set maximum streamPtr value */
-  streamPtr = streamData->stream + streamData->stream_index;
-  maxStreamPtr = streamData->stream + STREAM_MAXW16_60MS - 1;
-
-  W_upper = streamData->W_upper;
-
-  for (k = lenData; k > 0; k--)
-  {
-    /* fetch cdf_lower and cdf_upper from cdf tables */
-    cdfLo = (uint32_t) *(*cdf + (uint32_t)*data);
-    cdfHi = (uint32_t) *(*cdf++ + (uint32_t)*data++ + 1);
-
-    /* update interval */
-    W_upper_LSB = W_upper & 0x0000FFFF;
-    W_upper_MSB = W_upper >> 16;
-    W_lower = WEBRTC_SPL_UMUL(W_upper_MSB, cdfLo);
-    W_lower += ((W_upper_LSB * cdfLo) >> 16);
-    W_upper = WEBRTC_SPL_UMUL(W_upper_MSB, cdfHi);
-    W_upper += ((W_upper_LSB * cdfHi) >> 16);
-
-    /* shift interval such that it begins at zero */
-    W_upper -= ++W_lower;
-
-    /* add integer to bitstream */
-    streamData->streamval += W_lower;
-
-    /* handle carry */
-    if (streamData->streamval < W_lower)
-    {
-      /* propagate carry */
-      streamPtrCarry = streamPtr;
-      if (streamData->full == 0) {
-        negCarry = *streamPtrCarry;
-        negCarry += 0x0100;
-        *streamPtrCarry = negCarry;
-        while (!(negCarry))
-        {
-          negCarry = *--streamPtrCarry;
-          negCarry++;
-          *streamPtrCarry = negCarry;
-        }
-      } else {
-        while ( !(++(*--streamPtrCarry)) );
-      }
-    }
-
-    /* renormalize interval, store most significant byte of streamval and update streamval
-     * W_upper < 2^24 */
-    while ( !(W_upper & 0xFF000000) )
-    {
-      W_upper <<= 8;
-      if (streamData->full == 0) {
-        *streamPtr++ += (uint16_t)(streamData->streamval >> 24);
-        streamData->full = 1;
-      } else {
-        *streamPtr = (uint16_t)((streamData->streamval >> 24) << 8);
-        streamData->full = 0;
-      }
-
-      if( streamPtr > maxStreamPtr ) {
-        return -ISAC_DISALLOWED_BITSTREAM_LENGTH;
-      }
-      streamData->streamval <<= 8;
-    }
-  }
-
-  /* calculate new stream_index */
-  streamData->stream_index = streamPtr - streamData->stream;
-  streamData->W_upper = W_upper;
-
-  return 0;
-}
-
-
-/****************************************************************************
- * WebRtcIsacfix_DecHistBisectMulti(...)
- *
- * Function to decode more symbols from the arithmetic bytestream, using
- * method of bisection cdf tables should be of size 2^k-1 (which corresponds
- * to an alphabet size of 2^k-2)
- *
- * Input:
- *      - streamData        : in-/output struct containing bitstream
- *      - cdf               : array of cdf arrays
- *      - cdfSize           : array of cdf table sizes+1 (power of two: 2^k)
- *      - lenData           : data vector length
- *
- * Output:
- *      - data              : data vector
- *
- * Return value             : number of bytes in the stream
- *                            <0 if error detected
- */
-int16_t WebRtcIsacfix_DecHistBisectMulti(int16_t *data,
-                                         Bitstr_dec *streamData,
-                                         const uint16_t *const *cdf,
-                                         const uint16_t *cdfSize,
-                                         const int16_t lenData)
-{
-  uint32_t    W_lower = 0;
-  uint32_t    W_upper;
-  uint32_t    W_tmp;
-  uint32_t    W_upper_LSB;
-  uint32_t    W_upper_MSB;
-  uint32_t    streamval;
-  const uint16_t *streamPtr;
-  const uint16_t *cdfPtr;
-  int16_t     sizeTmp;
-  int             k;
-
-
-  streamPtr = streamData->stream + streamData->stream_index;
-  W_upper = streamData->W_upper;
-
-  /* Error check: should not be possible in normal operation */
-  if (W_upper == 0) {
-    return -2;
-  }
-
-  /* first time decoder is called for this stream */
-  if (streamData->stream_index == 0)
-  {
-    /* read first word from bytestream */
-    streamval = (uint32_t)*streamPtr++ << 16;
-    streamval |= *streamPtr++;
-  } else {
-    streamval = streamData->streamval;
-  }
-
-  for (k = lenData; k > 0; k--)
-  {
-    /* find the integer *data for which streamval lies in [W_lower+1, W_upper] */
-    W_upper_LSB = W_upper & 0x0000FFFF;
-    W_upper_MSB = W_upper >> 16;
-
-    /* start halfway the cdf range */
-    sizeTmp = *cdfSize++ / 2;
-    cdfPtr = *cdf + (sizeTmp - 1);
-
-    /* method of bisection */
-    for ( ;; )
-    {
-      W_tmp = WEBRTC_SPL_UMUL_32_16(W_upper_MSB, *cdfPtr);
-      W_tmp += (W_upper_LSB * (*cdfPtr)) >> 16;
-      sizeTmp /= 2;
-      if (sizeTmp == 0) {
-        break;
-      }
-
-      if (streamval > W_tmp)
-      {
-        W_lower = W_tmp;
-        cdfPtr += sizeTmp;
-      } else {
-        W_upper = W_tmp;
-        cdfPtr -= sizeTmp;
-      }
-    }
-    if (streamval > W_tmp)
-    {
-      W_lower = W_tmp;
-      *data++ = cdfPtr - *cdf++;
-    } else {
-      W_upper = W_tmp;
-      *data++ = cdfPtr - *cdf++ - 1;
-    }
-
-    /* shift interval to start at zero */
-    W_upper -= ++W_lower;
-
-    /* add integer to bitstream */
-    streamval -= W_lower;
-
-    /* renormalize interval and update streamval */
-    /* W_upper < 2^24 */
-    while ( !(W_upper & 0xFF000000) )
-    {
-      /* read next byte from stream */
-      if (streamData->full == 0) {
-        streamval = (streamval << 8) | (*streamPtr++ & 0x00FF);
-        streamData->full = 1;
-      } else {
-        streamval = (streamval << 8) | (*streamPtr >> 8);
-        streamData->full = 0;
-      }
-      W_upper <<= 8;
-    }
-
-
-    /* Error check: should not be possible in normal operation */
-    if (W_upper == 0) {
-      return -2;
-    }
-
-  }
-
-  streamData->stream_index = streamPtr - streamData->stream;
-  streamData->W_upper = W_upper;
-  streamData->streamval = streamval;
-
-  if ( W_upper > 0x01FFFFFF ) {
-    return (streamData->stream_index*2 - 3 + !streamData->full);
-  } else {
-    return (streamData->stream_index*2 - 2 + !streamData->full);
-  }
-}
-
-
-/****************************************************************************
- * WebRtcIsacfix_DecHistOneStepMulti(...)
- *
- * Function to decode more symbols from the arithmetic bytestream, taking
- * single step up or down at a time.
- * cdf tables can be of arbitrary size, but large tables may take a lot of
- * iterations.
- *
- * Input:
- *      - streamData        : in-/output struct containing bitstream
- *      - cdf               : array of cdf arrays
- *      - initIndex         : vector of initial cdf table search entries
- *      - lenData           : data vector length
- *
- * Output:
- *      - data              : data vector
- *
- * Return value             : number of bytes in original stream
- *                            <0 if error detected
- */
-int16_t WebRtcIsacfix_DecHistOneStepMulti(int16_t *data,
-                                          Bitstr_dec *streamData,
-                                          const uint16_t *const *cdf,
-                                          const uint16_t *initIndex,
-                                          const int16_t lenData)
-{
-  uint32_t    W_lower;
-  uint32_t    W_upper;
-  uint32_t    W_tmp;
-  uint32_t    W_upper_LSB;
-  uint32_t    W_upper_MSB;
-  uint32_t    streamval;
-  const uint16_t *streamPtr;
-  const uint16_t *cdfPtr;
-  int             k;
-
-
-  streamPtr = streamData->stream + streamData->stream_index;
-  W_upper = streamData->W_upper;
-  /* Error check: Should not be possible in normal operation */
-  if (W_upper == 0) {
-    return -2;
-  }
-
-  /* Check if it is the first time decoder is called for this stream */
-  if (streamData->stream_index == 0)
-  {
-    /* read first word from bytestream */
-    streamval = (uint32_t)(*streamPtr++) << 16;
-    streamval |= *streamPtr++;
-  } else {
-    streamval = streamData->streamval;
-  }
-
-  for (k = lenData; k > 0; k--)
-  {
-    /* find the integer *data for which streamval lies in [W_lower+1, W_upper] */
-    W_upper_LSB = W_upper & 0x0000FFFF;
-    W_upper_MSB = WEBRTC_SPL_RSHIFT_U32(W_upper, 16);
-
-    /* start at the specified table entry */
-    cdfPtr = *cdf + (*initIndex++);
-    W_tmp = WEBRTC_SPL_UMUL_32_16(W_upper_MSB, *cdfPtr);
-    W_tmp += (W_upper_LSB * (*cdfPtr)) >> 16;
-
-    if (streamval > W_tmp)
-    {
-      for ( ;; )
-      {
-        W_lower = W_tmp;
-
-        /* range check */
-        if (cdfPtr[0] == 65535) {
-          return -3;
-        }
-
-        W_tmp = WEBRTC_SPL_UMUL_32_16(W_upper_MSB, *++cdfPtr);
-        W_tmp += (W_upper_LSB * (*cdfPtr)) >> 16;
-
-        if (streamval <= W_tmp) {
-          break;
-        }
-      }
-      W_upper = W_tmp;
-      *data++ = cdfPtr - *cdf++ - 1;
-    } else {
-      for ( ;; )
-      {
-        W_upper = W_tmp;
-        --cdfPtr;
-
-        /* range check */
-        if (cdfPtr < *cdf) {
-          return -3;
-        }
-
-        W_tmp = WEBRTC_SPL_UMUL_32_16(W_upper_MSB, *cdfPtr);
-        W_tmp += (W_upper_LSB * (*cdfPtr)) >> 16;
-
-        if (streamval > W_tmp) {
-          break;
-        }
-      }
-      W_lower = W_tmp;
-      *data++ = cdfPtr - *cdf++;
-    }
-
-    /* shift interval to start at zero */
-    W_upper -= ++W_lower;
-
-    /* add integer to bitstream */
-    streamval -= W_lower;
-
-    /* renormalize interval and update streamval */
-    /* W_upper < 2^24 */
-    while ( !(W_upper & 0xFF000000) )
-    {
-      /* read next byte from stream */
-      if (streamData->full == 0) {
-        streamval = (streamval << 8) | (*streamPtr++ & 0x00FF);
-        streamData->full = 1;
-      } else {
-        streamval = (streamval << 8) | (*streamPtr >> 8);
-        streamData->full = 0;
-      }
-      W_upper <<= 8;
-    }
-  }
-
-  streamData->stream_index = streamPtr - streamData->stream;
-  streamData->W_upper = W_upper;
-  streamData->streamval = streamval;
-
-  /* find number of bytes in original stream (determined by current interval width) */
-  if ( W_upper > 0x01FFFFFF ) {
-    return (streamData->stream_index*2 - 3 + !streamData->full);
-  } else {
-    return (streamData->stream_index*2 - 2 + !streamData->full);
-  }
-}
diff --git a/modules/audio_coding/codecs/isac/fix/source/arith_routines_logist.c b/modules/audio_coding/codecs/isac/fix/source/arith_routines_logist.c
deleted file mode 100644
index 8e97960..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/arith_routines_logist.c
+++ /dev/null
@@ -1,413 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * arith_routinslogist.c
- *
- * This C file contains arithmetic encode and decode logistic
- *
- */
-
-#include "modules/audio_coding/codecs/isac/fix/source/arith_routins.h"
-
-/* Tables for piecewise linear cdf functions: y = k*x */
-
-/* x Points for function piecewise() in Q15 */
-static const int32_t kHistEdges[51] = {
-  -327680, -314573, -301466, -288359, -275252, -262144, -249037, -235930, -222823, -209716,
-  -196608, -183501, -170394, -157287, -144180, -131072, -117965, -104858,  -91751,  -78644,
-  -65536,  -52429,  -39322,  -26215,  -13108,       0,   13107,   26214,   39321,   52428,
-  65536,   78643,   91750,  104857,  117964,  131072,  144179,  157286,  170393,  183500,
-  196608,  209715,  222822,  235929,  249036,  262144,  275251,  288358,  301465,  314572,
-  327680
-};
-
-
-/* k Points for function piecewise() in Q0 */
-static const uint16_t kCdfSlope[51] = {
-  5,    5,     5,     5,     5,     5,     5,     5,    5,    5,
-  5,    5,    13,    23,    47,    87,   154,   315,  700, 1088,
-  2471, 6064, 14221, 21463, 36634, 36924, 19750, 13270, 5806, 2312,
-  1095,  660,   316,   145,    86,    41,    32,     5,    5,    5,
-  5,    5,     5,     5,     5,     5,     5,     5,    5,    2,
-  0
-};
-
-/* y Points for function piecewise() in Q0 */
-static const uint16_t kCdfLogistic[51] = {
-  0,     2,     4,     6,     8,    10,    12,    14,    16,    18,
-  20,    22,    24,    29,    38,    57,    92,   153,   279,   559,
-  994,  1983,  4408, 10097, 18682, 33336, 48105, 56005, 61313, 63636,
-  64560, 64998, 65262, 65389, 65447, 65481, 65497, 65510, 65512, 65514,
-  65516, 65518, 65520, 65522, 65524, 65526, 65528, 65530, 65532, 65534,
-  65535
-};
-
-
-/****************************************************************************
- * WebRtcIsacfix_Piecewise(...)
- *
- * Piecewise linear function
- *
- * Input:
- *      - xinQ15           : input value x in Q15
- *
- * Return value            : korresponding y-value in Q0
- */
-
-
-static __inline uint16_t WebRtcIsacfix_Piecewise(int32_t xinQ15) {
-  int32_t ind;
-  int32_t qtmp1;
-  uint16_t qtmp2;
-
-  /* Find index for x-value */
-  qtmp1 = WEBRTC_SPL_SAT(kHistEdges[50],xinQ15,kHistEdges[0]);
-  ind = WEBRTC_SPL_MUL(5, qtmp1 - kHistEdges[0]);
-  ind >>= 16;
-
-  /* Calculate corresponding y-value ans return*/
-  qtmp1 = qtmp1 - kHistEdges[ind];
-  qtmp2 = (uint16_t)WEBRTC_SPL_RSHIFT_U32(
-      WEBRTC_SPL_UMUL_32_16(qtmp1,kCdfSlope[ind]), 15);
-  return (kCdfLogistic[ind] + qtmp2);
-}
-
-/****************************************************************************
- * WebRtcIsacfix_EncLogisticMulti2(...)
- *
- * Arithmetic coding of spectrum.
- *
- * Input:
- *      - streamData        : in-/output struct containing bitstream
- *      - dataQ7            : data vector in Q7
- *      - envQ8             : side info vector defining the width of the pdf
- *                            in Q8
- *      - lenData           : data vector length
- *
- * Return value             :  0 if ok,
- *                            <0 otherwise.
- */
-int WebRtcIsacfix_EncLogisticMulti2(Bitstr_enc *streamData,
-                                   int16_t *dataQ7,
-                                   const uint16_t *envQ8,
-                                   const int16_t lenData)
-{
-  uint32_t W_lower;
-  uint32_t W_upper;
-  uint16_t W_upper_LSB;
-  uint16_t W_upper_MSB;
-  uint16_t *streamPtr;
-  uint16_t *maxStreamPtr;
-  uint16_t *streamPtrCarry;
-  uint16_t negcarry;
-  uint32_t cdfLo;
-  uint32_t cdfHi;
-  int k;
-
-  /* point to beginning of stream buffer
-   * and set maximum streamPtr value */
-  streamPtr = streamData->stream + streamData->stream_index;
-  maxStreamPtr = streamData->stream + STREAM_MAXW16_60MS - 1;
-  W_upper = streamData->W_upper;
-
-  for (k = 0; k < lenData; k++)
-  {
-    /* compute cdf_lower and cdf_upper by evaluating the
-     * WebRtcIsacfix_Piecewise linear cdf */
-    cdfLo = WebRtcIsacfix_Piecewise(WEBRTC_SPL_MUL_16_U16(*dataQ7 - 64, *envQ8));
-    cdfHi = WebRtcIsacfix_Piecewise(WEBRTC_SPL_MUL_16_U16(*dataQ7 + 64, *envQ8));
-
-    /* test and clip if probability gets too small */
-    while ((cdfLo + 1) >= cdfHi) {
-      /* clip */
-      if (*dataQ7 > 0) {
-        *dataQ7 -= 128;
-        cdfHi = cdfLo;
-        cdfLo = WebRtcIsacfix_Piecewise(
-            WEBRTC_SPL_MUL_16_U16(*dataQ7 - 64, *envQ8));
-      } else {
-        *dataQ7 += 128;
-        cdfLo = cdfHi;
-        cdfHi = WebRtcIsacfix_Piecewise(
-            WEBRTC_SPL_MUL_16_U16(*dataQ7 + 64, *envQ8));
-      }
-    }
-
-    dataQ7++;
-    /* increment only once per 4 iterations */
-    envQ8 += (k & 1) & (k >> 1);
-
-
-    /* update interval */
-    W_upper_LSB = (uint16_t)W_upper;
-    W_upper_MSB = (uint16_t)WEBRTC_SPL_RSHIFT_U32(W_upper, 16);
-    W_lower = WEBRTC_SPL_UMUL_32_16(cdfLo, W_upper_MSB);
-    W_lower += (cdfLo * W_upper_LSB) >> 16;
-    W_upper = WEBRTC_SPL_UMUL_32_16(cdfHi, W_upper_MSB);
-    W_upper += (cdfHi * W_upper_LSB) >> 16;
-
-    /* shift interval such that it begins at zero */
-    W_upper -= ++W_lower;
-
-    /* add integer to bitstream */
-    streamData->streamval += W_lower;
-
-    /* handle carry */
-    if (streamData->streamval < W_lower)
-    {
-      /* propagate carry */
-      streamPtrCarry = streamPtr;
-      if (streamData->full == 0) {
-        negcarry = *streamPtrCarry;
-        negcarry += 0x0100;
-        *streamPtrCarry = negcarry;
-        while (!(negcarry))
-        {
-          negcarry = *--streamPtrCarry;
-          negcarry++;
-          *streamPtrCarry = negcarry;
-        }
-      } else {
-        while (!(++(*--streamPtrCarry)));
-      }
-    }
-
-    /* renormalize interval, store most significant byte of streamval and update streamval
-     * W_upper < 2^24 */
-    while ( !(W_upper & 0xFF000000) )
-    {
-      W_upper <<= 8;
-      if (streamData->full == 0) {
-        *streamPtr++ += (uint16_t) WEBRTC_SPL_RSHIFT_U32(
-            streamData->streamval, 24);
-        streamData->full = 1;
-      } else {
-        *streamPtr = (uint16_t)((streamData->streamval >> 24) << 8);
-        streamData->full = 0;
-      }
-
-      if( streamPtr > maxStreamPtr )
-        return -ISAC_DISALLOWED_BITSTREAM_LENGTH;
-
-      streamData->streamval <<= 8;
-    }
-  }
-
-  /* calculate new stream_index */
-  streamData->stream_index = streamPtr - streamData->stream;
-  streamData->W_upper = W_upper;
-
-  return 0;
-}
-
-
-/****************************************************************************
- * WebRtcIsacfix_DecLogisticMulti2(...)
- *
- * Arithmetic decoding of spectrum.
- *
- * Input:
- *      - streamData        : in-/output struct containing bitstream
- *      - envQ8             : side info vector defining the width of the pdf
- *                            in Q8
- *      - lenData           : data vector length
- *
- * Input/Output:
- *      - dataQ7            : input: dither vector, output: data vector
- *
- * Return value             : number of bytes in the stream so far
- *                            -1 if error detected
- */
-int WebRtcIsacfix_DecLogisticMulti2(int16_t *dataQ7,
-                                    Bitstr_dec *streamData,
-                                    const int32_t *envQ8,
-                                    const int16_t lenData)
-{
-  uint32_t    W_lower;
-  uint32_t    W_upper;
-  uint32_t    W_tmp;
-  uint16_t    W_upper_LSB;
-  uint16_t    W_upper_MSB;
-  uint32_t    streamVal;
-  uint16_t    cdfTmp;
-  int32_t     res;
-  int32_t     inSqrt;
-  int32_t     newRes;
-  const uint16_t *streamPtr;
-  int16_t     candQ7;
-  int16_t     envCount;
-  uint16_t    tmpARSpecQ8 = 0;
-  int             k, i;
-  int offset = 0;
-
-  /* point to beginning of stream buffer */
-  streamPtr = streamData->stream + streamData->stream_index;
-  W_upper = streamData->W_upper;
-
-  /* Check if it is first time decoder is called for this stream */
-  if (streamData->stream_index == 0)
-  {
-    /* read first word from bytestream */
-    streamVal = (uint32_t)(*streamPtr++) << 16;
-    streamVal |= *streamPtr++;
-
-  } else {
-    streamVal = streamData->streamval;
-  }
-
-
-  res = 1 << (WebRtcSpl_GetSizeInBits(envQ8[0]) >> 1);
-  envCount = 0;
-
-  /* code assumes lenData%4 == 0 */
-  for (k = 0; k < lenData; k += 4)
-  {
-    int k4;
-
-    /* convert to magnitude spectrum, by doing square-roots (modified from SPLIB) */
-    inSqrt = envQ8[envCount];
-    i = 10;
-
-    /* For safty reasons */
-    if (inSqrt < 0)
-      inSqrt=-inSqrt;
-
-    newRes = (inSqrt / res + res) >> 1;
-    do
-    {
-      res = newRes;
-      newRes = (inSqrt / res + res) >> 1;
-    } while (newRes != res && i-- > 0);
-
-    tmpARSpecQ8 = (uint16_t)newRes;
-
-    for(k4 = 0; k4 < 4; k4++)
-    {
-      /* find the integer *data for which streamVal lies in [W_lower+1, W_upper] */
-      W_upper_LSB = (uint16_t) (W_upper & 0x0000FFFF);
-      W_upper_MSB = (uint16_t) WEBRTC_SPL_RSHIFT_U32(W_upper, 16);
-
-      /* find first candidate by inverting the logistic cdf
-       * Input dither value collected from io-stream */
-      candQ7 = - *dataQ7 + 64;
-      cdfTmp = WebRtcIsacfix_Piecewise(WEBRTC_SPL_MUL_16_U16(candQ7, tmpARSpecQ8));
-
-      W_tmp = (uint32_t)cdfTmp * W_upper_MSB;
-      W_tmp += ((uint32_t)cdfTmp * (uint32_t)W_upper_LSB) >> 16;
-
-      if (streamVal > W_tmp)
-      {
-        W_lower = W_tmp;
-        candQ7 += 128;
-        cdfTmp = WebRtcIsacfix_Piecewise(WEBRTC_SPL_MUL_16_U16(candQ7, tmpARSpecQ8));
-
-        W_tmp = (uint32_t)cdfTmp * W_upper_MSB;
-        W_tmp += ((uint32_t)cdfTmp * (uint32_t)W_upper_LSB) >> 16;
-
-        while (streamVal > W_tmp)
-        {
-          W_lower = W_tmp;
-          candQ7 += 128;
-          cdfTmp = WebRtcIsacfix_Piecewise(
-              WEBRTC_SPL_MUL_16_U16(candQ7, tmpARSpecQ8));
-
-          W_tmp = (uint32_t)cdfTmp * W_upper_MSB;
-          W_tmp += ((uint32_t)cdfTmp * (uint32_t)W_upper_LSB) >> 16;
-
-          /* error check */
-          if (W_lower == W_tmp) {
-            return -1;
-          }
-        }
-        W_upper = W_tmp;
-
-        /* Output value put in dataQ7: another sample decoded */
-        *dataQ7 = candQ7 - 64;
-      }
-      else
-      {
-        W_upper = W_tmp;
-        candQ7 -= 128;
-        cdfTmp = WebRtcIsacfix_Piecewise(WEBRTC_SPL_MUL_16_U16(candQ7, tmpARSpecQ8));
-
-        W_tmp = (uint32_t)cdfTmp * W_upper_MSB;
-        W_tmp += ((uint32_t)cdfTmp * (uint32_t)W_upper_LSB) >> 16;
-
-        while ( !(streamVal > W_tmp) )
-        {
-          W_upper = W_tmp;
-          candQ7 -= 128;
-          cdfTmp = WebRtcIsacfix_Piecewise(
-              WEBRTC_SPL_MUL_16_U16(candQ7, tmpARSpecQ8));
-
-          W_tmp = (uint32_t)cdfTmp * W_upper_MSB;
-          W_tmp += ((uint32_t)cdfTmp * (uint32_t)W_upper_LSB) >> 16;
-
-          /* error check */
-          if (W_upper == W_tmp){
-            return -1;
-          }
-        }
-        W_lower = W_tmp;
-
-        /* Output value put in dataQ7: another sample decoded */
-        *dataQ7 = candQ7 + 64;
-      }
-
-      dataQ7++;
-
-      /* shift interval to start at zero */
-      W_upper -= ++W_lower;
-
-      /* add integer to bitstream */
-      streamVal -= W_lower;
-
-      /* renormalize interval and update streamVal
-       * W_upper < 2^24 */
-      while ( !(W_upper & 0xFF000000) )
-      {
-        if (streamPtr < streamData->stream + streamData->stream_size) {
-          /* read next byte from stream */
-          if (streamData->full == 0) {
-            streamVal = (streamVal << 8) | (*streamPtr++ & 0x00FF);
-            streamData->full = 1;
-          } else {
-            streamVal = (streamVal << 8) | (*streamPtr >> 8);
-            streamData->full = 0;
-          }
-        } else {
-          /* Intending to read outside the stream. This can happen for the last
-           * two or three bytes. It is how the algorithm is implemented. Do
-           * not read from the bit stream and insert zeros instead. */
-          streamVal <<= 8;
-          if (streamData->full == 0) {
-            offset++;  // We would have incremented the pointer in this case.
-            streamData->full = 1;
-          } else {
-            streamData->full = 0;
-          }
-        }
-        W_upper <<= 8;
-      }
-    }
-    envCount++;
-  }
-
-  streamData->stream_index = streamPtr + offset - streamData->stream;
-  streamData->W_upper = W_upper;
-  streamData->streamval = streamVal;
-
-  /* find number of bytes in original stream (determined by current interval width) */
-  if ( W_upper > 0x01FFFFFF )
-    return (streamData->stream_index*2 - 3 + !streamData->full);
-  else
-    return (streamData->stream_index*2 - 2 + !streamData->full);
-}
diff --git a/modules/audio_coding/codecs/isac/fix/source/arith_routins.h b/modules/audio_coding/codecs/isac/fix/source/arith_routins.h
deleted file mode 100644
index d112bfe..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/arith_routins.h
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * arith_routins.h
- *
- * Functions for arithmetic coding.
- *
- */
-
-#ifndef MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_ARITH_ROUTINS_H_
-#define MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_ARITH_ROUTINS_H_
-
-#include "modules/audio_coding/codecs/isac/fix/source/structs.h"
-
-/****************************************************************************
- * WebRtcIsacfix_EncLogisticMulti2(...)
- *
- * Arithmetic coding of spectrum.
- *
- * Input:
- *      - streamData        : in-/output struct containing bitstream
- *      - dataQ7            : data vector in Q7
- *      - envQ8             : side info vector defining the width of the pdf
- *                            in Q8
- *      - lenData           : data vector length
- *
- * Return value             :  0 if ok,
- *                             <0 otherwise.
- */
-int WebRtcIsacfix_EncLogisticMulti2(Bitstr_enc* streamData,
-                                    int16_t* dataQ7,
-                                    const uint16_t* env,
-                                    int16_t lenData);
-
-/****************************************************************************
- * WebRtcIsacfix_EncTerminate(...)
- *
- * Final call to the arithmetic coder for an encoder call. This function
- * terminates and return byte stream.
- *
- * Input:
- *      - streamData        : in-/output struct containing bitstream
- *
- * Return value             : number of bytes in the stream
- */
-int16_t WebRtcIsacfix_EncTerminate(Bitstr_enc* streamData);
-
-/****************************************************************************
- * WebRtcIsacfix_DecLogisticMulti2(...)
- *
- * Arithmetic decoding of spectrum.
- *
- * Input:
- *      - streamData        : in-/output struct containing bitstream
- *      - envQ8             : side info vector defining the width of the pdf
- *                            in Q8
- *      - lenData           : data vector length
- *
- * Input/Output:
- *      - dataQ7            : input: dither vector, output: data vector, in Q7
- *
- * Return value             : number of bytes in the stream so far
- *                            <0 if error detected
- */
-int WebRtcIsacfix_DecLogisticMulti2(int16_t* data,
-                                    Bitstr_dec* streamData,
-                                    const int32_t* env,
-                                    int16_t lenData);
-
-/****************************************************************************
- * WebRtcIsacfix_EncHistMulti(...)
- *
- * Encode the histogram interval
- *
- * Input:
- *      - streamData        : in-/output struct containing bitstream
- *      - data              : data vector
- *      - cdf               : array of cdf arrays
- *      - lenData           : data vector length
- *
- * Return value             : 0 if ok
- *                            <0 if error detected
- */
-int WebRtcIsacfix_EncHistMulti(Bitstr_enc* streamData,
-                               const int16_t* data,
-                               const uint16_t* const* cdf,
-                               int16_t lenData);
-
-/****************************************************************************
- * WebRtcIsacfix_DecHistBisectMulti(...)
- *
- * Function to decode more symbols from the arithmetic bytestream, using
- * method of bisection.
- * C df tables should be of size 2^k-1 (which corresponds to an
- * alphabet size of 2^k-2)
- *
- * Input:
- *      - streamData        : in-/output struct containing bitstream
- *      - cdf               : array of cdf arrays
- *      - cdfSize           : array of cdf table sizes+1 (power of two: 2^k)
- *      - lenData           : data vector length
- *
- * Output:
- *      - data              : data vector
- *
- * Return value             : number of bytes in the stream
- *                            <0 if error detected
- */
-int16_t WebRtcIsacfix_DecHistBisectMulti(int16_t* data,
-                                         Bitstr_dec* streamData,
-                                         const uint16_t* const* cdf,
-                                         const uint16_t* cdfSize,
-                                         int16_t lenData);
-
-/****************************************************************************
- * WebRtcIsacfix_DecHistOneStepMulti(...)
- *
- * Function to decode more symbols from the arithmetic bytestream, taking
- * single step up or down at a time.
- * cdf tables can be of arbitrary size, but large tables may take a lot of
- * iterations.
- *
- * Input:
- *      - streamData        : in-/output struct containing bitstream
- *      - cdf               : array of cdf arrays
- *      - initIndex         : vector of initial cdf table search entries
- *      - lenData           : data vector length
- *
- * Output:
- *      - data              : data vector
- *
- * Return value             : number of bytes in original stream
- *                            <0 if error detected
- */
-int16_t WebRtcIsacfix_DecHistOneStepMulti(int16_t* data,
-                                          Bitstr_dec* streamData,
-                                          const uint16_t* const* cdf,
-                                          const uint16_t* initIndex,
-                                          int16_t lenData);
-
-#endif /* MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_ARITH_ROUTINS_H_ */
diff --git a/modules/audio_coding/codecs/isac/fix/source/audio_decoder_isacfix.cc b/modules/audio_coding/codecs/isac/fix/source/audio_decoder_isacfix.cc
deleted file mode 100644
index 21259ee..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/audio_decoder_isacfix.cc
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- *  Copyright (c) 2015 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "modules/audio_coding/codecs/isac/fix/include/audio_decoder_isacfix.h"
-
-#include "modules/audio_coding/codecs/isac/audio_decoder_isac_t_impl.h"
-
-namespace webrtc {
-
-// Explicit instantiation:
-template class AudioDecoderIsacT<IsacFix>;
-
-}  // namespace webrtc
diff --git a/modules/audio_coding/codecs/isac/fix/source/audio_encoder_isacfix.cc b/modules/audio_coding/codecs/isac/fix/source/audio_encoder_isacfix.cc
deleted file mode 100644
index 0190ab9..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/audio_encoder_isacfix.cc
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- *  Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "modules/audio_coding/codecs/isac/fix/include/audio_encoder_isacfix.h"
-
-#include "modules/audio_coding/codecs/isac/audio_encoder_isac_t_impl.h"
-
-namespace webrtc {
-
-// Explicit instantiation:
-template class AudioEncoderIsacT<IsacFix>;
-
-}  // namespace webrtc
diff --git a/modules/audio_coding/codecs/isac/fix/source/bandwidth_estimator.c b/modules/audio_coding/codecs/isac/fix/source/bandwidth_estimator.c
deleted file mode 100644
index 8845357..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/bandwidth_estimator.c
+++ /dev/null
@@ -1,1021 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * bandwidth_estimator.c
- *
- * This file contains the code for the Bandwidth Estimator designed
- * for iSAC.
- *
- * NOTE! Castings needed for C55, do not remove!
- *
- */
-
-#include "modules/audio_coding/codecs/isac/fix/source/bandwidth_estimator.h"
-
-#include "modules/audio_coding/codecs/isac/fix/source/settings.h"
-#include "rtc_base/checks.h"
-
-/* array of quantization levels for bottle neck info; Matlab code: */
-/* sprintf('%4.1ff, ', logspace(log10(5000), log10(40000), 12)) */
-static const int16_t kQRateTable[12] = {
-  10000, 11115, 12355, 13733, 15265, 16967,
-  18860, 20963, 23301, 25900, 28789, 32000
-};
-
-/* 0.1 times the values in the table kQRateTable */
-/* values are in Q16                                         */
-static const int32_t KQRate01[12] = {
-  65536000,  72843264,  80969728,  90000589,  100040704, 111194931,
-  123600896, 137383117, 152705434, 169738240, 188671590, 209715200
-};
-
-/* Bits per Bytes Seconds
- * 8 bits/byte * 1000 msec/sec * 1/framelength (in msec)->bits/byte*sec
- * frame length will either be 30 or 60 msec. 8738 is 1/60 in Q19 and 1/30 in Q18
- * The following number is either in Q15 or Q14 depending on the current frame length */
-static const int32_t kBitsByteSec = 4369000;
-
-/* Received header rate. First value is for 30 ms packets and second for 60 ms */
-static const int16_t kRecHeaderRate[2] = {
-  9333, 4666
-};
-
-/* Inverted minimum and maximum bandwidth in Q30.
-   minBwInv 30 ms, maxBwInv 30 ms,
-   minBwInv 60 ms, maxBwInv 69 ms
-*/
-static const int32_t kInvBandwidth[4] = {
-  55539, 25978,
-  73213, 29284
-};
-
-/* Number of samples in 25 msec */
-static const int32_t kSamplesIn25msec = 400;
-
-
-/****************************************************************************
- * WebRtcIsacfix_InitBandwidthEstimator(...)
- *
- * This function initializes the struct for the bandwidth estimator
- *
- * Input/Output:
- *      - bweStr        : Struct containing bandwidth information.
- *
- * Return value            : 0
- */
-int32_t WebRtcIsacfix_InitBandwidthEstimator(BwEstimatorstr *bweStr)
-{
-  bweStr->prevFrameSizeMs       = INIT_FRAME_LEN;
-  bweStr->prevRtpNumber         = 0;
-  bweStr->prevSendTime          = 0;
-  bweStr->prevArrivalTime       = 0;
-  bweStr->prevRtpRate           = 1;
-  bweStr->lastUpdate            = 0;
-  bweStr->lastReduction         = 0;
-  bweStr->countUpdates          = -9;
-
-  /* INIT_BN_EST = 20000
-   * INIT_BN_EST_Q7 = 2560000
-   * INIT_HDR_RATE = 4666
-   * INIT_REC_BN_EST_Q5 = 789312
-   *
-   * recBwInv = 1/(INIT_BN_EST + INIT_HDR_RATE) in Q30
-   * recBwAvg = INIT_BN_EST + INIT_HDR_RATE in Q5
-   */
-  bweStr->recBwInv              = 43531;
-  bweStr->recBw                 = INIT_BN_EST;
-  bweStr->recBwAvgQ             = INIT_BN_EST_Q7;
-  bweStr->recBwAvg              = INIT_REC_BN_EST_Q5;
-  bweStr->recJitter             = (int32_t) 327680;   /* 10 in Q15 */
-  bweStr->recJitterShortTerm    = 0;
-  bweStr->recJitterShortTermAbs = (int32_t) 40960;    /* 5 in Q13 */
-  bweStr->recMaxDelay           = (int32_t) 10;
-  bweStr->recMaxDelayAvgQ       = (int32_t) 5120;     /* 10 in Q9 */
-  bweStr->recHeaderRate         = INIT_HDR_RATE;
-  bweStr->countRecPkts          = 0;
-  bweStr->sendBwAvg             = INIT_BN_EST_Q7;
-  bweStr->sendMaxDelayAvg       = (int32_t) 5120;     /* 10 in Q9 */
-
-  bweStr->countHighSpeedRec     = 0;
-  bweStr->highSpeedRec          = 0;
-  bweStr->countHighSpeedSent    = 0;
-  bweStr->highSpeedSend         = 0;
-  bweStr->inWaitPeriod          = 0;
-
-  /* Find the inverse of the max bw and min bw in Q30
-   *  (1 / (MAX_ISAC_BW + INIT_HDR_RATE) in Q30
-   *  (1 / (MIN_ISAC_BW + INIT_HDR_RATE) in Q30
-   */
-  bweStr->maxBwInv              = kInvBandwidth[3];
-  bweStr->minBwInv              = kInvBandwidth[2];
-
-  bweStr->external_bw_info.in_use = 0;
-
-  return 0;
-}
-
-/****************************************************************************
- * WebRtcIsacfix_UpdateUplinkBwImpl(...)
- *
- * This function updates bottle neck rate received from other side in payload
- * and calculates a new bottle neck to send to the other side.
- *
- * Input/Output:
- *      - bweStr           : struct containing bandwidth information.
- *      - rtpNumber        : value from RTP packet, from NetEq
- *      - frameSize        : length of signal frame in ms, from iSAC decoder
- *      - sendTime         : value in RTP header giving send time in samples
- *      - arrivalTime      : value given by timeGetTime() time of arrival in
- *                           samples of packet from NetEq
- *      - pksize           : size of packet in bytes, from NetEq
- *      - Index            : integer (range 0...23) indicating bottle neck &
- *                           jitter as estimated by other side
- *
- * Return value            : 0 if everything went fine,
- *                           -1 otherwise
- */
-int32_t WebRtcIsacfix_UpdateUplinkBwImpl(BwEstimatorstr *bweStr,
-                                         const uint16_t rtpNumber,
-                                         const int16_t  frameSize,
-                                         const uint32_t sendTime,
-                                         const uint32_t arrivalTime,
-                                         const size_t   pksize,
-                                         const uint16_t Index)
-{
-  uint16_t  weight = 0;
-  uint32_t  currBwInv = 0;
-  uint16_t  recRtpRate;
-  uint32_t  arrTimeProj;
-  int32_t   arrTimeDiff;
-  int32_t   arrTimeNoise;
-  int32_t   arrTimeNoiseAbs;
-  int32_t   sendTimeDiff;
-
-  int32_t delayCorrFactor = DELAY_CORRECTION_MED;
-  int32_t lateDiff = 0;
-  int16_t immediateSet = 0;
-  int32_t frameSizeSampl;
-
-  int32_t  temp;
-  int32_t  msec;
-  uint32_t exponent;
-  uint32_t reductionFactor;
-  uint32_t numBytesInv;
-  int32_t  sign;
-
-  uint32_t byteSecondsPerBit;
-  uint32_t tempLower;
-  uint32_t tempUpper;
-  int32_t recBwAvgInv;
-  int32_t numPktsExpected;
-
-  int16_t errCode;
-
-  RTC_DCHECK(!bweStr->external_bw_info.in_use);
-
-  /* UPDATE ESTIMATES FROM OTHER SIDE */
-
-  /* The function also checks if Index has a valid value */
-  errCode = WebRtcIsacfix_UpdateUplinkBwRec(bweStr, Index);
-  if (errCode <0) {
-    return(errCode);
-  }
-
-
-  /* UPDATE ESTIMATES ON THIS SIDE */
-
-  /* Bits per second per byte * 1/30 or 1/60 */
-  if (frameSize == 60) {
-    /* If frameSize changed since last call, from 30 to 60, recalculate some values */
-    if ( (frameSize != bweStr->prevFrameSizeMs) && (bweStr->countUpdates > 0)) {
-      bweStr->countUpdates = 10;
-      bweStr->recHeaderRate = kRecHeaderRate[1];
-
-      bweStr->maxBwInv = kInvBandwidth[3];
-      bweStr->minBwInv = kInvBandwidth[2];
-      bweStr->recBwInv = 1073741824 / (bweStr->recBw + bweStr->recHeaderRate);
-    }
-
-    /* kBitsByteSec is in Q15 */
-    recRtpRate = (int16_t)((kBitsByteSec * pksize) >> 15) +
-        bweStr->recHeaderRate;
-
-  } else {
-    /* If frameSize changed since last call, from 60 to 30, recalculate some values */
-    if ( (frameSize != bweStr->prevFrameSizeMs) && (bweStr->countUpdates > 0)) {
-      bweStr->countUpdates = 10;
-      bweStr->recHeaderRate = kRecHeaderRate[0];
-
-      bweStr->maxBwInv = kInvBandwidth[1];
-      bweStr->minBwInv = kInvBandwidth[0];
-      bweStr->recBwInv = 1073741824 / (bweStr->recBw + bweStr->recHeaderRate);
-    }
-
-    /* kBitsByteSec is in Q14 */
-    recRtpRate = (uint16_t)((kBitsByteSec * pksize) >> 14) +
-        bweStr->recHeaderRate;
-  }
-
-
-  /* Check for timer wrap-around */
-  if (arrivalTime < bweStr->prevArrivalTime) {
-    bweStr->prevArrivalTime = arrivalTime;
-    bweStr->lastUpdate      = arrivalTime;
-    bweStr->lastReduction   = arrivalTime + FS3;
-
-    bweStr->countRecPkts      = 0;
-
-    /* store frame size */
-    bweStr->prevFrameSizeMs = frameSize;
-
-    /* store far-side transmission rate */
-    bweStr->prevRtpRate = recRtpRate;
-
-    /* store far-side RTP time stamp */
-    bweStr->prevRtpNumber = rtpNumber;
-
-    return 0;
-  }
-
-  bweStr->countRecPkts++;
-
-  /* Calculate framesize in msec */
-  frameSizeSampl = SAMPLES_PER_MSEC * frameSize;
-
-  /* Check that it's not one of the first 9 packets */
-  if ( bweStr->countUpdates > 0 ) {
-
-    /* Stay in Wait Period for 1.5 seconds (no updates in wait period) */
-    if(bweStr->inWaitPeriod) {
-      if ((arrivalTime - bweStr->startWaitPeriod)> FS_1_HALF) {
-        bweStr->inWaitPeriod = 0;
-      }
-    }
-
-    /* If not been updated for a long time, reduce the BN estimate */
-
-    /* Check send time difference between this packet and previous received      */
-    sendTimeDiff = sendTime - bweStr->prevSendTime;
-    if (sendTimeDiff <= frameSizeSampl * 2) {
-
-      /* Only update if 3 seconds has past since last update */
-      if ((arrivalTime - bweStr->lastUpdate) > FS3) {
-
-        /* Calculate expected number of received packets since last update */
-        numPktsExpected = (arrivalTime - bweStr->lastUpdate) / frameSizeSampl;
-
-        /* If received number of packets is more than 90% of expected (922 = 0.9 in Q10): */
-        /* do the update, else not                                                        */
-        if ((int32_t)bweStr->countRecPkts << 10 > 922 * numPktsExpected) {
-          /* Q4 chosen to approx dividing by 16 */
-          msec = (arrivalTime - bweStr->lastReduction);
-
-          /* the number below represents 13 seconds, highly unlikely
-             but to insure no overflow when reduction factor is multiplied by recBw inverse */
-          if (msec > 208000) {
-            msec = 208000;
-          }
-
-          /* Q20 2^(negative number: - 76/1048576) = .99995
-             product is Q24 */
-          exponent = WEBRTC_SPL_UMUL(0x0000004C, msec);
-
-          /* do the approx with positive exponent so that value is actually rf^-1
-             and multiply by bw inverse */
-          reductionFactor = WEBRTC_SPL_RSHIFT_U32(0x01000000 | (exponent & 0x00FFFFFF),
-                                                  WEBRTC_SPL_RSHIFT_U32(exponent, 24));
-
-          /* reductionFactor in Q13 */
-          reductionFactor = WEBRTC_SPL_RSHIFT_U32(reductionFactor, 11);
-
-          if ( reductionFactor != 0 ) {
-            bweStr->recBwInv = WEBRTC_SPL_MUL((int32_t)bweStr->recBwInv, (int32_t)reductionFactor);
-            bweStr->recBwInv = (int32_t)bweStr->recBwInv >> 13;
-
-          } else {
-            static const uint32_t kInitRate = INIT_BN_EST + INIT_HDR_RATE;
-            /* recBwInv = 1 / kInitRate  in Q26 (Q30??)*/
-            bweStr->recBwInv = (1073741824 + kInitRate / 2) / kInitRate;
-          }
-
-          /* reset time-since-update counter */
-          bweStr->lastReduction = arrivalTime;
-        } else {
-          /* Delay last reduction with 3 seconds */
-          bweStr->lastReduction = arrivalTime + FS3;
-          bweStr->lastUpdate    = arrivalTime;
-          bweStr->countRecPkts  = 0;
-        }
-      }
-    } else {
-      bweStr->lastReduction = arrivalTime + FS3;
-      bweStr->lastUpdate    = arrivalTime;
-      bweStr->countRecPkts  = 0;
-    }
-
-
-    /*   update only if previous packet was not lost */
-    if ( rtpNumber == bweStr->prevRtpNumber + 1 ) {
-      arrTimeDiff = arrivalTime - bweStr->prevArrivalTime;
-
-      if (!(bweStr->highSpeedSend && bweStr->highSpeedRec)) {
-        if (arrTimeDiff > frameSizeSampl) {
-          if (sendTimeDiff > 0) {
-            lateDiff = arrTimeDiff - sendTimeDiff - frameSizeSampl * 2;
-          } else {
-            lateDiff = arrTimeDiff - frameSizeSampl;
-          }
-
-          /* 8000 is 1/2 second (in samples at FS) */
-          if (lateDiff > 8000) {
-            delayCorrFactor = (int32_t) DELAY_CORRECTION_MAX;
-            bweStr->inWaitPeriod = 1;
-            bweStr->startWaitPeriod = arrivalTime;
-            immediateSet = 1;
-          } else if (lateDiff > 5120) {
-            delayCorrFactor = (int32_t) DELAY_CORRECTION_MED;
-            immediateSet = 1;
-            bweStr->inWaitPeriod = 1;
-            bweStr->startWaitPeriod = arrivalTime;
-          }
-        }
-      }
-
-      if ((bweStr->prevRtpRate > (int32_t)bweStr->recBwAvg >> 5) &&
-          (recRtpRate > (int32_t)bweStr->recBwAvg >> 5) &&
-          !bweStr->inWaitPeriod) {
-
-        /* test if still in initiation period and increment counter */
-        if (bweStr->countUpdates++ > 99) {
-          /* constant weight after initiation part, 0.01 in Q13 */
-          weight = (uint16_t) 82;
-        } else {
-          /* weight decreases with number of updates, 1/countUpdates in Q13  */
-          weight = (uint16_t) WebRtcSpl_DivW32W16(
-              8192 + (bweStr->countUpdates >> 1),
-              (int16_t)bweStr->countUpdates);
-        }
-
-        /* Bottle Neck Estimation */
-
-        /* limit outliers, if more than 25 ms too much */
-        if (arrTimeDiff > frameSizeSampl + kSamplesIn25msec) {
-          arrTimeDiff = frameSizeSampl + kSamplesIn25msec;
-        }
-
-        /* don't allow it to be less than frame rate - 10 ms */
-        if (arrTimeDiff < frameSizeSampl - FRAMESAMPLES_10ms) {
-          arrTimeDiff = frameSizeSampl - FRAMESAMPLES_10ms;
-        }
-
-        /* compute inverse receiving rate for last packet, in Q19 */
-        numBytesInv = (uint16_t) WebRtcSpl_DivW32W16(
-            (int32_t)(524288 + ((pksize + HEADER_SIZE) >> 1)),
-            (int16_t)(pksize + HEADER_SIZE));
-
-        /* 8389 is  ~ 1/128000 in Q30 */
-        byteSecondsPerBit = (uint32_t)(arrTimeDiff * 8389);
-
-        /* get upper N bits */
-        tempUpper = WEBRTC_SPL_RSHIFT_U32(byteSecondsPerBit, 15);
-
-        /* get lower 15 bits */
-        tempLower = byteSecondsPerBit & 0x00007FFF;
-
-        tempUpper = WEBRTC_SPL_MUL(tempUpper, numBytesInv);
-        tempLower = WEBRTC_SPL_MUL(tempLower, numBytesInv);
-        tempLower = WEBRTC_SPL_RSHIFT_U32(tempLower, 15);
-
-        currBwInv = tempUpper + tempLower;
-        currBwInv = WEBRTC_SPL_RSHIFT_U32(currBwInv, 4);
-
-        /* Limit inv rate. Note that minBwInv > maxBwInv! */
-        if(currBwInv < bweStr->maxBwInv) {
-          currBwInv = bweStr->maxBwInv;
-        } else if(currBwInv > bweStr->minBwInv) {
-          currBwInv = bweStr->minBwInv;
-        }
-
-        /* update bottle neck rate estimate */
-        bweStr->recBwInv = WEBRTC_SPL_UMUL(weight, currBwInv) +
-            WEBRTC_SPL_UMUL((uint32_t) 8192 - weight, bweStr->recBwInv);
-
-        /* Shift back to Q30 from Q40 (actual used bits shouldn't be more than 27 based on minBwInv)
-           up to 30 bits used with Q13 weight */
-        bweStr->recBwInv = WEBRTC_SPL_RSHIFT_U32(bweStr->recBwInv, 13);
-
-        /* reset time-since-update counter */
-        bweStr->lastUpdate    = arrivalTime;
-        bweStr->lastReduction = arrivalTime + FS3;
-        bweStr->countRecPkts  = 0;
-
-        /* to save resolution compute the inverse of recBwAvg in Q26 by left shifting numerator to 2^31
-           and NOT right shifting recBwAvg 5 bits to an integer
-           At max 13 bits are used
-           shift to Q5 */
-        recBwAvgInv = (0x80000000 + bweStr->recBwAvg / 2) / bweStr->recBwAvg;
-
-        /* Calculate Projected arrival time difference */
-
-        /* The numerator of the quotient can be 22 bits so right shift inv by 4 to avoid overflow
-           result in Q22 */
-        arrTimeProj = WEBRTC_SPL_MUL((int32_t)8000, recBwAvgInv);
-        /* shift to Q22 */
-        arrTimeProj = WEBRTC_SPL_RSHIFT_U32(arrTimeProj, 4);
-        /* complete calulation */
-        arrTimeProj = WEBRTC_SPL_MUL(((int32_t)pksize + HEADER_SIZE), arrTimeProj);
-        /* shift to Q10 */
-        arrTimeProj = WEBRTC_SPL_RSHIFT_U32(arrTimeProj, 12);
-
-        /* difference between projected and actual arrival time differences */
-        /* Q9 (only shift arrTimeDiff by 5 to simulate divide by 16 (need to revisit if change sampling rate) DH */
-        if ((arrTimeDiff << 6) > (int32_t)arrTimeProj) {
-          arrTimeNoise = (arrTimeDiff << 6) - arrTimeProj;
-          sign = 1;
-        } else {
-          arrTimeNoise = arrTimeProj - (arrTimeDiff << 6);
-          sign = -1;
-        }
-
-        /* Q9 */
-        arrTimeNoiseAbs = arrTimeNoise;
-
-        /* long term averaged absolute jitter, Q15 */
-        weight >>= 3;
-        bweStr->recJitter = weight * (arrTimeNoiseAbs << 5) +
-            (1024 - weight) * bweStr->recJitter;
-
-        /* remove the fractional portion */
-        bweStr->recJitter >>= 10;
-
-        /* Maximum jitter is 10 msec in Q15 */
-        if (bweStr->recJitter > (int32_t)327680) {
-          bweStr->recJitter = (int32_t)327680;
-        }
-
-        /* short term averaged absolute jitter */
-        /* Calculation in Q13 products in Q23 */
-        bweStr->recJitterShortTermAbs = 51 * (arrTimeNoiseAbs << 3) +
-            WEBRTC_SPL_MUL(973, bweStr->recJitterShortTermAbs);
-        bweStr->recJitterShortTermAbs >>= 10;
-
-        /* short term averaged jitter */
-        /* Calculation in Q13 products in Q23 */
-        bweStr->recJitterShortTerm = 205 * (arrTimeNoise << 3) * sign +
-            WEBRTC_SPL_MUL(3891, bweStr->recJitterShortTerm);
-
-        if (bweStr->recJitterShortTerm < 0) {
-          temp = -bweStr->recJitterShortTerm;
-          temp >>= 12;
-          bweStr->recJitterShortTerm = -temp;
-        } else {
-          bweStr->recJitterShortTerm >>= 12;
-        }
-      }
-    }
-  } else {
-    /* reset time-since-update counter when receiving the first 9 packets */
-    bweStr->lastUpdate    = arrivalTime;
-    bweStr->lastReduction = arrivalTime + FS3;
-    bweStr->countRecPkts  = 0;
-    bweStr->countUpdates++;
-  }
-
-  /* Limit to minimum or maximum bottle neck rate (in Q30) */
-  if (bweStr->recBwInv > bweStr->minBwInv) {
-    bweStr->recBwInv = bweStr->minBwInv;
-  } else if (bweStr->recBwInv < bweStr->maxBwInv) {
-    bweStr->recBwInv = bweStr->maxBwInv;
-  }
-
-
-  /* store frame length */
-  bweStr->prevFrameSizeMs = frameSize;
-
-  /* store far-side transmission rate */
-  bweStr->prevRtpRate = recRtpRate;
-
-  /* store far-side RTP time stamp */
-  bweStr->prevRtpNumber = rtpNumber;
-
-  /* Replace bweStr->recMaxDelay by the new value (atomic operation) */
-  if (bweStr->prevArrivalTime != 0xffffffff) {
-    bweStr->recMaxDelay = WEBRTC_SPL_MUL(3, bweStr->recJitter);
-  }
-
-  /* store arrival time stamp */
-  bweStr->prevArrivalTime = arrivalTime;
-  bweStr->prevSendTime = sendTime;
-
-  /* Replace bweStr->recBw by the new value */
-  bweStr->recBw = 1073741824 / bweStr->recBwInv - bweStr->recHeaderRate;
-
-  if (immediateSet) {
-    /* delay correction factor is in Q10 */
-    bweStr->recBw = WEBRTC_SPL_UMUL(delayCorrFactor, bweStr->recBw);
-    bweStr->recBw = WEBRTC_SPL_RSHIFT_U32(bweStr->recBw, 10);
-
-    if (bweStr->recBw < (int32_t) MIN_ISAC_BW) {
-      bweStr->recBw = (int32_t) MIN_ISAC_BW;
-    }
-
-    bweStr->recBwAvg = (bweStr->recBw + bweStr->recHeaderRate) << 5;
-
-    bweStr->recBwAvgQ = bweStr->recBw << 7;
-
-    bweStr->recJitterShortTerm = 0;
-
-    bweStr->recBwInv = 1073741824 / (bweStr->recBw + bweStr->recHeaderRate);
-
-    immediateSet = 0;
-  }
-
-
-  return 0;
-}
-
-/* This function updates the send bottle neck rate                                                   */
-/* Index         - integer (range 0...23) indicating bottle neck & jitter as estimated by other side */
-/* returns 0 if everything went fine, -1 otherwise                                                   */
-int16_t WebRtcIsacfix_UpdateUplinkBwRec(BwEstimatorstr *bweStr,
-                                        const int16_t Index)
-{
-  uint16_t RateInd;
-
-  RTC_DCHECK(!bweStr->external_bw_info.in_use);
-
-  if ( (Index < 0) || (Index > 23) ) {
-    return -ISAC_RANGE_ERROR_BW_ESTIMATOR;
-  }
-
-  /* UPDATE ESTIMATES FROM OTHER SIDE */
-
-  if ( Index > 11 ) {
-    RateInd = Index - 12;
-    /* compute the jitter estimate as decoded on the other side in Q9 */
-    /* sendMaxDelayAvg = 0.9 * sendMaxDelayAvg + 0.1 * MAX_ISAC_MD */
-    bweStr->sendMaxDelayAvg = WEBRTC_SPL_MUL(461, bweStr->sendMaxDelayAvg) +
-        51 * (MAX_ISAC_MD << 9);
-    bweStr->sendMaxDelayAvg >>= 9;
-
-  } else {
-    RateInd = Index;
-    /* compute the jitter estimate as decoded on the other side in Q9 */
-    /* sendMaxDelayAvg = 0.9 * sendMaxDelayAvg + 0.1 * MIN_ISAC_MD */
-    bweStr->sendMaxDelayAvg = WEBRTC_SPL_MUL(461, bweStr->sendMaxDelayAvg) +
-        51 * (MIN_ISAC_MD << 9);
-    bweStr->sendMaxDelayAvg >>= 9;
-
-  }
-
-
-  /* compute the BN estimate as decoded on the other side */
-  /* sendBwAvg = 0.9 * sendBwAvg + 0.1 * kQRateTable[RateInd]; */
-  bweStr->sendBwAvg = 461 * bweStr->sendBwAvg +
-      51 * ((uint32_t)kQRateTable[RateInd] << 7);
-  bweStr->sendBwAvg = WEBRTC_SPL_RSHIFT_U32(bweStr->sendBwAvg, 9);
-
-
-  if (WEBRTC_SPL_RSHIFT_U32(bweStr->sendBwAvg, 7) > 28000 && !bweStr->highSpeedSend) {
-    bweStr->countHighSpeedSent++;
-
-    /* approx 2 seconds with 30ms frames */
-    if (bweStr->countHighSpeedSent >= 66) {
-      bweStr->highSpeedSend = 1;
-    }
-  } else if (!bweStr->highSpeedSend) {
-    bweStr->countHighSpeedSent = 0;
-  }
-
-  return 0;
-}
-
-/****************************************************************************
- * WebRtcIsacfix_GetDownlinkBwIndexImpl(...)
- *
- * This function calculates and returns the bandwidth/jitter estimation code
- * (integer 0...23) to put in the sending iSAC payload.
- *
- * Input:
- *      - bweStr       : BWE struct
- *
- * Return:
- *      bandwith and jitter index (0..23)
- */
-uint16_t WebRtcIsacfix_GetDownlinkBwIndexImpl(BwEstimatorstr *bweStr)
-{
-  int32_t  rate;
-  int32_t  maxDelay;
-  uint16_t rateInd;
-  uint16_t maxDelayBit;
-  int32_t  tempTerm1;
-  int32_t  tempTerm2;
-  int32_t  tempTermX;
-  int32_t  tempTermY;
-  int32_t  tempMin;
-  int32_t  tempMax;
-
-  if (bweStr->external_bw_info.in_use)
-    return bweStr->external_bw_info.bottleneck_idx;
-
-  /* Get Rate Index */
-
-  /* Get unquantized rate. Always returns 10000 <= rate <= 32000 */
-  rate = WebRtcIsacfix_GetDownlinkBandwidth(bweStr);
-
-  /* Compute the averaged BN estimate on this side */
-
-  /* recBwAvg = 0.9 * recBwAvg + 0.1 * (rate + bweStr->recHeaderRate), 0.9 and 0.1 in Q9 */
-  bweStr->recBwAvg = 922 * bweStr->recBwAvg +
-      102 * (((uint32_t)rate + bweStr->recHeaderRate) << 5);
-  bweStr->recBwAvg = WEBRTC_SPL_RSHIFT_U32(bweStr->recBwAvg, 10);
-
-  /* Find quantization index that gives the closest rate after averaging.
-   * Note that we don't need to check the last value, rate <= kQRateTable[11],
-   * because we will use rateInd = 11 even if rate > kQRateTable[11]. */
-  for (rateInd = 1; rateInd < 11; rateInd++) {
-    if (rate <= kQRateTable[rateInd]){
-      break;
-    }
-  }
-
-  /* find closest quantization index, and update quantized average by taking: */
-  /* 0.9*recBwAvgQ + 0.1*kQRateTable[rateInd] */
-
-  /* 0.9 times recBwAvgQ in Q16 */
-  /* 461/512 - 25/65536 =0.900009 */
-  tempTerm1 = WEBRTC_SPL_MUL(bweStr->recBwAvgQ, 25);
-  tempTerm1 >>= 7;
-  tempTermX = WEBRTC_SPL_UMUL(461, bweStr->recBwAvgQ) - tempTerm1;
-
-  /* rate in Q16 */
-  tempTermY = rate << 16;
-
-  /* 0.1 * kQRateTable[rateInd] = KQRate01[rateInd] */
-  tempTerm1 = tempTermX + KQRate01[rateInd] - tempTermY;
-  tempTerm2 = tempTermY - tempTermX - KQRate01[rateInd-1];
-
-  /* Compare (0.9 * recBwAvgQ + 0.1 * kQRateTable[rateInd] - rate) >
-     (rate - 0.9 * recBwAvgQ - 0.1 * kQRateTable[rateInd-1]) */
-  if (tempTerm1  > tempTerm2) {
-    rateInd--;
-  }
-
-  /* Update quantized average by taking:                  */
-  /* 0.9*recBwAvgQ + 0.1*kQRateTable[rateInd] */
-
-  /* Add 0.1 times kQRateTable[rateInd], in Q16 */
-  tempTermX += KQRate01[rateInd];
-
-  /* Shift back to Q7 */
-  bweStr->recBwAvgQ = tempTermX >> 9;
-
-  /* Count consecutive received bandwidth above 28000 kbps (28000 in Q7 = 3584000) */
-  /* If 66 high estimates in a row, set highSpeedRec to one */
-  /* 66 corresponds to ~2 seconds in 30 msec mode */
-  if ((bweStr->recBwAvgQ > 3584000) && !bweStr->highSpeedRec) {
-    bweStr->countHighSpeedRec++;
-    if (bweStr->countHighSpeedRec >= 66) {
-      bweStr->highSpeedRec = 1;
-    }
-  } else if (!bweStr->highSpeedRec)    {
-    bweStr->countHighSpeedRec = 0;
-  }
-
-  /* Get Max Delay Bit */
-
-  /* get unquantized max delay */
-  maxDelay = WebRtcIsacfix_GetDownlinkMaxDelay(bweStr);
-
-  /* Update quantized max delay average */
-  tempMax = 652800; /* MAX_ISAC_MD * 0.1 in Q18 */
-  tempMin = 130560; /* MIN_ISAC_MD * 0.1 in Q18 */
-  tempTermX = WEBRTC_SPL_MUL((int32_t)bweStr->recMaxDelayAvgQ, (int32_t)461);
-  tempTermY = maxDelay << 18;
-
-  tempTerm1 = tempTermX + tempMax - tempTermY;
-  tempTerm2 = tempTermY - tempTermX - tempMin;
-
-  if ( tempTerm1 > tempTerm2) {
-    maxDelayBit = 0;
-    tempTerm1 = tempTermX + tempMin;
-
-    /* update quantized average, shift back to Q9 */
-    bweStr->recMaxDelayAvgQ = tempTerm1 >> 9;
-  } else {
-    maxDelayBit = 12;
-    tempTerm1 =  tempTermX + tempMax;
-
-    /* update quantized average, shift back to Q9 */
-    bweStr->recMaxDelayAvgQ = tempTerm1 >> 9;
-  }
-
-  /* Return bandwitdh and jitter index (0..23) */
-  return (uint16_t)(rateInd + maxDelayBit);
-}
-
-/* get the bottle neck rate from far side to here, as estimated on this side */
-uint16_t WebRtcIsacfix_GetDownlinkBandwidth(const BwEstimatorstr *bweStr)
-{
-  uint32_t  recBw;
-  int32_t   jitter_sign; /* Q8 */
-  int32_t   bw_adjust;   /* Q16 */
-  int32_t   rec_jitter_short_term_abs_inv; /* Q18 */
-  int32_t   temp;
-
-  RTC_DCHECK(!bweStr->external_bw_info.in_use);
-
-  /* Q18  rec jitter short term abs is in Q13, multiply it by 2^13 to save precision
-     2^18 then needs to be shifted 13 bits to 2^31 */
-  rec_jitter_short_term_abs_inv = 0x80000000u / bweStr->recJitterShortTermAbs;
-
-  /* Q27 = 9 + 18 */
-  jitter_sign = (bweStr->recJitterShortTerm >> 4) *
-      rec_jitter_short_term_abs_inv;
-
-  if (jitter_sign < 0) {
-    temp = -jitter_sign;
-    temp >>= 19;
-    jitter_sign = -temp;
-  } else {
-    jitter_sign >>= 19;
-  }
-
-  /* adjust bw proportionally to negative average jitter sign */
-  //bw_adjust = 1.0f - jitter_sign * (0.15f + 0.15f * jitter_sign * jitter_sign);
-  //Q8 -> Q16 .15 +.15 * jitter^2 first term is .15 in Q16 latter term is Q8*Q8*Q8
-  //38 in Q8 ~.15 9830 in Q16 ~.15
-  temp = 9830 + ((38 * jitter_sign * jitter_sign) >> 8);
-
-  if (jitter_sign < 0) {
-    temp = WEBRTC_SPL_MUL(jitter_sign, temp);
-    temp = -temp;
-    temp >>= 8;
-    bw_adjust = (uint32_t)65536 + temp; /* (1 << 16) + temp; */
-  } else {
-    /* (1 << 16) - ((jitter_sign * temp) >> 8); */
-    bw_adjust = 65536 - ((jitter_sign * temp) >> 8);
-  }
-
-  //make sure following multiplication won't overflow
-  //bw adjust now Q14
-  bw_adjust >>= 2;  // See if good resolution is maintained.
-
-  /* adjust Rate if jitter sign is mostly constant */
-  recBw = WEBRTC_SPL_UMUL(bweStr->recBw, bw_adjust);
-
-  recBw >>= 14;
-
-  /* limit range of bottle neck rate */
-  if (recBw < MIN_ISAC_BW) {
-    recBw = MIN_ISAC_BW;
-  } else if (recBw > MAX_ISAC_BW) {
-    recBw = MAX_ISAC_BW;
-  }
-
-  return  (uint16_t) recBw;
-}
-
-/* Returns the mmax delay (in ms) */
-int16_t WebRtcIsacfix_GetDownlinkMaxDelay(const BwEstimatorstr *bweStr)
-{
-  int16_t recMaxDelay = (int16_t)(bweStr->recMaxDelay >> 15);
-
-  RTC_DCHECK(!bweStr->external_bw_info.in_use);
-
-  /* limit range of jitter estimate */
-  if (recMaxDelay < MIN_ISAC_MD) {
-    recMaxDelay = MIN_ISAC_MD;
-  } else if (recMaxDelay > MAX_ISAC_MD) {
-    recMaxDelay = MAX_ISAC_MD;
-  }
-
-  return recMaxDelay;
-}
-
-/* Clamp val to the closed interval [min,max]. */
-static int16_t clamp(int16_t val, int16_t min, int16_t max) {
-  RTC_DCHECK_LE(min, max);
-  return val < min ? min : (val > max ? max : val);
-}
-
-int16_t WebRtcIsacfix_GetUplinkBandwidth(const BwEstimatorstr* bweStr) {
-  return bweStr->external_bw_info.in_use
-             ? bweStr->external_bw_info.send_bw_avg
-             : clamp(bweStr->sendBwAvg >> 7, MIN_ISAC_BW, MAX_ISAC_BW);
-}
-
-int16_t WebRtcIsacfix_GetUplinkMaxDelay(const BwEstimatorstr* bweStr) {
-  return bweStr->external_bw_info.in_use
-             ? bweStr->external_bw_info.send_max_delay_avg
-             : clamp(bweStr->sendMaxDelayAvg >> 9, MIN_ISAC_MD, MAX_ISAC_MD);
-}
-
-/*
- * update long-term average bitrate and amount of data in buffer
- * returns minimum payload size (bytes)
- */
-uint16_t WebRtcIsacfix_GetMinBytes(RateModel *State,
-                                   int16_t StreamSize,                    /* bytes in bitstream */
-                                   const int16_t FrameSamples,            /* samples per frame */
-                                   const int16_t BottleNeck,        /* bottle neck rate; excl headers (bps) */
-                                   const int16_t DelayBuildUp)      /* max delay from bottle neck buffering (ms) */
-{
-  int32_t MinRate = 0;
-  uint16_t    MinBytes;
-  int16_t TransmissionTime;
-  int32_t inv_Q12;
-  int32_t den;
-
-
-  /* first 10 packets @ low rate, then INIT_BURST_LEN packets @ fixed rate of INIT_RATE bps */
-  if (State->InitCounter > 0) {
-    if (State->InitCounter-- <= INIT_BURST_LEN) {
-      MinRate = INIT_RATE;
-    } else {
-      MinRate = 0;
-    }
-  } else {
-    /* handle burst */
-    if (State->BurstCounter) {
-      if (State->StillBuffered <
-          (((512 - 512 / BURST_LEN) * DelayBuildUp) >> 9)) {
-        /* max bps derived from BottleNeck and DelayBuildUp values */
-        inv_Q12 = 4096 / (BURST_LEN * FrameSamples);
-        MinRate = (512 + SAMPLES_PER_MSEC * ((DelayBuildUp * inv_Q12) >> 3)) *
-            BottleNeck;
-      } else {
-        /* max bps derived from StillBuffered and DelayBuildUp values */
-        inv_Q12 = 4096 / FrameSamples;
-        if (DelayBuildUp > State->StillBuffered) {
-          MinRate = (512 + SAMPLES_PER_MSEC * (((DelayBuildUp -
-              State->StillBuffered) * inv_Q12) >> 3)) * BottleNeck;
-        } else if ((den = WEBRTC_SPL_MUL(SAMPLES_PER_MSEC, (State->StillBuffered - DelayBuildUp))) >= FrameSamples) {
-          /* MinRate will be negative here */
-          MinRate = 0;
-        } else {
-          MinRate = (512 - ((den * inv_Q12) >> 3)) * BottleNeck;
-        }
-        //if (MinRate < 1.04 * BottleNeck)
-        //    MinRate = 1.04 * BottleNeck;
-        //Q9
-        if (MinRate < WEBRTC_SPL_MUL(532, BottleNeck)) {
-          MinRate += WEBRTC_SPL_MUL(22, BottleNeck);
-        }
-      }
-
-      State->BurstCounter--;
-    }
-  }
-
-
-  /* convert rate from bits/second to bytes/packet */
-  //round and shift before conversion
-  MinRate += 256;
-  MinRate >>= 9;
-  MinBytes = MinRate * FrameSamples / FS8;
-
-  /* StreamSize will be adjusted if less than MinBytes */
-  if (StreamSize < MinBytes) {
-    StreamSize = MinBytes;
-  }
-
-  /* keep track of when bottle neck was last exceeded by at least 1% */
-  //517/512 ~ 1.01
-  if ((StreamSize * (int32_t)FS8) / FrameSamples > (517 * BottleNeck) >> 9) {
-    if (State->PrevExceed) {
-      /* bottle_neck exceded twice in a row, decrease ExceedAgo */
-      State->ExceedAgo -= BURST_INTERVAL / (BURST_LEN - 1);
-      if (State->ExceedAgo < 0) {
-        State->ExceedAgo = 0;
-      }
-    } else {
-      State->ExceedAgo += FrameSamples / SAMPLES_PER_MSEC;  /* ms */
-      State->PrevExceed = 1;
-    }
-  } else {
-    State->PrevExceed = 0;
-    State->ExceedAgo += FrameSamples / SAMPLES_PER_MSEC;  /* ms */
-  }
-
-  /* set burst flag if bottle neck not exceeded for long time */
-  if ((State->ExceedAgo > BURST_INTERVAL) && (State->BurstCounter == 0)) {
-    if (State->PrevExceed) {
-      State->BurstCounter = BURST_LEN - 1;
-    } else {
-      State->BurstCounter = BURST_LEN;
-    }
-  }
-
-
-  /* Update buffer delay */
-  TransmissionTime = (StreamSize * 8000) / BottleNeck;  /* ms */
-  State->StillBuffered += TransmissionTime;
-  State->StillBuffered -= FrameSamples / SAMPLES_PER_MSEC;   /* ms */
-  if (State->StillBuffered < 0) {
-    State->StillBuffered = 0;
-  }
-
-  if (State->StillBuffered > 2000) {
-    State->StillBuffered = 2000;
-  }
-
-  return MinBytes;
-}
-
-
-/*
- * update long-term average bitrate and amount of data in buffer
- */
-void WebRtcIsacfix_UpdateRateModel(RateModel *State,
-                                   int16_t StreamSize,                    /* bytes in bitstream */
-                                   const int16_t FrameSamples,            /* samples per frame */
-                                   const int16_t BottleNeck)        /* bottle neck rate; excl headers (bps) */
-{
-  const int16_t TransmissionTime = (StreamSize * 8000) / BottleNeck;  /* ms */
-
-  /* avoid the initial "high-rate" burst */
-  State->InitCounter = 0;
-
-  /* Update buffer delay */
-  State->StillBuffered += TransmissionTime;
-  State->StillBuffered -= FrameSamples >> 4;  /* ms */
-  if (State->StillBuffered < 0) {
-    State->StillBuffered = 0;
-  }
-
-}
-
-
-void WebRtcIsacfix_InitRateModel(RateModel *State)
-{
-  State->PrevExceed      = 0;                        /* boolean */
-  State->ExceedAgo       = 0;                        /* ms */
-  State->BurstCounter    = 0;                        /* packets */
-  State->InitCounter     = INIT_BURST_LEN + 10;    /* packets */
-  State->StillBuffered   = 1;                    /* ms */
-}
-
-
-
-
-
-int16_t WebRtcIsacfix_GetNewFrameLength(int16_t bottle_neck, int16_t current_framesamples)
-{
-  int16_t new_framesamples;
-
-  new_framesamples = current_framesamples;
-
-  /* find new framelength */
-  switch(current_framesamples) {
-    case 480:
-      if (bottle_neck < Thld_30_60) {
-        new_framesamples = 960;
-      }
-      break;
-    case 960:
-      if (bottle_neck >= Thld_60_30) {
-        new_framesamples = 480;
-      }
-      break;
-    default:
-      new_framesamples = -1; /* Error */
-  }
-
-  return new_framesamples;
-}
-
-int16_t WebRtcIsacfix_GetSnr(int16_t bottle_neck, int16_t framesamples)
-{
-  int16_t s2nr = 0;
-
-  /* find new SNR value */
-  //consider BottleNeck to be in Q10 ( * 1 in Q10)
-  switch(framesamples) {
-  // TODO(bjornv): The comments below confuses me. I don't know if there is a
-  // difference between frame lengths (in which case the implementation is
-  // wrong), or if it is frame length independent in which case we should
-  // correct the comment and simplify the implementation.
-    case 480:
-      /*s2nr = -1*(a_30 << 10) + ((b_30 * bottle_neck) >> 10);*/
-      s2nr = -22500 + (int16_t)(500 * bottle_neck >> 10);
-      break;
-    case 960:
-      /*s2nr = -1*(a_60 << 10) + ((b_60 * bottle_neck) >> 10);*/
-      s2nr = -22500 + (int16_t)(500 * bottle_neck >> 10);
-      break;
-    default:
-      s2nr = -1; /* Error */
-  }
-
-  return s2nr; //return in Q10
-
-}
diff --git a/modules/audio_coding/codecs/isac/fix/source/bandwidth_estimator.h b/modules/audio_coding/codecs/isac/fix/source/bandwidth_estimator.h
deleted file mode 100644
index f106746..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/bandwidth_estimator.h
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * bandwidth_estimator.h
- *
- * This header file contains the API for the Bandwidth Estimator
- * designed for iSAC.
- *
- */
-
-#ifndef MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_BANDWIDTH_ESTIMATOR_H_
-#define MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_BANDWIDTH_ESTIMATOR_H_
-
-#include "modules/audio_coding/codecs/isac/fix/source/structs.h"
-
-/****************************************************************************
- * WebRtcIsacfix_InitBandwidthEstimator(...)
- *
- * This function initializes the struct for the bandwidth estimator
- *
- * Input/Output:
- *      - bwest_str        : Struct containing bandwidth information.
- *
- * Return value            : 0
- */
-
-int32_t WebRtcIsacfix_InitBandwidthEstimator(BwEstimatorstr* bwest_str);
-
-/****************************************************************************
- * WebRtcIsacfix_UpdateUplinkBwImpl(...)
- *
- * This function updates bottle neck rate received from other side in payload
- * and calculates a new bottle neck to send to the other side.
- *
- * Input/Output:
- *      - bweStr           : struct containing bandwidth information.
- *      - rtpNumber        : value from RTP packet, from NetEq
- *      - frameSize        : length of signal frame in ms, from iSAC decoder
- *      - sendTime         : value in RTP header giving send time in samples
- *      - arrivalTime      : value given by timeGetTime() time of arrival in
- *                           samples of packet from NetEq
- *      - pksize           : size of packet in bytes, from NetEq
- *      - Index            : integer (range 0...23) indicating bottle neck &
- *                           jitter as estimated by other side
- *
- * Return value            : 0 if everything went fine,
- *                           -1 otherwise
- */
-
-int32_t WebRtcIsacfix_UpdateUplinkBwImpl(BwEstimatorstr* bwest_str,
-                                         uint16_t rtp_number,
-                                         int16_t frameSize,
-                                         uint32_t send_ts,
-                                         uint32_t arr_ts,
-                                         size_t pksize,
-                                         uint16_t Index);
-
-/* Update receiving estimates. Used when we only receive BWE index, no iSAC data
- * packet. */
-int16_t WebRtcIsacfix_UpdateUplinkBwRec(BwEstimatorstr* bwest_str,
-                                        int16_t Index);
-
-/****************************************************************************
- * WebRtcIsacfix_GetDownlinkBwIndexImpl(...)
- *
- * This function calculates and returns the bandwidth/jitter estimation code
- * (integer 0...23) to put in the sending iSAC payload.
- *
- * Input:
- *      - bweStr       : BWE struct
- *
- * Return:
- *      bandwith and jitter index (0..23)
- */
-uint16_t WebRtcIsacfix_GetDownlinkBwIndexImpl(BwEstimatorstr* bwest_str);
-
-/* Returns the bandwidth estimation (in bps) */
-uint16_t WebRtcIsacfix_GetDownlinkBandwidth(const BwEstimatorstr* bwest_str);
-
-/* Returns the bandwidth that iSAC should send with in bps */
-int16_t WebRtcIsacfix_GetUplinkBandwidth(const BwEstimatorstr* bwest_str);
-
-/* Returns the max delay (in ms) */
-int16_t WebRtcIsacfix_GetDownlinkMaxDelay(const BwEstimatorstr* bwest_str);
-
-/* Returns the max delay value from the other side in ms */
-int16_t WebRtcIsacfix_GetUplinkMaxDelay(const BwEstimatorstr* bwest_str);
-
-/*
- * update amount of data in bottle neck buffer and burst handling
- * returns minimum payload size (bytes)
- */
-uint16_t WebRtcIsacfix_GetMinBytes(
-    RateModel* State,
-    int16_t StreamSize,    /* bytes in bitstream */
-    int16_t FrameLen,      /* ms per frame */
-    int16_t BottleNeck,    /* bottle neck rate; excl headers (bps) */
-    int16_t DelayBuildUp); /* max delay from bottle neck buffering (ms) */
-
-/*
- * update long-term average bitrate and amount of data in buffer
- */
-void WebRtcIsacfix_UpdateRateModel(
-    RateModel* State,
-    int16_t StreamSize,   /* bytes in bitstream */
-    int16_t FrameSamples, /* samples per frame */
-    int16_t BottleNeck);  /* bottle neck rate; excl headers (bps) */
-
-void WebRtcIsacfix_InitRateModel(RateModel* State);
-
-/* Returns the new framelength value (input argument: bottle_neck) */
-int16_t WebRtcIsacfix_GetNewFrameLength(int16_t bottle_neck,
-                                        int16_t current_framelength);
-
-/* Returns the new SNR value (input argument: bottle_neck) */
-// returns snr in Q10
-int16_t WebRtcIsacfix_GetSnr(int16_t bottle_neck, int16_t framesamples);
-
-#endif /*  MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_BANDWIDTH_ESTIMATOR_H_ \
-        */
diff --git a/modules/audio_coding/codecs/isac/fix/source/codec.h b/modules/audio_coding/codecs/isac/fix/source/codec.h
deleted file mode 100644
index 01d6fb9..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/codec.h
+++ /dev/null
@@ -1,212 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * codec.h
- *
- * This header file contains the calls to the internal encoder
- * and decoder functions.
- *
- */
-
-#ifndef MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_CODEC_H_
-#define MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_CODEC_H_
-
-#include "modules/audio_coding/codecs/isac/fix/source/structs.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-int WebRtcIsacfix_EstimateBandwidth(BwEstimatorstr* bwest_str,
-                                    Bitstr_dec* streamdata,
-                                    size_t packet_size,
-                                    uint16_t rtp_seq_number,
-                                    uint32_t send_ts,
-                                    uint32_t arr_ts);
-
-int WebRtcIsacfix_DecodeImpl(int16_t* signal_out16,
-                             IsacFixDecoderInstance* ISACdec_obj,
-                             size_t* current_framesamples);
-
-void WebRtcIsacfix_DecodePlcImpl(int16_t* decoded,
-                                 IsacFixDecoderInstance* ISACdec_obj,
-                                 size_t* current_framesample);
-
-int WebRtcIsacfix_EncodeImpl(int16_t* in,
-                             IsacFixEncoderInstance* ISACenc_obj,
-                             BwEstimatorstr* bw_estimatordata,
-                             int16_t CodingMode);
-
-int WebRtcIsacfix_EncodeStoredData(IsacFixEncoderInstance* ISACenc_obj,
-                                   int BWnumber,
-                                   float scale);
-
-/* initialization functions */
-
-void WebRtcIsacfix_InitMaskingEnc(MaskFiltstr_enc* maskdata);
-void WebRtcIsacfix_InitMaskingDec(MaskFiltstr_dec* maskdata);
-
-void WebRtcIsacfix_InitPreFilterbank(PreFiltBankstr* prefiltdata);
-
-void WebRtcIsacfix_InitPostFilterbank(PostFiltBankstr* postfiltdata);
-
-void WebRtcIsacfix_InitPitchFilter(PitchFiltstr* pitchfiltdata);
-
-void WebRtcIsacfix_InitPitchAnalysis(PitchAnalysisStruct* State);
-
-void WebRtcIsacfix_InitPlc(PLCstr* State);
-
-/* transform functions */
-
-void WebRtcIsacfix_InitTransform(void);
-
-typedef void (*Time2Spec)(int16_t* inre1Q9,
-                          int16_t* inre2Q9,
-                          int16_t* outre,
-                          int16_t* outim);
-typedef void (*Spec2Time)(int16_t* inreQ7,
-                          int16_t* inimQ7,
-                          int32_t* outre1Q16,
-                          int32_t* outre2Q16);
-
-extern Time2Spec WebRtcIsacfix_Time2Spec;
-extern Spec2Time WebRtcIsacfix_Spec2Time;
-
-void WebRtcIsacfix_Time2SpecC(int16_t* inre1Q9,
-                              int16_t* inre2Q9,
-                              int16_t* outre,
-                              int16_t* outim);
-void WebRtcIsacfix_Spec2TimeC(int16_t* inreQ7,
-                              int16_t* inimQ7,
-                              int32_t* outre1Q16,
-                              int32_t* outre2Q16);
-
-#if defined(WEBRTC_HAS_NEON)
-void WebRtcIsacfix_Time2SpecNeon(int16_t* inre1Q9,
-                                 int16_t* inre2Q9,
-                                 int16_t* outre,
-                                 int16_t* outim);
-void WebRtcIsacfix_Spec2TimeNeon(int16_t* inreQ7,
-                                 int16_t* inimQ7,
-                                 int32_t* outre1Q16,
-                                 int32_t* outre2Q16);
-#endif
-
-#if defined(MIPS32_LE)
-void WebRtcIsacfix_Time2SpecMIPS(int16_t* inre1Q9,
-                                 int16_t* inre2Q9,
-                                 int16_t* outre,
-                                 int16_t* outim);
-void WebRtcIsacfix_Spec2TimeMIPS(int16_t* inreQ7,
-                                 int16_t* inimQ7,
-                                 int32_t* outre1Q16,
-                                 int32_t* outre2Q16);
-#endif
-
-/* filterbank functions */
-
-void WebRtcIsacfix_SplitAndFilter1(int16_t* in,
-                                   int16_t* LP16,
-                                   int16_t* HP16,
-                                   PreFiltBankstr* prefiltdata);
-
-void WebRtcIsacfix_FilterAndCombine1(int16_t* tempin_ch1,
-                                     int16_t* tempin_ch2,
-                                     int16_t* out16,
-                                     PostFiltBankstr* postfiltdata);
-
-/* normalized lattice filters */
-
-void WebRtcIsacfix_NormLatticeFilterMa(size_t orderCoef,
-                                       int32_t* stateGQ15,
-                                       int16_t* lat_inQ0,
-                                       int16_t* filt_coefQ15,
-                                       int32_t* gain_lo_hiQ17,
-                                       int16_t lo_hi,
-                                       int16_t* lat_outQ9);
-
-void WebRtcIsacfix_NormLatticeFilterAr(size_t orderCoef,
-                                       int16_t* stateGQ0,
-                                       int32_t* lat_inQ25,
-                                       int16_t* filt_coefQ15,
-                                       int32_t* gain_lo_hiQ17,
-                                       int16_t lo_hi,
-                                       int16_t* lat_outQ0);
-
-/* TODO(kma): Remove the following functions into individual header files. */
-
-/* Internal functions in both C and ARM Neon versions */
-
-int WebRtcIsacfix_AutocorrC(int32_t* __restrict r,
-                            const int16_t* __restrict x,
-                            int16_t N,
-                            int16_t order,
-                            int16_t* __restrict scale);
-
-void WebRtcIsacfix_FilterMaLoopC(int16_t input0,
-                                 int16_t input1,
-                                 int32_t input2,
-                                 int32_t* ptr0,
-                                 int32_t* ptr1,
-                                 int32_t* ptr2);
-
-#if defined(WEBRTC_HAS_NEON)
-int WebRtcIsacfix_AutocorrNeon(int32_t* __restrict r,
-                               const int16_t* __restrict x,
-                               int16_t N,
-                               int16_t order,
-                               int16_t* __restrict scale);
-
-void WebRtcIsacfix_FilterMaLoopNeon(int16_t input0,
-                                    int16_t input1,
-                                    int32_t input2,
-                                    int32_t* ptr0,
-                                    int32_t* ptr1,
-                                    int32_t* ptr2);
-#endif
-
-#if defined(MIPS32_LE)
-int WebRtcIsacfix_AutocorrMIPS(int32_t* __restrict r,
-                               const int16_t* __restrict x,
-                               int16_t N,
-                               int16_t order,
-                               int16_t* __restrict scale);
-
-void WebRtcIsacfix_FilterMaLoopMIPS(int16_t input0,
-                                    int16_t input1,
-                                    int32_t input2,
-                                    int32_t* ptr0,
-                                    int32_t* ptr1,
-                                    int32_t* ptr2);
-#endif
-
-/* Function pointers associated with the above functions. */
-
-typedef int (*AutocorrFix)(int32_t* __restrict r,
-                           const int16_t* __restrict x,
-                           int16_t N,
-                           int16_t order,
-                           int16_t* __restrict scale);
-extern AutocorrFix WebRtcIsacfix_AutocorrFix;
-
-typedef void (*FilterMaLoopFix)(int16_t input0,
-                                int16_t input1,
-                                int32_t input2,
-                                int32_t* ptr0,
-                                int32_t* ptr1,
-                                int32_t* ptr2);
-extern FilterMaLoopFix WebRtcIsacfix_FilterMaLoopFix;
-
-#ifdef __cplusplus
-}  // extern "C"
-#endif
-
-#endif /* MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_CODEC_H_ */
diff --git a/modules/audio_coding/codecs/isac/fix/source/decode.c b/modules/audio_coding/codecs/isac/fix/source/decode.c
deleted file mode 100644
index 1442088..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/decode.c
+++ /dev/null
@@ -1,221 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * decode.c
- *
- * This C file contains the internal decoding function.
- *
- */
-
-#include <string.h>
-
-#include "modules/audio_coding/codecs/isac/fix/source/bandwidth_estimator.h"
-#include "modules/audio_coding/codecs/isac/fix/source/codec.h"
-#include "modules/audio_coding/codecs/isac/fix/source/entropy_coding.h"
-#include "modules/audio_coding/codecs/isac/fix/source/pitch_estimator.h"
-#include "modules/audio_coding/codecs/isac/fix/source/settings.h"
-#include "modules/audio_coding/codecs/isac/fix/source/structs.h"
-
-
-
-
-int WebRtcIsacfix_DecodeImpl(int16_t* signal_out16,
-                             IsacFixDecoderInstance* ISACdec_obj,
-                             size_t* current_framesamples)
-{
-  int k;
-  int err;
-  int16_t BWno;
-  int len = 0;
-
-  int16_t model;
-
-
-  int16_t Vector_Word16_1[FRAMESAMPLES/2];
-  int16_t Vector_Word16_2[FRAMESAMPLES/2];
-
-  int32_t Vector_Word32_1[FRAMESAMPLES/2];
-  int32_t Vector_Word32_2[FRAMESAMPLES/2];
-
-  int16_t lofilt_coefQ15[ORDERLO*SUBFRAMES]; //refl. coeffs
-  int16_t hifilt_coefQ15[ORDERHI*SUBFRAMES]; //refl. coeffs
-  int32_t gain_lo_hiQ17[2*SUBFRAMES];
-
-  int16_t PitchLags_Q7[PITCH_SUBFRAMES];
-  int16_t PitchGains_Q12[PITCH_SUBFRAMES];
-  int16_t AvgPitchGain_Q12;
-
-  int16_t tmp_1, tmp_2;
-  int32_t tmp32a;
-  int16_t gainQ13;
-
-
-  size_t frame_nb; /* counter */
-  size_t frame_mode; /* 0 for 30ms, 1 for 60ms */
-  static const size_t kProcessedSamples = 480; /* 480 (for both 30, 60 ms) */
-
-  /* PLC */
-  int16_t overlapWin[ 240 ];
-
-  (ISACdec_obj->bitstr_obj).W_upper = 0xFFFFFFFF;
-  (ISACdec_obj->bitstr_obj).streamval = 0;
-  (ISACdec_obj->bitstr_obj).stream_index = 0;
-  (ISACdec_obj->bitstr_obj).full = 1;
-
-
-  /* decode framelength and BW estimation - not used, only for stream pointer*/
-  err = WebRtcIsacfix_DecodeFrameLen(&ISACdec_obj->bitstr_obj, current_framesamples);
-  if (err<0)  // error check
-    return err;
-
-  frame_mode = *current_framesamples / MAX_FRAMESAMPLES;  /* 0, or 1 */
-
-  err = WebRtcIsacfix_DecodeSendBandwidth(&ISACdec_obj->bitstr_obj, &BWno);
-  if (err<0)  // error check
-    return err;
-
-  /* one loop if it's one frame (30ms), two loops if two frames bundled together
-   * (60ms) */
-  for (frame_nb = 0; frame_nb <= frame_mode; frame_nb++) {
-
-    /* decode & dequantize pitch parameters */
-    err = WebRtcIsacfix_DecodePitchGain(&(ISACdec_obj->bitstr_obj), PitchGains_Q12);
-    if (err<0)  // error check
-      return err;
-
-    err = WebRtcIsacfix_DecodePitchLag(&ISACdec_obj->bitstr_obj, PitchGains_Q12, PitchLags_Q7);
-    if (err<0)  // error check
-      return err;
-
-    AvgPitchGain_Q12 = (int16_t)(((int32_t)PitchGains_Q12[0] + PitchGains_Q12[1] + PitchGains_Q12[2] + PitchGains_Q12[3])>>2);
-
-    /* decode & dequantize FiltCoef */
-    err = WebRtcIsacfix_DecodeLpc(gain_lo_hiQ17, lofilt_coefQ15, hifilt_coefQ15,
-                                  &ISACdec_obj->bitstr_obj, &model);
-
-    if (err<0)  // error check
-      return err;
-
-    /* decode & dequantize spectrum */
-    len = WebRtcIsacfix_DecodeSpec(&ISACdec_obj->bitstr_obj, Vector_Word16_1, Vector_Word16_2, AvgPitchGain_Q12);
-    if (len < 0)  // error check
-      return len;
-
-    // Why does this need Q16 in and out? /JS
-    WebRtcIsacfix_Spec2Time(Vector_Word16_1, Vector_Word16_2, Vector_Word32_1, Vector_Word32_2);
-
-    for (k=0; k<FRAMESAMPLES/2; k++) {
-      // Q16 -> Q9.
-      Vector_Word16_1[k] = (int16_t)((Vector_Word32_1[k] + 64) >> 7);
-    }
-
-    /* ----  If this is recovery frame ---- */
-    if( (ISACdec_obj->plcstr_obj).used == PLC_WAS_USED )
-    {
-      (ISACdec_obj->plcstr_obj).used = PLC_NOT_USED;
-      if( (ISACdec_obj->plcstr_obj).B < 1000 )
-      {
-        (ISACdec_obj->plcstr_obj).decayCoeffPriodic = 4000;
-      }
-
-      ISACdec_obj->plcstr_obj.decayCoeffPriodic = WEBRTC_SPL_WORD16_MAX;    /* DECAY_RATE is in Q15 */
-      ISACdec_obj->plcstr_obj.decayCoeffNoise = WEBRTC_SPL_WORD16_MAX;    /* DECAY_RATE is in Q15 */
-      ISACdec_obj->plcstr_obj.pitchCycles = 0;
-
-      PitchGains_Q12[0] = (int16_t)(PitchGains_Q12[0] * 700 >> 10);
-
-      /* ---- Add-overlap ---- */
-      WebRtcSpl_GetHanningWindow( overlapWin, RECOVERY_OVERLAP );
-      for( k = 0; k < RECOVERY_OVERLAP; k++ )
-        Vector_Word16_1[k] = WebRtcSpl_AddSatW16(
-            (int16_t)(ISACdec_obj->plcstr_obj.overlapLP[k] *
-                overlapWin[RECOVERY_OVERLAP - k - 1] >> 14),
-            (int16_t)(Vector_Word16_1[k] * overlapWin[k] >> 14));
-
-
-
-    }
-
-    /* --- Store side info --- */
-    if( frame_nb == frame_mode )
-    {
-      /* --- LPC info */
-      WEBRTC_SPL_MEMCPY_W16( (ISACdec_obj->plcstr_obj).lofilt_coefQ15, &lofilt_coefQ15[(SUBFRAMES-1)*ORDERLO], ORDERLO );
-      WEBRTC_SPL_MEMCPY_W16( (ISACdec_obj->plcstr_obj).hifilt_coefQ15, &hifilt_coefQ15[(SUBFRAMES-1)*ORDERHI], ORDERHI );
-      (ISACdec_obj->plcstr_obj).gain_lo_hiQ17[0] = gain_lo_hiQ17[(SUBFRAMES-1) * 2];
-      (ISACdec_obj->plcstr_obj).gain_lo_hiQ17[1] = gain_lo_hiQ17[(SUBFRAMES-1) * 2 + 1];
-
-      /* --- LTP info */
-      (ISACdec_obj->plcstr_obj).AvgPitchGain_Q12 = PitchGains_Q12[3];
-      (ISACdec_obj->plcstr_obj).lastPitchGain_Q12 = PitchGains_Q12[3];
-      (ISACdec_obj->plcstr_obj).lastPitchLag_Q7 = PitchLags_Q7[3];
-
-      if( PitchLags_Q7[3] < 3000 )
-        (ISACdec_obj->plcstr_obj).lastPitchLag_Q7 += PitchLags_Q7[3];
-
-      WEBRTC_SPL_MEMCPY_W16( (ISACdec_obj->plcstr_obj).prevPitchInvIn, Vector_Word16_1, FRAMESAMPLES/2 );
-
-    }
-    /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
-
-    /* inverse pitch filter */
-    WebRtcIsacfix_PitchFilter(Vector_Word16_1, Vector_Word16_2, &ISACdec_obj->pitchfiltstr_obj, PitchLags_Q7, PitchGains_Q12, 4);
-
-    if( frame_nb == frame_mode )
-    {
-      WEBRTC_SPL_MEMCPY_W16( (ISACdec_obj->plcstr_obj).prevPitchInvOut, &(Vector_Word16_2[FRAMESAMPLES/2 - (PITCH_MAX_LAG + 10)]), PITCH_MAX_LAG );
-    }
-
-
-    /* reduce gain to compensate for pitch enhancer */
-    /* gain = 1.0f - 0.45f * AvgPitchGain; */
-    tmp32a = AvgPitchGain_Q12 * 29;  // Q18
-    gainQ13 = (int16_t)((262144 - tmp32a) >> 5);  // Q18 -> Q13.
-
-    for (k = 0; k < FRAMESAMPLES/2; k++)
-    {
-      Vector_Word32_1[k] = (Vector_Word16_2[k] * gainQ13) * (1 << 3);  // Q25
-    }
-
-
-    /* perceptual post-filtering (using normalized lattice filter) */
-    WebRtcIsacfix_NormLatticeFilterAr(ORDERLO, (ISACdec_obj->maskfiltstr_obj).PostStateLoGQ0,
-                                      Vector_Word32_1, lofilt_coefQ15, gain_lo_hiQ17, 0, Vector_Word16_1);
-
-    /* --- Store Highpass Residual --- */
-    for (k = 0; k < FRAMESAMPLES/2; k++)
-      Vector_Word32_1[k] = Vector_Word32_2[k] * (1 << 9);  // Q16 -> Q25
-
-    for( k = 0; k < PITCH_MAX_LAG + 10; k++ )
-      (ISACdec_obj->plcstr_obj).prevHP[k] = Vector_Word32_1[FRAMESAMPLES/2 - (PITCH_MAX_LAG + 10) + k];
-
-
-    WebRtcIsacfix_NormLatticeFilterAr(ORDERHI, (ISACdec_obj->maskfiltstr_obj).PostStateHiGQ0,
-                                      Vector_Word32_1, hifilt_coefQ15, gain_lo_hiQ17, 1, Vector_Word16_2);
-
-    /* recombine the 2 bands */
-
-    /* Form the polyphase signals, and compensate for DC offset */
-    for (k=0;k<FRAMESAMPLES/2;k++) {
-      tmp_1 = (int16_t)WebRtcSpl_SatW32ToW16(((int32_t)Vector_Word16_1[k]+Vector_Word16_2[k] + 1)); /* Construct a new upper channel signal*/
-      tmp_2 = (int16_t)WebRtcSpl_SatW32ToW16(((int32_t)Vector_Word16_1[k]-Vector_Word16_2[k])); /* Construct a new lower channel signal*/
-      Vector_Word16_1[k] = tmp_1;
-      Vector_Word16_2[k] = tmp_2;
-    }
-
-    WebRtcIsacfix_FilterAndCombine1(Vector_Word16_1,
-                                    Vector_Word16_2,
-                                    signal_out16 + frame_nb * kProcessedSamples,
-                                    &ISACdec_obj->postfiltbankstr_obj);
-
-  }
-  return len;
-}
diff --git a/modules/audio_coding/codecs/isac/fix/source/decode_bwe.c b/modules/audio_coding/codecs/isac/fix/source/decode_bwe.c
deleted file mode 100644
index 9967650..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/decode_bwe.c
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * decode_bwe.c
- *
- * This C file contains the internal decode bandwidth estimate function.
- *
- */
-
-
-#include "modules/audio_coding/codecs/isac/fix/source/bandwidth_estimator.h"
-#include "modules/audio_coding/codecs/isac/fix/source/codec.h"
-#include "modules/audio_coding/codecs/isac/fix/source/entropy_coding.h"
-#include "modules/audio_coding/codecs/isac/fix/source/structs.h"
-
-
-
-
-int WebRtcIsacfix_EstimateBandwidth(BwEstimatorstr *bwest_str,
-                                    Bitstr_dec  *streamdata,
-                                    size_t packet_size,
-                                    uint16_t rtp_seq_number,
-                                    uint32_t send_ts,
-                                    uint32_t arr_ts)
-{
-  int16_t index;
-  size_t frame_samples;
-  int err;
-
-  /* decode framelength */
-  err = WebRtcIsacfix_DecodeFrameLen(streamdata, &frame_samples);
-  /* error check */
-  if (err<0) {
-    return err;
-  }
-
-  /* decode BW estimation */
-  err = WebRtcIsacfix_DecodeSendBandwidth(streamdata, &index);
-  /* error check */
-  if (err<0) {
-    return err;
-  }
-
-  /* Update BWE with received data */
-  err = WebRtcIsacfix_UpdateUplinkBwImpl(
-      bwest_str,
-      rtp_seq_number,
-      (int16_t)(frame_samples * 1000 / FS),
-      send_ts,
-      arr_ts,
-      packet_size,  /* in bytes */
-      index);
-
-  /* error check */
-  if (err<0) {
-    return err;
-  }
-
-  /* Succesful */
-  return 0;
-}
diff --git a/modules/audio_coding/codecs/isac/fix/source/decode_plc.c b/modules/audio_coding/codecs/isac/fix/source/decode_plc.c
deleted file mode 100644
index 873cf95..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/decode_plc.c
+++ /dev/null
@@ -1,805 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * decode_plc.c
- *
- * Packet Loss Concealment.
- *
- */
-
-#include <string.h>
-
-#include "modules/audio_coding/codecs/isac/fix/source/settings.h"
-#include "modules/audio_coding/codecs/isac/fix/source/entropy_coding.h"
-#include "modules/audio_coding/codecs/isac/fix/source/pitch_estimator.h"
-#include "modules/audio_coding/codecs/isac/fix/source/bandwidth_estimator.h"
-#include "modules/audio_coding/codecs/isac/fix/source/structs.h"
-#include "modules/audio_coding/codecs/isac/fix/source/codec.h"
-
-
-#define NO_OF_PRIMES 8
-#define NOISE_FILTER_LEN 30
-
-/*
- * function to decode the bitstream
- * returns the total number of bytes in the stream
- */
-
-static int16_t plc_filterma_Fast(
-    int16_t *In,  /* (i)   Vector to be filtered. InOut[-orderCoef+1]
-                           to InOut[-1] contains state */
-    int16_t *Out,  /* (o)   Filtered vector */
-    int16_t *B,   /* (i)   The filter coefficients (in Q0) */
-    int16_t Blen,  /* (i)   Number of B coefficients */
-    int16_t len,   /* (i)  Number of samples to be filtered */
-    int16_t reduceDecay,
-    int16_t decay,
-    int16_t rshift )
-{
-  int i, j;
-  int32_t o;
-  int32_t lim = (1 << (15 + rshift)) - 1;
-
-  for (i = 0; i < len; i++)
-  {
-    const int16_t *b_ptr = &B[0];
-    const int16_t *x_ptr = &In[i];
-
-    o = (int32_t)0;
-
-    for (j = 0;j < Blen; j++)
-    {
-      o = WebRtcSpl_AddSatW32(o, *b_ptr * *x_ptr);
-      b_ptr++;
-      x_ptr--;
-    }
-
-    /* to round off correctly */
-    o = WebRtcSpl_AddSatW32(o, 1 << (rshift - 1));
-
-    /* saturate according to the domain of the filter coefficients */
-    o = WEBRTC_SPL_SAT((int32_t)lim, o, (int32_t)-lim);
-
-    /* o should be in the range of int16_t */
-    o >>= rshift;
-
-    /* decay the output signal; this is specific to plc */
-    *Out++ = (int16_t)((int16_t)o * decay >> 15);
-
-    /* change the decay */
-    decay -= reduceDecay;
-    if( decay < 0 )
-      decay = 0;
-  }
-  return( decay );
-}
-
-
-
-
-
-
-
-
-static __inline int32_t log2_Q8_T( uint32_t x ) {
-
-  int32_t zeros;
-  int16_t frac;
-
-  zeros=WebRtcSpl_NormU32(x);
-  frac = (int16_t)(((x << zeros) & 0x7FFFFFFF) >> 23);
-
-  /* log2(magn(i)) */
-  return ((31 - zeros) << 8) + frac;
-}
-
-static __inline int16_t  exp2_Q10_T(int16_t x) { // Both in and out in Q10
-
-  int16_t tmp16_1, tmp16_2;
-
-  tmp16_2=(int16_t)(0x0400|(x&0x03FF));
-  tmp16_1 = -(x >> 10);
-  if(tmp16_1>0)
-    return tmp16_2 >> tmp16_1;
-  else
-    return tmp16_2 << -tmp16_1;
-
-}
-
-
-/*
-  This is a fixed-point version of the above code with limLow = 700 and limHigh = 5000,
-  hard-coded. The values 700 and 5000 were experimentally obtained.
-
-  The function implements membership values for two sets. The mebership functions are
-  of second orders corresponding to half-bell-shapped pulses.
-*/
-static void MemshipValQ15( int16_t in, int16_t *A, int16_t *B )
-{
-  int16_t x;
-
-  in -= 700;    /* translate the lowLim to 0, limHigh = 5000 - 700, M = 2150 */
-
-  if( in <= 2150 )
-  {
-    if( in > 0 )
-    {
-      /* b = in^2 / (2 * M^2), a = 1 - b in Q0.
-         We have to compute in Q15 */
-
-      /* x = in / 2150 {in Q15} = x * 15.2409 {in Q15} =
-         x*15 + (x*983)/(2^12); note that 983/2^12 = 0.23999     */
-
-      /* we are sure that x is in the range of int16_t            */
-      x = (int16_t)(in * 15 + (in * 983 >> 12));
-      /* b = x^2 / 2 {in Q15} so a shift of 16 is required to
-         be in correct domain and one more for the division by 2 */
-      *B = (int16_t)((x * x + 0x00010000) >> 17);
-      *A = WEBRTC_SPL_WORD16_MAX - *B;
-    }
-    else
-    {
-      *B = 0;
-      *A = WEBRTC_SPL_WORD16_MAX;
-    }
-  }
-  else
-  {
-    if( in < 4300 )
-    {
-      /* This is a mirror case of the above */
-      in = 4300 - in;
-      x = (int16_t)(in * 15 + (in * 983 >> 12));
-      /* b = x^2 / 2 {in Q15} so a shift of 16 is required to
-         be in correct domain and one more for the division by 2 */
-      *A = (int16_t)((x * x + 0x00010000) >> 17);
-      *B = WEBRTC_SPL_WORD16_MAX - *A;
-
-    }
-    else
-    {
-      *A = 0;
-      *B = WEBRTC_SPL_WORD16_MAX;
-    }
-  }
-}
-
-
-
-
-static void LinearResampler(int16_t* in,
-                            int16_t* out,
-                            size_t lenIn,
-                            size_t lenOut)
-{
-  size_t n = (lenIn - 1) * RESAMP_RES;
-  int16_t resOut, relativePos, diff; /* */
-  size_t i, j;
-  uint16_t udiff;
-
-  if( lenIn == lenOut )
-  {
-    WEBRTC_SPL_MEMCPY_W16( out, in, lenIn );
-    return;
-  }
-
-  resOut = WebRtcSpl_DivW32W16ResW16( (int32_t)n, (int16_t)(lenOut-1) );
-
-  out[0] = in[0];
-  for( i = 1, j = 0, relativePos = 0; i < lenOut; i++ )
-  {
-
-    relativePos += resOut;
-    while( relativePos > RESAMP_RES )
-    {
-      j++;
-      relativePos -= RESAMP_RES;
-    }
-
-
-    /* an overflow may happen and the differce in sample values may
-     * require more than 16 bits. We like to avoid 32 bit arithmatic
-     * as much as possible */
-
-    if( (in[ j ] > 0) && (in[j + 1] < 0) )
-    {
-      udiff = (uint16_t)(in[ j ] - in[j + 1]);
-      out[ i ] = in[ j ] - (uint16_t)( ((int32_t)( udiff * relativePos )) >> RESAMP_RES_BIT);
-    }
-    else
-    {
-      if( (in[j] < 0) && (in[j+1] > 0) )
-      {
-        udiff = (uint16_t)( in[j + 1] - in[ j ] );
-        out[ i ] = in[ j ] + (uint16_t)( ((int32_t)( udiff * relativePos )) >> RESAMP_RES_BIT);
-      }
-      else
-      {
-        diff = in[ j + 1 ] - in[ j ];
-        out[i] = in[j] + (int16_t)(diff * relativePos >> RESAMP_RES_BIT);
-      }
-    }
-  }
-}
-
-
-
-
-
-void WebRtcIsacfix_DecodePlcImpl(int16_t *signal_out16,
-                                 IsacFixDecoderInstance *ISACdec_obj,
-                                 size_t *current_framesamples )
-{
-  int subframecnt;
-
-  int16_t* Vector_Word16_1;
-  int16_t  Vector_Word16_Extended_1[FRAMESAMPLES_HALF + NOISE_FILTER_LEN];
-  int16_t* Vector_Word16_2;
-  int16_t  Vector_Word16_Extended_2[FRAMESAMPLES_HALF + NOISE_FILTER_LEN];
-
-  int32_t Vector_Word32_1[FRAMESAMPLES_HALF];
-  int32_t Vector_Word32_2[FRAMESAMPLES_HALF];
-
-  int16_t lofilt_coefQ15[ORDERLO*SUBFRAMES]; //refl. coeffs
-  int16_t hifilt_coefQ15[ORDERHI*SUBFRAMES]; //refl. coeffs
-
-  int16_t pitchLags_Q7[PITCH_SUBFRAMES];
-  int16_t pitchGains_Q12[PITCH_SUBFRAMES];
-
-  int16_t tmp_1, tmp_2;
-  int32_t tmp32a, tmp32b;
-  int16_t gainQ13;
-
-  int16_t myDecayRate;
-
-  /* ---------- PLC variables ------------ */
-  size_t lag0, i, k;
-  int16_t noiseIndex;
-  int16_t stretchPitchLP[PITCH_MAX_LAG + 10], stretchPitchLP1[PITCH_MAX_LAG + 10];
-
-  int32_t gain_lo_hiQ17[2*SUBFRAMES];
-
-  int16_t nLP, pLP, wNoisyLP, wPriodicLP, tmp16;
-  size_t minIdx;
-  int32_t nHP, pHP, wNoisyHP, wPriodicHP, corr, minCorr, maxCoeff;
-  int16_t noise1, rshift;
-
-
-  int16_t ltpGain, pitchGain, myVoiceIndicator, myAbs, maxAbs;
-  int32_t varIn, varOut, logVarIn, logVarOut, Q, logMaxAbs;
-  int rightShiftIn, rightShiftOut;
-
-
-  /* ------------------------------------- */
-
-
-  myDecayRate = (DECAY_RATE);
-  Vector_Word16_1 = &Vector_Word16_Extended_1[NOISE_FILTER_LEN];
-  Vector_Word16_2 = &Vector_Word16_Extended_2[NOISE_FILTER_LEN];
-
-
-  /* ----- Simply Copy Previous LPC parameters ------ */
-  for( subframecnt = 0; subframecnt < SUBFRAMES; subframecnt++ )
-  {
-    /* lower Band */
-    WEBRTC_SPL_MEMCPY_W16(&lofilt_coefQ15[ subframecnt * ORDERLO ],
-                          (ISACdec_obj->plcstr_obj).lofilt_coefQ15, ORDERLO);
-    gain_lo_hiQ17[2*subframecnt] = (ISACdec_obj->plcstr_obj).gain_lo_hiQ17[0];
-
-    /* Upper Band */
-    WEBRTC_SPL_MEMCPY_W16(&hifilt_coefQ15[ subframecnt * ORDERHI ],
-                          (ISACdec_obj->plcstr_obj).hifilt_coefQ15, ORDERHI);
-    gain_lo_hiQ17[2*subframecnt + 1] = (ISACdec_obj->plcstr_obj).gain_lo_hiQ17[1];
-  }
-
-
-
-
-  lag0 = (size_t)(((ISACdec_obj->plcstr_obj.lastPitchLag_Q7 + 64) >> 7) + 1);
-
-
-  if( (ISACdec_obj->plcstr_obj).used != PLC_WAS_USED )
-  {
-    (ISACdec_obj->plcstr_obj).pitchCycles = 0;
-
-    (ISACdec_obj->plcstr_obj).lastPitchLP =
-        &((ISACdec_obj->plcstr_obj).prevPitchInvIn[FRAMESAMPLES_HALF - lag0]);
-    minCorr = WEBRTC_SPL_WORD32_MAX;
-
-    if ((FRAMESAMPLES_HALF - 10) > 2 * lag0)
-    {
-      minIdx = 11;
-      for( i = 0; i < 21; i++ )
-      {
-        corr = 0;
-        for( k = 0; k < lag0; k++ )
-        {
-          corr = WebRtcSpl_AddSatW32(corr, WEBRTC_SPL_ABS_W32(
-              WebRtcSpl_SubSatW16(
-                  (ISACdec_obj->plcstr_obj).lastPitchLP[k],
-                  (ISACdec_obj->plcstr_obj).prevPitchInvIn[
-                      FRAMESAMPLES_HALF - 2*lag0 - 10 + i + k ] ) ) );
-        }
-        if( corr < minCorr )
-        {
-          minCorr = corr;
-          minIdx = i;
-        }
-      }
-      (ISACdec_obj->plcstr_obj).prevPitchLP =
-          &( (ISACdec_obj->plcstr_obj).prevPitchInvIn[
-              FRAMESAMPLES_HALF - lag0*2 - 10 + minIdx] );
-    }
-    else
-    {
-      (ISACdec_obj->plcstr_obj).prevPitchLP =
-          (ISACdec_obj->plcstr_obj).lastPitchLP;
-    }
-    pitchGain = (ISACdec_obj->plcstr_obj).lastPitchGain_Q12;
-
-    WebRtcSpl_AutoCorrelation(
-        &(ISACdec_obj->plcstr_obj).prevPitchInvIn[FRAMESAMPLES_HALF - lag0],
-        lag0, 0, &varIn, &rightShiftIn);
-    WebRtcSpl_AutoCorrelation(
-        &(ISACdec_obj->plcstr_obj).prevPitchInvOut[PITCH_MAX_LAG + 10 - lag0],
-        lag0, 0, &varOut, &rightShiftOut);
-
-    maxAbs = 0;
-    for( i = 0; i< lag0; i++)
-    {
-      myAbs = WEBRTC_SPL_ABS_W16(
-          (ISACdec_obj->plcstr_obj).prevPitchInvOut[
-              PITCH_MAX_LAG + 10 - lag0 + i] );
-      maxAbs = (myAbs > maxAbs)? myAbs:maxAbs;
-    }
-    logVarIn = log2_Q8_T( (uint32_t)( varIn ) ) +
-        (int32_t)(rightShiftIn << 8);
-    logVarOut = log2_Q8_T( (uint32_t)( varOut ) ) +
-        (int32_t)(rightShiftOut << 8);
-    logMaxAbs = log2_Q8_T( (uint32_t)( maxAbs ) );
-
-    ltpGain = (int16_t)(logVarOut - logVarIn);
-    Q = 2 * logMaxAbs - ( logVarOut - 1512 );
-
-    /*
-     * ---
-     * We are computing sqrt( (VarIn/lag0) / var( noise ) )
-     * var( noise ) is almost 256. we have already computed log2( VarIn ) in Q8
-     * so we actually compute 2^( 0.5*(log2( VarIn ) - log2( lag0 ) - log2( var(noise ) )  ).
-     * Note that put log function is in Q8 but the exponential function is in Q10.
-     * --
-     */
-
-    logVarIn -= log2_Q8_T( (uint32_t)( lag0 ) );
-    tmp16 = (int16_t)((logVarIn<<1) - (4<<10) );
-    rightShiftIn = 0;
-    if( tmp16 > 4096 )
-    {
-      tmp16 -= 4096;
-      tmp16 = exp2_Q10_T( tmp16 );
-      tmp16 >>= 6;
-    }
-    else
-      tmp16 = exp2_Q10_T( tmp16 )>>10;
-
-    (ISACdec_obj->plcstr_obj).std = tmp16 - 4;
-
-    if( (ltpGain < 110) || (ltpGain > 230) )
-    {
-      if( ltpGain < 100 && (pitchGain < 1800) )
-      {
-        (ISACdec_obj->plcstr_obj).A = WEBRTC_SPL_WORD16_MAX;
-      }
-      else
-      {
-        (ISACdec_obj->plcstr_obj).A = ((ltpGain < 110) && (Q < 800)
-                                       )? WEBRTC_SPL_WORD16_MAX:0;
-      }
-      (ISACdec_obj->plcstr_obj).B = WEBRTC_SPL_WORD16_MAX -
-          (ISACdec_obj->plcstr_obj).A;
-    }
-    else
-    {
-      if( (pitchGain < 450) || (pitchGain > 1600) )
-      {
-        (ISACdec_obj->plcstr_obj).A = ((pitchGain < 450)
-                                       )? WEBRTC_SPL_WORD16_MAX:0;
-        (ISACdec_obj->plcstr_obj).B = WEBRTC_SPL_WORD16_MAX -
-            (ISACdec_obj->plcstr_obj).A;
-      }
-      else
-      {
-        myVoiceIndicator = ltpGain * 2 + pitchGain;
-        MemshipValQ15( myVoiceIndicator,
-                       &(ISACdec_obj->plcstr_obj).A, &(ISACdec_obj->plcstr_obj).B );
-      }
-    }
-
-
-
-    myVoiceIndicator = ltpGain * 16 + pitchGain * 2 + (pitchGain >> 8);
-    MemshipValQ15( myVoiceIndicator,
-                   &(ISACdec_obj->plcstr_obj).A, &(ISACdec_obj->plcstr_obj).B );
-
-
-
-    (ISACdec_obj->plcstr_obj).stretchLag = lag0;
-    (ISACdec_obj->plcstr_obj).pitchIndex = 0;
-
-  }
-  else
-  {
-    myDecayRate = (DECAY_RATE<<2);
-  }
-
-  if( (ISACdec_obj->plcstr_obj).B < 1000 )
-  {
-    myDecayRate += (DECAY_RATE<<3);
-  }
-
-  /* ------------ reconstructing the residual signal ------------------ */
-
-  LinearResampler( (ISACdec_obj->plcstr_obj).lastPitchLP,
-                   stretchPitchLP, lag0, (ISACdec_obj->plcstr_obj).stretchLag );
-  /* inverse pitch filter */
-
-  pitchLags_Q7[0] = pitchLags_Q7[1] = pitchLags_Q7[2] = pitchLags_Q7[3] =
-      (int16_t)((ISACdec_obj->plcstr_obj).stretchLag<<7);
-  pitchGains_Q12[3] = ( (ISACdec_obj->plcstr_obj).lastPitchGain_Q12);
-  pitchGains_Q12[2] = (int16_t)(pitchGains_Q12[3] * 1010 >> 10);
-  pitchGains_Q12[1] = (int16_t)(pitchGains_Q12[2] * 1010 >> 10);
-  pitchGains_Q12[0] = (int16_t)(pitchGains_Q12[1] * 1010 >> 10);
-
-
-  /* most of the time either B or A are zero so seperating */
-  if( (ISACdec_obj->plcstr_obj).B == 0 )
-  {
-    for( i = 0; i < FRAMESAMPLES_HALF; i++ )
-    {
-      /* --- Low Pass                                             */
-      (ISACdec_obj->plcstr_obj).seed = WEBRTC_SPL_RAND(
-          (ISACdec_obj->plcstr_obj).seed );
-      Vector_Word16_1[i] = (ISACdec_obj->plcstr_obj.seed >> 10) - 16;
-
-      /* --- Highpass                                              */
-      (ISACdec_obj->plcstr_obj).seed = WEBRTC_SPL_RAND(
-          (ISACdec_obj->plcstr_obj).seed );
-      Vector_Word16_2[i] = (ISACdec_obj->plcstr_obj.seed >> 10) - 16;
-
-    }
-    for( i = 1; i < NOISE_FILTER_LEN; i++ )
-    {
-      (ISACdec_obj->plcstr_obj).seed = WEBRTC_SPL_RAND(
-          (ISACdec_obj->plcstr_obj).seed );
-      Vector_Word16_Extended_1[i] = (ISACdec_obj->plcstr_obj.seed >> 10) - 16;
-
-      (ISACdec_obj->plcstr_obj).seed = WEBRTC_SPL_RAND(
-          (ISACdec_obj->plcstr_obj).seed );
-      Vector_Word16_Extended_2[i] = (ISACdec_obj->plcstr_obj.seed >> 10) - 16;
-    }
-    plc_filterma_Fast(Vector_Word16_1, Vector_Word16_Extended_1,
-                      &(ISACdec_obj->plcstr_obj).prevPitchInvIn[FRAMESAMPLES_HALF -
-                                                                NOISE_FILTER_LEN], (int16_t) NOISE_FILTER_LEN,
-                      (int16_t) FRAMESAMPLES_HALF, (int16_t)(5),
-                      (ISACdec_obj->plcstr_obj).decayCoeffNoise, (int16_t)(6));
-
-    maxCoeff = WebRtcSpl_MaxAbsValueW32(
-        &(ISACdec_obj->plcstr_obj).prevHP[
-            PITCH_MAX_LAG + 10 - NOISE_FILTER_LEN], NOISE_FILTER_LEN );
-
-    rshift = 0;
-    while( maxCoeff > WEBRTC_SPL_WORD16_MAX )
-    {
-      maxCoeff >>= 1;
-      rshift++;
-    }
-    for( i = 0; i < NOISE_FILTER_LEN; i++ ) {
-      Vector_Word16_1[FRAMESAMPLES_HALF - NOISE_FILTER_LEN + i] =(int16_t)(
-          ISACdec_obj->plcstr_obj.prevHP[PITCH_MAX_LAG + 10 - NOISE_FILTER_LEN +
-                                         i] >> rshift);
-    }
-    (ISACdec_obj->plcstr_obj).decayCoeffNoise = plc_filterma_Fast(
-        Vector_Word16_2,
-        Vector_Word16_Extended_2,
-        &Vector_Word16_1[FRAMESAMPLES_HALF - NOISE_FILTER_LEN],
-        (int16_t) NOISE_FILTER_LEN,
-        (int16_t) FRAMESAMPLES_HALF,
-        (int16_t) (5),
-        (ISACdec_obj->plcstr_obj).decayCoeffNoise,
-        (int16_t) (7) );
-
-    for( i = 0; i < FRAMESAMPLES_HALF; i++ )
-      Vector_Word32_2[i] = Vector_Word16_Extended_2[i] << rshift;
-
-    Vector_Word16_1 = Vector_Word16_Extended_1;
-  }
-  else
-  {
-    if( (ISACdec_obj->plcstr_obj).A == 0 )
-    {
-      /* ------ Periodic Vector ---                                */
-      for( i = 0, noiseIndex = 0; i < FRAMESAMPLES_HALF; i++, noiseIndex++ )
-      {
-        /* --- Lowpass                                               */
-        pLP = (int16_t)(stretchPitchLP[ISACdec_obj->plcstr_obj.pitchIndex] *
-            ISACdec_obj->plcstr_obj.decayCoeffPriodic >> 15);
-
-        /* --- Highpass                                              */
-        pHP = (int32_t)WEBRTC_SPL_MUL_16_32_RSFT15(
-            (ISACdec_obj->plcstr_obj).decayCoeffPriodic,
-            (ISACdec_obj->plcstr_obj).prevHP[PITCH_MAX_LAG + 10 -
-                                             (ISACdec_obj->plcstr_obj).stretchLag +
-                                             (ISACdec_obj->plcstr_obj).pitchIndex] );
-
-        /* --- lower the muliplier (more decay at next sample) --- */
-        (ISACdec_obj->plcstr_obj).decayCoeffPriodic -= (myDecayRate);
-        if( (ISACdec_obj->plcstr_obj).decayCoeffPriodic < 0 )
-          (ISACdec_obj->plcstr_obj).decayCoeffPriodic = 0;
-
-        (ISACdec_obj->plcstr_obj).pitchIndex++;
-
-        if( (ISACdec_obj->plcstr_obj).pitchIndex ==
-            (ISACdec_obj->plcstr_obj).stretchLag )
-        {
-          (ISACdec_obj->plcstr_obj).pitchIndex = 0;
-          (ISACdec_obj->plcstr_obj).pitchCycles++;
-
-          if( (ISACdec_obj->plcstr_obj).stretchLag != (lag0 + 1) )
-          {
-            (ISACdec_obj->plcstr_obj).stretchLag = lag0 + 1;
-          }
-          else
-          {
-            (ISACdec_obj->plcstr_obj).stretchLag = lag0;
-          }
-
-          (ISACdec_obj->plcstr_obj).stretchLag = (
-              (ISACdec_obj->plcstr_obj).stretchLag > PITCH_MAX_LAG
-                                                  )? (PITCH_MAX_LAG):(ISACdec_obj->plcstr_obj).stretchLag;
-
-          LinearResampler( (ISACdec_obj->plcstr_obj).lastPitchLP,
-                           stretchPitchLP, lag0, (ISACdec_obj->plcstr_obj).stretchLag );
-
-          LinearResampler( (ISACdec_obj->plcstr_obj).prevPitchLP,
-                           stretchPitchLP1, lag0, (ISACdec_obj->plcstr_obj).stretchLag );
-
-          switch( (ISACdec_obj->plcstr_obj).pitchCycles )
-          {
-            case 1:
-              {
-                for( k=0; k<(ISACdec_obj->plcstr_obj).stretchLag; k++ )
-                {
-                  stretchPitchLP[k] = (int16_t)((
-                      (int32_t)stretchPitchLP[k]* 3 +
-                      (int32_t)stretchPitchLP1[k])>>2);
-                }
-                break;
-              }
-            case 2:
-              {
-                for( k=0; k<(ISACdec_obj->plcstr_obj).stretchLag; k++ )
-                {
-                  stretchPitchLP[k] = (int16_t)((
-                      (int32_t)stretchPitchLP[k] +
-                      (int32_t)stretchPitchLP1[k] )>>1);
-                }
-                break;
-              }
-            case 3:
-              {
-                for( k=0; k<(ISACdec_obj->plcstr_obj).stretchLag; k++ )
-                {
-                  stretchPitchLP[k] = (int16_t)((stretchPitchLP[k] +
-                                                       (int32_t)stretchPitchLP1[k]*3 )>>2);
-                }
-                break;
-              }
-          }
-
-          if( (ISACdec_obj->plcstr_obj).pitchCycles == 3 )
-          {
-            myDecayRate += 35; //(myDecayRate>>1);
-            (ISACdec_obj->plcstr_obj).pitchCycles = 0;
-          }
-
-        }
-
-        /* ------ Sum the noisy and periodic signals  ------ */
-        Vector_Word16_1[i] = pLP;
-        Vector_Word32_2[i] = pHP;
-      }
-    }
-    else
-    {
-      for( i = 0, noiseIndex = 0; i < FRAMESAMPLES_HALF; i++, noiseIndex++ )
-      {
-
-        (ISACdec_obj->plcstr_obj).seed = WEBRTC_SPL_RAND(
-            (ISACdec_obj->plcstr_obj).seed );
-
-        noise1 = (ISACdec_obj->plcstr_obj.seed >> 10) - 16;
-
-        nLP = (int16_t)((int16_t)(noise1 * ISACdec_obj->plcstr_obj.std) *
-            ISACdec_obj->plcstr_obj.decayCoeffNoise >> 15);
-
-        /* --- Highpass                                              */
-        (ISACdec_obj->plcstr_obj).seed = WEBRTC_SPL_RAND(
-            (ISACdec_obj->plcstr_obj).seed );
-        noise1 = (ISACdec_obj->plcstr_obj.seed >> 11) - 8;
-
-        nHP = (int32_t)WEBRTC_SPL_MUL_16_32_RSFT15(
-            (ISACdec_obj->plcstr_obj).decayCoeffNoise,
-            (int32_t)(noise1*(ISACdec_obj->plcstr_obj).std) );
-
-        /* --- lower the muliplier (more decay at next sample) --- */
-        (ISACdec_obj->plcstr_obj).decayCoeffNoise -= (myDecayRate);
-        if( (ISACdec_obj->plcstr_obj).decayCoeffNoise < 0 )
-          (ISACdec_obj->plcstr_obj).decayCoeffNoise = 0;
-
-        /* ------ Periodic Vector ---                                */
-        /* --- Lowpass                                               */
-        pLP = (int16_t)(stretchPitchLP[ISACdec_obj->plcstr_obj.pitchIndex] *
-            ISACdec_obj->plcstr_obj.decayCoeffPriodic >> 15);
-
-        /* --- Highpass                                              */
-        pHP = (int32_t)WEBRTC_SPL_MUL_16_32_RSFT15(
-            (ISACdec_obj->plcstr_obj).decayCoeffPriodic,
-            (ISACdec_obj->plcstr_obj).prevHP[PITCH_MAX_LAG + 10 -
-                                             (ISACdec_obj->plcstr_obj).stretchLag +
-                                             (ISACdec_obj->plcstr_obj).pitchIndex] );
-
-        /* --- lower the muliplier (more decay at next sample) --- */
-        (ISACdec_obj->plcstr_obj).decayCoeffPriodic -= (myDecayRate);
-        if( (ISACdec_obj->plcstr_obj).decayCoeffPriodic < 0 )
-        {
-          (ISACdec_obj->plcstr_obj).decayCoeffPriodic = 0;
-        }
-
-        /* ------ Weighting the noisy and periodic vectors -------   */
-        wNoisyLP = (int16_t)(ISACdec_obj->plcstr_obj.A * nLP >> 15);
-        wNoisyHP = (int32_t)(WEBRTC_SPL_MUL_16_32_RSFT15(
-            (ISACdec_obj->plcstr_obj).A, (nHP) ) );
-
-        wPriodicLP = (int16_t)(ISACdec_obj->plcstr_obj.B * pLP >> 15);
-        wPriodicHP = (int32_t)(WEBRTC_SPL_MUL_16_32_RSFT15(
-            (ISACdec_obj->plcstr_obj).B, pHP));
-
-        (ISACdec_obj->plcstr_obj).pitchIndex++;
-
-        if((ISACdec_obj->plcstr_obj).pitchIndex ==
-           (ISACdec_obj->plcstr_obj).stretchLag)
-        {
-          (ISACdec_obj->plcstr_obj).pitchIndex = 0;
-          (ISACdec_obj->plcstr_obj).pitchCycles++;
-
-          if( (ISACdec_obj->plcstr_obj).stretchLag != (lag0 + 1) )
-            (ISACdec_obj->plcstr_obj).stretchLag = lag0 + 1;
-          else
-            (ISACdec_obj->plcstr_obj).stretchLag = lag0;
-
-          (ISACdec_obj->plcstr_obj).stretchLag = (
-              (ISACdec_obj->plcstr_obj).stretchLag > PITCH_MAX_LAG
-                                                  )? (PITCH_MAX_LAG):(ISACdec_obj->plcstr_obj).stretchLag;
-          LinearResampler(
-              (ISACdec_obj->plcstr_obj).lastPitchLP,
-              stretchPitchLP, lag0, (ISACdec_obj->plcstr_obj).stretchLag );
-
-          LinearResampler((ISACdec_obj->plcstr_obj).prevPitchLP,
-                          stretchPitchLP1, lag0, (ISACdec_obj->plcstr_obj).stretchLag );
-
-          switch((ISACdec_obj->plcstr_obj).pitchCycles)
-          {
-            case 1:
-              {
-                for( k=0; k<(ISACdec_obj->plcstr_obj).stretchLag; k++ )
-                {
-                  stretchPitchLP[k] = (int16_t)((
-                      (int32_t)stretchPitchLP[k]* 3 +
-                      (int32_t)stretchPitchLP1[k] )>>2);
-                }
-                break;
-              }
-            case 2:
-              {
-                for( k=0; k<(ISACdec_obj->plcstr_obj).stretchLag; k++ )
-                {
-                  stretchPitchLP[k] = (int16_t)((
-                      (int32_t)stretchPitchLP[k] +
-                      (int32_t)stretchPitchLP1[k])>>1);
-                }
-                break;
-              }
-            case 3:
-              {
-                for( k=0; k<(ISACdec_obj->plcstr_obj).stretchLag; k++ )
-                {
-                  stretchPitchLP[k] = (int16_t)(
-                      (stretchPitchLP[k] +
-                       (int32_t)stretchPitchLP1[k]*3 )>>2);
-                }
-                break;
-              }
-          }
-
-          if( (ISACdec_obj->plcstr_obj).pitchCycles == 3 )
-          {
-            myDecayRate += 55; //(myDecayRate>>1);
-            (ISACdec_obj->plcstr_obj).pitchCycles = 0;
-          }
-        }
-
-        /* ------ Sum the noisy and periodic signals  ------ */
-        Vector_Word16_1[i] = WebRtcSpl_AddSatW16(wNoisyLP, wPriodicLP);
-        Vector_Word32_2[i] = WebRtcSpl_AddSatW32(wNoisyHP, wPriodicHP);
-      }
-    }
-  }
-  /* ----------------- residual signal is reconstructed ------------------ */
-
-  k = (ISACdec_obj->plcstr_obj).pitchIndex;
-  /* --- Write one pitch cycle for recovery block --- */
-
-  for( i = 0; i < RECOVERY_OVERLAP; i++ )
-  {
-    ISACdec_obj->plcstr_obj.overlapLP[i] = (int16_t)(
-        stretchPitchLP[k] * ISACdec_obj->plcstr_obj.decayCoeffPriodic >> 15);
-    k = ( k < ((ISACdec_obj->plcstr_obj).stretchLag - 1) )? (k+1):0;
-  }
-
-  (ISACdec_obj->plcstr_obj).lastPitchLag_Q7 =
-      (int16_t)((ISACdec_obj->plcstr_obj).stretchLag << 7);
-
-
-  /* --- Inverse Pitch Filter --- */
-  WebRtcIsacfix_PitchFilter(Vector_Word16_1, Vector_Word16_2,
-                            &ISACdec_obj->pitchfiltstr_obj, pitchLags_Q7, pitchGains_Q12, 4);
-
-  /* reduce gain to compensate for pitch enhancer */
-  /* gain = 1.0f - 0.45f * AvgPitchGain; */
-  tmp32a = ISACdec_obj->plcstr_obj.AvgPitchGain_Q12 * 29;  // Q18
-  tmp32b = 262144 - tmp32a;  // Q18
-  gainQ13 = (int16_t) (tmp32b >> 5); // Q13
-
-  /* perceptual post-filtering (using normalized lattice filter) */
-  for (k = 0; k < FRAMESAMPLES_HALF; k++)
-    Vector_Word32_1[k] = (Vector_Word16_2[k] * gainQ13) << 3;  // Q25
-
-
-  WebRtcIsacfix_NormLatticeFilterAr(ORDERLO,
-                                    (ISACdec_obj->maskfiltstr_obj).PostStateLoGQ0,
-                                    Vector_Word32_1, lofilt_coefQ15, gain_lo_hiQ17, 0, Vector_Word16_1);
-
-  WebRtcIsacfix_NormLatticeFilterAr(ORDERHI,
-                                    (ISACdec_obj->maskfiltstr_obj).PostStateHiGQ0,
-                                    Vector_Word32_2, hifilt_coefQ15, gain_lo_hiQ17, 1, Vector_Word16_2);
-
-  /* recombine the 2 bands */
-
-  /* Form the polyphase signals, and compensate for DC offset */
-  for (k=0;k<FRAMESAMPLES_HALF;k++)
-  {
-    /* Construct a new upper channel signal*/
-    tmp_1 = (int16_t)WebRtcSpl_SatW32ToW16(
-                                           ((int32_t)Vector_Word16_1[k]+Vector_Word16_2[k] + 1));
-    /* Construct a new lower channel signal*/
-    tmp_2 = (int16_t)WebRtcSpl_SatW32ToW16(
-                                           ((int32_t)Vector_Word16_1[k]-Vector_Word16_2[k]));
-    Vector_Word16_1[k] = tmp_1;
-    Vector_Word16_2[k] = tmp_2;
-  }
-
-
-  WebRtcIsacfix_FilterAndCombine1(Vector_Word16_1,
-                                  Vector_Word16_2, signal_out16, &ISACdec_obj->postfiltbankstr_obj);
-
-  (ISACdec_obj->plcstr_obj).used = PLC_WAS_USED;
-  *current_framesamples = 480;
-}
diff --git a/modules/audio_coding/codecs/isac/fix/source/encode.c b/modules/audio_coding/codecs/isac/fix/source/encode.c
deleted file mode 100644
index ef3e320..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/encode.c
+++ /dev/null
@@ -1,635 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * encode.c
- *
- * Encoding function for the iSAC coder.
- *
- */
-
-#include "rtc_base/checks.h"
-#include "modules/audio_coding/codecs/isac/fix/source/codec.h"
-
-#include <stdio.h>
-
-#include "modules/audio_coding/codecs/isac/fix/source/arith_routins.h"
-#include "modules/audio_coding/codecs/isac/fix/source/bandwidth_estimator.h"
-#include "modules/audio_coding/codecs/isac/fix/source/entropy_coding.h"
-#include "modules/audio_coding/codecs/isac/fix/source/lpc_masking_model.h"
-#include "modules/audio_coding/codecs/isac/fix/source/lpc_tables.h"
-#include "modules/audio_coding/codecs/isac/fix/source/pitch_estimator.h"
-#include "modules/audio_coding/codecs/isac/fix/source/pitch_gain_tables.h"
-#include "modules/audio_coding/codecs/isac/fix/source/pitch_lag_tables.h"
-#include "modules/audio_coding/codecs/isac/fix/source/structs.h"
-
-
-int WebRtcIsacfix_EncodeImpl(int16_t      *in,
-                             IsacFixEncoderInstance  *ISACenc_obj,
-                             BwEstimatorstr      *bw_estimatordata,
-                             int16_t         CodingMode)
-{
-  int16_t stream_length = 0;
-  int16_t usefulstr_len = 0;
-  int k;
-  int16_t BWno;
-
-  int16_t lofilt_coefQ15[(ORDERLO)*SUBFRAMES];
-  int16_t hifilt_coefQ15[(ORDERHI)*SUBFRAMES];
-  int32_t gain_lo_hiQ17[2*SUBFRAMES];
-
-  int16_t LPandHP[FRAMESAMPLES/2 + QLOOKAHEAD];
-  int16_t LP16a[FRAMESAMPLES/2 + QLOOKAHEAD];
-  int16_t HP16a[FRAMESAMPLES/2 + QLOOKAHEAD];
-
-  int16_t PitchLags_Q7[PITCH_SUBFRAMES];
-  int16_t PitchGains_Q12[PITCH_SUBFRAMES];
-  int16_t AvgPitchGain_Q12;
-
-  int16_t frame_mode; /* 0 for 30ms, 1 for 60ms */
-  int16_t processed_samples;
-  int status;
-
-  int32_t bits_gainsQ11;
-  int16_t MinBytes;
-  int16_t bmodel;
-
-  transcode_obj transcodingParam;
-  int16_t payloadLimitBytes;
-  int16_t arithLenBeforeEncodingDFT;
-  int16_t iterCntr;
-
-  /* copy new frame length and bottle neck rate only for the first 10 ms data */
-  if (ISACenc_obj->buffer_index == 0) {
-    /* set the framelength for the next packet */
-    ISACenc_obj->current_framesamples = ISACenc_obj->new_framelength;
-  }
-
-  frame_mode = ISACenc_obj->current_framesamples/MAX_FRAMESAMPLES; /* 0 (30 ms) or 1 (60 ms)  */
-  processed_samples = ISACenc_obj->current_framesamples/(frame_mode+1); /* 480 (30, 60 ms) */
-
-  /* buffer speech samples (by 10ms packet) until the framelength is reached (30 or 60 ms) */
-  /**************************************************************************************/
-  /* fill the buffer with 10ms input data */
-  for(k=0; k<FRAMESAMPLES_10ms; k++) {
-    ISACenc_obj->data_buffer_fix[k + ISACenc_obj->buffer_index] = in[k];
-  }
-  /* if buffersize is not equal to current framesize, and end of file is not reached yet, */
-  /* increase index and go back to main to get more speech samples */
-  if (ISACenc_obj->buffer_index + FRAMESAMPLES_10ms != processed_samples) {
-    ISACenc_obj->buffer_index = ISACenc_obj->buffer_index + FRAMESAMPLES_10ms;
-    return 0;
-  }
-  /* if buffer reached the right size, reset index and continue with encoding the frame */
-  ISACenc_obj->buffer_index = 0;
-
-  /* end of buffer function */
-  /**************************/
-
-  /* encoding */
-  /************/
-
-  if (frame_mode == 0 || ISACenc_obj->frame_nb == 0 )
-  {
-    /* reset bitstream */
-    ISACenc_obj->bitstr_obj.W_upper = 0xFFFFFFFF;
-    ISACenc_obj->bitstr_obj.streamval = 0;
-    ISACenc_obj->bitstr_obj.stream_index = 0;
-    ISACenc_obj->bitstr_obj.full = 1;
-
-    if (CodingMode == 0) {
-      ISACenc_obj->BottleNeck =  WebRtcIsacfix_GetUplinkBandwidth(bw_estimatordata);
-      ISACenc_obj->MaxDelay =  WebRtcIsacfix_GetUplinkMaxDelay(bw_estimatordata);
-    }
-    if (CodingMode == 0 && frame_mode == 0 && (ISACenc_obj->enforceFrameSize == 0)) {
-      ISACenc_obj->new_framelength = WebRtcIsacfix_GetNewFrameLength(ISACenc_obj->BottleNeck,
-                                                                     ISACenc_obj->current_framesamples);
-    }
-
-    // multiply the bottleneck by 0.88 before computing SNR, 0.88 is tuned by experimenting on TIMIT
-    // 901/1024 is 0.87988281250000
-    ISACenc_obj->s2nr = WebRtcIsacfix_GetSnr(
-        (int16_t)(ISACenc_obj->BottleNeck * 901 >> 10),
-        ISACenc_obj->current_framesamples);
-
-    /* encode frame length */
-    status = WebRtcIsacfix_EncodeFrameLen(ISACenc_obj->current_framesamples, &ISACenc_obj->bitstr_obj);
-    if (status < 0)
-    {
-      /* Wrong frame size */
-      if (frame_mode == 1 && ISACenc_obj->frame_nb == 1)
-      {
-        // If this is the second 30ms of a 60ms frame reset this such that in the next call
-        // encoder starts fresh.
-        ISACenc_obj->frame_nb = 0;
-      }
-      return status;
-    }
-
-    /* Save framelength for multiple packets memory */
-    if (ISACenc_obj->SaveEnc_ptr != NULL) {
-      (ISACenc_obj->SaveEnc_ptr)->framelength=ISACenc_obj->current_framesamples;
-    }
-
-    /* bandwidth estimation and coding */
-    BWno = WebRtcIsacfix_GetDownlinkBwIndexImpl(bw_estimatordata);
-    status = WebRtcIsacfix_EncodeReceiveBandwidth(&BWno, &ISACenc_obj->bitstr_obj);
-    if (status < 0)
-    {
-      if (frame_mode == 1 && ISACenc_obj->frame_nb == 1)
-      {
-        // If this is the second 30ms of a 60ms frame reset this such that in the next call
-        // encoder starts fresh.
-        ISACenc_obj->frame_nb = 0;
-      }
-      return status;
-    }
-  }
-
-  /* split signal in two bands */
-  WebRtcIsacfix_SplitAndFilter1(ISACenc_obj->data_buffer_fix, LP16a, HP16a, &ISACenc_obj->prefiltbankstr_obj );
-
-  /* estimate pitch parameters and pitch-filter lookahead signal */
-  WebRtcIsacfix_PitchAnalysis(LP16a+QLOOKAHEAD, LPandHP,
-                              &ISACenc_obj->pitchanalysisstr_obj,  PitchLags_Q7, PitchGains_Q12); /* LPandHP = LP_lookahead_pfQ0, */
-
-  /* Set where to store data in multiple packets memory */
-  if (ISACenc_obj->SaveEnc_ptr != NULL) {
-    if (frame_mode == 0 || ISACenc_obj->frame_nb == 0)
-    {
-      (ISACenc_obj->SaveEnc_ptr)->startIdx = 0;
-    }
-    else
-    {
-      (ISACenc_obj->SaveEnc_ptr)->startIdx = 1;
-    }
-  }
-
-  /* quantize & encode pitch parameters */
-  status = WebRtcIsacfix_EncodePitchGain(PitchGains_Q12, &ISACenc_obj->bitstr_obj,  ISACenc_obj->SaveEnc_ptr);
-  if (status < 0)
-  {
-    if (frame_mode == 1 && ISACenc_obj->frame_nb == 1)
-    {
-      // If this is the second 30ms of a 60ms frame reset this such that in the next call
-      // encoder starts fresh.
-      ISACenc_obj->frame_nb = 0;
-    }
-    return status;
-  }
-  status = WebRtcIsacfix_EncodePitchLag(PitchLags_Q7 , PitchGains_Q12, &ISACenc_obj->bitstr_obj,  ISACenc_obj->SaveEnc_ptr);
-  if (status < 0)
-  {
-    if (frame_mode == 1 && ISACenc_obj->frame_nb == 1)
-    {
-      // If this is the second 30ms of a 60ms frame reset this such that in the next call
-      // encoder starts fresh.
-      ISACenc_obj->frame_nb = 0;
-    }
-    return status;
-  }
-  AvgPitchGain_Q12 = (PitchGains_Q12[0] + PitchGains_Q12[1] +
-      PitchGains_Q12[2] + PitchGains_Q12[3]) >> 2;
-
-  /* find coefficients for perceptual pre-filters */
-  WebRtcIsacfix_GetLpcCoef(LPandHP, HP16a+QLOOKAHEAD, &ISACenc_obj->maskfiltstr_obj,
-                           ISACenc_obj->s2nr, PitchGains_Q12,
-                           gain_lo_hiQ17, lofilt_coefQ15, hifilt_coefQ15); /*LPandHP = LP_lookahead_pfQ0*/
-
-  // record LPC Gains for possible bit-rate reduction
-  for(k = 0; k < KLT_ORDER_GAIN; k++)
-  {
-    transcodingParam.lpcGains[k] = gain_lo_hiQ17[k];
-  }
-
-  /* code LPC model and shape - gains not quantized yet */
-  status = WebRtcIsacfix_EncodeLpc(gain_lo_hiQ17, lofilt_coefQ15, hifilt_coefQ15,
-                                   &bmodel, &bits_gainsQ11, &ISACenc_obj->bitstr_obj, ISACenc_obj->SaveEnc_ptr, &transcodingParam);
-  if (status < 0)
-  {
-    if (frame_mode == 1 && ISACenc_obj->frame_nb == 1)
-    {
-      // If this is the second 30ms of a 60ms frame reset this such that in the next call
-      // encoder starts fresh.
-      ISACenc_obj->frame_nb = 0;
-    }
-    return status;
-  }
-  arithLenBeforeEncodingDFT = (ISACenc_obj->bitstr_obj.stream_index << 1) + (1-ISACenc_obj->bitstr_obj.full);
-
-  /* low-band filtering */
-  WebRtcIsacfix_NormLatticeFilterMa(ORDERLO, ISACenc_obj->maskfiltstr_obj.PreStateLoGQ15,
-                                    LP16a, lofilt_coefQ15, gain_lo_hiQ17, 0, LPandHP);/* LPandHP = LP16b */
-
-  /* pitch filter */
-  WebRtcIsacfix_PitchFilter(LPandHP, LP16a, &ISACenc_obj->pitchfiltstr_obj, PitchLags_Q7, PitchGains_Q12, 1);/* LPandHP = LP16b */
-
-  /* high-band filtering */
-  WebRtcIsacfix_NormLatticeFilterMa(ORDERHI, ISACenc_obj->maskfiltstr_obj.PreStateHiGQ15,
-                                    HP16a, hifilt_coefQ15, gain_lo_hiQ17, 1, LPandHP);/*LPandHP = HP16b*/
-
-  /* transform */
-  WebRtcIsacfix_Time2Spec(LP16a, LPandHP, LP16a, LPandHP); /*LPandHP = HP16b*/
-
-  /* Save data for multiple packets memory */
-  if (ISACenc_obj->SaveEnc_ptr != NULL) {
-    for (k = 0; k < FRAMESAMPLES_HALF; k++) {
-      (ISACenc_obj->SaveEnc_ptr)->fre[k + (ISACenc_obj->SaveEnc_ptr)->startIdx*FRAMESAMPLES_HALF] = LP16a[k];
-      (ISACenc_obj->SaveEnc_ptr)->fim[k + (ISACenc_obj->SaveEnc_ptr)->startIdx*FRAMESAMPLES_HALF] = LPandHP[k];
-    }
-    (ISACenc_obj->SaveEnc_ptr)->AvgPitchGain[(ISACenc_obj->SaveEnc_ptr)->startIdx] = AvgPitchGain_Q12;
-  }
-
-  /* quantization and lossless coding */
-  status = WebRtcIsacfix_EncodeSpec(LP16a, LPandHP, &ISACenc_obj->bitstr_obj, AvgPitchGain_Q12);
-  if((status <= -1) && (status != -ISAC_DISALLOWED_BITSTREAM_LENGTH)) /*LPandHP = HP16b*/
-  {
-    if (frame_mode == 1 && ISACenc_obj->frame_nb == 1)
-    {
-      // If this is the second 30ms of a 60ms frame reset this such that in the next call
-      // encoder starts fresh.
-      ISACenc_obj->frame_nb = 0;
-    }
-    return status;
-  }
-
-  if((frame_mode == 1) && (ISACenc_obj->frame_nb == 0))
-  {
-    // it is a 60ms and we are in the first 30ms
-    // then the limit at this point should be half of the assigned value
-    payloadLimitBytes = ISACenc_obj->payloadLimitBytes60 >> 1;
-  }
-  else if (frame_mode == 0)
-  {
-    // it is a 30ms frame
-    payloadLimitBytes = (ISACenc_obj->payloadLimitBytes30) - 3;
-  }
-  else
-  {
-    // this is the second half of a 60ms frame.
-    payloadLimitBytes = ISACenc_obj->payloadLimitBytes60 - 3; // subract 3 because termination process may add 3 bytes
-  }
-
-  iterCntr = 0;
-  while((((ISACenc_obj->bitstr_obj.stream_index) << 1) > payloadLimitBytes) ||
-        (status == -ISAC_DISALLOWED_BITSTREAM_LENGTH))
-  {
-    int16_t arithLenDFTByte;
-    int16_t bytesLeftQ5;
-    int16_t ratioQ5[8] = {0, 6, 9, 12, 16, 19, 22, 25};
-
-    // According to experiments on TIMIT the following is proper for audio, but it is not agressive enough for tonal inputs
-    // such as DTMF, sweep-sine, ...
-    //
-    // (0.55 - (0.8 - ratio[i]/32) * 5 / 6) * 2^14
-    // int16_t scaleQ14[8] = {0, 648, 1928, 3208, 4915, 6195, 7475, 8755};
-
-
-    // This is a supper-agressive scaling passed the tests (tonal inputs) tone with one iteration for payload limit
-    // of 120 (32kbps bottleneck), number of frames needed a rate-reduction was 58403
-    //
-    int16_t scaleQ14[8] = {0, 348, 828, 1408, 2015, 3195, 3500, 3500};
-    int16_t idx;
-
-    if(iterCntr >= MAX_PAYLOAD_LIMIT_ITERATION)
-    {
-      // We were not able to limit the payload size
-
-      if((frame_mode == 1) && (ISACenc_obj->frame_nb == 0))
-      {
-        // This was the first 30ms of a 60ms frame. Although the payload is larger than it
-        // should be but we let the second 30ms be encoded. Maybe togetehr we won't exceed
-        // the limit.
-        ISACenc_obj->frame_nb = 1;
-        return 0;
-      }
-      else if((frame_mode == 1) && (ISACenc_obj->frame_nb == 1))
-      {
-        ISACenc_obj->frame_nb = 0;
-      }
-
-      if(status != -ISAC_DISALLOWED_BITSTREAM_LENGTH)
-      {
-        return -ISAC_PAYLOAD_LARGER_THAN_LIMIT;
-      }
-      else
-      {
-        return status;
-      }
-    }
-    if(status != -ISAC_DISALLOWED_BITSTREAM_LENGTH)
-    {
-      arithLenDFTByte = (ISACenc_obj->bitstr_obj.stream_index << 1) + (1-ISACenc_obj->bitstr_obj.full) - arithLenBeforeEncodingDFT;
-      bytesLeftQ5 = (payloadLimitBytes - arithLenBeforeEncodingDFT) << 5;
-
-      // bytesLeft / arithLenDFTBytes indicates how much scaling is required a rough estimate (agressive)
-      // scale = 0.55 - (0.8 - bytesLeft / arithLenDFTBytes) * 5 / 6
-      // bytesLeft / arithLenDFTBytes below 0.2 will have a scale of zero and above 0.8 are treated as 0.8
-      // to avoid division we do more simplification.
-      //
-      // values of (bytesLeft / arithLenDFTBytes)*32 between ratioQ5[i] and ratioQ5[i+1] are rounded to ratioQ5[i]
-      // and the corresponding scale is chosen
-
-      // we compare bytesLeftQ5 with ratioQ5[]*arithLenDFTByte;
-      idx = 4;
-      idx += (bytesLeftQ5 >= ratioQ5[idx] * arithLenDFTByte) ? 2 : -2;
-      idx += (bytesLeftQ5 >= ratioQ5[idx] * arithLenDFTByte) ? 1 : -1;
-      idx += (bytesLeftQ5 >= ratioQ5[idx] * arithLenDFTByte) ? 0 : -1;
-    }
-    else
-    {
-      // we are here because the bit-stream did not fit into the buffer, in this case, the stream_index is not
-      // trustable, especially if the is the first 30ms of a packet. Thereforem, we will go for the most agressive
-      // case.
-      idx = 0;
-    }
-    // scale FFT coefficients to reduce the bit-rate
-    for(k = 0; k < FRAMESAMPLES_HALF; k++)
-    {
-      LP16a[k] = (int16_t)(LP16a[k] * scaleQ14[idx] >> 14);
-      LPandHP[k] = (int16_t)(LPandHP[k] * scaleQ14[idx] >> 14);
-    }
-
-    // Save data for multiple packets memory
-    if (ISACenc_obj->SaveEnc_ptr != NULL)
-    {
-      for(k = 0; k < FRAMESAMPLES_HALF; k++)
-      {
-        (ISACenc_obj->SaveEnc_ptr)->fre[k + (ISACenc_obj->SaveEnc_ptr)->startIdx*FRAMESAMPLES_HALF] = LP16a[k];
-        (ISACenc_obj->SaveEnc_ptr)->fim[k + (ISACenc_obj->SaveEnc_ptr)->startIdx*FRAMESAMPLES_HALF] = LPandHP[k];
-      }
-    }
-
-    // scale the unquantized LPC gains and save the scaled version for the future use
-    for(k = 0; k < KLT_ORDER_GAIN; k++)
-    {
-      gain_lo_hiQ17[k] = WEBRTC_SPL_MUL_16_32_RSFT14(scaleQ14[idx], transcodingParam.lpcGains[k]);//transcodingParam.lpcGains[k]; //
-      transcodingParam.lpcGains[k] = gain_lo_hiQ17[k];
-    }
-
-    // reset the bit-stream object to the state which it had before encoding LPC Gains
-    ISACenc_obj->bitstr_obj.full = transcodingParam.full;
-    ISACenc_obj->bitstr_obj.stream_index = transcodingParam.stream_index;
-    ISACenc_obj->bitstr_obj.streamval = transcodingParam.streamval;
-    ISACenc_obj->bitstr_obj.W_upper = transcodingParam.W_upper;
-    ISACenc_obj->bitstr_obj.stream[transcodingParam.stream_index-1] = transcodingParam.beforeLastWord;
-    ISACenc_obj->bitstr_obj.stream[transcodingParam.stream_index] = transcodingParam.lastWord;
-
-
-    // quantize and encode LPC gain
-    WebRtcIsacfix_EstCodeLpcGain(gain_lo_hiQ17, &ISACenc_obj->bitstr_obj, ISACenc_obj->SaveEnc_ptr);
-    arithLenBeforeEncodingDFT = (ISACenc_obj->bitstr_obj.stream_index << 1) + (1-ISACenc_obj->bitstr_obj.full);
-    status = WebRtcIsacfix_EncodeSpec(LP16a, LPandHP, &ISACenc_obj->bitstr_obj, AvgPitchGain_Q12);
-    if((status <= -1) && (status != -ISAC_DISALLOWED_BITSTREAM_LENGTH)) /*LPandHP = HP16b*/
-    {
-      if (frame_mode == 1 && ISACenc_obj->frame_nb == 1)
-      {
-        // If this is the second 30ms of a 60ms frame reset this such that in the next call
-        // encoder starts fresh.
-        ISACenc_obj->frame_nb = 0;
-      }
-      return status;
-    }
-    iterCntr++;
-  }
-
-  if (frame_mode == 1 && ISACenc_obj->frame_nb == 0)
-    /* i.e. 60 ms framesize and just processed the first 30ms, */
-    /* go back to main function to buffer the other 30ms speech frame */
-  {
-    ISACenc_obj->frame_nb = 1;
-    return 0;
-  }
-  else if (frame_mode == 1 && ISACenc_obj->frame_nb == 1)
-  {
-    ISACenc_obj->frame_nb = 0;
-    /* also update the framelength for next packet, in Adaptive mode only */
-    if (CodingMode == 0 && (ISACenc_obj->enforceFrameSize == 0)) {
-      ISACenc_obj->new_framelength = WebRtcIsacfix_GetNewFrameLength(ISACenc_obj->BottleNeck,
-                                                                     ISACenc_obj->current_framesamples);
-    }
-  }
-
-
-  /* complete arithmetic coding */
-  stream_length = WebRtcIsacfix_EncTerminate(&ISACenc_obj->bitstr_obj);
-  /* can this be negative? */
-
-  if(CodingMode == 0)
-  {
-
-    /* update rate model and get minimum number of bytes in this packet */
-    MinBytes = WebRtcIsacfix_GetMinBytes(&ISACenc_obj->rate_data_obj, (int16_t) stream_length,
-                                         ISACenc_obj->current_framesamples, ISACenc_obj->BottleNeck, ISACenc_obj->MaxDelay);
-
-    /* if bitstream is too short, add garbage at the end */
-
-    /* Store length of coded data */
-    usefulstr_len = stream_length;
-
-    /* Make sure MinBytes does not exceed packet size limit */
-    if ((ISACenc_obj->frame_nb == 0) && (MinBytes > ISACenc_obj->payloadLimitBytes30)) {
-      MinBytes = ISACenc_obj->payloadLimitBytes30;
-    } else if ((ISACenc_obj->frame_nb == 1) && (MinBytes > ISACenc_obj->payloadLimitBytes60)) {
-      MinBytes = ISACenc_obj->payloadLimitBytes60;
-    }
-
-    /* Make sure we don't allow more than 255 bytes of garbage data.
-       We store the length of the garbage data in 8 bits in the bitstream,
-       255 is the max garbage lenght we can signal using 8 bits. */
-    if( MinBytes > usefulstr_len + 255 ) {
-      MinBytes = usefulstr_len + 255;
-    }
-
-    /* Save data for creation of multiple bitstreams */
-    if (ISACenc_obj->SaveEnc_ptr != NULL) {
-      (ISACenc_obj->SaveEnc_ptr)->minBytes = MinBytes;
-    }
-
-    while (stream_length < MinBytes)
-    {
-      RTC_DCHECK_GE(stream_length, 0);
-      if (stream_length & 0x0001){
-        ISACenc_obj->bitstr_seed = WEBRTC_SPL_RAND( ISACenc_obj->bitstr_seed );
-        ISACenc_obj->bitstr_obj.stream[stream_length / 2] |=
-            (uint16_t)(ISACenc_obj->bitstr_seed & 0xFF);
-      } else {
-        ISACenc_obj->bitstr_seed = WEBRTC_SPL_RAND( ISACenc_obj->bitstr_seed );
-        ISACenc_obj->bitstr_obj.stream[stream_length / 2] =
-            ((uint16_t)ISACenc_obj->bitstr_seed << 8);
-      }
-      stream_length++;
-    }
-
-    /* to get the real stream_length, without garbage */
-    if (usefulstr_len & 0x0001) {
-      ISACenc_obj->bitstr_obj.stream[usefulstr_len>>1] &= 0xFF00;
-      ISACenc_obj->bitstr_obj.stream[usefulstr_len>>1] += (MinBytes - usefulstr_len) & 0x00FF;
-    }
-    else {
-      ISACenc_obj->bitstr_obj.stream[usefulstr_len>>1] &= 0x00FF;
-      ISACenc_obj->bitstr_obj.stream[usefulstr_len >> 1] +=
-          ((uint16_t)((MinBytes - usefulstr_len) & 0x00FF) << 8);
-    }
-  }
-  else
-  {
-    /* update rate model */
-    WebRtcIsacfix_UpdateRateModel(&ISACenc_obj->rate_data_obj, (int16_t) stream_length,
-                                  ISACenc_obj->current_framesamples, ISACenc_obj->BottleNeck);
-  }
-  return stream_length;
-}
-
-/* This function is used to create a new bitstream with new BWE.
-   The same data as previously encoded with the fucntion WebRtcIsacfix_EncodeImpl()
-   is used. The data needed is taken from the struct, where it was stored
-   when calling the encoder. */
-int WebRtcIsacfix_EncodeStoredData(IsacFixEncoderInstance  *ISACenc_obj,
-                                   int     BWnumber,
-                                   float              scale)
-{
-  int ii;
-  int status;
-  int16_t BWno = (int16_t)BWnumber;
-  int stream_length = 0;
-
-  int16_t model;
-  const uint16_t *Q_PitchGain_cdf_ptr[1];
-  const uint16_t **cdf;
-  const IsacSaveEncoderData *SaveEnc_str;
-  int32_t tmpLPCcoeffs_g[KLT_ORDER_GAIN<<1];
-  int16_t tmpLPCindex_g[KLT_ORDER_GAIN<<1];
-  int16_t tmp_fre[FRAMESAMPLES];
-  int16_t tmp_fim[FRAMESAMPLES];
-
-  SaveEnc_str = ISACenc_obj->SaveEnc_ptr;
-
-  /* Check if SaveEnc memory exists */
-  if (SaveEnc_str == NULL) {
-    return (-1);
-  }
-
-  /* Sanity Check - possible values for BWnumber is 0 - 23 */
-  if ((BWnumber < 0) || (BWnumber > 23)) {
-    return -ISAC_RANGE_ERROR_BW_ESTIMATOR;
-  }
-
-  /* reset bitstream */
-  ISACenc_obj->bitstr_obj.W_upper = 0xFFFFFFFF;
-  ISACenc_obj->bitstr_obj.streamval = 0;
-  ISACenc_obj->bitstr_obj.stream_index = 0;
-  ISACenc_obj->bitstr_obj.full = 1;
-
-  /* encode frame length */
-  status = WebRtcIsacfix_EncodeFrameLen(SaveEnc_str->framelength, &ISACenc_obj->bitstr_obj);
-  if (status < 0) {
-    /* Wrong frame size */
-    return status;
-  }
-
-  /* encode bandwidth estimate */
-  status = WebRtcIsacfix_EncodeReceiveBandwidth(&BWno, &ISACenc_obj->bitstr_obj);
-  if (status < 0) {
-    return status;
-  }
-
-  /* Transcoding                                                 */
-  /* If scale < 1, rescale data to produce lower bitrate signal  */
-  if ((0.0 < scale) && (scale < 1.0)) {
-    /* Compensate LPC gain */
-    for (ii = 0; ii < (KLT_ORDER_GAIN*(1+SaveEnc_str->startIdx)); ii++) {
-      tmpLPCcoeffs_g[ii] = (int32_t) ((scale) * (float) SaveEnc_str->LPCcoeffs_g[ii]);
-    }
-
-    /* Scale DFT */
-    for (ii = 0; ii < (FRAMESAMPLES_HALF*(1+SaveEnc_str->startIdx)); ii++) {
-      tmp_fre[ii] = (int16_t) ((scale) * (float) SaveEnc_str->fre[ii]) ;
-      tmp_fim[ii] = (int16_t) ((scale) * (float) SaveEnc_str->fim[ii]) ;
-    }
-  } else {
-    for (ii = 0; ii < (KLT_ORDER_GAIN*(1+SaveEnc_str->startIdx)); ii++) {
-      tmpLPCindex_g[ii] =  SaveEnc_str->LPCindex_g[ii];
-    }
-
-    for (ii = 0; ii < (FRAMESAMPLES_HALF*(1+SaveEnc_str->startIdx)); ii++) {
-      tmp_fre[ii] = SaveEnc_str->fre[ii];
-      tmp_fim[ii] = SaveEnc_str->fim[ii];
-    }
-  }
-
-  /* Loop over number of 30 msec */
-  for (ii = 0; ii <= SaveEnc_str->startIdx; ii++)
-  {
-
-    /* encode pitch gains */
-    *Q_PitchGain_cdf_ptr = WebRtcIsacfix_kPitchGainCdf;
-    status = WebRtcIsacfix_EncHistMulti(&ISACenc_obj->bitstr_obj, &SaveEnc_str->pitchGain_index[ii],
-                                       Q_PitchGain_cdf_ptr, 1);
-    if (status < 0) {
-      return status;
-    }
-
-    /* entropy coding of quantization pitch lags */
-    /* voicing classificiation */
-    if (SaveEnc_str->meanGain[ii] <= 819) {
-      cdf = WebRtcIsacfix_kPitchLagPtrLo;
-    } else if (SaveEnc_str->meanGain[ii] <= 1638) {
-      cdf = WebRtcIsacfix_kPitchLagPtrMid;
-    } else {
-      cdf = WebRtcIsacfix_kPitchLagPtrHi;
-    }
-    status = WebRtcIsacfix_EncHistMulti(&ISACenc_obj->bitstr_obj,
-                                       &SaveEnc_str->pitchIndex[PITCH_SUBFRAMES*ii], cdf, PITCH_SUBFRAMES);
-    if (status < 0) {
-      return status;
-    }
-
-    /* LPC */
-    /* entropy coding of model number */
-    model = 0;
-    status = WebRtcIsacfix_EncHistMulti(&ISACenc_obj->bitstr_obj,  &model,
-                                       WebRtcIsacfix_kModelCdfPtr, 1);
-    if (status < 0) {
-      return status;
-    }
-
-    /* entropy coding of quantization indices - LPC shape only */
-    status = WebRtcIsacfix_EncHistMulti(&ISACenc_obj->bitstr_obj, &SaveEnc_str->LPCindex_s[KLT_ORDER_SHAPE*ii],
-                                       WebRtcIsacfix_kCdfShapePtr[0], KLT_ORDER_SHAPE);
-    if (status < 0) {
-      return status;
-    }
-
-    /* If transcoding, get new LPC gain indices */
-    if (scale < 1.0) {
-      WebRtcIsacfix_TranscodeLpcCoef(&tmpLPCcoeffs_g[KLT_ORDER_GAIN*ii], &tmpLPCindex_g[KLT_ORDER_GAIN*ii]);
-    }
-
-    /* entropy coding of quantization indices - LPC gain */
-    status = WebRtcIsacfix_EncHistMulti(&ISACenc_obj->bitstr_obj, &tmpLPCindex_g[KLT_ORDER_GAIN*ii],
-                                       WebRtcIsacfix_kCdfGainPtr[0], KLT_ORDER_GAIN);
-    if (status < 0) {
-      return status;
-    }
-
-    /* quantization and lossless coding */
-    status = WebRtcIsacfix_EncodeSpec(&tmp_fre[ii*FRAMESAMPLES_HALF], &tmp_fim[ii*FRAMESAMPLES_HALF],
-                                      &ISACenc_obj->bitstr_obj, SaveEnc_str->AvgPitchGain[ii]);
-    if (status < 0) {
-      return status;
-    }
-  }
-
-  /* complete arithmetic coding */
-  stream_length = WebRtcIsacfix_EncTerminate(&ISACenc_obj->bitstr_obj);
-
-  return stream_length;
-}
diff --git a/modules/audio_coding/codecs/isac/fix/source/entropy_coding.c b/modules/audio_coding/codecs/isac/fix/source/entropy_coding.c
deleted file mode 100644
index 842e77f..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/entropy_coding.c
+++ /dev/null
@@ -1,2056 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * entropy_coding.c
- *
- * This file contains all functions used to arithmetically
- * encode the iSAC bistream.
- *
- */
-
-#include <stddef.h>
-
-#include "common_audio/signal_processing/include/signal_processing_library.h"
-#include "modules/audio_coding/codecs/isac/fix/source/arith_routins.h"
-#include "modules/audio_coding/codecs/isac/fix/source/entropy_coding.h"
-#include "modules/audio_coding/codecs/isac/fix/source/lpc_tables.h"
-#include "modules/audio_coding/codecs/isac/fix/source/pitch_gain_tables.h"
-#include "modules/audio_coding/codecs/isac/fix/source/pitch_lag_tables.h"
-#include "modules/audio_coding/codecs/isac/fix/source/settings.h"
-#include "modules/audio_coding/codecs/isac/fix/source/spectrum_ar_model_tables.h"
-#include "rtc_base/sanitizer.h"
-
-/*
- * Eenumerations for arguments to functions WebRtcIsacfix_MatrixProduct1()
- * and WebRtcIsacfix_MatrixProduct2().
-*/
-
-enum matrix_index_factor {
-  kTIndexFactor1 = 1,
-  kTIndexFactor2 = 2,
-  kTIndexFactor3 = SUBFRAMES,
-  kTIndexFactor4 = LPC_SHAPE_ORDER
-};
-
-enum matrix_index_step {
-  kTIndexStep1 = 1,
-  kTIndexStep2 = SUBFRAMES,
-  kTIndexStep3 = LPC_SHAPE_ORDER
-};
-
-enum matrixprod_loop_count {
-  kTLoopCount1 = SUBFRAMES,
-  kTLoopCount2 = 2,
-  kTLoopCount3 = LPC_SHAPE_ORDER
-};
-
-enum matrix1_shift_value {
-  kTMatrix1_shift0 = 0,
-  kTMatrix1_shift1 = 1,
-  kTMatrix1_shift5 = 5
-};
-
-enum matrixprod_init_case {
-  kTInitCase0 = 0,
-  kTInitCase1 = 1
-};
-
-/*
-  This function implements the fix-point correspondant function to lrint.
-
-  FLP: (int32_t)floor(flt+.499999999999)
-  FIP: (fixVal+roundVal)>>qDomain
-
-  where roundVal = 2^(qDomain-1) = 1<<(qDomain-1)
-
-*/
-static __inline int32_t CalcLrIntQ(int32_t fixVal, int16_t qDomain) {
-  return (fixVal + (1 << (qDomain - 1))) >> qDomain;
-}
-
-/*
-  __inline uint32_t stepwise(int32_t dinQ10) {
-
-  int32_t ind, diQ10, dtQ10;
-
-  diQ10 = dinQ10;
-  if (diQ10 < DPMIN_Q10)
-  diQ10 = DPMIN_Q10;
-  if (diQ10 >= DPMAX_Q10)
-  diQ10 = DPMAX_Q10 - 1;
-
-  dtQ10 = diQ10 - DPMIN_Q10;*/ /* Q10 + Q10 = Q10 */
-/* ind = (dtQ10 * 5) >> 10;  */ /* 2^10 / 5 = 0.2 in Q10  */
-/* Q10 -> Q0 */
-
-/* return rpointsFIX_Q10[ind];
-
-   }
-*/
-
-/* logN(x) = logN(2)*log2(x) = 0.6931*log2(x). Output in Q8. */
-/* The input argument X to logN(X) is 2^17 times higher than the
-   input floating point argument Y to log(Y), since the X value
-   is a Q17 value. This can be compensated for after the call, by
-   subraction a value Z for each Q-step. One Q-step means that
-   X gets 2 thimes higher, i.e. Z = logN(2)*256 = 0.693147180559*256 =
-   177.445678 should be subtracted (since logN() returns a Q8 value).
-   For a X value in Q17, the value 177.445678*17 = 3017 should be
-   subtracted */
-static int16_t CalcLogN(int32_t arg) {
-  int16_t zeros, log2, frac, logN;
-
-  zeros=WebRtcSpl_NormU32(arg);
-  frac = (int16_t)((uint32_t)((arg << zeros) & 0x7FFFFFFF) >> 23);
-  log2 = (int16_t)(((31 - zeros) << 8) + frac);  // log2(x) in Q8
-  logN = (int16_t)(log2 * 22713 >> 15);  // log(2) = 0.693147 = 22713 in Q15
-  logN=logN+11; //Scalar compensation which minimizes the (log(x)-logN(x))^2 error over all x.
-
-  return logN;
-}
-
-
-/*
-  expN(x) = 2^(a*x), where a = log2(e) ~= 1.442695
-
-  Input:  Q8  (int16_t)
-  Output: Q17 (int32_t)
-
-  a = log2(e) = log2(exp(1)) ~= 1.442695  ==>  a = 23637 in Q14 (1.442688)
-  To this value, 700 is added or subtracted in order to get an average error
-  nearer zero, instead of always same-sign.
-*/
-
-static int32_t CalcExpN(int16_t x) {
-  int16_t axINT, axFRAC;
-  int16_t exp16;
-  int32_t exp;
-  int16_t ax = (int16_t)(x * 23637 >> 14);  // Q8
-
-  if (x>=0) {
-    axINT = ax >> 8;  //Q0
-    axFRAC = ax&0x00FF;
-    exp16 = 1 << axINT;  // Q0
-    axFRAC = axFRAC+256; //Q8
-    exp = exp16 * axFRAC;  // Q0*Q8 = Q8
-    exp <<= 9;  // Q17
-  } else {
-    ax = -ax;
-    axINT = 1 + (ax >> 8);  //Q0
-    axFRAC = 0x00FF - (ax&0x00FF);
-    exp16 = (int16_t)(32768 >> axINT);  // Q15
-    axFRAC = axFRAC+256; //Q8
-    exp = exp16 * axFRAC;  // Q15*Q8 = Q23
-    exp >>= 6;  // Q17
-  }
-
-  return exp;
-}
-
-
-/* compute correlation from power spectrum */
-static void CalcCorrelation(int32_t *PSpecQ12, int32_t *CorrQ7)
-{
-  int32_t summ[FRAMESAMPLES/8];
-  int32_t diff[FRAMESAMPLES/8];
-  int32_t sum;
-  int k, n;
-
-  for (k = 0; k < FRAMESAMPLES/8; k++) {
-    summ[k] = (PSpecQ12[k] + PSpecQ12[FRAMESAMPLES / 4 - 1 - k] + 16) >> 5;
-    diff[k] = (PSpecQ12[k] - PSpecQ12[FRAMESAMPLES / 4 - 1 - k] + 16) >> 5;
-  }
-
-  sum = 2;
-  for (n = 0; n < FRAMESAMPLES/8; n++)
-    sum += summ[n];
-  CorrQ7[0] = sum;
-
-  for (k = 0; k < AR_ORDER; k += 2) {
-    sum = 0;
-    for (n = 0; n < FRAMESAMPLES/8; n++)
-      sum += (WebRtcIsacfix_kCos[k][n] * diff[n] + 256) >> 9;
-    CorrQ7[k+1] = sum;
-  }
-
-  for (k=1; k<AR_ORDER; k+=2) {
-    sum = 0;
-    for (n = 0; n < FRAMESAMPLES/8; n++)
-      sum += (WebRtcIsacfix_kCos[k][n] * summ[n] + 256) >> 9;
-    CorrQ7[k+1] = sum;
-  }
-}
-
-// Some arithmetic operations that are allowed to overflow. (It's still
-// undefined behavior, so not a good idea; this just makes UBSan ignore the
-// violations, so that our old code can continue to do what it's always been
-// doing.)
-static inline int32_t RTC_NO_SANITIZE("signed-integer-overflow")
-    OverflowingMulS16S32ToS32(int16_t a, int32_t b) {
-  return a * b;
-}
-static inline int32_t RTC_NO_SANITIZE("signed-integer-overflow")
-    OverflowingAddS32S32ToS32(int32_t a, int32_t b) {
-  return a + b;
-}
-static inline int32_t RTC_NO_SANITIZE("signed-integer-overflow")
-    OverflowingSubS32S32ToS32(int32_t a, int32_t b) {
-  return a - b;
-}
-
-/* compute inverse AR power spectrum */
-static void CalcInvArSpec(const int16_t *ARCoefQ12,
-                          const int32_t gainQ10,
-                          int32_t *CurveQ16)
-{
-  int32_t CorrQ11[AR_ORDER+1];
-  int32_t sum, tmpGain;
-  int32_t diffQ16[FRAMESAMPLES/8];
-  const int16_t *CS_ptrQ9;
-  int k, n;
-  int16_t round, shftVal = 0, sh;
-
-  sum = 0;
-  for (n = 0; n < AR_ORDER+1; n++)
-    sum += WEBRTC_SPL_MUL(ARCoefQ12[n], ARCoefQ12[n]);    /* Q24 */
-  sum = ((sum >> 6) * 65 + 32768) >> 16;  /* Result in Q8. */
-  CorrQ11[0] = (sum * gainQ10 + 256) >> 9;
-
-  /* To avoid overflow, we shift down gainQ10 if it is large. We will not lose any precision */
-  if(gainQ10>400000){
-    tmpGain = gainQ10 >> 3;
-    round = 32;
-    shftVal = 6;
-  } else {
-    tmpGain = gainQ10;
-    round = 256;
-    shftVal = 9;
-  }
-
-  for (k = 1; k < AR_ORDER+1; k++) {
-    sum = 16384;
-    for (n = k; n < AR_ORDER+1; n++)
-      sum += WEBRTC_SPL_MUL(ARCoefQ12[n-k], ARCoefQ12[n]);  /* Q24 */
-    sum >>= 15;
-    CorrQ11[k] = (sum * tmpGain + round) >> shftVal;
-  }
-  sum = CorrQ11[0] << 7;
-  for (n = 0; n < FRAMESAMPLES/8; n++)
-    CurveQ16[n] = sum;
-
-  for (k = 1; k < AR_ORDER; k += 2) {
-    for (n = 0; n < FRAMESAMPLES/8; n++)
-      CurveQ16[n] +=
-          (OverflowingMulS16S32ToS32(WebRtcIsacfix_kCos[k][n], CorrQ11[k + 1]) +
-           2) >>
-          2;
-  }
-
-  CS_ptrQ9 = WebRtcIsacfix_kCos[0];
-
-  /* If CorrQ11[1] too large we avoid getting overflow in the calculation by shifting */
-  sh=WebRtcSpl_NormW32(CorrQ11[1]);
-  if (CorrQ11[1]==0) /* Use next correlation */
-    sh=WebRtcSpl_NormW32(CorrQ11[2]);
-
-  if (sh<9)
-    shftVal = 9 - sh;
-  else
-    shftVal = 0;
-
-  for (n = 0; n < FRAMESAMPLES/8; n++)
-    diffQ16[n] = (CS_ptrQ9[n] * (CorrQ11[1] >> shftVal) + 2) >> 2;
-  for (k = 2; k < AR_ORDER; k += 2) {
-    CS_ptrQ9 = WebRtcIsacfix_kCos[k];
-    for (n = 0; n < FRAMESAMPLES/8; n++)
-      diffQ16[n] += (CS_ptrQ9[n] * (CorrQ11[k + 1] >> shftVal) + 2) >> 2;
-  }
-
-  for (k=0; k<FRAMESAMPLES/8; k++) {
-    int32_t diff_q16 = diffQ16[k] * (1 << shftVal);
-    CurveQ16[FRAMESAMPLES / 4 - 1 - k] =
-        OverflowingSubS32S32ToS32(CurveQ16[k], diff_q16);
-    CurveQ16[k] = OverflowingAddS32S32ToS32(CurveQ16[k], diff_q16);
-  }
-}
-
-static void CalcRootInvArSpec(const int16_t *ARCoefQ12,
-                              const int32_t gainQ10,
-                              uint16_t *CurveQ8)
-{
-  int32_t CorrQ11[AR_ORDER+1];
-  int32_t sum, tmpGain;
-  int32_t summQ16[FRAMESAMPLES/8];
-  int32_t diffQ16[FRAMESAMPLES/8];
-
-  const int16_t *CS_ptrQ9;
-  int k, n, i;
-  int16_t round, shftVal = 0, sh;
-  int32_t res, in_sqrt, newRes;
-
-  sum = 0;
-  for (n = 0; n < AR_ORDER+1; n++)
-    sum += WEBRTC_SPL_MUL(ARCoefQ12[n], ARCoefQ12[n]);    /* Q24 */
-  sum = ((sum >> 6) * 65 + 32768) >> 16;  /* Result in Q8. */
-  CorrQ11[0] = (sum * gainQ10 + 256) >> 9;
-
-  /* To avoid overflow, we shift down gainQ10 if it is large. We will not lose any precision */
-  if(gainQ10>400000){
-    tmpGain = gainQ10 >> 3;
-    round = 32;
-    shftVal = 6;
-  } else {
-    tmpGain = gainQ10;
-    round = 256;
-    shftVal = 9;
-  }
-
-  for (k = 1; k < AR_ORDER+1; k++) {
-    sum = 16384;
-    for (n = k; n < AR_ORDER+1; n++)
-      sum += WEBRTC_SPL_MUL(ARCoefQ12[n-k], ARCoefQ12[n]);  /* Q24 */
-    sum >>= 15;
-    CorrQ11[k] = (sum * tmpGain + round) >> shftVal;
-  }
-  sum = CorrQ11[0] << 7;
-  for (n = 0; n < FRAMESAMPLES/8; n++)
-    summQ16[n] = sum;
-
-  for (k = 1; k < (AR_ORDER); k += 2) {
-    for (n = 0; n < FRAMESAMPLES/8; n++)
-      summQ16[n] += ((CorrQ11[k + 1] * WebRtcIsacfix_kCos[k][n]) + 2) >> 2;
-  }
-
-  CS_ptrQ9 = WebRtcIsacfix_kCos[0];
-
-  /* If CorrQ11[1] too large we avoid getting overflow in the calculation by shifting */
-  sh=WebRtcSpl_NormW32(CorrQ11[1]);
-  if (CorrQ11[1]==0) /* Use next correlation */
-    sh=WebRtcSpl_NormW32(CorrQ11[2]);
-
-  if (sh<9)
-    shftVal = 9 - sh;
-  else
-    shftVal = 0;
-
-  for (n = 0; n < FRAMESAMPLES/8; n++)
-    diffQ16[n] = (CS_ptrQ9[n] * (CorrQ11[1] >> shftVal) + 2) >> 2;
-  for (k = 2; k < AR_ORDER; k += 2) {
-    CS_ptrQ9 = WebRtcIsacfix_kCos[k];
-    for (n = 0; n < FRAMESAMPLES/8; n++)
-      diffQ16[n] += (CS_ptrQ9[n] * (CorrQ11[k + 1] >> shftVal) + 2) >> 2;
-  }
-
-  in_sqrt = summQ16[0] + (diffQ16[0] << shftVal);
-
-  /* convert to magnitude spectrum, by doing square-roots (modified from SPLIB)  */
-  res = 1 << (WebRtcSpl_GetSizeInBits(in_sqrt) >> 1);
-
-  for (k = 0; k < FRAMESAMPLES/8; k++)
-  {
-    in_sqrt = summQ16[k] + (diffQ16[k] << shftVal);
-    i = 10;
-
-    /* make in_sqrt positive to prohibit sqrt of negative values */
-    if(in_sqrt<0)
-      in_sqrt=-in_sqrt;
-
-    newRes = (in_sqrt / res + res) >> 1;
-    do
-    {
-      res = newRes;
-      newRes = (in_sqrt / res + res) >> 1;
-    } while (newRes != res && i-- > 0);
-
-    CurveQ8[k] = (int16_t)newRes;
-  }
-  for (k = FRAMESAMPLES/8; k < FRAMESAMPLES/4; k++) {
-
-    in_sqrt = summQ16[FRAMESAMPLES / 4 - 1 - k] -
-        (diffQ16[FRAMESAMPLES / 4 - 1 - k] << shftVal);
-    i = 10;
-
-    /* make in_sqrt positive to prohibit sqrt of negative values */
-    if(in_sqrt<0)
-      in_sqrt=-in_sqrt;
-
-    newRes = (in_sqrt / res + res) >> 1;
-    do
-    {
-      res = newRes;
-      newRes = (in_sqrt / res + res) >> 1;
-    } while (newRes != res && i-- > 0);
-
-    CurveQ8[k] = (int16_t)newRes;
-  }
-
-}
-
-
-
-/* generate array of dither samples in Q7 */
-static void GenerateDitherQ7(int16_t *bufQ7,
-                             uint32_t seed,
-                             int16_t length,
-                             int16_t AvgPitchGain_Q12)
-{
-  int   k;
-  int16_t dither1_Q7, dither2_Q7, dither_gain_Q14, shft;
-
-  if (AvgPitchGain_Q12 < 614)  /* this threshold should be equal to that in decode_spec() */
-  {
-    for (k = 0; k < length-2; k += 3)
-    {
-      /* new random unsigned int32_t */
-      seed = WEBRTC_SPL_UMUL(seed, 196314165) + 907633515;
-
-      /* fixed-point dither sample between -64 and 64 (Q7) */
-      dither1_Q7 = (int16_t)(((int32_t)(seed + 16777216)) >> 25);
-
-      /* new random unsigned int32_t */
-      seed = WEBRTC_SPL_UMUL(seed, 196314165) + 907633515;
-
-      /* fixed-point dither sample between -64 and 64 */
-      dither2_Q7 = (int16_t)(((int32_t)(seed + 16777216)) >> 25);
-
-      shft = (int16_t)(WEBRTC_SPL_RSHIFT_U32(seed, 25) & 15);
-      if (shft < 5)
-      {
-        bufQ7[k]   = dither1_Q7;
-        bufQ7[k+1] = dither2_Q7;
-        bufQ7[k+2] = 0;
-      }
-      else if (shft < 10)
-      {
-        bufQ7[k]   = dither1_Q7;
-        bufQ7[k+1] = 0;
-        bufQ7[k+2] = dither2_Q7;
-      }
-      else
-      {
-        bufQ7[k]   = 0;
-        bufQ7[k+1] = dither1_Q7;
-        bufQ7[k+2] = dither2_Q7;
-      }
-    }
-  }
-  else
-  {
-    dither_gain_Q14 = (int16_t)(22528 - WEBRTC_SPL_MUL(10, AvgPitchGain_Q12));
-
-    /* dither on half of the coefficients */
-    for (k = 0; k < length-1; k += 2)
-    {
-      /* new random unsigned int32_t */
-      seed = WEBRTC_SPL_UMUL(seed, 196314165) + 907633515;
-
-      /* fixed-point dither sample between -64 and 64 */
-      dither1_Q7 = (int16_t)(((int32_t)(seed + 16777216)) >> 25);
-
-      /* dither sample is placed in either even or odd index */
-      shft = (int16_t)(WEBRTC_SPL_RSHIFT_U32(seed, 25) & 1);     /* either 0 or 1 */
-
-      bufQ7[k + shft] = (int16_t)((dither_gain_Q14 * dither1_Q7 + 8192) >> 14);
-      bufQ7[k + 1 - shft] = 0;
-    }
-  }
-}
-
-
-
-
-/*
- * function to decode the complex spectrum from the bitstream
- * returns the total number of bytes in the stream
- */
-int WebRtcIsacfix_DecodeSpec(Bitstr_dec *streamdata,
-                             int16_t *frQ7,
-                             int16_t *fiQ7,
-                             int16_t AvgPitchGain_Q12)
-{
-  int16_t  data[FRAMESAMPLES];
-  int32_t  invARSpec2_Q16[FRAMESAMPLES/4];
-  int16_t  ARCoefQ12[AR_ORDER+1];
-  int16_t  RCQ15[AR_ORDER];
-  int16_t  gainQ10;
-  int32_t  gain2_Q10;
-  int len;
-  int          k;
-
-  /* create dither signal */
-  GenerateDitherQ7(data, streamdata->W_upper, FRAMESAMPLES, AvgPitchGain_Q12); /* Dither is output in vector 'Data' */
-
-  /* decode model parameters */
-  if (WebRtcIsacfix_DecodeRcCoef(streamdata, RCQ15) < 0)
-    return -ISAC_RANGE_ERROR_DECODE_SPECTRUM;
-
-
-  WebRtcSpl_ReflCoefToLpc(RCQ15, AR_ORDER, ARCoefQ12);
-
-  if (WebRtcIsacfix_DecodeGain2(streamdata, &gain2_Q10) < 0)
-    return -ISAC_RANGE_ERROR_DECODE_SPECTRUM;
-
-  /* compute inverse AR power spectrum */
-  CalcInvArSpec(ARCoefQ12, gain2_Q10, invARSpec2_Q16);
-
-  /* arithmetic decoding of spectrum */
-  /* 'data' input and output. Input = Dither */
-  len = WebRtcIsacfix_DecLogisticMulti2(data, streamdata, invARSpec2_Q16, (int16_t)FRAMESAMPLES);
-
-  if (len<1)
-    return -ISAC_RANGE_ERROR_DECODE_SPECTRUM;
-
-  /* subtract dither and scale down spectral samples with low SNR */
-  if (AvgPitchGain_Q12 <= 614)
-  {
-    for (k = 0; k < FRAMESAMPLES; k += 4)
-    {
-      gainQ10 = WebRtcSpl_DivW32W16ResW16(30 << 10,
-          (int16_t)((uint32_t)(invARSpec2_Q16[k >> 2] + 2195456) >> 16));
-      *frQ7++ = (int16_t)((data[k] * gainQ10 + 512) >> 10);
-      *fiQ7++ = (int16_t)((data[k + 1] * gainQ10 + 512) >> 10);
-      *frQ7++ = (int16_t)((data[k + 2] * gainQ10 + 512) >> 10);
-      *fiQ7++ = (int16_t)((data[k + 3] * gainQ10 + 512) >> 10);
-    }
-  }
-  else
-  {
-    for (k = 0; k < FRAMESAMPLES; k += 4)
-    {
-      gainQ10 = WebRtcSpl_DivW32W16ResW16(36 << 10,
-          (int16_t)((uint32_t)(invARSpec2_Q16[k >> 2] + 2654208) >> 16));
-      *frQ7++ = (int16_t)((data[k] * gainQ10 + 512) >> 10);
-      *fiQ7++ = (int16_t)((data[k + 1] * gainQ10 + 512) >> 10);
-      *frQ7++ = (int16_t)((data[k + 2] * gainQ10 + 512) >> 10);
-      *fiQ7++ = (int16_t)((data[k + 3] * gainQ10 + 512) >> 10);
-    }
-  }
-
-  return len;
-}
-
-
-int WebRtcIsacfix_EncodeSpec(const int16_t *fr,
-                             const int16_t *fi,
-                             Bitstr_enc *streamdata,
-                             int16_t AvgPitchGain_Q12)
-{
-  int16_t  dataQ7[FRAMESAMPLES];
-  int32_t  PSpec[FRAMESAMPLES/4];
-  uint16_t invARSpecQ8[FRAMESAMPLES/4];
-  int32_t  CorrQ7[AR_ORDER+1];
-  int32_t  CorrQ7_norm[AR_ORDER+1];
-  int16_t  RCQ15[AR_ORDER];
-  int16_t  ARCoefQ12[AR_ORDER+1];
-  int32_t  gain2_Q10;
-  int16_t  val;
-  int32_t  nrg;
-  uint32_t sum;
-  int16_t  lft_shft;
-  int16_t  status;
-  int          k, n, j;
-
-
-  /* create dither_float signal */
-  GenerateDitherQ7(dataQ7, streamdata->W_upper, FRAMESAMPLES, AvgPitchGain_Q12);
-
-  /* add dither and quantize, and compute power spectrum */
-  /* Vector dataQ7 contains Dither in Q7 */
-  for (k = 0; k < FRAMESAMPLES; k += 4)
-  {
-    val = ((*fr++ + dataQ7[k]   + 64) & 0xFF80) - dataQ7[k]; /* Data = Dither */
-    dataQ7[k] = val;            /* New value in Data */
-    sum = WEBRTC_SPL_UMUL(val, val);
-
-    val = ((*fi++ + dataQ7[k+1] + 64) & 0xFF80) - dataQ7[k+1]; /* Data = Dither */
-    dataQ7[k+1] = val;            /* New value in Data */
-    sum += WEBRTC_SPL_UMUL(val, val);
-
-    val = ((*fr++ + dataQ7[k+2] + 64) & 0xFF80) - dataQ7[k+2]; /* Data = Dither */
-    dataQ7[k+2] = val;            /* New value in Data */
-    sum += WEBRTC_SPL_UMUL(val, val);
-
-    val = ((*fi++ + dataQ7[k+3] + 64) & 0xFF80) - dataQ7[k+3]; /* Data = Dither */
-    dataQ7[k+3] = val;            /* New value in Data */
-    sum += WEBRTC_SPL_UMUL(val, val);
-
-    PSpec[k>>2] = WEBRTC_SPL_RSHIFT_U32(sum, 2);
-  }
-
-  /* compute correlation from power spectrum */
-  CalcCorrelation(PSpec, CorrQ7);
-
-
-  /* find AR coefficients */
-  /* number of bit shifts to 14-bit normalize CorrQ7[0] (leaving room for sign) */
-  lft_shft = WebRtcSpl_NormW32(CorrQ7[0]) - 18;
-
-  if (lft_shft > 0) {
-    for (k=0; k<AR_ORDER+1; k++)
-      CorrQ7_norm[k] = CorrQ7[k] << lft_shft;
-  } else {
-    for (k=0; k<AR_ORDER+1; k++)
-      CorrQ7_norm[k] = CorrQ7[k] >> -lft_shft;
-  }
-
-  /* find RC coefficients */
-  WebRtcSpl_AutoCorrToReflCoef(CorrQ7_norm, AR_ORDER, RCQ15);
-
-  /* quantize & code RC Coef */
-  status = WebRtcIsacfix_EncodeRcCoef(RCQ15, streamdata);
-  if (status < 0) {
-    return status;
-  }
-
-  /* RC -> AR coefficients */
-  WebRtcSpl_ReflCoefToLpc(RCQ15, AR_ORDER, ARCoefQ12);
-
-  /* compute ARCoef' * Corr * ARCoef in Q19 */
-  nrg = 0;
-  for (j = 0; j <= AR_ORDER; j++) {
-    for (n = 0; n <= j; n++)
-      nrg += (ARCoefQ12[j] * ((CorrQ7_norm[j - n] * ARCoefQ12[n] + 256) >> 9) +
-          4) >> 3;
-    for (n = j+1; n <= AR_ORDER; n++)
-      nrg += (ARCoefQ12[j] * ((CorrQ7_norm[n - j] * ARCoefQ12[n] + 256) >> 9) +
-          4) >> 3;
-  }
-
-  if (lft_shft > 0)
-    nrg >>= lft_shft;
-  else
-    nrg <<= -lft_shft;
-
-  if(nrg>131072)
-    gain2_Q10 = WebRtcSpl_DivResultInQ31(FRAMESAMPLES >> 2, nrg);  /* also shifts 31 bits to the left! */
-  else
-    gain2_Q10 = FRAMESAMPLES >> 2;
-
-  /* quantize & code gain2_Q10 */
-  if (WebRtcIsacfix_EncodeGain2(&gain2_Q10, streamdata))
-    return -1;
-
-  /* compute inverse AR magnitude spectrum */
-  CalcRootInvArSpec(ARCoefQ12, gain2_Q10, invARSpecQ8);
-
-
-  /* arithmetic coding of spectrum */
-  status = WebRtcIsacfix_EncLogisticMulti2(streamdata, dataQ7, invARSpecQ8, (int16_t)FRAMESAMPLES);
-  if ( status )
-    return( status );
-
-  return 0;
-}
-
-
-/* Matlab's LAR definition */
-static void Rc2LarFix(const int16_t *rcQ15, int32_t *larQ17, int16_t order) {
-
-  /*
-
-    This is a piece-wise implemenetation of a rc2lar-function (all values in the comment
-    are Q15 values and  are based on [0 24956/32768 30000/32768 32500/32768], i.e.
-    [0.76159667968750   0.91552734375000   0.99182128906250]
-
-    x0  x1           a                 k              x0(again)         b
-    ==================================================================================
-    0.00 0.76:   0                  2.625997508581   0                  0
-    0.76 0.91:   2.000012018559     7.284502668663   0.761596679688    -3.547841027073
-    0.91 0.99:   3.121320351712    31.115835041229   0.915527343750   -25.366077452148
-    0.99 1.00:   5.495270168700   686.663805654056   0.991821289063  -675.552510708011
-
-    The implementation is y(x)= a + (x-x0)*k, but this can be simplified to
-
-    y(x) = a-x0*k + x*k = b + x*k, where b = a-x0*k
-
-    akx=[0                 2.625997508581   0
-    2.000012018559     7.284502668663   0.761596679688
-    3.121320351712    31.115835041229   0.915527343750
-    5.495270168700   686.663805654056   0.991821289063];
-
-    b = akx(:,1) - akx(:,3).*akx(:,2)
-
-    [ 0.0
-    -3.547841027073
-    -25.366077452148
-    -675.552510708011]
-
-  */
-
-  int k;
-  int16_t rc;
-  int32_t larAbsQ17;
-
-  for (k = 0; k < order; k++) {
-
-    rc = WEBRTC_SPL_ABS_W16(rcQ15[k]); //Q15
-
-    /* Calculate larAbsQ17 in Q17 from rc in Q15 */
-
-    if (rc<24956) {  //0.7615966 in Q15
-      // (Q15*Q13)>>11 = Q17
-      larAbsQ17 = rc * 21512 >> 11;
-    } else if (rc<30000) { //0.91552734375 in Q15
-      // Q17 + (Q15*Q12)>>10 = Q17
-      larAbsQ17 = -465024 + (rc * 29837 >> 10);
-    } else if (rc<32500) { //0.99182128906250 in Q15
-      // Q17 + (Q15*Q10)>>8 = Q17
-      larAbsQ17 = -3324784 + (rc * 31863 >> 8);
-    } else  {
-      // Q17 + (Q15*Q5)>>3 = Q17
-      larAbsQ17 = -88546020 + (rc * 21973 >> 3);
-    }
-
-    if (rcQ15[k]>0) {
-      larQ17[k] = larAbsQ17;
-    } else {
-      larQ17[k] = -larAbsQ17;
-    }
-  }
-}
-
-
-static void Lar2RcFix(const int32_t *larQ17, int16_t *rcQ15,  int16_t order) {
-
-  /*
-    This is a piece-wise implemenetation of a lar2rc-function
-    See comment in Rc2LarFix() about details.
-  */
-
-  int k;
-  int16_t larAbsQ11;
-  int32_t rc;
-
-  for (k = 0; k < order; k++) {
-
-    larAbsQ11 = (int16_t)WEBRTC_SPL_ABS_W32((larQ17[k] + 32) >> 6);  // Q11
-
-    if (larAbsQ11<4097) { //2.000012018559 in Q11
-      // Q11*Q16>>12 = Q15
-      rc = larAbsQ11 * 24957 >> 12;
-    } else if (larAbsQ11<6393) { //3.121320351712 in Q11
-      // (Q11*Q17 + Q13)>>13 = Q15
-      rc = (larAbsQ11 * 17993 + 130738688) >> 13;
-    } else if (larAbsQ11<11255) { //5.495270168700 in Q11
-      // (Q11*Q19 + Q30)>>15 = Q15
-      rc = (larAbsQ11 * 16850 + 875329820) >> 15;
-    } else  {
-      // (Q11*Q24>>16 + Q19)>>4 = Q15
-      rc = (((larAbsQ11 * 24433) >> 16) + 515804) >> 4;
-    }
-
-    if (larQ17[k]<=0) {
-      rc = -rc;
-    }
-
-    rcQ15[k] = (int16_t) rc;  // Q15
-  }
-}
-
-static void Poly2LarFix(int16_t *lowbandQ15,
-                        int16_t orderLo,
-                        int16_t *hibandQ15,
-                        int16_t orderHi,
-                        int16_t Nsub,
-                        int32_t *larsQ17) {
-
-  int k, n;
-  int32_t *outpQ17;
-  int16_t orderTot;
-  int32_t larQ17[MAX_ORDER];   // Size 7+6 is enough
-
-  orderTot = (orderLo + orderHi);
-  outpQ17 = larsQ17;
-  for (k = 0; k < Nsub; k++) {
-
-    Rc2LarFix(lowbandQ15, larQ17, orderLo);
-
-    for (n = 0; n < orderLo; n++)
-      outpQ17[n] = larQ17[n]; //Q17
-
-    Rc2LarFix(hibandQ15, larQ17, orderHi);
-
-    for (n = 0; n < orderHi; n++)
-      outpQ17[n + orderLo] = larQ17[n]; //Q17;
-
-    outpQ17 += orderTot;
-    lowbandQ15 += orderLo;
-    hibandQ15 += orderHi;
-  }
-}
-
-
-static void Lar2polyFix(int32_t *larsQ17,
-                        int16_t *lowbandQ15,
-                        int16_t orderLo,
-                        int16_t *hibandQ15,
-                        int16_t orderHi,
-                        int16_t Nsub) {
-
-  int k, n;
-  int16_t orderTot;
-  int16_t *outplQ15, *outphQ15;
-  int32_t *inpQ17;
-  int16_t rcQ15[7+6];
-
-  orderTot = (orderLo + orderHi);
-  outplQ15 = lowbandQ15;
-  outphQ15 = hibandQ15;
-  inpQ17 = larsQ17;
-  for (k = 0; k < Nsub; k++) {
-
-    /* gains not handled here as in the FLP version */
-
-    /* Low band */
-    Lar2RcFix(&inpQ17[0], rcQ15, orderLo);
-    for (n = 0; n < orderLo; n++)
-      outplQ15[n] = rcQ15[n]; // Refl. coeffs
-
-    /* High band */
-    Lar2RcFix(&inpQ17[orderLo], rcQ15, orderHi);
-    for (n = 0; n < orderHi; n++)
-      outphQ15[n] = rcQ15[n]; // Refl. coeffs
-
-    inpQ17 += orderTot;
-    outplQ15 += orderLo;
-    outphQ15 += orderHi;
-  }
-}
-
-/*
-Function WebRtcIsacfix_MatrixProduct1C() does one form of matrix multiplication.
-It first shifts input data of one matrix, determines the right indexes for the
-two matrixes, multiply them, and write the results into an output buffer.
-
-Note that two factors (or, multipliers) determine the initialization values of
-the variable `matrix1_index` in the code. The relationship is
-`matrix1_index` = `matrix1_index_factor1` * `matrix1_index_factor2`, where
-`matrix1_index_factor1` is given by the argument while `matrix1_index_factor2`
-is determined by the value of argument `matrix1_index_init_case`;
-`matrix1_index_factor2` is the value of the outmost loop counter j (when
-`matrix1_index_init_case` is 0), or the value of the middle loop counter k (when
-`matrix1_index_init_case` is non-zero).
-
-`matrix0_index` is determined the same way.
-
-Arguments:
-  matrix0[]:                 matrix0 data in Q15 domain.
-  matrix1[]:                 matrix1 data.
-  matrix_product[]:          output data (matrix product).
-  matrix1_index_factor1:     The first of two factors determining the
-                             initialization value of matrix1_index.
-  matrix0_index_factor1:     The first of two factors determining the
-                             initialization value of matrix0_index.
-  matrix1_index_init_case:   Case number for selecting the second of two
-                             factors determining the initialization value
-                             of matrix1_index and matrix0_index.
-  matrix1_index_step:        Incremental step for matrix1_index.
-  matrix0_index_step:        Incremental step for matrix0_index.
-  inner_loop_count:          Maximum count of the inner loop.
-  mid_loop_count:            Maximum count of the intermediate loop.
-  shift:                     Left shift value for matrix1.
-*/
-void WebRtcIsacfix_MatrixProduct1C(const int16_t matrix0[],
-                                   const int32_t matrix1[],
-                                   int32_t matrix_product[],
-                                   const int matrix1_index_factor1,
-                                   const int matrix0_index_factor1,
-                                   const int matrix1_index_init_case,
-                                   const int matrix1_index_step,
-                                   const int matrix0_index_step,
-                                   const int inner_loop_count,
-                                   const int mid_loop_count,
-                                   const int shift) {
-  int j = 0, k = 0, n = 0;
-  int matrix0_index = 0, matrix1_index = 0, matrix_prod_index = 0;
-  int* matrix0_index_factor2 = &k;
-  int* matrix1_index_factor2 = &j;
-  if (matrix1_index_init_case != 0) {
-    matrix0_index_factor2 = &j;
-    matrix1_index_factor2 = &k;
-  }
-
-  for (j = 0; j < SUBFRAMES; j++) {
-    matrix_prod_index = mid_loop_count * j;
-    for (k = 0; k < mid_loop_count; k++) {
-      int32_t sum32 = 0;
-      matrix0_index = matrix0_index_factor1 * (*matrix0_index_factor2);
-      matrix1_index = matrix1_index_factor1 * (*matrix1_index_factor2);
-      for (n = 0; n < inner_loop_count; n++) {
-        sum32 += WEBRTC_SPL_MUL_16_32_RSFT16(
-            matrix0[matrix0_index], matrix1[matrix1_index] * (1 << shift));
-        matrix0_index += matrix0_index_step;
-        matrix1_index += matrix1_index_step;
-      }
-      matrix_product[matrix_prod_index] = sum32;
-      matrix_prod_index++;
-    }
-  }
-}
-
-/*
-Function WebRtcIsacfix_MatrixProduct2C() returns the product of two matrixes,
-one of which has two columns. It first has to determine the correct index of
-the first matrix before doing the actual element multiplication.
-
-Arguments:
-  matrix0[]:                 A matrix in Q15 domain.
-  matrix1[]:                 A matrix in Q21 domain.
-  matrix_product[]:          Output data in Q17 domain.
-  matrix0_index_factor:      A factor determining the initialization value
-                             of matrix0_index.
-  matrix0_index_step:        Incremental step for matrix0_index.
-*/
-void WebRtcIsacfix_MatrixProduct2C(const int16_t matrix0[],
-                                   const int32_t matrix1[],
-                                   int32_t matrix_product[],
-                                   const int matrix0_index_factor,
-                                   const int matrix0_index_step) {
-  int j = 0, n = 0;
-  int matrix1_index = 0, matrix0_index = 0, matrix_prod_index = 0;
-  for (j = 0; j < SUBFRAMES; j++) {
-    int32_t sum32 = 0, sum32_2 = 0;
-    matrix1_index = 0;
-    matrix0_index = matrix0_index_factor * j;
-    for (n = SUBFRAMES; n > 0; n--) {
-      sum32 += (WEBRTC_SPL_MUL_16_32_RSFT16(matrix0[matrix0_index],
-                                            matrix1[matrix1_index]));
-      sum32_2 += (WEBRTC_SPL_MUL_16_32_RSFT16(matrix0[matrix0_index],
-                                            matrix1[matrix1_index + 1]));
-      matrix1_index += 2;
-      matrix0_index += matrix0_index_step;
-    }
-    matrix_product[matrix_prod_index] = sum32 >> 3;
-    matrix_product[matrix_prod_index + 1] = sum32_2 >> 3;
-    matrix_prod_index += 2;
-  }
-}
-
-int WebRtcIsacfix_DecodeLpc(int32_t *gain_lo_hiQ17,
-                            int16_t *LPCCoef_loQ15,
-                            int16_t *LPCCoef_hiQ15,
-                            Bitstr_dec *streamdata,
-                            int16_t *outmodel) {
-
-  int32_t larsQ17[KLT_ORDER_SHAPE]; // KLT_ORDER_GAIN+KLT_ORDER_SHAPE == (ORDERLO+ORDERHI)*SUBFRAMES
-  int err;
-
-  err = WebRtcIsacfix_DecodeLpcCoef(streamdata, larsQ17, gain_lo_hiQ17, outmodel);
-  if (err<0)  // error check
-    return -ISAC_RANGE_ERROR_DECODE_LPC;
-
-  Lar2polyFix(larsQ17, LPCCoef_loQ15, ORDERLO, LPCCoef_hiQ15, ORDERHI, SUBFRAMES);
-
-  return 0;
-}
-
-/* decode & dequantize LPC Coef */
-int WebRtcIsacfix_DecodeLpcCoef(Bitstr_dec *streamdata,
-                                int32_t *LPCCoefQ17,
-                                int32_t *gain_lo_hiQ17,
-                                int16_t *outmodel)
-{
-  int j, k, n;
-  int err;
-  int16_t pos, pos2, posg, poss;
-  int16_t gainpos;
-  int16_t model;
-  int16_t index_QQ[KLT_ORDER_SHAPE];
-  int32_t tmpcoeffs_gQ17[KLT_ORDER_GAIN];
-  int32_t tmpcoeffs2_gQ21[KLT_ORDER_GAIN];
-  int16_t tmpcoeffs_sQ10[KLT_ORDER_SHAPE];
-  int32_t tmpcoeffs_sQ17[KLT_ORDER_SHAPE];
-  int32_t tmpcoeffs2_sQ18[KLT_ORDER_SHAPE];
-  int32_t sumQQ;
-  int16_t sumQQ16;
-  int32_t tmp32;
-
-
-
-  /* entropy decoding of model number */
-  err = WebRtcIsacfix_DecHistOneStepMulti(&model, streamdata, WebRtcIsacfix_kModelCdfPtr, WebRtcIsacfix_kModelInitIndex, 1);
-  if (err<0)  // error check
-    return err;
-
-  /* entropy decoding of quantization indices */
-  err = WebRtcIsacfix_DecHistOneStepMulti(index_QQ, streamdata, WebRtcIsacfix_kCdfShapePtr[model], WebRtcIsacfix_kInitIndexShape[model], KLT_ORDER_SHAPE);
-  if (err<0)  // error check
-    return err;
-  /* find quantization levels for coefficients */
-  for (k=0; k<KLT_ORDER_SHAPE; k++) {
-    tmpcoeffs_sQ10[WebRtcIsacfix_kSelIndShape[k]] = WebRtcIsacfix_kLevelsShapeQ10[WebRtcIsacfix_kOfLevelsShape[model]+WebRtcIsacfix_kOffsetShape[model][k] + index_QQ[k]];
-  }
-
-  err = WebRtcIsacfix_DecHistOneStepMulti(index_QQ, streamdata, WebRtcIsacfix_kCdfGainPtr[model], WebRtcIsacfix_kInitIndexGain[model], KLT_ORDER_GAIN);
-  if (err<0)  // error check
-    return err;
-  /* find quantization levels for coefficients */
-  for (k=0; k<KLT_ORDER_GAIN; k++) {
-    tmpcoeffs_gQ17[WebRtcIsacfix_kSelIndGain[k]] = WebRtcIsacfix_kLevelsGainQ17[WebRtcIsacfix_kOfLevelsGain[model]+ WebRtcIsacfix_kOffsetGain[model][k] + index_QQ[k]];
-  }
-
-
-  /* inverse KLT  */
-
-  /* left transform */  // Transpose matrix!
-  WebRtcIsacfix_MatrixProduct1(WebRtcIsacfix_kT1GainQ15[model], tmpcoeffs_gQ17,
-                               tmpcoeffs2_gQ21, kTIndexFactor2, kTIndexFactor2,
-                               kTInitCase0, kTIndexStep1, kTIndexStep1,
-                               kTLoopCount2, kTLoopCount2, kTMatrix1_shift5);
-
-  poss = 0;
-  for (j=0; j<SUBFRAMES; j++) {
-    for (k=0; k<LPC_SHAPE_ORDER; k++) {
-      sumQQ = 0;
-      pos = LPC_SHAPE_ORDER * j;
-      pos2 = LPC_SHAPE_ORDER * k;
-      for (n=0; n<LPC_SHAPE_ORDER; n++) {
-        sumQQ += tmpcoeffs_sQ10[pos] *
-            WebRtcIsacfix_kT1ShapeQ15[model][pos2] >> 7;  // (Q10*Q15)>>7 = Q18
-        pos++;
-        pos2++;
-      }
-      tmpcoeffs2_sQ18[poss] = sumQQ; //Q18
-      poss++;
-    }
-  }
-
-  /* right transform */ // Transpose matrix
-  WebRtcIsacfix_MatrixProduct2(WebRtcIsacfix_kT2GainQ15[0], tmpcoeffs2_gQ21,
-                               tmpcoeffs_gQ17, kTIndexFactor1, kTIndexStep2);
-  WebRtcIsacfix_MatrixProduct1(WebRtcIsacfix_kT2ShapeQ15[model],
-      tmpcoeffs2_sQ18, tmpcoeffs_sQ17, kTIndexFactor1, kTIndexFactor1,
-      kTInitCase1, kTIndexStep3, kTIndexStep2, kTLoopCount1, kTLoopCount3,
-      kTMatrix1_shift0);
-
-  /* scaling, mean addition, and gain restoration */
-  gainpos = 0;
-  posg = 0;poss = 0;pos=0;
-  for (k=0; k<SUBFRAMES; k++) {
-
-    /* log gains */
-    // Divide by 4 and get Q17 to Q8, i.e. shift 2+9.
-    sumQQ16 = (int16_t)(tmpcoeffs_gQ17[posg] >> 11);
-    sumQQ16 += WebRtcIsacfix_kMeansGainQ8[model][posg];
-    sumQQ = CalcExpN(sumQQ16); // Q8 in and Q17 out
-    gain_lo_hiQ17[gainpos] = sumQQ; //Q17
-    gainpos++;
-    posg++;
-
-    // Divide by 4 and get Q17 to Q8, i.e. shift 2+9.
-    sumQQ16 = (int16_t)(tmpcoeffs_gQ17[posg] >> 11);
-    sumQQ16 += WebRtcIsacfix_kMeansGainQ8[model][posg];
-    sumQQ = CalcExpN(sumQQ16); // Q8 in and Q17 out
-    gain_lo_hiQ17[gainpos] = sumQQ; //Q17
-    gainpos++;
-    posg++;
-
-    /* lo band LAR coeffs */
-    for (n=0; n<ORDERLO; n++, pos++, poss++) {
-      tmp32 = WEBRTC_SPL_MUL_16_32_RSFT16(31208, tmpcoeffs_sQ17[poss]); // (Q16*Q17)>>16 = Q17, with 1/2.1 = 0.47619047619 ~= 31208 in Q16
-      tmp32 = tmp32 + WebRtcIsacfix_kMeansShapeQ17[model][poss]; // Q17+Q17 = Q17
-      LPCCoefQ17[pos] = tmp32;
-    }
-
-    /* hi band LAR coeffs */
-    for (n=0; n<ORDERHI; n++, pos++, poss++) {
-      // ((Q13*Q17)>>16)<<3 = Q17, with 1/0.45 = 2.222222222222 ~= 18204 in Q13
-      tmp32 =
-          WEBRTC_SPL_MUL_16_32_RSFT16(18204, tmpcoeffs_sQ17[poss]) * (1 << 3);
-      tmp32 = tmp32 + WebRtcIsacfix_kMeansShapeQ17[model][poss]; // Q17+Q17 = Q17
-      LPCCoefQ17[pos] = tmp32;
-    }
-  }
-
-
-  *outmodel=model;
-
-  return 0;
-}
-
-/* estimate codel length of LPC Coef */
-static int EstCodeLpcCoef(int32_t *LPCCoefQ17,
-                          int32_t *gain_lo_hiQ17,
-                          int16_t *model,
-                          int32_t *sizeQ11,
-                          Bitstr_enc *streamdata,
-                          IsacSaveEncoderData* encData,
-                          transcode_obj *transcodingParam) {
-  int j, k, n;
-  int16_t posQQ, pos2QQ, gainpos;
-  int16_t  pos, poss, posg, offsg;
-  int16_t index_gQQ[KLT_ORDER_GAIN], index_sQQ[KLT_ORDER_SHAPE];
-  int16_t index_ovr_gQQ[KLT_ORDER_GAIN], index_ovr_sQQ[KLT_ORDER_SHAPE];
-  int32_t BitsQQ;
-
-  int16_t tmpcoeffs_gQ6[KLT_ORDER_GAIN];
-  int32_t tmpcoeffs_gQ17[KLT_ORDER_GAIN];
-  int32_t tmpcoeffs_sQ17[KLT_ORDER_SHAPE];
-  int32_t tmpcoeffs2_gQ21[KLT_ORDER_GAIN];
-  int32_t tmpcoeffs2_sQ17[KLT_ORDER_SHAPE];
-  int32_t sumQQ;
-  int32_t tmp32;
-  int16_t sumQQ16;
-  int status = 0;
-
-  /* write LAR coefficients to statistics file */
-  /* Save data for creation of multiple bitstreams (and transcoding) */
-  if (encData != NULL) {
-    for (k=0; k<KLT_ORDER_GAIN; k++) {
-      encData->LPCcoeffs_g[KLT_ORDER_GAIN*encData->startIdx + k] = gain_lo_hiQ17[k];
-    }
-  }
-
-  /* log gains, mean removal and scaling */
-  posg = 0;poss = 0;pos=0; gainpos=0;
-
-  for (k=0; k<SUBFRAMES; k++) {
-    /* log gains */
-
-    /* The input argument X to logN(X) is 2^17 times higher than the
-       input floating point argument Y to log(Y), since the X value
-       is a Q17 value. This can be compensated for after the call, by
-       subraction a value Z for each Q-step. One Q-step means that
-       X gets 2 times higher, i.e. Z = logN(2)*256 = 0.693147180559*256 =
-       177.445678 should be subtracted (since logN() returns a Q8 value).
-       For a X value in Q17, the value 177.445678*17 = 3017 should be
-       subtracted */
-    tmpcoeffs_gQ6[posg] = CalcLogN(gain_lo_hiQ17[gainpos])-3017; //Q8
-    tmpcoeffs_gQ6[posg] -= WebRtcIsacfix_kMeansGainQ8[0][posg]; //Q8, but Q6 after not-needed mult. by 4
-    posg++; gainpos++;
-
-    tmpcoeffs_gQ6[posg] = CalcLogN(gain_lo_hiQ17[gainpos])-3017; //Q8
-    tmpcoeffs_gQ6[posg] -= WebRtcIsacfix_kMeansGainQ8[0][posg]; //Q8, but Q6 after not-needed mult. by 4
-    posg++; gainpos++;
-
-    /* lo band LAR coeffs */
-    for (n=0; n<ORDERLO; n++, poss++, pos++) {
-      tmp32 = LPCCoefQ17[pos] - WebRtcIsacfix_kMeansShapeQ17[0][poss]; //Q17
-      tmp32 = WEBRTC_SPL_MUL_16_32_RSFT16(17203, tmp32<<3); // tmp32 = 2.1*tmp32
-      tmpcoeffs_sQ17[poss] = tmp32; //Q17
-    }
-
-    /* hi band LAR coeffs */
-    for (n=0; n<ORDERHI; n++, poss++, pos++) {
-      tmp32 = LPCCoefQ17[pos] - WebRtcIsacfix_kMeansShapeQ17[0][poss]; //Q17
-      tmp32 = WEBRTC_SPL_MUL_16_32_RSFT16(14746, tmp32<<1); // tmp32 = 0.45*tmp32
-      tmpcoeffs_sQ17[poss] = tmp32; //Q17
-    }
-
-  }
-
-
-  /* KLT  */
-
-  /* left transform */
-  offsg = 0;
-  posg = 0;
-  for (j=0; j<SUBFRAMES; j++) {
-    // Q21 = Q6 * Q15
-    sumQQ = tmpcoeffs_gQ6[offsg] * WebRtcIsacfix_kT1GainQ15[0][0] +
-        tmpcoeffs_gQ6[offsg + 1] * WebRtcIsacfix_kT1GainQ15[0][2];
-    tmpcoeffs2_gQ21[posg] = sumQQ;
-    posg++;
-
-    // Q21 = Q6 * Q15
-    sumQQ = tmpcoeffs_gQ6[offsg] * WebRtcIsacfix_kT1GainQ15[0][1] +
-        tmpcoeffs_gQ6[offsg + 1] * WebRtcIsacfix_kT1GainQ15[0][3];
-    tmpcoeffs2_gQ21[posg] = sumQQ;
-    posg++;
-
-    offsg += 2;
-  }
-
-  WebRtcIsacfix_MatrixProduct1(WebRtcIsacfix_kT1ShapeQ15[0], tmpcoeffs_sQ17,
-      tmpcoeffs2_sQ17, kTIndexFactor4, kTIndexFactor1, kTInitCase0,
-      kTIndexStep1, kTIndexStep3, kTLoopCount3, kTLoopCount3, kTMatrix1_shift1);
-
-  /* right transform */
-  WebRtcIsacfix_MatrixProduct2(WebRtcIsacfix_kT2GainQ15[0], tmpcoeffs2_gQ21,
-                               tmpcoeffs_gQ17, kTIndexFactor3, kTIndexStep1);
-
-  WebRtcIsacfix_MatrixProduct1(WebRtcIsacfix_kT2ShapeQ15[0], tmpcoeffs2_sQ17,
-      tmpcoeffs_sQ17, kTIndexFactor1, kTIndexFactor3, kTInitCase1, kTIndexStep3,
-      kTIndexStep1, kTLoopCount1, kTLoopCount3, kTMatrix1_shift1);
-
-  /* quantize coefficients */
-
-  BitsQQ = 0;
-  for (k=0; k<KLT_ORDER_GAIN; k++) //ATTN: ok?
-  {
-    posQQ = WebRtcIsacfix_kSelIndGain[k];
-    pos2QQ= (int16_t)CalcLrIntQ(tmpcoeffs_gQ17[posQQ], 17);
-
-    index_gQQ[k] = pos2QQ + WebRtcIsacfix_kQuantMinGain[k]; //ATTN: ok?
-    if (index_gQQ[k] < 0) {
-      index_gQQ[k] = 0;
-    }
-    else if (index_gQQ[k] > WebRtcIsacfix_kMaxIndGain[k]) {
-      index_gQQ[k] = WebRtcIsacfix_kMaxIndGain[k];
-    }
-    index_ovr_gQQ[k] = WebRtcIsacfix_kOffsetGain[0][k]+index_gQQ[k];
-    posQQ = WebRtcIsacfix_kOfLevelsGain[0] + index_ovr_gQQ[k];
-
-    /* Save data for creation of multiple bitstreams */
-    if (encData != NULL) {
-      encData->LPCindex_g[KLT_ORDER_GAIN*encData->startIdx + k] = index_gQQ[k];
-    }
-
-    /* determine number of bits */
-    sumQQ = WebRtcIsacfix_kCodeLenGainQ11[posQQ]; //Q11
-    BitsQQ += sumQQ;
-  }
-
-  for (k=0; k<KLT_ORDER_SHAPE; k++) //ATTN: ok?
-  {
-    index_sQQ[k] = (int16_t)(CalcLrIntQ(tmpcoeffs_sQ17[WebRtcIsacfix_kSelIndShape[k]], 17) + WebRtcIsacfix_kQuantMinShape[k]); //ATTN: ok?
-
-    if (index_sQQ[k] < 0)
-      index_sQQ[k] = 0;
-    else if (index_sQQ[k] > WebRtcIsacfix_kMaxIndShape[k])
-      index_sQQ[k] = WebRtcIsacfix_kMaxIndShape[k];
-    index_ovr_sQQ[k] = WebRtcIsacfix_kOffsetShape[0][k]+index_sQQ[k];
-
-    posQQ = WebRtcIsacfix_kOfLevelsShape[0] + index_ovr_sQQ[k];
-    sumQQ = WebRtcIsacfix_kCodeLenShapeQ11[posQQ]; //Q11
-    BitsQQ += sumQQ;
-  }
-
-
-
-  *model = 0;
-  *sizeQ11=BitsQQ;
-
-  /* entropy coding of model number */
-  status = WebRtcIsacfix_EncHistMulti(streamdata, model, WebRtcIsacfix_kModelCdfPtr, 1);
-  if (status < 0) {
-    return status;
-  }
-
-  /* entropy coding of quantization indices - shape only */
-  status = WebRtcIsacfix_EncHistMulti(streamdata, index_sQQ, WebRtcIsacfix_kCdfShapePtr[0], KLT_ORDER_SHAPE);
-  if (status < 0) {
-    return status;
-  }
-
-  /* Save data for creation of multiple bitstreams */
-  if (encData != NULL) {
-    for (k=0; k<KLT_ORDER_SHAPE; k++)
-    {
-      encData->LPCindex_s[KLT_ORDER_SHAPE*encData->startIdx + k] = index_sQQ[k];
-    }
-  }
-  /* save the state of the bitstream object 'streamdata' for the possible bit-rate reduction */
-  transcodingParam->full         = streamdata->full;
-  transcodingParam->stream_index = streamdata->stream_index;
-  transcodingParam->streamval    = streamdata->streamval;
-  transcodingParam->W_upper      = streamdata->W_upper;
-  transcodingParam->beforeLastWord     = streamdata->stream[streamdata->stream_index-1];
-  transcodingParam->lastWord     = streamdata->stream[streamdata->stream_index];
-
-  /* entropy coding of index */
-  status = WebRtcIsacfix_EncHistMulti(streamdata, index_gQQ, WebRtcIsacfix_kCdfGainPtr[0], KLT_ORDER_GAIN);
-  if (status < 0) {
-    return status;
-  }
-
-  /* find quantization levels for shape coefficients */
-  for (k=0; k<KLT_ORDER_SHAPE; k++) {
-    tmpcoeffs_sQ17[WebRtcIsacfix_kSelIndShape[k]] = WEBRTC_SPL_MUL(128, WebRtcIsacfix_kLevelsShapeQ10[WebRtcIsacfix_kOfLevelsShape[0]+index_ovr_sQQ[k]]);
-
-  }
-  /* inverse KLT  */
-
-  /* left transform */  // Transpose matrix!
-  WebRtcIsacfix_MatrixProduct1(WebRtcIsacfix_kT1ShapeQ15[0], tmpcoeffs_sQ17,
-      tmpcoeffs2_sQ17, kTIndexFactor4, kTIndexFactor4, kTInitCase0,
-      kTIndexStep1, kTIndexStep1, kTLoopCount3, kTLoopCount3, kTMatrix1_shift1);
-
-  /* right transform */ // Transpose matrix
-  WebRtcIsacfix_MatrixProduct1(WebRtcIsacfix_kT2ShapeQ15[0], tmpcoeffs2_sQ17,
-      tmpcoeffs_sQ17, kTIndexFactor1, kTIndexFactor1, kTInitCase1, kTIndexStep3,
-      kTIndexStep2, kTLoopCount1, kTLoopCount3, kTMatrix1_shift1);
-
-  /* scaling, mean addition, and gain restoration */
-  poss = 0;pos=0;
-  for (k=0; k<SUBFRAMES; k++) {
-
-    /* lo band LAR coeffs */
-    for (n=0; n<ORDERLO; n++, pos++, poss++) {
-      tmp32 = WEBRTC_SPL_MUL_16_32_RSFT16(31208, tmpcoeffs_sQ17[poss]); // (Q16*Q17)>>16 = Q17, with 1/2.1 = 0.47619047619 ~= 31208 in Q16
-      tmp32 = tmp32 + WebRtcIsacfix_kMeansShapeQ17[0][poss]; // Q17+Q17 = Q17
-      LPCCoefQ17[pos] = tmp32;
-    }
-
-    /* hi band LAR coeffs */
-    for (n=0; n<ORDERHI; n++, pos++, poss++) {
-      // ((Q13*Q17)>>16)<<3 = Q17, with 1/0.45 = 2.222222222222 ~= 18204 in Q13
-      tmp32 = WEBRTC_SPL_MUL_16_32_RSFT16(18204, tmpcoeffs_sQ17[poss]) << 3;
-      tmp32 = tmp32 + WebRtcIsacfix_kMeansShapeQ17[0][poss]; // Q17+Q17 = Q17
-      LPCCoefQ17[pos] = tmp32;
-    }
-
-  }
-
-  //to update tmpcoeffs_gQ17 to the proper state
-  for (k=0; k<KLT_ORDER_GAIN; k++) {
-    tmpcoeffs_gQ17[WebRtcIsacfix_kSelIndGain[k]] = WebRtcIsacfix_kLevelsGainQ17[WebRtcIsacfix_kOfLevelsGain[0]+index_ovr_gQQ[k]];
-  }
-
-
-
-  /* find quantization levels for coefficients */
-
-  /* left transform */
-  offsg = 0;
-  posg = 0;
-  for (j=0; j<SUBFRAMES; j++) {
-    // (Q15 * Q17) >> (16 - 1) = Q17; Q17 << 4 = Q21.
-    sumQQ = (WEBRTC_SPL_MUL_16_32_RSFT16(WebRtcIsacfix_kT1GainQ15[0][0],
-                                         tmpcoeffs_gQ17[offsg]) << 1);
-    sumQQ += (WEBRTC_SPL_MUL_16_32_RSFT16(WebRtcIsacfix_kT1GainQ15[0][1],
-                                          tmpcoeffs_gQ17[offsg + 1]) << 1);
-    tmpcoeffs2_gQ21[posg] = sumQQ << 4;
-    posg++;
-
-    sumQQ = (WEBRTC_SPL_MUL_16_32_RSFT16(WebRtcIsacfix_kT1GainQ15[0][2],
-                                         tmpcoeffs_gQ17[offsg]) << 1);
-    sumQQ += (WEBRTC_SPL_MUL_16_32_RSFT16(WebRtcIsacfix_kT1GainQ15[0][3],
-                                          tmpcoeffs_gQ17[offsg + 1]) << 1);
-    tmpcoeffs2_gQ21[posg] = sumQQ << 4;
-    posg++;
-    offsg += 2;
-  }
-
-  /* right transform */ // Transpose matrix
-  WebRtcIsacfix_MatrixProduct2(WebRtcIsacfix_kT2GainQ15[0], tmpcoeffs2_gQ21,
-                               tmpcoeffs_gQ17, kTIndexFactor1, kTIndexStep2);
-
-  /* scaling, mean addition, and gain restoration */
-  posg = 0;
-  gainpos = 0;
-  for (k=0; k<2*SUBFRAMES; k++) {
-
-    // Divide by 4 and get Q17 to Q8, i.e. shift 2+9.
-    sumQQ16 = (int16_t)(tmpcoeffs_gQ17[posg] >> 11);
-    sumQQ16 += WebRtcIsacfix_kMeansGainQ8[0][posg];
-    sumQQ = CalcExpN(sumQQ16); // Q8 in and Q17 out
-    gain_lo_hiQ17[gainpos] = sumQQ; //Q17
-
-    gainpos++;
-    pos++;posg++;
-  }
-
-  return 0;
-}
-
-int WebRtcIsacfix_EstCodeLpcGain(int32_t *gain_lo_hiQ17,
-                                 Bitstr_enc *streamdata,
-                                 IsacSaveEncoderData* encData) {
-  int j, k;
-  int16_t posQQ, pos2QQ, gainpos;
-  int16_t posg;
-  int16_t index_gQQ[KLT_ORDER_GAIN];
-
-  int16_t tmpcoeffs_gQ6[KLT_ORDER_GAIN];
-  int32_t tmpcoeffs_gQ17[KLT_ORDER_GAIN];
-  int32_t tmpcoeffs2_gQ21[KLT_ORDER_GAIN];
-  int32_t sumQQ;
-  int status = 0;
-
-  /* write LAR coefficients to statistics file */
-  /* Save data for creation of multiple bitstreams (and transcoding) */
-  if (encData != NULL) {
-    for (k=0; k<KLT_ORDER_GAIN; k++) {
-      encData->LPCcoeffs_g[KLT_ORDER_GAIN*encData->startIdx + k] = gain_lo_hiQ17[k];
-    }
-  }
-
-  /* log gains, mean removal and scaling */
-  posg = 0; gainpos = 0;
-
-  for (k=0; k<SUBFRAMES; k++) {
-    /* log gains */
-
-    /* The input argument X to logN(X) is 2^17 times higher than the
-       input floating point argument Y to log(Y), since the X value
-       is a Q17 value. This can be compensated for after the call, by
-       subraction a value Z for each Q-step. One Q-step means that
-       X gets 2 times higher, i.e. Z = logN(2)*256 = 0.693147180559*256 =
-       177.445678 should be subtracted (since logN() returns a Q8 value).
-       For a X value in Q17, the value 177.445678*17 = 3017 should be
-       subtracted */
-    tmpcoeffs_gQ6[posg] = CalcLogN(gain_lo_hiQ17[gainpos])-3017; //Q8
-    tmpcoeffs_gQ6[posg] -= WebRtcIsacfix_kMeansGainQ8[0][posg]; //Q8, but Q6 after not-needed mult. by 4
-    posg++; gainpos++;
-
-    tmpcoeffs_gQ6[posg] = CalcLogN(gain_lo_hiQ17[gainpos])-3017; //Q8
-    tmpcoeffs_gQ6[posg] -= WebRtcIsacfix_kMeansGainQ8[0][posg]; //Q8, but Q6 after not-needed mult. by 4
-    posg++; gainpos++;
-  }
-
-
-  /* KLT  */
-
-  /* left transform */
-  posg = 0;
-  for (j=0; j<SUBFRAMES; j++) {
-      // Q21 = Q6 * Q15
-      sumQQ = tmpcoeffs_gQ6[j * 2] * WebRtcIsacfix_kT1GainQ15[0][0] +
-          tmpcoeffs_gQ6[j * 2 + 1] * WebRtcIsacfix_kT1GainQ15[0][2];
-      tmpcoeffs2_gQ21[posg] = sumQQ;
-      posg++;
-
-      sumQQ = tmpcoeffs_gQ6[j * 2] * WebRtcIsacfix_kT1GainQ15[0][1] +
-          tmpcoeffs_gQ6[j * 2 + 1] * WebRtcIsacfix_kT1GainQ15[0][3];
-      tmpcoeffs2_gQ21[posg] = sumQQ;
-      posg++;
-  }
-
-  /* right transform */
-  WebRtcIsacfix_MatrixProduct2(WebRtcIsacfix_kT2GainQ15[0], tmpcoeffs2_gQ21,
-                               tmpcoeffs_gQ17, kTIndexFactor3, kTIndexStep1);
-
-  /* quantize coefficients */
-
-  for (k=0; k<KLT_ORDER_GAIN; k++) //ATTN: ok?
-  {
-    posQQ = WebRtcIsacfix_kSelIndGain[k];
-    pos2QQ= (int16_t)CalcLrIntQ(tmpcoeffs_gQ17[posQQ], 17);
-
-    index_gQQ[k] = pos2QQ + WebRtcIsacfix_kQuantMinGain[k]; //ATTN: ok?
-    if (index_gQQ[k] < 0) {
-      index_gQQ[k] = 0;
-    }
-    else if (index_gQQ[k] > WebRtcIsacfix_kMaxIndGain[k]) {
-      index_gQQ[k] = WebRtcIsacfix_kMaxIndGain[k];
-    }
-
-    /* Save data for creation of multiple bitstreams */
-    if (encData != NULL) {
-      encData->LPCindex_g[KLT_ORDER_GAIN*encData->startIdx + k] = index_gQQ[k];
-    }
-  }
-
-  /* entropy coding of index */
-  status = WebRtcIsacfix_EncHistMulti(streamdata, index_gQQ, WebRtcIsacfix_kCdfGainPtr[0], KLT_ORDER_GAIN);
-  if (status < 0) {
-    return status;
-  }
-
-  return 0;
-}
-
-
-int WebRtcIsacfix_EncodeLpc(int32_t *gain_lo_hiQ17,
-                            int16_t *LPCCoef_loQ15,
-                            int16_t *LPCCoef_hiQ15,
-                            int16_t *model,
-                            int32_t *sizeQ11,
-                            Bitstr_enc *streamdata,
-                            IsacSaveEncoderData* encData,
-                            transcode_obj *transcodeParam)
-{
-  int status = 0;
-  int32_t larsQ17[KLT_ORDER_SHAPE]; // KLT_ORDER_SHAPE == (ORDERLO+ORDERHI)*SUBFRAMES
-  // = (6+12)*6 == 108
-
-  Poly2LarFix(LPCCoef_loQ15, ORDERLO, LPCCoef_hiQ15, ORDERHI, SUBFRAMES, larsQ17);
-
-  status = EstCodeLpcCoef(larsQ17, gain_lo_hiQ17, model, sizeQ11,
-                          streamdata, encData, transcodeParam);
-  if (status < 0) {
-    return (status);
-  }
-
-  Lar2polyFix(larsQ17, LPCCoef_loQ15, ORDERLO, LPCCoef_hiQ15, ORDERHI, SUBFRAMES);
-
-  return 0;
-}
-
-
-/* decode & dequantize RC */
-int WebRtcIsacfix_DecodeRcCoef(Bitstr_dec *streamdata, int16_t *RCQ15)
-{
-  int k, err;
-  int16_t index[AR_ORDER];
-
-  /* entropy decoding of quantization indices */
-  err = WebRtcIsacfix_DecHistOneStepMulti(index, streamdata, WebRtcIsacfix_kRcCdfPtr, WebRtcIsacfix_kRcInitInd, AR_ORDER);
-  if (err<0)  // error check
-    return err;
-
-  /* find quantization levels for reflection coefficients */
-  for (k=0; k<AR_ORDER; k++)
-  {
-    RCQ15[k] = *(WebRtcIsacfix_kRcLevPtr[k] + index[k]);
-  }
-
-  return 0;
-}
-
-
-
-/* quantize & code RC */
-int WebRtcIsacfix_EncodeRcCoef(int16_t *RCQ15, Bitstr_enc *streamdata)
-{
-  int k;
-  int16_t index[AR_ORDER];
-  int status;
-
-  /* quantize reflection coefficients (add noise feedback?) */
-  for (k=0; k<AR_ORDER; k++)
-  {
-    index[k] = WebRtcIsacfix_kRcInitInd[k];
-
-    if (RCQ15[k] > WebRtcIsacfix_kRcBound[index[k]])
-    {
-      while (RCQ15[k] > WebRtcIsacfix_kRcBound[index[k] + 1])
-        index[k]++;
-    }
-    else
-    {
-      while (RCQ15[k] < WebRtcIsacfix_kRcBound[--index[k]]) ;
-    }
-
-    RCQ15[k] = *(WebRtcIsacfix_kRcLevPtr[k] + index[k]);
-  }
-
-
-  /* entropy coding of quantization indices */
-  status = WebRtcIsacfix_EncHistMulti(streamdata, index, WebRtcIsacfix_kRcCdfPtr, AR_ORDER);
-
-  /* If error in WebRtcIsacfix_EncHistMulti(), status will be negative, otherwise 0 */
-  return status;
-}
-
-
-/* decode & dequantize squared Gain */
-int WebRtcIsacfix_DecodeGain2(Bitstr_dec *streamdata, int32_t *gainQ10)
-{
-  int err;
-  int16_t index;
-
-  /* entropy decoding of quantization index */
-  err = WebRtcIsacfix_DecHistOneStepMulti(
-      &index,
-      streamdata,
-      WebRtcIsacfix_kGainPtr,
-      WebRtcIsacfix_kGainInitInd,
-      1);
-  /* error check */
-  if (err<0) {
-    return err;
-  }
-
-  /* find quantization level */
-  *gainQ10 = WebRtcIsacfix_kGain2Lev[index];
-
-  return 0;
-}
-
-
-
-/* quantize & code squared Gain */
-int WebRtcIsacfix_EncodeGain2(int32_t *gainQ10, Bitstr_enc *streamdata)
-{
-  int16_t index;
-  int status = 0;
-
-  /* find quantization index */
-  index = WebRtcIsacfix_kGainInitInd[0];
-  if (*gainQ10 > WebRtcIsacfix_kGain2Bound[index])
-  {
-    while (*gainQ10 > WebRtcIsacfix_kGain2Bound[index + 1])
-      index++;
-  }
-  else
-  {
-    while (*gainQ10 < WebRtcIsacfix_kGain2Bound[--index]) ;
-  }
-
-  /* dequantize */
-  *gainQ10 = WebRtcIsacfix_kGain2Lev[index];
-
-  /* entropy coding of quantization index */
-  status = WebRtcIsacfix_EncHistMulti(streamdata, &index, WebRtcIsacfix_kGainPtr, 1);
-
-  /* If error in WebRtcIsacfix_EncHistMulti(), status will be negative, otherwise 0 */
-  return status;
-}
-
-
-/* code and decode Pitch Gains and Lags functions */
-
-/* decode & dequantize Pitch Gains */
-int WebRtcIsacfix_DecodePitchGain(Bitstr_dec *streamdata, int16_t *PitchGains_Q12)
-{
-  int err;
-  int16_t index_comb;
-  const uint16_t *pitch_gain_cdf_ptr[1];
-
-  /* entropy decoding of quantization indices */
-  *pitch_gain_cdf_ptr = WebRtcIsacfix_kPitchGainCdf;
-  err = WebRtcIsacfix_DecHistBisectMulti(&index_comb, streamdata, pitch_gain_cdf_ptr, WebRtcIsacfix_kCdfTableSizeGain, 1);
-  /* error check, Q_mean_Gain.. tables are of size 144 */
-  if ((err < 0) || (index_comb < 0) || (index_comb >= 144))
-    return -ISAC_RANGE_ERROR_DECODE_PITCH_GAIN;
-
-  /* unquantize back to pitch gains by table look-up */
-  PitchGains_Q12[0] = WebRtcIsacfix_kPitchGain1[index_comb];
-  PitchGains_Q12[1] = WebRtcIsacfix_kPitchGain2[index_comb];
-  PitchGains_Q12[2] = WebRtcIsacfix_kPitchGain3[index_comb];
-  PitchGains_Q12[3] = WebRtcIsacfix_kPitchGain4[index_comb];
-
-  return 0;
-}
-
-
-/* quantize & code Pitch Gains */
-int WebRtcIsacfix_EncodePitchGain(int16_t* PitchGains_Q12,
-                                  Bitstr_enc* streamdata,
-                                  IsacSaveEncoderData* encData) {
-  int k,j;
-  int16_t SQ15[PITCH_SUBFRAMES];
-  int16_t index[3];
-  int16_t index_comb;
-  const uint16_t *pitch_gain_cdf_ptr[1];
-  int32_t CQ17;
-  int status = 0;
-
-
-  /* get the approximate arcsine (almost linear)*/
-  for (k=0; k<PITCH_SUBFRAMES; k++)
-    SQ15[k] = (int16_t)(PitchGains_Q12[k] * 33 >> 2);  // Q15
-
-
-  /* find quantization index; only for the first three transform coefficients */
-  for (k=0; k<3; k++)
-  {
-    /*  transform */
-    CQ17=0;
-    for (j=0; j<PITCH_SUBFRAMES; j++) {
-      CQ17 += WebRtcIsacfix_kTransform[k][j] * SQ15[j] >> 10;  // Q17
-    }
-
-    index[k] = (int16_t)((CQ17 + 8192)>>14); // Rounding and scaling with stepsize (=1/0.125=8)
-
-    /* check that the index is not outside the boundaries of the table */
-    if (index[k] < WebRtcIsacfix_kLowerlimiGain[k]) index[k] = WebRtcIsacfix_kLowerlimiGain[k];
-    else if (index[k] > WebRtcIsacfix_kUpperlimitGain[k]) index[k] = WebRtcIsacfix_kUpperlimitGain[k];
-    index[k] -= WebRtcIsacfix_kLowerlimiGain[k];
-  }
-
-  /* calculate unique overall index */
-  index_comb = (int16_t)(WEBRTC_SPL_MUL(WebRtcIsacfix_kMultsGain[0], index[0]) +
-                               WEBRTC_SPL_MUL(WebRtcIsacfix_kMultsGain[1], index[1]) + index[2]);
-
-  /* unquantize back to pitch gains by table look-up */
-  // (Y)
-  PitchGains_Q12[0] = WebRtcIsacfix_kPitchGain1[index_comb];
-  PitchGains_Q12[1] = WebRtcIsacfix_kPitchGain2[index_comb];
-  PitchGains_Q12[2] = WebRtcIsacfix_kPitchGain3[index_comb];
-  PitchGains_Q12[3] = WebRtcIsacfix_kPitchGain4[index_comb];
-
-
-  /* entropy coding of quantization pitch gains */
-  *pitch_gain_cdf_ptr = WebRtcIsacfix_kPitchGainCdf;
-  status = WebRtcIsacfix_EncHistMulti(streamdata, &index_comb, pitch_gain_cdf_ptr, 1);
-  if (status < 0) {
-    return status;
-  }
-
-  /* Save data for creation of multiple bitstreams */
-  if (encData != NULL) {
-    encData->pitchGain_index[encData->startIdx] = index_comb;
-  }
-
-  return 0;
-}
-
-
-
-/* Pitch LAG */
-
-
-/* decode & dequantize Pitch Lags */
-int WebRtcIsacfix_DecodePitchLag(Bitstr_dec *streamdata,
-                                 int16_t *PitchGain_Q12,
-                                 int16_t *PitchLags_Q7)
-{
-  int k, err;
-  int16_t index[PITCH_SUBFRAMES];
-  const int16_t *mean_val2Q10, *mean_val4Q10;
-
-  const int16_t *lower_limit;
-  const uint16_t *init_index;
-  const uint16_t *cdf_size;
-  const uint16_t **cdf;
-
-  int32_t meangainQ12;
-  int32_t CQ11, CQ10,tmp32a,tmp32b;
-  int16_t shft;
-
-  meangainQ12=0;
-  for (k = 0; k < 4; k++)
-    meangainQ12 += PitchGain_Q12[k];
-
-  meangainQ12 >>= 2;  // Get average.
-
-  /* voicing classificiation */
-  if (meangainQ12 <= 819) {                 // mean_gain < 0.2
-    shft = -1;        // StepSize=2.0;
-    cdf = WebRtcIsacfix_kPitchLagPtrLo;
-    cdf_size = WebRtcIsacfix_kPitchLagSizeLo;
-    mean_val2Q10 = WebRtcIsacfix_kMeanLag2Lo;
-    mean_val4Q10 = WebRtcIsacfix_kMeanLag4Lo;
-    lower_limit = WebRtcIsacfix_kLowerLimitLo;
-    init_index = WebRtcIsacfix_kInitIndLo;
-  } else if (meangainQ12 <= 1638) {            // mean_gain < 0.4
-    shft = 0;        // StepSize=1.0;
-    cdf = WebRtcIsacfix_kPitchLagPtrMid;
-    cdf_size = WebRtcIsacfix_kPitchLagSizeMid;
-    mean_val2Q10 = WebRtcIsacfix_kMeanLag2Mid;
-    mean_val4Q10 = WebRtcIsacfix_kMeanLag4Mid;
-    lower_limit = WebRtcIsacfix_kLowerLimitMid;
-    init_index = WebRtcIsacfix_kInitIndMid;
-  } else {
-    shft = 1;        // StepSize=0.5;
-    cdf = WebRtcIsacfix_kPitchLagPtrHi;
-    cdf_size = WebRtcIsacfix_kPitchLagSizeHi;
-    mean_val2Q10 = WebRtcIsacfix_kMeanLag2Hi;
-    mean_val4Q10 = WebRtcIsacfix_kMeanLag4Hi;
-    lower_limit = WebRtcIsacfix_kLowerLimitHi;
-    init_index = WebRtcIsacfix_kInitIndHi;
-  }
-
-  /* entropy decoding of quantization indices */
-  err = WebRtcIsacfix_DecHistBisectMulti(index, streamdata, cdf, cdf_size, 1);
-  if ((err<0) || (index[0]<0))  // error check
-    return -ISAC_RANGE_ERROR_DECODE_PITCH_LAG;
-
-  err = WebRtcIsacfix_DecHistOneStepMulti(index+1, streamdata, cdf+1, init_index, 3);
-  if (err<0)  // error check
-    return -ISAC_RANGE_ERROR_DECODE_PITCH_LAG;
-
-
-  /* unquantize back to transform coefficients and do the inverse transform: S = T'*C */
-  CQ11 = ((int32_t)index[0] + lower_limit[0]);  // Q0
-  CQ11 = WEBRTC_SPL_SHIFT_W32(CQ11,11-shft); // Scale with StepSize, Q11
-  for (k=0; k<PITCH_SUBFRAMES; k++) {
-    tmp32a =  WEBRTC_SPL_MUL_16_32_RSFT11(WebRtcIsacfix_kTransform[0][k], CQ11);
-    PitchLags_Q7[k] = (int16_t)(tmp32a >> 5);
-  }
-
-  CQ10 = mean_val2Q10[index[1]];
-  for (k=0; k<PITCH_SUBFRAMES; k++) {
-    tmp32b = WebRtcIsacfix_kTransform[1][k] * (int16_t)CQ10 >> 10;
-    PitchLags_Q7[k] += (int16_t)(tmp32b >> 5);
-  }
-
-  CQ10 = mean_val4Q10[index[3]];
-  for (k=0; k<PITCH_SUBFRAMES; k++) {
-    tmp32b = WebRtcIsacfix_kTransform[3][k] * (int16_t)CQ10 >> 10;
-    PitchLags_Q7[k] += (int16_t)(tmp32b >> 5);
-  }
-
-  return 0;
-}
-
-
-
-/* quantize & code Pitch Lags */
-int WebRtcIsacfix_EncodePitchLag(int16_t* PitchLagsQ7,
-                                 int16_t* PitchGain_Q12,
-                                 Bitstr_enc* streamdata,
-                                 IsacSaveEncoderData* encData) {
-  int k, j;
-  int16_t index[PITCH_SUBFRAMES];
-  int32_t meangainQ12, CQ17;
-  int32_t CQ11, CQ10,tmp32a;
-
-  const int16_t *mean_val2Q10,*mean_val4Q10;
-  const int16_t *lower_limit, *upper_limit;
-  const uint16_t **cdf;
-  int16_t shft, tmp16b;
-  int32_t tmp32b;
-  int status = 0;
-
-  /* compute mean pitch gain */
-  meangainQ12=0;
-  for (k = 0; k < 4; k++)
-    meangainQ12 += PitchGain_Q12[k];
-
-  meangainQ12 >>= 2;
-
-  /* Save data for creation of multiple bitstreams */
-  if (encData != NULL) {
-    encData->meanGain[encData->startIdx] = meangainQ12;
-  }
-
-  /* voicing classificiation */
-  if (meangainQ12 <= 819) {                 // mean_gain < 0.2
-    shft = -1;        // StepSize=2.0;
-    cdf = WebRtcIsacfix_kPitchLagPtrLo;
-    mean_val2Q10 = WebRtcIsacfix_kMeanLag2Lo;
-    mean_val4Q10 = WebRtcIsacfix_kMeanLag4Lo;
-    lower_limit = WebRtcIsacfix_kLowerLimitLo;
-    upper_limit = WebRtcIsacfix_kUpperLimitLo;
-  } else if (meangainQ12 <= 1638) {            // mean_gain < 0.4
-    shft = 0;        // StepSize=1.0;
-    cdf = WebRtcIsacfix_kPitchLagPtrMid;
-    mean_val2Q10 = WebRtcIsacfix_kMeanLag2Mid;
-    mean_val4Q10 = WebRtcIsacfix_kMeanLag4Mid;
-    lower_limit = WebRtcIsacfix_kLowerLimitMid;
-    upper_limit = WebRtcIsacfix_kUpperLimitMid;
-  } else {
-    shft = 1;        // StepSize=0.5;
-    cdf = WebRtcIsacfix_kPitchLagPtrHi;
-    mean_val2Q10 = WebRtcIsacfix_kMeanLag2Hi;
-    mean_val4Q10 = WebRtcIsacfix_kMeanLag4Hi;
-    lower_limit = WebRtcIsacfix_kLowerLimitHi;
-    upper_limit = WebRtcIsacfix_kUpperLimitHi;
-  }
-
-  /* find quantization index */
-  for (k=0; k<4; k++)
-  {
-    /*  transform */
-    CQ17=0;
-    for (j=0; j<PITCH_SUBFRAMES; j++)
-      CQ17 += WebRtcIsacfix_kTransform[k][j] * PitchLagsQ7[j] >> 2;  // Q17
-
-    CQ17 = WEBRTC_SPL_SHIFT_W32(CQ17,shft); // Scale with StepSize
-
-    /* quantize */
-    tmp16b = (int16_t)((CQ17 + 65536) >> 17);
-    index[k] =  tmp16b;
-
-    /* check that the index is not outside the boundaries of the table */
-    if (index[k] < lower_limit[k]) index[k] = lower_limit[k];
-    else if (index[k] > upper_limit[k]) index[k] = upper_limit[k];
-    index[k] -= lower_limit[k];
-
-    /* Save data for creation of multiple bitstreams */
-    if(encData != NULL) {
-      encData->pitchIndex[PITCH_SUBFRAMES*encData->startIdx + k] = index[k];
-    }
-  }
-
-  /* unquantize back to transform coefficients and do the inverse transform: S = T'*C */
-  CQ11 = (index[0] + lower_limit[0]);  // Q0
-  CQ11 = WEBRTC_SPL_SHIFT_W32(CQ11,11-shft); // Scale with StepSize, Q11
-
-  for (k=0; k<PITCH_SUBFRAMES; k++) {
-    tmp32a =  WEBRTC_SPL_MUL_16_32_RSFT11(WebRtcIsacfix_kTransform[0][k], CQ11); // Q12
-    PitchLagsQ7[k] = (int16_t)(tmp32a >> 5);  // Q7.
-  }
-
-  CQ10 = mean_val2Q10[index[1]];
-  for (k=0; k<PITCH_SUBFRAMES; k++) {
-    tmp32b = WebRtcIsacfix_kTransform[1][k] * (int16_t)CQ10 >> 10;
-    PitchLagsQ7[k] += (int16_t)(tmp32b >> 5);  // Q7.
-  }
-
-  CQ10 = mean_val4Q10[index[3]];
-  for (k=0; k<PITCH_SUBFRAMES; k++) {
-    tmp32b = WebRtcIsacfix_kTransform[3][k] * (int16_t)CQ10 >> 10;
-    PitchLagsQ7[k] += (int16_t)(tmp32b >> 5);  // Q7.
-  }
-
-  /* entropy coding of quantization pitch lags */
-  status = WebRtcIsacfix_EncHistMulti(streamdata, index, cdf, PITCH_SUBFRAMES);
-
-  /* If error in WebRtcIsacfix_EncHistMulti(), status will be negative, otherwise 0 */
-  return status;
-}
-
-
-
-/* Routines for inband signaling of bandwitdh estimation */
-/* Histograms based on uniform distribution of indices */
-/* Move global variables later! */
-
-
-/* cdf array for frame length indicator */
-const uint16_t kFrameLenCdf[4] = {
-  0, 21845, 43690, 65535};
-
-/* pointer to cdf array for frame length indicator */
-const uint16_t * const kFrameLenCdfPtr[1] = {kFrameLenCdf};
-
-/* initial cdf index for decoder of frame length indicator */
-const uint16_t kFrameLenInitIndex[1] = {1};
-
-
-int WebRtcIsacfix_DecodeFrameLen(Bitstr_dec *streamdata,
-                                 size_t *framesamples)
-{
-
-  int err;
-  int16_t frame_mode;
-
-  err = 0;
-  /* entropy decoding of frame length [1:30ms,2:60ms] */
-  err = WebRtcIsacfix_DecHistOneStepMulti(&frame_mode, streamdata, kFrameLenCdfPtr, kFrameLenInitIndex, 1);
-  if (err<0)  // error check
-    return -ISAC_RANGE_ERROR_DECODE_FRAME_LENGTH;
-
-  switch(frame_mode) {
-    case 1:
-      *framesamples = 480; /* 30ms */
-      break;
-    case 2:
-      *framesamples = 960; /* 60ms */
-      break;
-    default:
-      err = -ISAC_DISALLOWED_FRAME_MODE_DECODER;
-  }
-
-  return err;
-}
-
-
-int WebRtcIsacfix_EncodeFrameLen(int16_t framesamples, Bitstr_enc *streamdata) {
-
-  int status;
-  int16_t frame_mode;
-
-  status = 0;
-  frame_mode = 0;
-  /* entropy coding of frame length [1:480 samples,2:960 samples] */
-  switch(framesamples) {
-    case 480:
-      frame_mode = 1;
-      break;
-    case 960:
-      frame_mode = 2;
-      break;
-    default:
-      status = - ISAC_DISALLOWED_FRAME_MODE_ENCODER;
-  }
-
-  if (status < 0)
-    return status;
-
-  status = WebRtcIsacfix_EncHistMulti(streamdata, &frame_mode, kFrameLenCdfPtr, 1);
-
-  return status;
-}
-
-/* cdf array for estimated bandwidth */
-const uint16_t kBwCdf[25] = {
-  0, 2731, 5461, 8192, 10923, 13653, 16384, 19114, 21845, 24576, 27306, 30037,
-  32768, 35498, 38229, 40959, 43690, 46421, 49151, 51882, 54613, 57343, 60074,
-  62804, 65535};
-
-/* pointer to cdf array for estimated bandwidth */
-const uint16_t * const kBwCdfPtr[1] = {kBwCdf};
-
-/* initial cdf index for decoder of estimated bandwidth*/
-const uint16_t kBwInitIndex[1] = {7};
-
-
-int WebRtcIsacfix_DecodeSendBandwidth(Bitstr_dec *streamdata, int16_t *BWno) {
-
-  int err;
-  int16_t BWno32;
-
-  /* entropy decoding of sender's BW estimation [0..23] */
-  err = WebRtcIsacfix_DecHistOneStepMulti(&BWno32, streamdata, kBwCdfPtr, kBwInitIndex, 1);
-  if (err<0)  // error check
-    return -ISAC_RANGE_ERROR_DECODE_BANDWIDTH;
-  *BWno = (int16_t)BWno32;
-  return err;
-
-}
-
-
-int WebRtcIsacfix_EncodeReceiveBandwidth(int16_t *BWno, Bitstr_enc *streamdata)
-{
-  int status = 0;
-  /* entropy encoding of receiver's BW estimation [0..23] */
-  status = WebRtcIsacfix_EncHistMulti(streamdata, BWno, kBwCdfPtr, 1);
-
-  return status;
-}
-
-/* estimate codel length of LPC Coef */
-void WebRtcIsacfix_TranscodeLpcCoef(int32_t *gain_lo_hiQ17,
-                                    int16_t *index_gQQ) {
-  int j, k;
-  int16_t posQQ, pos2QQ;
-  int16_t posg, offsg, gainpos;
-  int32_t tmpcoeffs_gQ6[KLT_ORDER_GAIN];
-  int32_t tmpcoeffs_gQ17[KLT_ORDER_GAIN];
-  int32_t tmpcoeffs2_gQ21[KLT_ORDER_GAIN];
-  int32_t sumQQ;
-
-
-  /* log gains, mean removal and scaling */
-  posg = 0; gainpos=0;
-
-  for (k=0; k<SUBFRAMES; k++) {
-    /* log gains */
-
-    /* The input argument X to logN(X) is 2^17 times higher than the
-       input floating point argument Y to log(Y), since the X value
-       is a Q17 value. This can be compensated for after the call, by
-       subraction a value Z for each Q-step. One Q-step means that
-       X gets 2 times higher, i.e. Z = logN(2)*256 = 0.693147180559*256 =
-       177.445678 should be subtracted (since logN() returns a Q8 value).
-       For a X value in Q17, the value 177.445678*17 = 3017 should be
-       subtracted */
-    tmpcoeffs_gQ6[posg] = CalcLogN(gain_lo_hiQ17[gainpos])-3017; //Q8
-    tmpcoeffs_gQ6[posg] -= WebRtcIsacfix_kMeansGainQ8[0][posg]; //Q8, but Q6 after not-needed mult. by 4
-    posg++; gainpos++;
-
-    tmpcoeffs_gQ6[posg] = CalcLogN(gain_lo_hiQ17[gainpos])-3017; //Q8
-    tmpcoeffs_gQ6[posg] -= WebRtcIsacfix_kMeansGainQ8[0][posg]; //Q8, but Q6 after not-needed mult. by 4
-    posg++; gainpos++;
-
-  }
-
-
-  /* KLT  */
-
-  /* left transform */
-  for (j = 0, offsg = 0; j < SUBFRAMES; j++, offsg += 2) {
-    // Q21 = Q6 * Q15
-    sumQQ = tmpcoeffs_gQ6[offsg] * WebRtcIsacfix_kT1GainQ15[0][0] +
-        tmpcoeffs_gQ6[offsg + 1] * WebRtcIsacfix_kT1GainQ15[0][2];
-    tmpcoeffs2_gQ21[offsg] = sumQQ;
-
-    // Q21 = Q6 * Q15
-    sumQQ = tmpcoeffs_gQ6[offsg] * WebRtcIsacfix_kT1GainQ15[0][1] +
-        tmpcoeffs_gQ6[offsg + 1] * WebRtcIsacfix_kT1GainQ15[0][3];
-    tmpcoeffs2_gQ21[offsg + 1] = sumQQ;
-  }
-
-  /* right transform */
-  WebRtcIsacfix_MatrixProduct2(WebRtcIsacfix_kT2GainQ15[0], tmpcoeffs2_gQ21,
-                               tmpcoeffs_gQ17, kTIndexFactor3, kTIndexStep1);
-
-  /* quantize coefficients */
-  for (k=0; k<KLT_ORDER_GAIN; k++) //ATTN: ok?
-  {
-    posQQ = WebRtcIsacfix_kSelIndGain[k];
-    pos2QQ= (int16_t)CalcLrIntQ(tmpcoeffs_gQ17[posQQ], 17);
-
-    index_gQQ[k] = pos2QQ + WebRtcIsacfix_kQuantMinGain[k]; //ATTN: ok?
-    if (index_gQQ[k] < 0) {
-      index_gQQ[k] = 0;
-    }
-    else if (index_gQQ[k] > WebRtcIsacfix_kMaxIndGain[k]) {
-      index_gQQ[k] = WebRtcIsacfix_kMaxIndGain[k];
-    }
-  }
-}
diff --git a/modules/audio_coding/codecs/isac/fix/source/entropy_coding.h b/modules/audio_coding/codecs/isac/fix/source/entropy_coding.h
deleted file mode 100644
index ae11394..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/entropy_coding.h
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * entropy_coding.h
- *
- * This header file contains all of the functions used to arithmetically
- * encode the iSAC bistream
- *
- */
-
-#ifndef MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_ENTROPY_CODING_H_
-#define MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_ENTROPY_CODING_H_
-
-#include "modules/audio_coding/codecs/isac/fix/source/structs.h"
-
-/* decode complex spectrum (return number of bytes in stream) */
-int WebRtcIsacfix_DecodeSpec(Bitstr_dec* streamdata,
-                             int16_t* frQ7,
-                             int16_t* fiQ7,
-                             int16_t AvgPitchGain_Q12);
-
-/* encode complex spectrum */
-int WebRtcIsacfix_EncodeSpec(const int16_t* fr,
-                             const int16_t* fi,
-                             Bitstr_enc* streamdata,
-                             int16_t AvgPitchGain_Q12);
-
-/* decode & dequantize LPC Coef */
-int WebRtcIsacfix_DecodeLpcCoef(Bitstr_dec* streamdata,
-                                int32_t* LPCCoefQ17,
-                                int32_t* gain_lo_hiQ17,
-                                int16_t* outmodel);
-
-int WebRtcIsacfix_DecodeLpc(int32_t* gain_lo_hiQ17,
-                            int16_t* LPCCoef_loQ15,
-                            int16_t* LPCCoef_hiQ15,
-                            Bitstr_dec* streamdata,
-                            int16_t* outmodel);
-
-/* quantize & code LPC Coef */
-int WebRtcIsacfix_EncodeLpc(int32_t* gain_lo_hiQ17,
-                            int16_t* LPCCoef_loQ15,
-                            int16_t* LPCCoef_hiQ15,
-                            int16_t* model,
-                            int32_t* sizeQ11,
-                            Bitstr_enc* streamdata,
-                            IsacSaveEncoderData* encData,
-                            transcode_obj* transcodeParam);
-
-int WebRtcIsacfix_EstCodeLpcGain(int32_t* gain_lo_hiQ17,
-                                 Bitstr_enc* streamdata,
-                                 IsacSaveEncoderData* encData);
-/* decode & dequantize RC */
-int WebRtcIsacfix_DecodeRcCoef(Bitstr_dec* streamdata, int16_t* RCQ15);
-
-/* quantize & code RC */
-int WebRtcIsacfix_EncodeRcCoef(int16_t* RCQ15, Bitstr_enc* streamdata);
-
-/* decode & dequantize squared Gain */
-int WebRtcIsacfix_DecodeGain2(Bitstr_dec* streamdata, int32_t* Gain2);
-
-/* quantize & code squared Gain (input is squared gain) */
-int WebRtcIsacfix_EncodeGain2(int32_t* gain2, Bitstr_enc* streamdata);
-
-int WebRtcIsacfix_EncodePitchGain(int16_t* PitchGains_Q12,
-                                  Bitstr_enc* streamdata,
-                                  IsacSaveEncoderData* encData);
-
-int WebRtcIsacfix_EncodePitchLag(int16_t* PitchLagQ7,
-                                 int16_t* PitchGain_Q12,
-                                 Bitstr_enc* streamdata,
-                                 IsacSaveEncoderData* encData);
-
-int WebRtcIsacfix_DecodePitchGain(Bitstr_dec* streamdata,
-                                  int16_t* PitchGain_Q12);
-
-int WebRtcIsacfix_DecodePitchLag(Bitstr_dec* streamdata,
-                                 int16_t* PitchGain_Q12,
-                                 int16_t* PitchLagQ7);
-
-int WebRtcIsacfix_DecodeFrameLen(Bitstr_dec* streamdata, size_t* framelength);
-
-int WebRtcIsacfix_EncodeFrameLen(int16_t framelength, Bitstr_enc* streamdata);
-
-int WebRtcIsacfix_DecodeSendBandwidth(Bitstr_dec* streamdata, int16_t* BWno);
-
-int WebRtcIsacfix_EncodeReceiveBandwidth(int16_t* BWno, Bitstr_enc* streamdata);
-
-void WebRtcIsacfix_TranscodeLpcCoef(int32_t* tmpcoeffs_gQ6, int16_t* index_gQQ);
-
-// Pointer functions for LPC transforms.
-
-typedef void (*MatrixProduct1)(const int16_t matrix0[],
-                               const int32_t matrix1[],
-                               int32_t matrix_product[],
-                               int matrix1_index_factor1,
-                               int matrix0_index_factor1,
-                               int matrix1_index_init_case,
-                               int matrix1_index_step,
-                               int matrix0_index_step,
-                               int inner_loop_count,
-                               int mid_loop_count,
-                               int shift);
-typedef void (*MatrixProduct2)(const int16_t matrix0[],
-                               const int32_t matrix1[],
-                               int32_t matrix_product[],
-                               int matrix0_index_factor,
-                               int matrix0_index_step);
-
-extern MatrixProduct1 WebRtcIsacfix_MatrixProduct1;
-extern MatrixProduct2 WebRtcIsacfix_MatrixProduct2;
-
-void WebRtcIsacfix_MatrixProduct1C(const int16_t matrix0[],
-                                   const int32_t matrix1[],
-                                   int32_t matrix_product[],
-                                   int matrix1_index_factor1,
-                                   int matrix0_index_factor1,
-                                   int matrix1_index_init_case,
-                                   int matrix1_index_step,
-                                   int matrix0_index_step,
-                                   int inner_loop_count,
-                                   int mid_loop_count,
-                                   int shift);
-void WebRtcIsacfix_MatrixProduct2C(const int16_t matrix0[],
-                                   const int32_t matrix1[],
-                                   int32_t matrix_product[],
-                                   int matrix0_index_factor,
-                                   int matrix0_index_step);
-
-#if defined(WEBRTC_HAS_NEON)
-void WebRtcIsacfix_MatrixProduct1Neon(const int16_t matrix0[],
-                                      const int32_t matrix1[],
-                                      int32_t matrix_product[],
-                                      int matrix1_index_factor1,
-                                      int matrix0_index_factor1,
-                                      int matrix1_index_init_case,
-                                      int matrix1_index_step,
-                                      int matrix0_index_step,
-                                      int inner_loop_count,
-                                      int mid_loop_count,
-                                      int shift);
-void WebRtcIsacfix_MatrixProduct2Neon(const int16_t matrix0[],
-                                      const int32_t matrix1[],
-                                      int32_t matrix_product[],
-                                      int matrix0_index_factor,
-                                      int matrix0_index_step);
-#endif
-
-#if defined(MIPS32_LE)
-void WebRtcIsacfix_MatrixProduct1MIPS(const int16_t matrix0[],
-                                      const int32_t matrix1[],
-                                      int32_t matrix_product[],
-                                      int matrix1_index_factor1,
-                                      int matrix0_index_factor1,
-                                      int matrix1_index_init_case,
-                                      int matrix1_index_step,
-                                      int matrix0_index_step,
-                                      int inner_loop_count,
-                                      int mid_loop_count,
-                                      int shift);
-
-void WebRtcIsacfix_MatrixProduct2MIPS(const int16_t matrix0[],
-                                      const int32_t matrix1[],
-                                      int32_t matrix_product[],
-                                      int matrix0_index_factor,
-                                      int matrix0_index_step);
-#endif
-
-#endif  // MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_ENTROPY_CODING_H_
diff --git a/modules/audio_coding/codecs/isac/fix/source/entropy_coding_mips.c b/modules/audio_coding/codecs/isac/fix/source/entropy_coding_mips.c
deleted file mode 100644
index a66a43e..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/entropy_coding_mips.c
+++ /dev/null
@@ -1,249 +0,0 @@
-/*
- *  Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "modules/audio_coding/codecs/isac/fix/source/entropy_coding.h"
-#include "modules/audio_coding/codecs/isac/fix/source/settings.h"
-
-// MIPS optimization of the function WebRtcIsacfix_MatrixProduct1.
-// Bit-exact with the function WebRtcIsacfix_MatrixProduct1C from
-// entropy_coding.c file.
-void WebRtcIsacfix_MatrixProduct1MIPS(const int16_t matrix0[],
-                                      const int32_t matrix1[],
-                                      int32_t matrix_product[],
-                                      const int matrix1_index_factor1,
-                                      const int matrix0_index_factor1,
-                                      const int matrix1_index_init_case,
-                                      const int matrix1_index_step,
-                                      const int matrix0_index_step,
-                                      const int inner_loop_count,
-                                      const int mid_loop_count,
-                                      const int shift) {
-  if (matrix1_index_init_case != 0) {
-    int j = SUBFRAMES, k = 0, n = 0;
-    int32_t r0, r1, r2, sum32;
-    int32_t* product_start = matrix_product;
-    int32_t* product_ptr;
-    const uint32_t product_step = 4 * mid_loop_count;
-    const uint32_t matrix0_step = 2 * matrix0_index_step;
-    const uint32_t matrix1_step = 4 * matrix1_index_step;
-    const uint32_t matrix0_step2 = 2 * matrix0_index_factor1;
-    const uint32_t matrix1_step2 = 4 * matrix1_index_factor1;
-    const int16_t* matrix0_start = matrix0;
-    const int32_t* matrix1_start = matrix1;
-    int16_t* matrix0_ptr;
-    int32_t* matrix1_ptr;
-
-    __asm __volatile (
-      ".set     push                                                       \n\t"
-      ".set     noreorder                                                  \n\t"
-     "1:                                                                   \n\t"
-      "addu     %[product_ptr],     %[product_start],     $0               \n\t"
-      "addu     %[k],               %[product_step],      $0               \n\t"
-      "addiu    %[j],               %[j],                 -1               \n\t"
-      "addu     %[matrix1_start],   %[matrix1],           $0               \n\t"
-     "2:                                                                   \n\t"
-      "addu     %[matrix1_ptr],     %[matrix1_start],     $0               \n\t"
-      "addu     %[matrix0_ptr],     %[matrix0_start],     $0               \n\t"
-      "addu     %[n],               %[inner_loop_count],  $0               \n\t"
-      "mul      %[sum32],           $0,                   $0               \n\t"
-     "3:                                                                   \n\t"
-      "lw       %[r0],              0(%[matrix1_ptr])                      \n\t"
-      "lh       %[r1],              0(%[matrix0_ptr])                      \n\t"
-      "addu     %[matrix1_ptr],     %[matrix1_ptr],       %[matrix1_step]  \n\t"
-      "sllv     %[r0],              %[r0],                %[shift]         \n\t"
-      "andi     %[r2],              %[r0],                0xffff           \n\t"
-      "sra      %[r2],              %[r2],                1                \n\t"
-      "mul      %[r2],              %[r2],                %[r1]            \n\t"
-      "sra      %[r0],              %[r0],                16               \n\t"
-      "mul      %[r0],              %[r0],                %[r1]            \n\t"
-      "addu     %[matrix0_ptr],     %[matrix0_ptr],       %[matrix0_step]  \n\t"
-      "addiu    %[n],               %[n],                 -1               \n\t"
-#if defined(MIPS_DSP_R1_LE)
-      "shra_r.w %[r2],              %[r2],                15               \n\t"
-#else
-      "addiu    %[r2],              %[r2],                0x4000           \n\t"
-      "sra      %[r2],              %[r2],                15               \n\t"
-#endif
-      "addu     %[sum32],           %[sum32],             %[r2]            \n\t"
-      "bgtz     %[n],               3b                                     \n\t"
-      " addu    %[sum32],           %[sum32],             %[r0]            \n\t"
-      "addiu    %[k],               %[k],                 -4               \n\t"
-      "addu     %[matrix1_start],   %[matrix1_start],     %[matrix1_step2] \n\t"
-      "sw       %[sum32],           0(%[product_ptr])                      \n\t"
-      "bgtz     %[k],               2b                                     \n\t"
-      " addiu   %[product_ptr],     %[product_ptr],       4                \n\t"
-      "addu     %[matrix0_start],   %[matrix0_start],     %[matrix0_step2] \n\t"
-      "bgtz     %[j],               1b                                     \n\t"
-      " addu    %[product_start],   %[product_start],     %[product_step]  \n\t"
-      ".set     pop                                                        \n\t"
-      : [product_ptr] "=&r" (product_ptr), [product_start] "+r" (product_start),
-        [k] "=&r" (k), [j] "+r" (j), [matrix1_start] "=&r"(matrix1_start),
-        [matrix1_ptr] "=&r" (matrix1_ptr), [matrix0_ptr] "=&r" (matrix0_ptr),
-        [matrix0_start] "+r" (matrix0_start), [n] "=&r" (n), [r0] "=&r" (r0),
-        [sum32] "=&r" (sum32), [r1] "=&r" (r1),[r2] "=&r" (r2)
-      : [product_step] "r" (product_step), [matrix1] "r" (matrix1),
-        [inner_loop_count] "r" (inner_loop_count),
-        [matrix1_step] "r" (matrix1_step), [shift] "r" (shift),
-        [matrix0_step] "r" (matrix0_step), [matrix1_step2] "r" (matrix1_step2),
-        [matrix0_step2] "r" (matrix0_step2)
-      : "hi", "lo", "memory"
-    );
-  } else {
-    int j = SUBFRAMES, k = 0, n = 0;
-    int32_t r0, r1, r2, sum32;
-    int32_t* product_start = matrix_product;
-    int32_t* product_ptr;
-    const uint32_t product_step = 4 * mid_loop_count;
-    const uint32_t matrix0_step = 2 * matrix0_index_step;
-    const uint32_t matrix1_step = 4 * matrix1_index_step;
-    const uint32_t matrix0_step2 = 2 * matrix0_index_factor1;
-    const uint32_t matrix1_step2 = 4 * matrix1_index_factor1;
-    const int16_t* matrix0_start = matrix0;
-    const int32_t* matrix1_start = matrix1;
-    int16_t* matrix0_ptr;
-    int32_t* matrix1_ptr;
-
-    __asm __volatile (
-      ".set     push                                                       \n\t"
-      ".set     noreorder                                                  \n\t"
-     "1:                                                                   \n\t"
-      "addu     %[product_ptr],     %[product_start],     $0               \n\t"
-      "addu     %[k],               %[product_step],      $0               \n\t"
-      "addiu    %[j],               %[j],                 -1               \n\t"
-      "addu     %[matrix0_start],   %[matrix0],           $0               \n\t"
-     "2:                                                                   \n\t"
-      "addu     %[matrix1_ptr],     %[matrix1_start],     $0               \n\t"
-      "addu     %[matrix0_ptr],     %[matrix0_start],     $0               \n\t"
-      "addu     %[n],               %[inner_loop_count],  $0               \n\t"
-      "mul      %[sum32],           $0,                   $0               \n\t"
-     "3:                                                                   \n\t"
-      "lw       %[r0],              0(%[matrix1_ptr])                      \n\t"
-      "lh       %[r1],              0(%[matrix0_ptr])                      \n\t"
-      "addu     %[matrix1_ptr],     %[matrix1_ptr],       %[matrix1_step]  \n\t"
-      "sllv     %[r0],              %[r0],                %[shift]         \n\t"
-      "andi     %[r2],              %[r0],                0xffff           \n\t"
-      "sra      %[r2],              %[r2],                1                \n\t"
-      "mul      %[r2],              %[r2],                %[r1]            \n\t"
-      "sra      %[r0],              %[r0],                16               \n\t"
-      "mul      %[r0],              %[r0],                %[r1]            \n\t"
-      "addu     %[matrix0_ptr],     %[matrix0_ptr],       %[matrix0_step]  \n\t"
-      "addiu    %[n],               %[n],                 -1               \n\t"
-#if defined(MIPS_DSP_R1_LE)
-      "shra_r.w %[r2],              %[r2],                15               \n\t"
-#else
-      "addiu    %[r2],              %[r2],                0x4000           \n\t"
-      "sra      %[r2],              %[r2],                15               \n\t"
-#endif
-      "addu     %[sum32],           %[sum32],             %[r2]            \n\t"
-      "bgtz     %[n],               3b                                     \n\t"
-      " addu    %[sum32],           %[sum32],             %[r0]            \n\t"
-      "addiu    %[k],               %[k],                 -4               \n\t"
-      "addu     %[matrix0_start],   %[matrix0_start],     %[matrix0_step2] \n\t"
-      "sw       %[sum32],           0(%[product_ptr])                      \n\t"
-      "bgtz     %[k],               2b                                     \n\t"
-      " addiu   %[product_ptr],     %[product_ptr],       4                \n\t"
-      "addu     %[matrix1_start],   %[matrix1_start],     %[matrix1_step2] \n\t"
-      "bgtz     %[j],               1b                                     \n\t"
-      " addu    %[product_start],   %[product_start],     %[product_step]  \n\t"
-      ".set     pop                                                        \n\t"
-      : [product_ptr] "=&r" (product_ptr), [product_start] "+r" (product_start),
-        [k] "=&r" (k), [j] "+r" (j), [matrix1_start] "+r"(matrix1_start),
-        [matrix1_ptr] "=&r" (matrix1_ptr), [matrix0_ptr] "=&r" (matrix0_ptr),
-        [matrix0_start] "=&r" (matrix0_start), [n] "=&r" (n), [r0] "=&r" (r0),
-        [sum32] "=&r" (sum32), [r1] "=&r" (r1),[r2] "=&r" (r2)
-      : [product_step] "r" (product_step), [matrix0] "r" (matrix0),
-        [inner_loop_count] "r" (inner_loop_count),
-        [matrix1_step] "r" (matrix1_step), [shift] "r" (shift),
-        [matrix0_step] "r" (matrix0_step), [matrix1_step2] "r" (matrix1_step2),
-        [matrix0_step2] "r" (matrix0_step2)
-      : "hi", "lo", "memory"
-    );
-  }
-}
-
-// MIPS optimization of the function WebRtcIsacfix_MatrixProduct2.
-// Bit-exact with the function WebRtcIsacfix_MatrixProduct2C from
-// entropy_coding.c file.
-void WebRtcIsacfix_MatrixProduct2MIPS(const int16_t matrix0[],
-                                      const int32_t matrix1[],
-                                      int32_t matrix_product[],
-                                      const int matrix0_index_factor,
-                                      const int matrix0_index_step) {
-  int j = 0, n = 0;
-  int loop_count = SUBFRAMES;
-  const int16_t* matrix0_ptr;
-  const int32_t* matrix1_ptr;
-  const int16_t* matrix0_start = matrix0;
-  const int matrix0_step = 2 * matrix0_index_step;
-  const int matrix0_step2 = 2 * matrix0_index_factor;
-  int32_t r0, r1, r2, r3, r4, sum32, sum32_2;
-
-  __asm __volatile (
-    ".set       push                                                   \n\t"
-    ".set       noreorder                                              \n\t"
-    "addu       %[j],              %[loop_count],     $0               \n\t"
-    "addu       %[matrix0_start],  %[matrix0],        $0               \n\t"
-   "1:                                                                 \n\t"
-    "addu       %[matrix1_ptr],    %[matrix1],        $0               \n\t"
-    "addu       %[matrix0_ptr],    %[matrix0_start],  $0               \n\t"
-    "addu       %[n],              %[loop_count],     $0               \n\t"
-    "mul        %[sum32],          $0,                $0               \n\t"
-    "mul        %[sum32_2],        $0,                $0               \n\t"
-   "2:                                                                 \n\t"
-    "lw         %[r0],             0(%[matrix1_ptr])                   \n\t"
-    "lw         %[r1],             4(%[matrix1_ptr])                   \n\t"
-    "lh         %[r2],             0(%[matrix0_ptr])                   \n\t"
-    "andi       %[r3],             %[r0],             0xffff           \n\t"
-    "sra        %[r3],             %[r3],             1                \n\t"
-    "mul        %[r3],             %[r3],             %[r2]            \n\t"
-    "andi       %[r4],             %[r1],             0xffff           \n\t"
-    "sra        %[r4],             %[r4],             1                \n\t"
-    "mul        %[r4],             %[r4],             %[r2]            \n\t"
-    "sra        %[r0],             %[r0],             16               \n\t"
-    "mul        %[r0],             %[r0],             %[r2]            \n\t"
-    "sra        %[r1],             %[r1],             16               \n\t"
-    "mul        %[r1],             %[r1],             %[r2]            \n\t"
-#if defined(MIPS_DSP_R1_LE)
-    "shra_r.w   %[r3],             %[r3],             15               \n\t"
-    "shra_r.w   %[r4],             %[r4],             15               \n\t"
-#else
-    "addiu      %[r3],             %[r3],             0x4000           \n\t"
-    "sra        %[r3],             %[r3],             15               \n\t"
-    "addiu      %[r4],             %[r4],             0x4000           \n\t"
-    "sra        %[r4],             %[r4],             15               \n\t"
-#endif
-    "addiu      %[matrix1_ptr],    %[matrix1_ptr],    8                \n\t"
-    "addu       %[matrix0_ptr],    %[matrix0_ptr],    %[matrix0_step]  \n\t"
-    "addiu      %[n],              %[n],              -1               \n\t"
-    "addu       %[sum32],          %[sum32],          %[r3]            \n\t"
-    "addu       %[sum32_2],        %[sum32_2],        %[r4]            \n\t"
-    "addu       %[sum32],          %[sum32],          %[r0]            \n\t"
-    "bgtz       %[n],              2b                                  \n\t"
-    " addu      %[sum32_2],        %[sum32_2],        %[r1]            \n\t"
-    "sra        %[sum32],          %[sum32],          3                \n\t"
-    "sra        %[sum32_2],        %[sum32_2],        3                \n\t"
-    "addiu      %[j],              %[j],              -1               \n\t"
-    "addu       %[matrix0_start],  %[matrix0_start],  %[matrix0_step2] \n\t"
-    "sw         %[sum32],          0(%[matrix_product])                \n\t"
-    "sw         %[sum32_2],        4(%[matrix_product])                \n\t"
-    "bgtz       %[j],              1b                                  \n\t"
-    " addiu     %[matrix_product], %[matrix_product], 8                \n\t"
-    ".set       pop                                                    \n\t"
-    : [j] "=&r" (j), [matrix0_start] "=&r" (matrix0_start),
-      [matrix1_ptr] "=&r" (matrix1_ptr), [matrix0_ptr] "=&r" (matrix0_ptr),
-      [n] "=&r" (n), [sum32] "=&r" (sum32), [sum32_2] "=&r" (sum32_2),
-      [r0] "=&r" (r0), [r1] "=&r" (r1), [r2] "=&r" (r2), [r3] "=&r" (r3),
-      [r4] "=&r" (r4), [matrix_product] "+r" (matrix_product)
-    : [loop_count] "r" (loop_count), [matrix0] "r" (matrix0),
-      [matrix1] "r" (matrix1), [matrix0_step] "r" (matrix0_step),
-      [matrix0_step2] "r" (matrix0_step2)
-    : "hi", "lo", "memory"
-  );
-}
diff --git a/modules/audio_coding/codecs/isac/fix/source/entropy_coding_neon.c b/modules/audio_coding/codecs/isac/fix/source/entropy_coding_neon.c
deleted file mode 100644
index 0200567..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/entropy_coding_neon.c
+++ /dev/null
@@ -1,217 +0,0 @@
-/*
- *  Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/* This file contains WebRtcIsacfix_MatrixProduct1Neon() and
- * WebRtcIsacfix_MatrixProduct2Neon() for ARM Neon platform. API's are in
- * entropy_coding.c. Results are bit exact with the c code for
- * generic platforms.
- */
-
-#include <arm_neon.h>
-#include <stddef.h>
-
-#include "modules/audio_coding/codecs/isac/fix/source/entropy_coding.h"
-#include "common_audio/signal_processing/include/signal_processing_library.h"
-#include "rtc_base/checks.h"
-
-void WebRtcIsacfix_MatrixProduct1Neon(const int16_t matrix0[],
-                                      const int32_t matrix1[],
-                                      int32_t matrix_product[],
-                                      const int matrix1_index_factor1,
-                                      const int matrix0_index_factor1,
-                                      const int matrix1_index_init_case,
-                                      const int matrix1_index_step,
-                                      const int matrix0_index_step,
-                                      const int inner_loop_count,
-                                      const int mid_loop_count,
-                                      const int shift) {
-  int j = 0, k = 0, n = 0;
-  int matrix1_index = 0, matrix0_index = 0, matrix_prod_index = 0;
-  int* matrix1_index_factor2 = &j;
-  int* matrix0_index_factor2 = &k;
-  if (matrix1_index_init_case != 0) {
-    matrix1_index_factor2 = &k;
-    matrix0_index_factor2 = &j;
-  }
-  int32x4_t shift32x4 = vdupq_n_s32(shift);
-  int32x2_t shift32x2 = vdup_n_s32(shift);
-  int32x4_t sum_32x4 =  vdupq_n_s32(0);
-  int32x2_t sum_32x2 =  vdup_n_s32(0);
-
-  RTC_DCHECK_EQ(0, inner_loop_count % 2);
-  RTC_DCHECK_EQ(0, mid_loop_count % 2);
-
-  if (matrix1_index_init_case != 0 && matrix1_index_factor1 == 1) {
-    for (j = 0; j < SUBFRAMES; j++) {
-      matrix_prod_index = mid_loop_count * j;
-      for (k = 0; k < (mid_loop_count >> 2) << 2; k += 4) {
-        sum_32x4 = veorq_s32(sum_32x4, sum_32x4);  // Initialize to zeros.
-        matrix1_index = k;
-        matrix0_index = matrix0_index_factor1 * j;
-        for (n = 0; n < inner_loop_count; n++) {
-          int32x4_t matrix0_32x4 =
-              vdupq_n_s32((int32_t)(matrix0[matrix0_index]) << 15);
-          int32x4_t matrix1_32x4 =
-              vshlq_s32(vld1q_s32(&matrix1[matrix1_index]), shift32x4);
-          int32x4_t multi_32x4 = vqdmulhq_s32(matrix0_32x4, matrix1_32x4);
-          sum_32x4 = vqaddq_s32(sum_32x4, multi_32x4);
-          matrix1_index += matrix1_index_step;
-          matrix0_index += matrix0_index_step;
-        }
-        vst1q_s32(&matrix_product[matrix_prod_index], sum_32x4);
-        matrix_prod_index += 4;
-      }
-      if (mid_loop_count % 4 > 1) {
-        sum_32x2 = veor_s32(sum_32x2, sum_32x2);  // Initialize to zeros.
-        matrix1_index = k;
-        k += 2;
-        matrix0_index = matrix0_index_factor1 * j;
-        for (n = 0; n < inner_loop_count; n++) {
-          int32x2_t matrix0_32x2 =
-              vdup_n_s32((int32_t)(matrix0[matrix0_index]) << 15);
-          int32x2_t matrix1_32x2 =
-              vshl_s32(vld1_s32(&matrix1[matrix1_index]), shift32x2);
-          int32x2_t multi_32x2 = vqdmulh_s32(matrix0_32x2, matrix1_32x2);
-          sum_32x2 = vqadd_s32(sum_32x2, multi_32x2);
-          matrix1_index += matrix1_index_step;
-          matrix0_index += matrix0_index_step;
-        }
-        vst1_s32(&matrix_product[matrix_prod_index], sum_32x2);
-        matrix_prod_index += 2;
-      }
-    }
-  }
-  else if (matrix1_index_init_case == 0 && matrix0_index_factor1 == 1) {
-    int32x2_t multi_32x2 = vdup_n_s32(0);
-    int32x2_t matrix0_32x2 = vdup_n_s32(0);
-    for (j = 0; j < SUBFRAMES; j++) {
-      matrix_prod_index = mid_loop_count * j;
-      for (k = 0; k < (mid_loop_count >> 2) << 2; k += 4) {
-        sum_32x4 = veorq_s32(sum_32x4, sum_32x4);  // Initialize to zeros.
-        matrix1_index = matrix1_index_factor1 * j;
-        matrix0_index = k;
-        for (n = 0; n < inner_loop_count; n++) {
-          int32x4_t matrix1_32x4 = vdupq_n_s32(matrix1[matrix1_index] << shift);
-          int32x4_t matrix0_32x4 =
-              vshll_n_s16(vld1_s16(&matrix0[matrix0_index]), 15);
-          int32x4_t multi_32x4 = vqdmulhq_s32(matrix0_32x4, matrix1_32x4);
-          sum_32x4 = vqaddq_s32(sum_32x4, multi_32x4);
-          matrix1_index += matrix1_index_step;
-          matrix0_index += matrix0_index_step;
-        }
-        vst1q_s32(&matrix_product[matrix_prod_index], sum_32x4);
-        matrix_prod_index += 4;
-      }
-      if (mid_loop_count % 4 > 1) {
-        sum_32x2 = veor_s32(sum_32x2, sum_32x2);  // Initialize to zeros.
-        matrix1_index = matrix1_index_factor1 * j;
-        matrix0_index = k;
-        for (n = 0; n < inner_loop_count; n++) {
-          int32x2_t matrix1_32x2 = vdup_n_s32(matrix1[matrix1_index] << shift);
-          matrix0_32x2 =
-              vset_lane_s32((int32_t)matrix0[matrix0_index], matrix0_32x2, 0);
-          matrix0_32x2 = vset_lane_s32((int32_t)matrix0[matrix0_index + 1],
-                                     matrix0_32x2, 1);
-          matrix0_32x2 = vshl_n_s32(matrix0_32x2, 15);
-          multi_32x2 = vqdmulh_s32(matrix1_32x2, matrix0_32x2);
-          sum_32x2 = vqadd_s32(sum_32x2, multi_32x2);
-          matrix1_index += matrix1_index_step;
-          matrix0_index += matrix0_index_step;
-        }
-        vst1_s32(&matrix_product[matrix_prod_index], sum_32x2);
-        matrix_prod_index += 2;
-      }
-    }
-  }
-  else if (matrix1_index_init_case == 0 &&
-           matrix1_index_step == 1 &&
-           matrix0_index_step == 1) {
-    int32x2_t multi_32x2 = vdup_n_s32(0);
-    int32x2_t matrix0_32x2 = vdup_n_s32(0);
-    for (j = 0; j < SUBFRAMES; j++) {
-      matrix_prod_index = mid_loop_count * j;
-      for (k = 0; k < mid_loop_count; k++) {
-        sum_32x4 = veorq_s32(sum_32x4, sum_32x4);  // Initialize to zeros.
-        matrix1_index = matrix1_index_factor1 * j;
-        matrix0_index = matrix0_index_factor1 * k;
-        for (n = 0; n < (inner_loop_count >> 2) << 2; n += 4) {
-          int32x4_t matrix1_32x4 =
-              vshlq_s32(vld1q_s32(&matrix1[matrix1_index]), shift32x4);
-          int32x4_t matrix0_32x4 =
-              vshll_n_s16(vld1_s16(&matrix0[matrix0_index]), 15);
-          int32x4_t multi_32x4 = vqdmulhq_s32(matrix0_32x4, matrix1_32x4);
-          sum_32x4 = vqaddq_s32(sum_32x4, multi_32x4);
-          matrix1_index += 4;
-          matrix0_index += 4;
-        }
-        sum_32x2 = vqadd_s32(vget_low_s32(sum_32x4), vget_high_s32(sum_32x4));
-        if (inner_loop_count % 4 > 1) {
-          int32x2_t matrix1_32x2 =
-              vshl_s32(vld1_s32(&matrix1[matrix1_index]), shift32x2);
-          matrix0_32x2 =
-              vset_lane_s32((int32_t)matrix0[matrix0_index], matrix0_32x2, 0);
-          matrix0_32x2 = vset_lane_s32((int32_t)matrix0[matrix0_index + 1],
-                                     matrix0_32x2, 1);
-          matrix0_32x2 = vshl_n_s32(matrix0_32x2, 15);
-          multi_32x2 = vqdmulh_s32(matrix1_32x2, matrix0_32x2);
-          sum_32x2 = vqadd_s32(sum_32x2, multi_32x2);
-        }
-        sum_32x2 = vpadd_s32(sum_32x2, sum_32x2);
-        vst1_lane_s32(&matrix_product[matrix_prod_index], sum_32x2, 0);
-        matrix_prod_index++;
-      }
-    }
-  }
-  else {
-    for (j = 0; j < SUBFRAMES; j++) {
-      matrix_prod_index = mid_loop_count * j;
-      for (k=0; k < mid_loop_count; k++) {
-        int32_t sum32 = 0;
-        matrix1_index = matrix1_index_factor1 * (*matrix1_index_factor2);
-        matrix0_index = matrix0_index_factor1 * (*matrix0_index_factor2);
-        for (n = 0; n < inner_loop_count; n++) {
-          sum32 += (WEBRTC_SPL_MUL_16_32_RSFT16(matrix0[matrix0_index],
-              matrix1[matrix1_index] << shift));
-          matrix1_index += matrix1_index_step;
-          matrix0_index += matrix0_index_step;
-        }
-        matrix_product[matrix_prod_index] = sum32;
-        matrix_prod_index++;
-      }
-    }
-  }
-}
-
-void WebRtcIsacfix_MatrixProduct2Neon(const int16_t matrix0[],
-                                      const int32_t matrix1[],
-                                      int32_t matrix_product[],
-                                      const int matrix0_index_factor,
-                                      const int matrix0_index_step) {
-  int j = 0, n = 0;
-  int matrix1_index = 0, matrix0_index = 0, matrix_prod_index = 0;
-  int32x2_t sum_32x2 = vdup_n_s32(0);
-  for (j = 0; j < SUBFRAMES; j++) {
-    sum_32x2 = veor_s32(sum_32x2, sum_32x2);  // Initialize to zeros.
-    matrix1_index = 0;
-    matrix0_index = matrix0_index_factor * j;
-    for (n = SUBFRAMES; n > 0; n--) {
-      int32x2_t matrix0_32x2 =
-          vdup_n_s32((int32_t)(matrix0[matrix0_index]) << 15);
-      int32x2_t matrix1_32x2 = vld1_s32(&matrix1[matrix1_index]);
-      int32x2_t multi_32x2 = vqdmulh_s32(matrix0_32x2, matrix1_32x2);
-      sum_32x2 = vqadd_s32(sum_32x2, multi_32x2);
-      matrix1_index += 2;
-      matrix0_index += matrix0_index_step;
-    }
-    sum_32x2 = vshr_n_s32(sum_32x2, 3);
-    vst1_s32(&matrix_product[matrix_prod_index], sum_32x2);
-    matrix_prod_index += 2;
-  }
-}
diff --git a/modules/audio_coding/codecs/isac/fix/source/fft.c b/modules/audio_coding/codecs/isac/fix/source/fft.c
deleted file mode 100644
index a0ed3f8..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/fft.c
+++ /dev/null
@@ -1,415 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * fft.c
- *
- * Fast Fourier Transform
- *
- */
-
-
-#include "modules/audio_coding/codecs/isac/fix/source/fft.h"
-
-static const int16_t kSortTabFft[240] = {
-  0, 60, 120, 180, 20, 80, 140, 200, 40, 100, 160, 220,
-  4, 64, 124, 184, 24, 84, 144, 204, 44, 104, 164, 224,
-  8, 68, 128, 188, 28, 88, 148, 208, 48, 108, 168, 228,
-  12, 72, 132, 192, 32, 92, 152, 212, 52, 112, 172, 232,
-  16, 76, 136, 196, 36, 96, 156, 216, 56, 116, 176, 236,
-  1, 61, 121, 181, 21, 81, 141, 201, 41, 101, 161, 221,
-  5, 65, 125, 185, 25, 85, 145, 205, 45, 105, 165, 225,
-  9, 69, 129, 189, 29, 89, 149, 209, 49, 109, 169, 229,
-  13, 73, 133, 193, 33, 93, 153, 213, 53, 113, 173, 233,
-  17, 77, 137, 197, 37, 97, 157, 217, 57, 117, 177, 237,
-  2, 62, 122, 182, 22, 82, 142, 202, 42, 102, 162, 222,
-  6, 66, 126, 186, 26, 86, 146, 206, 46, 106, 166, 226,
-  10, 70, 130, 190, 30, 90, 150, 210, 50, 110, 170, 230,
-  14, 74, 134, 194, 34, 94, 154, 214, 54, 114, 174, 234,
-  18, 78, 138, 198, 38, 98, 158, 218, 58, 118, 178, 238,
-  3, 63, 123, 183, 23, 83, 143, 203, 43, 103, 163, 223,
-  7, 67, 127, 187, 27, 87, 147, 207, 47, 107, 167, 227,
-  11, 71, 131, 191, 31, 91, 151, 211, 51, 111, 171, 231,
-  15, 75, 135, 195, 35, 95, 155, 215, 55, 115, 175, 235,
-  19, 79, 139, 199, 39, 99, 159, 219, 59, 119, 179, 239
-};
-
-/* Cosine table in Q14 */
-static const int16_t kCosTabFfftQ14[240] = {
-  16384,  16378, 16362,   16333,  16294,  16244,  16182,  16110,  16026,  15931,  15826,  15709,
-  15582,  15444, 15296,   15137,  14968,  14788,  14598,  14399,  14189,  13970,  13741,  13502,
-  13255,  12998, 12733,   12458,  12176,  11885,  11585,  11278,  10963,  10641,  10311,   9974,
-  9630,   9280,  8923,    8561,   8192,   7818,   7438,   7053,   6664,   6270,   5872,   5469,
-  5063,   4653,  4240,    3825,   3406,   2986,   2563,   2139,   1713,   1285,    857,    429,
-  0,   -429,  -857,   -1285,  -1713,  -2139,  -2563,  -2986,  -3406,  -3825,  -4240,  -4653,
-  -5063,  -5469, -5872,   -6270,  -6664,  -7053,  -7438,  -7818,  -8192,  -8561,  -8923,  -9280,
-  -9630,  -9974, -10311, -10641, -10963, -11278, -11585, -11885, -12176, -12458, -12733, -12998,
-  -13255, -13502, -13741, -13970, -14189, -14399, -14598, -14788, -14968, -15137, -15296, -15444,
-  -15582, -15709, -15826, -15931, -16026, -16110, -16182, -16244, -16294, -16333, -16362, -16378,
-  -16384, -16378, -16362, -16333, -16294, -16244, -16182, -16110, -16026, -15931, -15826, -15709,
-  -15582, -15444, -15296, -15137, -14968, -14788, -14598, -14399, -14189, -13970, -13741, -13502,
-  -13255, -12998, -12733, -12458, -12176, -11885, -11585, -11278, -10963, -10641, -10311,  -9974,
-  -9630,  -9280,  -8923,  -8561,  -8192,  -7818,  -7438,  -7053,  -6664,  -6270,  -5872,  -5469,
-  -5063,  -4653,  -4240,  -3825,  -3406,  -2986,  -2563,  -2139,  -1713,  -1285,   -857,   -429,
-  0,    429,    857,   1285,   1713,   2139,   2563,   2986,   3406,   3825,   4240,   4653,
-  5063,   5469,   5872,   6270,   6664,   7053,   7438,   7818,   8192,   8561,   8923,   9280,
-  9630,   9974,  10311,  10641,  10963,  11278,  11585,  11885,  12176,  12458,  12733,  12998,
-  13255,  13502,  13741,  13970,  14189,  14399,  14598,  14788,  14968,  15137,  15296,  15444,
-  15582,  15709,  15826,  15931,  16026,  16110,  16182,  16244,  16294,  16333,  16362,  16378
-};
-
-
-
-/* Uses 16x16 mul, without rounding, which is faster. Uses WEBRTC_SPL_MUL_16_16_RSFT */
-int16_t WebRtcIsacfix_FftRadix16Fastest(int16_t RexQx[], int16_t ImxQx[], int16_t iSign) {
-
-  int16_t dd, ee, ff, gg, hh, ii;
-  int16_t k0, k1, k2, k3, k4, kk;
-  int16_t tmp116, tmp216;
-
-  int16_t ccc1Q14, ccc2Q14, ccc3Q14, sss1Q14, sss2Q14, sss3Q14;
-  int16_t sss60Q14, ccc72Q14, sss72Q14;
-  int16_t aaQx, ajQx, akQx, ajmQx, ajpQx, akmQx, akpQx;
-  int16_t bbQx, bjQx, bkQx, bjmQx, bjpQx, bkmQx, bkpQx;
-
-  int16_t ReDATAQx[240],  ImDATAQx[240];
-
-  sss60Q14 = kCosTabFfftQ14[20];
-  ccc72Q14 = kCosTabFfftQ14[48];
-  sss72Q14 = kCosTabFfftQ14[12];
-
-  if (iSign < 0) {
-    sss72Q14 = -sss72Q14;
-    sss60Q14 = -sss60Q14;
-  }
-  /* Complexity is: 10 cycles */
-
-  /* compute fourier transform */
-
-  // transform for factor of 4
-  for (kk=0; kk<60; kk++) {
-    k0 = kk;
-    k1 = k0 + 60;
-    k2 = k1 + 60;
-    k3 = k2 + 60;
-
-    akpQx = RexQx[k0] + RexQx[k2];
-    akmQx = RexQx[k0] - RexQx[k2];
-    ajpQx = RexQx[k1] + RexQx[k3];
-    ajmQx = RexQx[k1] - RexQx[k3];
-    bkpQx = ImxQx[k0] + ImxQx[k2];
-    bkmQx = ImxQx[k0] - ImxQx[k2];
-    bjpQx = ImxQx[k1] + ImxQx[k3];
-    bjmQx = ImxQx[k1] - ImxQx[k3];
-
-    RexQx[k0] = akpQx + ajpQx;
-    ImxQx[k0] = bkpQx + bjpQx;
-    ajpQx = akpQx - ajpQx;
-    bjpQx = bkpQx - bjpQx;
-    if (iSign < 0) {
-      akpQx = akmQx + bjmQx;
-      bkpQx = bkmQx - ajmQx;
-      akmQx -= bjmQx;
-      bkmQx += ajmQx;
-    } else {
-      akpQx = akmQx - bjmQx;
-      bkpQx = bkmQx + ajmQx;
-      akmQx += bjmQx;
-      bkmQx -= ajmQx;
-    }
-
-    ccc1Q14 = kCosTabFfftQ14[kk];
-    ccc2Q14 = kCosTabFfftQ14[2 * kk];
-    ccc3Q14 = kCosTabFfftQ14[3 * kk];
-    sss1Q14 = kCosTabFfftQ14[kk + 60];
-    sss2Q14 = kCosTabFfftQ14[2 * kk + 60];
-    sss3Q14 = kCosTabFfftQ14[3 * kk + 60];
-    if (iSign==1) {
-      sss1Q14 = -sss1Q14;
-      sss2Q14 = -sss2Q14;
-      sss3Q14 = -sss3Q14;
-    }
-
-    //Do several multiplications like Q14*Q16>>14 = Q16
-    // RexQ16[k1] = akpQ16 * ccc1Q14 - bkpQ16 * sss1Q14;
-    // RexQ16[k2] = ajpQ16 * ccc2Q14 - bjpQ16 * sss2Q14;
-    // RexQ16[k3] = akmQ16 * ccc3Q14 - bkmQ16 * sss3Q14;
-    // ImxQ16[k1] = akpQ16 * sss1Q14 + bkpQ16 * ccc1Q14;
-    // ImxQ16[k2] = ajpQ16 * sss2Q14 + bjpQ16 * ccc2Q14;
-    // ImxQ16[k3] = akmQ16 * sss3Q14 + bkmQ16 * ccc3Q14;
-
-    RexQx[k1] = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(ccc1Q14, akpQx, 14) -
-        (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(sss1Q14, bkpQx, 14); // 6 non-mul + 2 mul cycles, i.e. 8 cycles (6+2*7=20 cycles if 16x32mul)
-    RexQx[k2] = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(ccc2Q14, ajpQx, 14) -
-        (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(sss2Q14, bjpQx, 14);
-    RexQx[k3] = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(ccc3Q14, akmQx, 14) -
-        (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(sss3Q14, bkmQx, 14);
-    ImxQx[k1] = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(sss1Q14, akpQx, 14) +
-        (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(ccc1Q14, bkpQx, 14);
-    ImxQx[k2] = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(sss2Q14, ajpQx, 14) +
-        (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(ccc2Q14, bjpQx, 14);
-    ImxQx[k3] = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(sss3Q14, akmQx, 14) +
-        (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(ccc3Q14, bkmQx, 14);
-    //This mul segment needs 6*8 = 48 cycles for 16x16 muls, but 6*20 = 120 cycles for 16x32 muls
-
-
-  }
-  /* Complexity is: 51+48 = 99 cycles for 16x16 muls, but 51+120 = 171 cycles for 16x32 muls*/
-
-  // transform for factor of 3
-  kk=0;
-  k1=20;
-  k2=40;
-
-  for (hh=0; hh<4; hh++) {
-    for (ii=0; ii<20; ii++) {
-      akQx = RexQx[kk];
-      bkQx = ImxQx[kk];
-      ajQx = RexQx[k1] + RexQx[k2];
-      bjQx = ImxQx[k1] + ImxQx[k2];
-      RexQx[kk] = akQx + ajQx;
-      ImxQx[kk] = bkQx + bjQx;
-      tmp116 = ajQx >> 1;
-      tmp216 = bjQx >> 1;
-      akQx = akQx - tmp116;
-      bkQx = bkQx - tmp216;
-      tmp116 = RexQx[k1] - RexQx[k2];
-      tmp216 = ImxQx[k1] - ImxQx[k2];
-
-      ajQx = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(sss60Q14, tmp116, 14); // Q14*Qx>>14 = Qx
-      bjQx = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(sss60Q14, tmp216, 14); // Q14*Qx>>14 = Qx
-      RexQx[k1] = akQx - bjQx;
-      RexQx[k2] = akQx + bjQx;
-      ImxQx[k1] = bkQx + ajQx;
-      ImxQx[k2] = bkQx - ajQx;
-
-      kk++;
-      k1++;
-      k2++;
-    }
-    /* Complexity : (31+6)*20 = 740 cycles for 16x16 muls, but (31+18)*20 = 980 cycles for 16x32 muls*/
-    kk=kk+40;
-    k1=k1+40;
-    k2=k2+40;
-  }
-  /* Complexity : 4*(740+3) = 2972 cycles for 16x16 muls, but 4*(980+3) = 3932 cycles for 16x32 muls*/
-
-  /* multiply by rotation factor for odd factor 3 or 5 (not for 4)
-     Same code (duplicated) for both ii=2 and ii=3 */
-  kk = 1;
-  ee = 0;
-  ff = 0;
-
-  for (gg=0; gg<19; gg++) {
-    kk += 20;
-    ff = ff+4;
-    for (hh=0; hh<2; hh++) {
-      ee = ff + hh * ff;
-      dd = ee + 60;
-      ccc2Q14 = kCosTabFfftQ14[ee];
-      sss2Q14 = kCosTabFfftQ14[dd];
-      if (iSign==1) {
-        sss2Q14 = -sss2Q14;
-      }
-      for (ii=0; ii<4; ii++) {
-        akQx = RexQx[kk];
-        bkQx = ImxQx[kk];
-        RexQx[kk] = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(ccc2Q14, akQx, 14) - // Q14*Qx>>14 = Qx
-            (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(sss2Q14, bkQx, 14);
-        ImxQx[kk] = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(sss2Q14, akQx, 14) + // Q14*Qx>>14 = Qx
-            (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(ccc2Q14, bkQx, 14);
-
-
-        kk += 60;
-      }
-      kk = kk - 220;
-    }
-    // Complexity: 2*(13+5+4*13+2) = 144 for 16x16 muls, but 2*(13+5+4*33+2) = 304 cycles for 16x32 muls
-    kk = kk - 59;
-  }
-  // Complexity: 19*144 = 2736 for 16x16 muls, but 19*304 = 5776 cycles for 16x32 muls
-
-  // transform for factor of 5
-  kk = 0;
-  ccc2Q14 = kCosTabFfftQ14[96];
-  sss2Q14 = kCosTabFfftQ14[84];
-  if (iSign==1) {
-    sss2Q14 = -sss2Q14;
-  }
-
-  for (hh=0; hh<4; hh++) {
-    for (ii=0; ii<12; ii++) {
-      k1 = kk + 4;
-      k2 = k1 + 4;
-      k3 = k2 + 4;
-      k4 = k3 + 4;
-
-      akpQx = RexQx[k1] + RexQx[k4];
-      akmQx = RexQx[k1] - RexQx[k4];
-      bkpQx = ImxQx[k1] + ImxQx[k4];
-      bkmQx = ImxQx[k1] - ImxQx[k4];
-      ajpQx = RexQx[k2] + RexQx[k3];
-      ajmQx = RexQx[k2] - RexQx[k3];
-      bjpQx = ImxQx[k2] + ImxQx[k3];
-      bjmQx = ImxQx[k2] - ImxQx[k3];
-      aaQx = RexQx[kk];
-      bbQx = ImxQx[kk];
-      RexQx[kk] = aaQx + akpQx + ajpQx;
-      ImxQx[kk] = bbQx + bkpQx + bjpQx;
-
-      akQx = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(ccc72Q14, akpQx, 14) +
-          (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(ccc2Q14, ajpQx, 14)  + aaQx;
-      bkQx = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(ccc72Q14, bkpQx, 14) +
-          (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(ccc2Q14, bjpQx, 14)  + bbQx;
-      ajQx = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(sss72Q14, akmQx, 14) +
-          (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(sss2Q14, ajmQx, 14);
-      bjQx = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(sss72Q14, bkmQx, 14) +
-          (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(sss2Q14, bjmQx, 14);
-      // 32+4*8=64 or 32+4*20=112
-
-      RexQx[k1] = akQx - bjQx;
-      RexQx[k4] = akQx + bjQx;
-      ImxQx[k1] = bkQx + ajQx;
-      ImxQx[k4] = bkQx - ajQx;
-
-      akQx = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(ccc2Q14, akpQx, 14)  +
-          (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(ccc72Q14, ajpQx, 14) + aaQx;
-      bkQx = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(ccc2Q14, bkpQx, 14)  +
-          (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(ccc72Q14, bjpQx, 14) + bbQx;
-      ajQx = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(sss2Q14, akmQx, 14) -
-          (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(sss72Q14, ajmQx, 14);
-      bjQx = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(sss2Q14, bkmQx, 14) -
-          (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(sss72Q14, bjmQx, 14);
-      // 8+4*8=40 or 8+4*20=88
-
-      RexQx[k2] = akQx - bjQx;
-      RexQx[k3] = akQx + bjQx;
-      ImxQx[k2] = bkQx + ajQx;
-      ImxQx[k3] = bkQx - ajQx;
-
-      kk = k4 + 4;
-    }
-    // Complexity: 12*(64+40+10) = 1368 for 16x16 muls, but 12*(112+88+10) = 2520 cycles for 16x32 muls
-    kk -= 239;
-  }
-  // Complexity: 4*1368 = 5472 for 16x16 muls, but 4*2520 = 10080 cycles for 16x32 muls
-
-  /* multiply by rotation factor for odd factor 3 or 5 (not for 4)
-     Same code (duplicated) for both ii=2 and ii=3 */
-  kk = 1;
-  ee=0;
-
-  for (gg=0; gg<3; gg++) {
-    kk += 4;
-    dd = 12 + 12 * gg;
-    ff = 0;
-    for (hh=0; hh<4; hh++) {
-      ff = ff+dd;
-      ee = ff+60;
-      for (ii=0; ii<12; ii++) {
-        akQx = RexQx[kk];
-        bkQx = ImxQx[kk];
-
-        ccc2Q14 = kCosTabFfftQ14[ff];
-        sss2Q14 = kCosTabFfftQ14[ee];
-
-        if (iSign==1) {
-          sss2Q14 = -sss2Q14;
-        }
-
-        RexQx[kk] = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(ccc2Q14, akQx, 14) -
-            (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(sss2Q14, bkQx, 14);
-        ImxQx[kk] = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(sss2Q14, akQx, 14) +
-            (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(ccc2Q14, bkQx, 14);
-
-        kk += 20;
-      }
-      kk = kk - 236;
-      // Complexity: 12*(12+12) = 288 for 16x16 muls, but 12*(12+32) = 528 cycles for 16x32 muls
-    }
-    kk = kk - 19;
-    // Complexity: 4*288+6 for 16x16 muls, but 4*528+6 cycles for 16x32 muls
-  }
-  // Complexity: 3*4*288+6 = 3462 for 16x16 muls, but 3*4*528+6 = 6342 cycles for 16x32 muls
-
-
-  // last transform for factor of 4 */
-  for (kk=0; kk<240; kk=kk+4) {
-    k1 = kk + 1;
-    k2 = k1 + 1;
-    k3 = k2 + 1;
-
-    akpQx = RexQx[kk] + RexQx[k2];
-    akmQx = RexQx[kk] - RexQx[k2];
-    ajpQx = RexQx[k1] + RexQx[k3];
-    ajmQx = RexQx[k1] - RexQx[k3];
-    bkpQx = ImxQx[kk] + ImxQx[k2];
-    bkmQx = ImxQx[kk] - ImxQx[k2];
-    bjpQx = ImxQx[k1] + ImxQx[k3];
-    bjmQx = ImxQx[k1] - ImxQx[k3];
-    RexQx[kk] = akpQx + ajpQx;
-    ImxQx[kk] = bkpQx + bjpQx;
-    ajpQx = akpQx - ajpQx;
-    bjpQx = bkpQx - bjpQx;
-    if (iSign < 0) {
-      akpQx = akmQx + bjmQx;
-      bkpQx = bkmQx - ajmQx;
-      akmQx -= bjmQx;
-      bkmQx += ajmQx;
-    } else {
-      akpQx = akmQx - bjmQx;
-      bkpQx = bkmQx + ajmQx;
-      akmQx += bjmQx;
-      bkmQx -= ajmQx;
-    }
-    RexQx[k1] = akpQx;
-    RexQx[k2] = ajpQx;
-    RexQx[k3] = akmQx;
-    ImxQx[k1] = bkpQx;
-    ImxQx[k2] = bjpQx;
-    ImxQx[k3] = bkmQx;
-  }
-  // Complexity: 60*45 = 2700 for 16x16 muls, but 60*45 = 2700 cycles for 16x32 muls
-
-  /* permute the results to normal order */
-  for (ii=0; ii<240; ii++) {
-    ReDATAQx[ii]=RexQx[ii];
-    ImDATAQx[ii]=ImxQx[ii];
-  }
-  // Complexity: 240*2=480 cycles
-
-  for (ii=0; ii<240; ii++) {
-    RexQx[ii]=ReDATAQx[kSortTabFft[ii]];
-    ImxQx[ii]=ImDATAQx[kSortTabFft[ii]];
-  }
-  // Complexity: 240*2*2=960 cycles
-
-  // Total complexity:
-  //            16x16 16x32
-  // Complexity:   10    10
-  // Complexity:   99   171
-  // Complexity: 2972  3932
-  // Complexity: 2736  5776
-  // Complexity: 5472 10080
-  // Complexity: 3462  6342
-  // Complexity: 2700  2700
-  // Complexity:  480   480
-  // Complexity:  960   960
-  // =======================
-  //            18891 30451
-  //
-  // If this FFT is called 2 time each frame, i.e. 67 times per second, it will correspond to
-  // a C54 complexity of 67*18891/1000000 = 1.27 MIPS with 16x16-muls, and 67*30451/1000000 =
-  // = 2.04 MIPS with 16x32-muls. Note that this routine somtimes is called 6 times during the
-  // encoding of a frame, i.e. the max complexity would be 7/2*1.27 = 4.4 MIPS for the 16x16 mul case.
-
-
-  return 0;
-}
diff --git a/modules/audio_coding/codecs/isac/fix/source/fft.h b/modules/audio_coding/codecs/isac/fix/source/fft.h
deleted file mode 100644
index 4fe9b96..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/fft.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*--------------------------------*-C-*---------------------------------*
- * File:
- * fft.h
- * ---------------------------------------------------------------------*
- * Re[]: real value array
- * Im[]: imaginary value array
- * nTotal: total number of complex values
- * nPass: number of elements involved in this pass of transform
- * nSpan: nspan/nPass = number of bytes to increment pointer
- *  in Re[] and Im[]
- * isign: exponent: +1 = forward  -1 = reverse
- * scaling: normalizing constant by which the final result is *divided*
- * scaling == -1, normalize by total dimension of the transform
- * scaling <  -1, normalize by the square-root of the total dimension
- *
- * ----------------------------------------------------------------------
- * See the comments in the code for correct usage!
- */
-
-#ifndef MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_FFT_H_
-#define MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_FFT_H_
-
-#include "modules/audio_coding/codecs/isac/fix/source/structs.h"
-
-int16_t WebRtcIsacfix_FftRadix16Fastest(int16_t RexQx[],
-                                        int16_t ImxQx[],
-                                        int16_t iSign);
-
-#endif /* MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_FFT_H_ */
diff --git a/modules/audio_coding/codecs/isac/fix/source/filterbank_internal.h b/modules/audio_coding/codecs/isac/fix/source/filterbank_internal.h
deleted file mode 100644
index f741e6f..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/filterbank_internal.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_FILTERBANK_INTERNAL_H_
-#define MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_FILTERBANK_INTERNAL_H_
-
-#include <stdint.h>
-
-#if defined(__cplusplus) || defined(c_plusplus)
-extern "C" {
-#endif
-
-/* Arguments:
- *   io:  Input/output, in Q0.
- *   len: Input, sample length.
- *   coefficient: Input.
- *   state: Input/output, filter state, in Q4.
- */
-typedef void (*HighpassFilterFixDec32)(int16_t* io,
-                                       int16_t len,
-                                       const int16_t* coefficient,
-                                       int32_t* state);
-extern HighpassFilterFixDec32 WebRtcIsacfix_HighpassFilterFixDec32;
-
-void WebRtcIsacfix_HighpassFilterFixDec32C(int16_t* io,
-                                           int16_t len,
-                                           const int16_t* coefficient,
-                                           int32_t* state);
-
-#if defined(MIPS_DSP_R1_LE)
-void WebRtcIsacfix_HighpassFilterFixDec32MIPS(int16_t* io,
-                                              int16_t len,
-                                              const int16_t* coefficient,
-                                              int32_t* state);
-#endif
-
-typedef void (*AllpassFilter2FixDec16)(
-    int16_t* data_ch1,           // Input and output in channel 1, in Q0
-    int16_t* data_ch2,           // Input and output in channel 2, in Q0
-    const int16_t* factor_ch1,   // Scaling factor for channel 1, in Q15
-    const int16_t* factor_ch2,   // Scaling factor for channel 2, in Q15
-    int length,                  // Length of the data buffers
-    int32_t* filter_state_ch1,   // Filter state for channel 1, in Q16
-    int32_t* filter_state_ch2);  // Filter state for channel 2, in Q16
-extern AllpassFilter2FixDec16 WebRtcIsacfix_AllpassFilter2FixDec16;
-
-void WebRtcIsacfix_AllpassFilter2FixDec16C(int16_t* data_ch1,
-                                           int16_t* data_ch2,
-                                           const int16_t* factor_ch1,
-                                           const int16_t* factor_ch2,
-                                           int length,
-                                           int32_t* filter_state_ch1,
-                                           int32_t* filter_state_ch2);
-
-#if defined(WEBRTC_HAS_NEON)
-void WebRtcIsacfix_AllpassFilter2FixDec16Neon(int16_t* data_ch1,
-                                              int16_t* data_ch2,
-                                              const int16_t* factor_ch1,
-                                              const int16_t* factor_ch2,
-                                              int length,
-                                              int32_t* filter_state_ch1,
-                                              int32_t* filter_state_ch2);
-#endif
-
-#if defined(MIPS_DSP_R1_LE)
-void WebRtcIsacfix_AllpassFilter2FixDec16MIPS(int16_t* data_ch1,
-                                              int16_t* data_ch2,
-                                              const int16_t* factor_ch1,
-                                              const int16_t* factor_ch2,
-                                              int length,
-                                              int32_t* filter_state_ch1,
-                                              int32_t* filter_state_ch2);
-#endif
-
-#if defined(__cplusplus) || defined(c_plusplus)
-}
-#endif
-
-#endif
-/* WEBRTC_MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_FILTERBANK_INTERNAL_H_ */
diff --git a/modules/audio_coding/codecs/isac/fix/source/filterbank_tables.c b/modules/audio_coding/codecs/isac/fix/source/filterbank_tables.c
deleted file mode 100644
index f2dec79..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/filterbank_tables.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * filterbank_tables.c
- *
- * This file contains variables that are used in
- * filterbanks.c
- *
- */
-
-#include "modules/audio_coding/codecs/isac/fix/source/filterbank_tables.h"
-
-/* HPstcoeff_in_Q14 = {a1, a2, b1 - b0 * a1, b2 - b0 * a2};
- * In float, they are: {-1.94895953203325f, 0.94984516000000f,
- * -0.05101826139794f, 0.05015484000000f};
- */
-const int16_t WebRtcIsacfix_kHpStCoeffInQ30[8] = {
-  16189, -31932,  /* Q30 lo/hi pair */
-  17243, 15562,  /* Q30 lo/hi pair */
-  -17186, -26748,  /* Q35 lo/hi pair */
-  -27476, 26296  /* Q35 lo/hi pair */
-};
-
-/* HPstcoeff_out_1_Q14 = {a1, a2, b1 - b0 * a1, b2 - b0 * a2};
- * In float, they are: {-1.99701049409000f, 0.99714204490000f,
- * 0.01701049409000f, -0.01704204490000f};
- */
-const int16_t WebRtcIsacfix_kHPStCoeffOut1Q30[8] = {
-  -1306, -32719,  /* Q30 lo/hi pair */
-  11486, 16337,  /* Q30 lo/hi pair */
-  26078, 8918,  /* Q35 lo/hi pair */
-  3956, -8935  /* Q35 lo/hi pair */
-};
-
-/* HPstcoeff_out_2_Q14 = {a1, a2, b1 - b0 * a1, b2 - b0 * a2};
- * In float, they are: {-1.98645294509837f, 0.98672435560000f,
- * 0.00645294509837f, -0.00662435560000f};
- */
-const int16_t WebRtcIsacfix_kHPStCoeffOut2Q30[8] = {
-  -2953, -32546,  /* Q30 lo/hi pair */
-  32233, 16166,  /* Q30 lo/hi pair */
-  13217, 3383,  /* Q35 lo/hi pair */
-  -4597, -3473  /* Q35 lo/hi pair */
-};
-
-/* The upper channel all-pass filter factors */
-const int16_t WebRtcIsacfix_kUpperApFactorsQ15[2] = {
-  1137, 12537
-};
-
-/* The lower channel all-pass filter factors */
-const int16_t WebRtcIsacfix_kLowerApFactorsQ15[2] = {
-  5059, 24379
-};
diff --git a/modules/audio_coding/codecs/isac/fix/source/filterbank_tables.h b/modules/audio_coding/codecs/isac/fix/source/filterbank_tables.h
deleted file mode 100644
index 01e5a7b..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/filterbank_tables.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * filterbank_tables.h
- *
- * Header file for variables that are defined in
- * filterbank_tables.c.
- *
- */
-
-#ifndef MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_FILTERBANK_TABLES_H_
-#define MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_FILTERBANK_TABLES_H_
-
-#include <stdint.h>
-
-#if defined(__cplusplus) || defined(c_plusplus)
-extern "C" {
-#endif
-
-/********************* Coefficient Tables ************************/
-
-/* HPstcoeff_in_Q14 = {a1, a2, b1 - b0 * a1, b2 - b0 * a2}; */
-/* [Q30lo Q30hi Q30lo Q30hi Q35lo Q35hi Q35lo Q35hi] */
-extern const int16_t WebRtcIsacfix_kHpStCoeffInQ30[8];
-
-/* HPstcoeff_out_1_Q14 = {a1, a2, b1 - b0 * a1, b2 - b0 * a2}; */
-/* [Q30lo Q30hi Q30lo Q30hi Q35lo Q35hi Q35lo Q35hi] */
-extern const int16_t WebRtcIsacfix_kHPStCoeffOut1Q30[8];
-
-/* HPstcoeff_out_2_Q14 = {a1, a2, b1 - b0 * a1, b2 - b0 * a2}; */
-/* [Q30lo Q30hi Q30lo Q30hi Q35lo Q35hi Q35lo Q35hi] */
-extern const int16_t WebRtcIsacfix_kHPStCoeffOut2Q30[8];
-
-/* The upper channel all-pass filter factors */
-extern const int16_t WebRtcIsacfix_kUpperApFactorsQ15[2];
-
-/* The lower channel all-pass filter factors */
-extern const int16_t WebRtcIsacfix_kLowerApFactorsQ15[2];
-
-#if defined(__cplusplus) || defined(c_plusplus)
-}
-#endif
-
-#endif /* MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_FILTERBANK_TABLES_H_ */
diff --git a/modules/audio_coding/codecs/isac/fix/source/filterbanks.c b/modules/audio_coding/codecs/isac/fix/source/filterbanks.c
deleted file mode 100644
index 57b3e70..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/filterbanks.c
+++ /dev/null
@@ -1,297 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * filterbanks.c
- *
- * This file contains function 
- * WebRtcIsacfix_SplitAndFilter, and WebRtcIsacfix_FilterAndCombine
- * which implement filterbanks that produce decimated lowpass and
- * highpass versions of a signal, and performs reconstruction.
- *
- */
-
-#include "modules/audio_coding/codecs/isac/fix/source/filterbank_internal.h"
-
-#include "modules/audio_coding/codecs/isac/fix/source/codec.h"
-#include "modules/audio_coding/codecs/isac/fix/source/filterbank_tables.h"
-#include "modules/audio_coding/codecs/isac/fix/source/settings.h"
-#include "rtc_base/checks.h"
-
-// Declare a function pointer.
-AllpassFilter2FixDec16 WebRtcIsacfix_AllpassFilter2FixDec16;
-
-void WebRtcIsacfix_AllpassFilter2FixDec16C(
-    int16_t *data_ch1,  // Input and output in channel 1, in Q0
-    int16_t *data_ch2,  // Input and output in channel 2, in Q0
-    const int16_t *factor_ch1,  // Scaling factor for channel 1, in Q15
-    const int16_t *factor_ch2,  // Scaling factor for channel 2, in Q15
-    const int length,  // Length of the data buffers
-    int32_t *filter_state_ch1,  // Filter state for channel 1, in Q16
-    int32_t *filter_state_ch2) {  // Filter state for channel 2, in Q16
-  int n = 0;
-  int32_t state0_ch1 = filter_state_ch1[0], state1_ch1 = filter_state_ch1[1];
-  int32_t state0_ch2 = filter_state_ch2[0], state1_ch2 = filter_state_ch2[1];
-  int16_t in_out = 0;
-  int32_t a = 0, b = 0;
-
-  // Assembly file assumption.
-  RTC_DCHECK_EQ(0, length % 2);
-
-  for (n = 0; n < length; n++) {
-    // Process channel 1:
-    in_out = data_ch1[n];
-    a = factor_ch1[0] * in_out;  // Q15 * Q0 = Q15
-    a *= 1 << 1;  // Q15 -> Q16
-    b = WebRtcSpl_AddSatW32(a, state0_ch1);
-    a = -factor_ch1[0] * (int16_t)(b >> 16);  // Q15
-    state0_ch1 =
-        WebRtcSpl_AddSatW32(a * (1 << 1), (int32_t)in_out * (1 << 16));  // Q16
-    in_out = (int16_t) (b >> 16);  // Save as Q0
-
-    a = factor_ch1[1] * in_out;  // Q15 * Q0 = Q15
-    a *= 1 << 1; // Q15 -> Q16
-    b = WebRtcSpl_AddSatW32(a, state1_ch1);  // Q16
-    a = -factor_ch1[1] * (int16_t)(b >> 16);  // Q15
-    state1_ch1 =
-        WebRtcSpl_AddSatW32(a * (1 << 1), (int32_t)in_out * (1 << 16));  // Q16
-    data_ch1[n] = (int16_t) (b >> 16);  // Save as Q0
-
-    // Process channel 2:
-    in_out = data_ch2[n];
-    a = factor_ch2[0] * in_out;  // Q15 * Q0 = Q15
-    a *= 1 << 1;  // Q15 -> Q16
-    b = WebRtcSpl_AddSatW32(a, state0_ch2);  // Q16
-    a = -factor_ch2[0] * (int16_t)(b >> 16);  // Q15
-    state0_ch2 =
-        WebRtcSpl_AddSatW32(a * (1 << 1), (int32_t)in_out * (1 << 16));  // Q16
-    in_out = (int16_t) (b >> 16);  // Save as Q0
-
-    a = factor_ch2[1] * in_out;  // Q15 * Q0 = Q15
-    a *= (1 << 1);  // Q15 -> Q16
-    b = WebRtcSpl_AddSatW32(a, state1_ch2);  // Q16
-    a = -factor_ch2[1] * (int16_t)(b >> 16);  // Q15
-    state1_ch2 =
-        WebRtcSpl_AddSatW32(a * (1 << 1), (int32_t)in_out * (1 << 16));  // Q16
-    data_ch2[n] = (int16_t) (b >> 16);  // Save as Q0
-  }
-
-  filter_state_ch1[0] = state0_ch1;
-  filter_state_ch1[1] = state1_ch1;
-  filter_state_ch2[0] = state0_ch2;
-  filter_state_ch2[1] = state1_ch2;
-}
-
-// Declare a function pointer.
-HighpassFilterFixDec32 WebRtcIsacfix_HighpassFilterFixDec32;
-
-void WebRtcIsacfix_HighpassFilterFixDec32C(int16_t *io,
-                                           int16_t len,
-                                           const int16_t *coefficient,
-                                           int32_t *state)
-{
-  int k;
-  int32_t a1 = 0, b1 = 0, c = 0, in = 0;
-  int32_t a2 = 0, b2 = 0;
-  int32_t state0 = state[0];
-  int32_t state1 = state[1];
-
-  for (k=0; k<len; k++) {
-    in = (int32_t)io[k];
-
-#ifdef WEBRTC_ARCH_ARM_V7
-    {
-      register int tmp_coeff0;
-      register int tmp_coeff1;
-      __asm __volatile(
-        "ldr %[tmp_coeff0], [%[coeff]]\n\t"
-        "ldr %[tmp_coeff1], [%[coeff], #4]\n\t"
-        "smmulr %[a2], %[tmp_coeff0], %[state0]\n\t"
-        "smmulr %[b2], %[tmp_coeff1], %[state1]\n\t"
-        "ldr %[tmp_coeff0], [%[coeff], #8]\n\t"
-        "ldr %[tmp_coeff1], [%[coeff], #12]\n\t"
-        "smmulr %[a1], %[tmp_coeff0], %[state0]\n\t"
-        "smmulr %[b1], %[tmp_coeff1], %[state1]\n\t"
-        :[a2]"=&r"(a2),
-         [b2]"=&r"(b2),
-         [a1]"=&r"(a1),
-         [b1]"=r"(b1),
-         [tmp_coeff0]"=&r"(tmp_coeff0),
-         [tmp_coeff1]"=&r"(tmp_coeff1)
-        :[coeff]"r"(coefficient),
-         [state0]"r"(state0),
-         [state1]"r"(state1)
-      );
-    }
-#else
-    /* Q35 * Q4 = Q39 ; shift 32 bit => Q7 */
-    a1 = WEBRTC_SPL_MUL_16_32_RSFT16(coefficient[5], state0) +
-        (WEBRTC_SPL_MUL_16_32_RSFT16(coefficient[4], state0) >> 16);
-    b1 = WEBRTC_SPL_MUL_16_32_RSFT16(coefficient[7], state1) +
-        (WEBRTC_SPL_MUL_16_32_RSFT16(coefficient[6], state1) >> 16);
-
-    /* Q30 * Q4 = Q34 ; shift 32 bit => Q2 */
-    a2 = WEBRTC_SPL_MUL_16_32_RSFT16(coefficient[1], state0) +
-        (WEBRTC_SPL_MUL_16_32_RSFT16(coefficient[0], state0) >> 16);
-    b2 = WEBRTC_SPL_MUL_16_32_RSFT16(coefficient[3], state1) +
-        (WEBRTC_SPL_MUL_16_32_RSFT16(coefficient[2], state1) >> 16);
-#endif
-
-    c = in + ((a1 + b1) >> 7);  // Q0.
-    io[k] = (int16_t)WebRtcSpl_SatW32ToW16(c);  // Write output as Q0.
-
-    c = in * (1 << 2) - a2 - b2;  // In Q2.
-    c = (int32_t)WEBRTC_SPL_SAT(536870911, c, -536870912);
-
-    state1 = state0;
-    state0 = c * (1 << 2);  // Write state as Q4
-  }
-  state[0] = state0;
-  state[1] = state1;
-}
-
-
-void WebRtcIsacfix_SplitAndFilter1(int16_t *pin,
-                                   int16_t *LP16,
-                                   int16_t *HP16,
-                                   PreFiltBankstr *prefiltdata)
-{
-  /* Function WebRtcIsacfix_SplitAndFilter */
-  /* This function creates low-pass and high-pass decimated versions of part of
-     the input signal, and part of the signal in the input 'lookahead buffer'. */
-
-  int k;
-
-  int16_t tempin_ch1[FRAMESAMPLES/2 + QLOOKAHEAD];
-  int16_t tempin_ch2[FRAMESAMPLES/2 + QLOOKAHEAD];
-  int32_t tmpState_ch1[2 * (QORDER-1)]; /* 4 */
-  int32_t tmpState_ch2[2 * (QORDER-1)]; /* 4 */
-
-  /* High pass filter */
-  WebRtcIsacfix_HighpassFilterFixDec32(pin, FRAMESAMPLES, WebRtcIsacfix_kHpStCoeffInQ30, prefiltdata->HPstates_fix);
-
-
-  /* First Channel */
-  for (k=0;k<FRAMESAMPLES/2;k++) {
-    tempin_ch1[QLOOKAHEAD + k] = pin[1 + 2 * k];
-  }
-  for (k=0;k<QLOOKAHEAD;k++) {
-    tempin_ch1[k]=prefiltdata->INLABUF1_fix[k];
-    prefiltdata->INLABUF1_fix[k] = pin[FRAMESAMPLES + 1 - 2 * (QLOOKAHEAD - k)];
-  }
-
-  /* Second Channel.  This is exactly like the first channel, except that the
-     even samples are now filtered instead (lower channel). */
-  for (k=0;k<FRAMESAMPLES/2;k++) {
-    tempin_ch2[QLOOKAHEAD + k] = pin[2 * k];
-  }
-  for (k=0;k<QLOOKAHEAD;k++) {
-    tempin_ch2[k]=prefiltdata->INLABUF2_fix[k];
-    prefiltdata->INLABUF2_fix[k] = pin[FRAMESAMPLES - 2 * (QLOOKAHEAD - k)];
-  }
-
-
-  /*obtain polyphase components by forward all-pass filtering through each channel */
-  /* The all pass filtering automatically updates the filter states which are exported in the
-     prefiltdata structure */
-  WebRtcIsacfix_AllpassFilter2FixDec16(tempin_ch1,
-                                       tempin_ch2,
-                                       WebRtcIsacfix_kUpperApFactorsQ15,
-                                       WebRtcIsacfix_kLowerApFactorsQ15,
-                                       FRAMESAMPLES/2,
-                                       prefiltdata->INSTAT1_fix,
-                                       prefiltdata->INSTAT2_fix);
-
-  for (k = 0; k < 2 * (QORDER - 1); k++) {
-    tmpState_ch1[k] = prefiltdata->INSTAT1_fix[k];
-    tmpState_ch2[k] = prefiltdata->INSTAT2_fix[k];
-  }
-  WebRtcIsacfix_AllpassFilter2FixDec16(tempin_ch1 + FRAMESAMPLES/2,
-                                       tempin_ch2 + FRAMESAMPLES/2,
-                                       WebRtcIsacfix_kUpperApFactorsQ15,
-                                       WebRtcIsacfix_kLowerApFactorsQ15,
-                                       QLOOKAHEAD,
-                                       tmpState_ch1,
-                                       tmpState_ch2);
-
-  /* Now Construct low-pass and high-pass signals as combinations of polyphase components */
-  for (k=0; k<FRAMESAMPLES/2 + QLOOKAHEAD; k++) {
-    int32_t tmp1, tmp2, tmp3;
-    tmp1 = (int32_t)tempin_ch1[k]; // Q0 -> Q0
-    tmp2 = (int32_t)tempin_ch2[k]; // Q0 -> Q0
-    tmp3 = (tmp1 + tmp2) >> 1;  /* Low pass signal. */
-    LP16[k] = (int16_t)WebRtcSpl_SatW32ToW16(tmp3); /*low pass */
-    tmp3 = (tmp1 - tmp2) >> 1;  /* High pass signal. */
-    HP16[k] = (int16_t)WebRtcSpl_SatW32ToW16(tmp3); /*high pass */
-  }
-
-}/*end of WebRtcIsacfix_SplitAndFilter */
-
-
-
-//////////////////////////////////////////////////////////
-////////// Combining
-/* Function WebRtcIsacfix_FilterAndCombine */
-/* This is a decoder function that takes the decimated
-   length FRAMESAMPLES/2 input low-pass and
-   high-pass signals and creates a reconstructed fullband
-   output signal of length FRAMESAMPLES. WebRtcIsacfix_FilterAndCombine
-   is the sibling function of WebRtcIsacfix_SplitAndFilter */
-/* INPUTS:
-   inLP: a length FRAMESAMPLES/2 array of input low-pass
-   samples.
-   inHP: a length FRAMESAMPLES/2 array of input high-pass
-   samples.
-   postfiltdata: input data structure containing the filterbank
-   states from the previous decoding iteration.
-   OUTPUTS:
-   Out: a length FRAMESAMPLES array of output reconstructed
-   samples (fullband) based on the input low-pass and
-   high-pass signals.
-   postfiltdata: the input data structure containing the filterbank
-   states is updated for the next decoding iteration */
-void WebRtcIsacfix_FilterAndCombine1(int16_t *tempin_ch1,
-                                     int16_t *tempin_ch2,
-                                     int16_t *out16,
-                                     PostFiltBankstr *postfiltdata)
-{
-  int k;
-  int16_t in[FRAMESAMPLES];
-
-  /* all-pass filter the new upper and lower channel signal.
-     For upper channel, use the all-pass filter factors that were used as a
-     lower channel at the encoding side. So at the decoder, the corresponding
-     all-pass filter factors for each channel are swapped.
-     For lower channel signal, since all-pass filter factors at the decoder are
-     swapped from the ones at the encoder, the 'upper' channel all-pass filter
-     factors (kUpperApFactors) are used to filter this new lower channel signal.
-  */
-  WebRtcIsacfix_AllpassFilter2FixDec16(tempin_ch1,
-                                       tempin_ch2,
-                                       WebRtcIsacfix_kLowerApFactorsQ15,
-                                       WebRtcIsacfix_kUpperApFactorsQ15,
-                                       FRAMESAMPLES/2,
-                                       postfiltdata->STATE_0_UPPER_fix,
-                                       postfiltdata->STATE_0_LOWER_fix);
-
-  /* Merge outputs to form the full length output signal.*/
-  for (k=0;k<FRAMESAMPLES/2;k++) {
-    in[2 * k] = tempin_ch2[k];
-    in[2 * k + 1] = tempin_ch1[k];
-  }
-
-  /* High pass filter */
-  WebRtcIsacfix_HighpassFilterFixDec32(in, FRAMESAMPLES, WebRtcIsacfix_kHPStCoeffOut1Q30, postfiltdata->HPstates1_fix);
-  WebRtcIsacfix_HighpassFilterFixDec32(in, FRAMESAMPLES, WebRtcIsacfix_kHPStCoeffOut2Q30, postfiltdata->HPstates2_fix);
-
-  for (k=0;k<FRAMESAMPLES;k++) {
-    out16[k] = in[k];
-  }
-}
diff --git a/modules/audio_coding/codecs/isac/fix/source/filterbanks_mips.c b/modules/audio_coding/codecs/isac/fix/source/filterbanks_mips.c
deleted file mode 100644
index 949bca7..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/filterbanks_mips.c
+++ /dev/null
@@ -1,242 +0,0 @@
-/*
- *  Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "modules/audio_coding/codecs/isac/fix/source/filterbank_internal.h"
-
-// WebRtcIsacfix_AllpassFilter2FixDec16 function optimized for MIPSDSP platform.
-// Bit-exact with WebRtcIsacfix_AllpassFilter2FixDec16C from filterbanks.c.
-void WebRtcIsacfix_AllpassFilter2FixDec16MIPS(
-    int16_t* data_ch1,            // Input and output in channel 1, in Q0.
-    int16_t* data_ch2,            // Input and output in channel 2, in Q0.
-    const int16_t* factor_ch1,    // Scaling factor for channel 1, in Q15.
-    const int16_t* factor_ch2,    // Scaling factor for channel 2, in Q15.
-    const int length,             // Length of the data buffers.
-    int32_t* filter_state_ch1,    // Filter state for channel 1, in Q16.
-    int32_t* filter_state_ch2) {  // Filter state for channel 2, in Q16.
-
-  int32_t st0_ch1, st1_ch1;                // channel1 state variables.
-  int32_t st0_ch2, st1_ch2;                // channel2 state variables.
-  int32_t f_ch10, f_ch11, f_ch20, f_ch21;  // factor variables.
-  int32_t r0, r1, r2, r3, r4, r5;          // temporary register variables.
-
-  __asm __volatile (
-    ".set           push                                                  \n\t"
-    ".set           noreorder                                             \n\t"
-    // Load all the state and factor variables.
-    "lh             %[f_ch10],      0(%[factor_ch1])                      \n\t"
-    "lh             %[f_ch20],      0(%[factor_ch2])                      \n\t"
-    "lh             %[f_ch11],      2(%[factor_ch1])                      \n\t"
-    "lh             %[f_ch21],      2(%[factor_ch2])                      \n\t"
-    "lw             %[st0_ch1],     0(%[filter_state_ch1])                \n\t"
-    "lw             %[st1_ch1],     4(%[filter_state_ch1])                \n\t"
-    "lw             %[st0_ch2],     0(%[filter_state_ch2])                \n\t"
-    "lw             %[st1_ch2],     4(%[filter_state_ch2])                \n\t"
-    // Allpass filtering loop.
-   "1:                                                                    \n\t"
-    "lh             %[r0],          0(%[data_ch1])                        \n\t"
-    "lh             %[r1],          0(%[data_ch2])                        \n\t"
-    "addiu          %[length],      %[length],              -1            \n\t"
-    "mul            %[r2],          %[r0],                  %[f_ch10]     \n\t"
-    "mul            %[r3],          %[r1],                  %[f_ch20]     \n\t"
-    "sll            %[r0],          %[r0],                  16            \n\t"
-    "sll            %[r1],          %[r1],                  16            \n\t"
-    "sll            %[r2],          %[r2],                  1             \n\t"
-    "addq_s.w       %[r2],          %[r2],                  %[st0_ch1]    \n\t"
-    "sll            %[r3],          %[r3],                  1             \n\t"
-    "addq_s.w       %[r3],          %[r3],                  %[st0_ch2]    \n\t"
-    "sra            %[r2],          %[r2],                  16            \n\t"
-    "mul            %[st0_ch1],     %[f_ch10],              %[r2]         \n\t"
-    "sra            %[r3],          %[r3],                  16            \n\t"
-    "mul            %[st0_ch2],     %[f_ch20],              %[r3]         \n\t"
-    "mul            %[r4],          %[r2],                  %[f_ch11]     \n\t"
-    "mul            %[r5],          %[r3],                  %[f_ch21]     \n\t"
-    "sll            %[st0_ch1],     %[st0_ch1],             1             \n\t"
-    "subq_s.w       %[st0_ch1],     %[r0],                  %[st0_ch1]    \n\t"
-    "sll            %[st0_ch2],     %[st0_ch2],             1             \n\t"
-    "subq_s.w       %[st0_ch2],     %[r1],                  %[st0_ch2]    \n\t"
-    "sll            %[r4],          %[r4],                  1             \n\t"
-    "addq_s.w       %[r4],          %[r4],                  %[st1_ch1]    \n\t"
-    "sll            %[r5],          %[r5],                  1             \n\t"
-    "addq_s.w       %[r5],          %[r5],                  %[st1_ch2]    \n\t"
-    "sra            %[r4],          %[r4],                  16            \n\t"
-    "mul            %[r0],          %[r4],                  %[f_ch11]     \n\t"
-    "sra            %[r5],          %[r5],                  16            \n\t"
-    "mul            %[r1],          %[r5],                  %[f_ch21]     \n\t"
-    "sh             %[r4],          0(%[data_ch1])                        \n\t"
-    "sh             %[r5],          0(%[data_ch2])                        \n\t"
-    "addiu          %[data_ch1],    %[data_ch1],            2             \n\t"
-    "sll            %[r2],          %[r2],                  16            \n\t"
-    "sll            %[r0],          %[r0],                  1             \n\t"
-    "subq_s.w       %[st1_ch1],     %[r2],                  %[r0]         \n\t"
-    "sll            %[r3],          %[r3],                  16            \n\t"
-    "sll            %[r1],          %[r1],                  1             \n\t"
-    "subq_s.w       %[st1_ch2],     %[r3],                  %[r1]         \n\t"
-    "bgtz           %[length],      1b                                    \n\t"
-    " addiu         %[data_ch2],    %[data_ch2],            2             \n\t"
-    // Store channel states.
-    "sw             %[st0_ch1],     0(%[filter_state_ch1])                \n\t"
-    "sw             %[st1_ch1],     4(%[filter_state_ch1])                \n\t"
-    "sw             %[st0_ch2],     0(%[filter_state_ch2])                \n\t"
-    "sw             %[st1_ch2],     4(%[filter_state_ch2])                \n\t"
-    ".set           pop                                                   \n\t"
-    : [f_ch10] "=&r" (f_ch10), [f_ch20] "=&r" (f_ch20),
-      [f_ch11] "=&r" (f_ch11), [f_ch21] "=&r" (f_ch21),
-      [st0_ch1] "=&r" (st0_ch1), [st1_ch1] "=&r" (st1_ch1),
-      [st0_ch2] "=&r" (st0_ch2), [st1_ch2] "=&r" (st1_ch2),
-      [r0] "=&r" (r0), [r1] "=&r" (r1), [r2] "=&r" (r2),
-      [r3] "=&r" (r3), [r4] "=&r" (r4), [r5] "=&r" (r5)
-    : [factor_ch1] "r" (factor_ch1), [factor_ch2] "r" (factor_ch2),
-      [filter_state_ch1] "r" (filter_state_ch1),
-      [filter_state_ch2] "r" (filter_state_ch2),
-      [data_ch1] "r" (data_ch1), [data_ch2] "r" (data_ch2),
-      [length] "r" (length)
-    : "memory", "hi", "lo"
-  );
-}
-
-// WebRtcIsacfix_HighpassFilterFixDec32 function optimized for MIPSDSP platform.
-// Bit-exact with WebRtcIsacfix_HighpassFilterFixDec32C from filterbanks.c.
-void WebRtcIsacfix_HighpassFilterFixDec32MIPS(int16_t* io,
-                                              int16_t len,
-                                              const int16_t* coefficient,
-                                              int32_t* state) {
-  int k;
-  int32_t a1, a2, b1, b2, in;
-  int32_t state0 = state[0];
-  int32_t state1 = state[1];
-
-  int32_t c0, c1, c2, c3;
-  int32_t c4, c5, c6, c7;
-  int32_t state0_lo, state0_hi;
-  int32_t state1_lo, state1_hi;
-  int32_t t0, t1, t2, t3, t4, t5;
-
-  __asm  __volatile (
-    "lh         %[c0],         0(%[coeff_ptr])            \n\t"
-    "lh         %[c1],         2(%[coeff_ptr])            \n\t"
-    "lh         %[c2],         4(%[coeff_ptr])            \n\t"
-    "lh         %[c3],         6(%[coeff_ptr])            \n\t"
-    "sra        %[state0_hi],  %[state0],        16       \n\t"
-    "sra        %[state1_hi],  %[state1],        16       \n\t"
-    "andi       %[state0_lo],  %[state0],        0xFFFF   \n\t"
-    "andi       %[state1_lo],  %[state1],        0xFFFF   \n\t"
-    "lh         %[c4],         8(%[coeff_ptr])            \n\t"
-    "lh         %[c5],         10(%[coeff_ptr])           \n\t"
-    "lh         %[c6],         12(%[coeff_ptr])           \n\t"
-    "lh         %[c7],         14(%[coeff_ptr])           \n\t"
-    "sra        %[state0_lo],  %[state0_lo],     1        \n\t"
-    "sra        %[state1_lo],  %[state1_lo],     1        \n\t"
-    : [c0] "=&r" (c0), [c1] "=&r" (c1), [c2] "=&r" (c2), [c3] "=&r" (c3),
-      [c4] "=&r" (c4), [c5] "=&r" (c5), [c6] "=&r" (c6), [c7] "=&r" (c7),
-      [state0_hi] "=&r" (state0_hi), [state0_lo] "=&r" (state0_lo),
-      [state1_hi] "=&r" (state1_hi), [state1_lo] "=&r" (state1_lo)
-    : [coeff_ptr] "r" (coefficient), [state0] "r" (state0),
-      [state1] "r" (state1)
-    : "memory"
-  );
-
-  for (k = 0; k < len; k++) {
-    in = (int32_t)io[k];
-
-    __asm __volatile (
-      ".set      push                                      \n\t"
-      ".set      noreorder                                 \n\t"
-      "mul       %[t2],        %[c4],        %[state0_lo]  \n\t"
-      "mul       %[t0],        %[c5],        %[state0_lo]  \n\t"
-      "mul       %[t1],        %[c4],        %[state0_hi]  \n\t"
-      "mul       %[a1],        %[c5],        %[state0_hi]  \n\t"
-      "mul       %[t5],        %[c6],        %[state1_lo]  \n\t"
-      "mul       %[t3],        %[c7],        %[state1_lo]  \n\t"
-      "mul       %[t4],        %[c6],        %[state1_hi]  \n\t"
-      "mul       %[b1],        %[c7],        %[state1_hi]  \n\t"
-      "shra_r.w  %[t2],        %[t2],        15            \n\t"
-      "shra_r.w  %[t0],        %[t0],        15            \n\t"
-      "addu      %[t1],        %[t1],        %[t2]         \n\t"
-      "addu      %[a1],        %[a1],        %[t0]         \n\t"
-      "sra       %[t1],        %[t1],        16            \n\t"
-      "addu      %[a1],        %[a1],        %[t1]         \n\t"
-      "shra_r.w  %[t5],        %[t5],        15            \n\t"
-      "shra_r.w  %[t3],        %[t3],        15            \n\t"
-      "addu      %[t4],        %[t4],        %[t5]         \n\t"
-      "addu      %[b1],        %[b1],        %[t3]         \n\t"
-      "sra       %[t4],        %[t4],        16            \n\t"
-      "addu      %[b1],        %[b1],        %[t4]         \n\t"
-      "mul       %[t2],        %[c0],        %[state0_lo]  \n\t"
-      "mul       %[t0],        %[c1],        %[state0_lo]  \n\t"
-      "mul       %[t1],        %[c0],        %[state0_hi]  \n\t"
-      "mul       %[a2],        %[c1],        %[state0_hi]  \n\t"
-      "mul       %[t5],        %[c2],        %[state1_lo]  \n\t"
-      "mul       %[t3],        %[c3],        %[state1_lo]  \n\t"
-      "mul       %[t4],        %[c2],        %[state1_hi]  \n\t"
-      "mul       %[b2],        %[c3],        %[state1_hi]  \n\t"
-      "shra_r.w  %[t2],        %[t2],        15            \n\t"
-      "shra_r.w  %[t0],        %[t0],        15            \n\t"
-      "addu      %[t1],        %[t1],        %[t2]         \n\t"
-      "addu      %[a2],        %[a2],        %[t0]         \n\t"
-      "sra       %[t1],        %[t1],        16            \n\t"
-      "addu      %[a2],        %[a2],        %[t1]         \n\t"
-      "shra_r.w  %[t5],        %[t5],        15            \n\t"
-      "shra_r.w  %[t3],        %[t3],        15            \n\t"
-      "addu      %[t4],        %[t4],        %[t5]         \n\t"
-      "addu      %[b2],        %[b2],        %[t3]         \n\t"
-      "sra       %[t4],        %[t4],        16            \n\t"
-      "addu      %[b2],        %[b2],        %[t4]         \n\t"
-      "addu      %[a1],        %[a1],        %[b1]         \n\t"
-      "sra       %[a1],        %[a1],        7             \n\t"
-      "addu      %[a1],        %[a1],        %[in]         \n\t"
-      "sll       %[t0],        %[in],        2             \n\t"
-      "addu      %[a2],        %[a2],        %[b2]         \n\t"
-      "subu      %[t0],        %[t0],        %[a2]         \n\t"
-      "shll_s.w  %[a1],        %[a1],        16            \n\t"
-      "shll_s.w  %[t0],        %[t0],        2             \n\t"
-      "sra       %[a1],        %[a1],        16            \n\t"
-      "addu      %[state1_hi], %[state0_hi], $0            \n\t"
-      "addu      %[state1_lo], %[state0_lo], $0            \n\t"
-      "sra       %[state0_hi], %[t0],        16            \n\t"
-      "andi      %[state0_lo], %[t0],        0xFFFF        \n\t"
-      "sra       %[state0_lo], %[state0_lo], 1             \n\t"
-      ".set      pop                                       \n\t"
-      : [a1] "=&r" (a1), [b1] "=&r" (b1), [a2] "=&r" (a2), [b2] "=&r" (b2),
-        [state0_hi] "+r" (state0_hi), [state0_lo] "+r" (state0_lo),
-        [state1_hi] "+r" (state1_hi), [state1_lo] "+r" (state1_lo),
-        [t0] "=&r" (t0), [t1] "=&r" (t1), [t2] "=&r" (t2),
-        [t3] "=&r" (t3), [t4] "=&r" (t4), [t5] "=&r" (t5)
-      : [c0] "r" (c0), [c1] "r" (c1), [c2] "r" (c2), [c3] "r" (c3),
-        [c4] "r" (c4), [c5] "r" (c5), [c6] "r" (c6), [c7] "r" (c7),
-        [in] "r" (in)
-      : "hi", "lo"
-    );
-    io[k] = (int16_t)a1;
-  }
-  __asm __volatile (
-    ".set            push                                            \n\t"
-    ".set            noreorder                                       \n\t"
-#if !defined(MIPS_DSP_R2_LE)
-    "sll             %[state0_hi],   %[state0_hi],   16              \n\t"
-    "sll             %[state0_lo],   %[state0_lo],   1               \n\t"
-    "sll             %[state1_hi],   %[state1_hi],   16              \n\t"
-    "sll             %[state1_lo],   %[state1_lo],   1               \n\t"
-    "or              %[state0_hi],   %[state0_hi],   %[state0_lo]    \n\t"
-    "or              %[state1_hi],   %[state1_hi],   %[state1_lo]    \n\t"
-#else
-    "sll             %[state0_lo],   %[state0_lo],   1               \n\t"
-    "sll             %[state1_lo],   %[state1_lo],   1               \n\t"
-    "precr_sra.ph.w  %[state0_hi],   %[state0_lo],   0               \n\t"
-    "precr_sra.ph.w  %[state1_hi],   %[state1_lo],   0               \n\t"
-#endif
-    "sw              %[state0_hi],   0(%[state])                     \n\t"
-    "sw              %[state1_hi],   4(%[state])                     \n\t"
-    ".set            pop                                             \n\t"
-    : [state0_hi] "+r" (state0_hi), [state0_lo] "+r" (state0_lo),
-      [state1_hi] "+r" (state1_hi), [state1_lo] "+r" (state1_lo)
-    : [state] "r" (state)
-    : "memory"
-  );
-}
diff --git a/modules/audio_coding/codecs/isac/fix/source/filterbanks_neon.c b/modules/audio_coding/codecs/isac/fix/source/filterbanks_neon.c
deleted file mode 100644
index a31cea6..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/filterbanks_neon.c
+++ /dev/null
@@ -1,278 +0,0 @@
-/*
- *  Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-// Contains a function for WebRtcIsacfix_AllpassFilter2FixDec16Neon()
-// in iSAC codec, optimized for ARM Neon platform. Bit exact with function
-// WebRtcIsacfix_AllpassFilter2FixDec16C() in filterbanks.c. Prototype
-// C code is at end of this file.
-
-#include <arm_neon.h>
-
-#include "modules/audio_coding/codecs/isac/fix/source/filterbank_internal.h"
-#include "rtc_base/checks.h"
-
-void WebRtcIsacfix_AllpassFilter2FixDec16Neon(
-    int16_t* data_ch1,  // Input and output in channel 1, in Q0
-    int16_t* data_ch2,  // Input and output in channel 2, in Q0
-    const int16_t* factor_ch1,  // Scaling factor for channel 1, in Q15
-    const int16_t* factor_ch2,  // Scaling factor for channel 2, in Q15
-    const int length,  // Length of the data buffers
-    int32_t* filter_state_ch1,  // Filter state for channel 1, in Q16
-    int32_t* filter_state_ch2) {  // Filter state for channel 2, in Q16
-  RTC_DCHECK_EQ(0, length % 2);
-  int n = 0;
-  int16x4_t factorv;
-  int16x4_t datav;
-  int32x4_t statev;
-
-  // Load factor_ch1 and factor_ch2.
-  factorv = vld1_dup_s16(factor_ch1);
-  factorv = vld1_lane_s16(factor_ch1 + 1, factorv, 1);
-  factorv = vld1_lane_s16(factor_ch2, factorv, 2);
-  factorv = vld1_lane_s16(factor_ch2 + 1, factorv, 3);
-
-  // Load filter_state_ch1[0] and filter_state_ch2[0].
-  statev = vld1q_dup_s32(filter_state_ch1);
-  statev = vld1q_lane_s32(filter_state_ch2, statev, 2);
-
-  // Loop unrolling preprocessing.
-  int32x4_t a;
-  int16x4_t tmp1, tmp2;
-
-  // Load data_ch1[0] and data_ch2[0].
-  datav = vld1_dup_s16(data_ch1);
-  datav = vld1_lane_s16(data_ch2, datav, 2);
-
-  a = vqdmlal_s16(statev, datav, factorv);
-  tmp1 = vshrn_n_s32(a, 16);
-
-  // Update filter_state_ch1[0] and filter_state_ch2[0].
-  statev = vqdmlsl_s16(vshll_n_s16(datav, 16), tmp1, factorv);
-
-  // Load filter_state_ch1[1] and filter_state_ch2[1].
-  statev = vld1q_lane_s32(filter_state_ch1 + 1, statev, 1);
-  statev = vld1q_lane_s32(filter_state_ch2 + 1, statev, 3);
-
-  // Load data_ch1[1] and data_ch2[1].
-  tmp1 = vld1_lane_s16(data_ch1 + 1, tmp1, 1);
-  tmp1 = vld1_lane_s16(data_ch2 + 1, tmp1, 3);
-  datav = vrev32_s16(tmp1);
-
-  // Loop unrolling processing.
-  for (n = 0; n < length - 2; n += 2) {
-    a = vqdmlal_s16(statev, datav, factorv);
-    tmp1 = vshrn_n_s32(a, 16);
-    // Store data_ch1[n] and data_ch2[n].
-    vst1_lane_s16(data_ch1 + n, tmp1, 1);
-    vst1_lane_s16(data_ch2 + n, tmp1, 3);
-
-    // Update filter_state_ch1[0], filter_state_ch1[1]
-    // and filter_state_ch2[0], filter_state_ch2[1].
-    statev = vqdmlsl_s16(vshll_n_s16(datav, 16), tmp1, factorv);
-
-    // Load data_ch1[n + 2] and data_ch2[n + 2].
-    tmp1 = vld1_lane_s16(data_ch1 + n + 2, tmp1, 1);
-    tmp1 = vld1_lane_s16(data_ch2 + n + 2, tmp1, 3);
-    datav = vrev32_s16(tmp1);
-
-    a = vqdmlal_s16(statev, datav, factorv);
-    tmp2 = vshrn_n_s32(a, 16);
-    // Store data_ch1[n + 1] and data_ch2[n + 1].
-    vst1_lane_s16(data_ch1 + n + 1, tmp2, 1);
-    vst1_lane_s16(data_ch2 + n + 1, tmp2, 3);
-
-    // Update filter_state_ch1[0], filter_state_ch1[1]
-    // and filter_state_ch2[0], filter_state_ch2[1].
-    statev = vqdmlsl_s16(vshll_n_s16(datav, 16), tmp2, factorv);
-
-    // Load data_ch1[n + 3] and data_ch2[n + 3].
-    tmp2 = vld1_lane_s16(data_ch1 + n + 3, tmp2, 1);
-    tmp2 = vld1_lane_s16(data_ch2 + n + 3, tmp2, 3);
-    datav = vrev32_s16(tmp2);
-  }
-
-  // Loop unrolling post-processing.
-  a = vqdmlal_s16(statev, datav, factorv);
-  tmp1 = vshrn_n_s32(a, 16);
-  // Store data_ch1[n] and data_ch2[n].
-  vst1_lane_s16(data_ch1 + n, tmp1, 1);
-  vst1_lane_s16(data_ch2 + n, tmp1, 3);
-
-  // Update filter_state_ch1[0], filter_state_ch1[1]
-  // and filter_state_ch2[0], filter_state_ch2[1].
-  statev = vqdmlsl_s16(vshll_n_s16(datav, 16), tmp1, factorv);
-  // Store filter_state_ch1[0] and filter_state_ch2[0].
-  vst1q_lane_s32(filter_state_ch1, statev, 0);
-  vst1q_lane_s32(filter_state_ch2, statev, 2);
-
-  datav = vrev32_s16(tmp1);
-  a = vqdmlal_s16(statev, datav, factorv);
-  tmp2 = vshrn_n_s32(a, 16);
-  // Store data_ch1[n + 1] and data_ch2[n + 1].
-  vst1_lane_s16(data_ch1 + n + 1, tmp2, 1);
-  vst1_lane_s16(data_ch2 + n + 1, tmp2, 3);
-
-  // Update filter_state_ch1[1] and filter_state_ch2[1].
-  statev = vqdmlsl_s16(vshll_n_s16(datav, 16), tmp2, factorv);
-  // Store filter_state_ch1[1] and filter_state_ch2[1].
-  vst1q_lane_s32(filter_state_ch1 + 1, statev, 1);
-  vst1q_lane_s32(filter_state_ch2 + 1, statev, 3);
-}
-
-// This function is the prototype for above neon optimized function.
-//void AllpassFilter2FixDec16BothChannels(
-//    int16_t *data_ch1,  // Input and output in channel 1, in Q0
-//    int16_t *data_ch2,  // Input and output in channel 2, in Q0
-//    const int16_t *factor_ch1,  // Scaling factor for channel 1, in Q15
-//    const int16_t *factor_ch2,  // Scaling factor for channel 2, in Q15
-//    const int length,  // Length of the data buffers
-//    int32_t *filter_state_ch1,  // Filter state for channel 1, in Q16
-//    int32_t *filter_state_ch2) {  // Filter state for channel 2, in Q16
-//  int n = 0;
-//  int32_t state0_ch1 = filter_state_ch1[0], state1_ch1 = filter_state_ch1[1];
-//  int32_t state0_ch2 = filter_state_ch2[0], state1_ch2 = filter_state_ch2[1];
-//  int16_t sample0_ch1 = 0, sample0_ch2 = 0;
-//  int16_t sample1_ch1 = 0, sample1_ch2  = 0;
-//  int32_t a0_ch1 = 0, a0_ch2 = 0;
-//  int32_t b0_ch1 = 0, b0_ch2 = 0;
-//
-//  int32_t a1_ch1 = 0, a1_ch2 = 0;
-//  int32_t b1_ch1 = 0, b1_ch2 = 0;
-//  int32_t b2_ch1  = 0, b2_ch2 = 0;
-//
-//  // Loop unrolling preprocessing.
-//
-//  sample0_ch1 = data_ch1[n];
-//  sample0_ch2 = data_ch2[n];
-//
-//  a0_ch1 = (factor_ch1[0] * sample0_ch1) << 1;
-//  a0_ch2 = (factor_ch2[0] * sample0_ch2) << 1;
-//
-//  b0_ch1 = WebRtcSpl_AddSatW32(a0_ch1, state0_ch1);
-//  b0_ch2 = WebRtcSpl_AddSatW32(a0_ch2, state0_ch2); //Q16+Q16=Q16
-//
-//  a0_ch1 = -factor_ch1[0] * (int16_t)(b0_ch1 >> 16);
-//  a0_ch2 = -factor_ch2[0] * (int16_t)(b0_ch2 >> 16);
-//
-//  state0_ch1 = WebRtcSpl_AddSatW32(a0_ch1 <<1, (uint32_t)sample0_ch1 << 16);
-//  state0_ch2 = WebRtcSpl_AddSatW32(a0_ch2 <<1, (uint32_t)sample0_ch2 << 16);
-//
-//  sample1_ch1 = data_ch1[n + 1];
-//  sample0_ch1 = (int16_t) (b0_ch1 >> 16); //Save as Q0
-//  sample1_ch2  = data_ch2[n + 1];
-//  sample0_ch2 = (int16_t) (b0_ch2 >> 16); //Save as Q0
-//
-//
-//  for (n = 0; n < length - 2; n += 2) {
-//    a1_ch1 = (factor_ch1[0] * sample1_ch1) << 1;
-//    a0_ch1 = (factor_ch1[1] * sample0_ch1) << 1;
-//    a1_ch2 = (factor_ch2[0] * sample1_ch2) << 1;
-//    a0_ch2 = (factor_ch2[1] * sample0_ch2) << 1;
-//
-//    b1_ch1 = WebRtcSpl_AddSatW32(a1_ch1, state0_ch1);
-//    b0_ch1 = WebRtcSpl_AddSatW32(a0_ch1, state1_ch1); //Q16+Q16=Q16
-//    b1_ch2 = WebRtcSpl_AddSatW32(a1_ch2, state0_ch2); //Q16+Q16=Q16
-//    b0_ch2 = WebRtcSpl_AddSatW32(a0_ch2, state1_ch2); //Q16+Q16=Q16
-//
-//    a1_ch1 = -factor_ch1[0] * (int16_t)(b1_ch1 >> 16);
-//    a0_ch1 = -factor_ch1[1] * (int16_t)(b0_ch1 >> 16);
-//    a1_ch2 = -factor_ch2[0] * (int16_t)(b1_ch2 >> 16);
-//    a0_ch2 = -factor_ch2[1] * (int16_t)(b0_ch2 >> 16);
-//
-//    state0_ch1 = WebRtcSpl_AddSatW32(a1_ch1<<1, (uint32_t)sample1_ch1 <<16);
-//    state1_ch1 = WebRtcSpl_AddSatW32(a0_ch1<<1, (uint32_t)sample0_ch1 <<16);
-//    state0_ch2 = WebRtcSpl_AddSatW32(a1_ch2<<1, (uint32_t)sample1_ch2 <<16);
-//    state1_ch2 = WebRtcSpl_AddSatW32(a0_ch2<<1, (uint32_t)sample0_ch2 <<16);
-//
-//    sample0_ch1 = data_ch1[n + 2];
-//    sample1_ch1 = (int16_t) (b1_ch1 >> 16); //Save as Q0
-//    sample0_ch2 = data_ch2[n + 2];
-//    sample1_ch2  = (int16_t) (b1_ch2 >> 16); //Save as Q0
-//
-//    a0_ch1 = (factor_ch1[0] * sample0_ch1) << 1;
-//    a1_ch1 = (factor_ch1[1] * sample1_ch1) << 1;
-//    a0_ch2 = (factor_ch2[0] * sample0_ch2) << 1;
-//    a1_ch2 = (factor_ch2[1] * sample1_ch2) << 1;
-//
-//    b2_ch1 = WebRtcSpl_AddSatW32(a0_ch1, state0_ch1);
-//    b1_ch1 = WebRtcSpl_AddSatW32(a1_ch1, state1_ch1); //Q16+Q16=Q16
-//    b2_ch2 = WebRtcSpl_AddSatW32(a0_ch2, state0_ch2); //Q16+Q16=Q16
-//    b1_ch2 = WebRtcSpl_AddSatW32(a1_ch2, state1_ch2); //Q16+Q16=Q16
-//
-//    a0_ch1 = -factor_ch1[0] * (int16_t)(b2_ch1 >> 16);
-//    a1_ch1 = -factor_ch1[1] * (int16_t)(b1_ch1 >> 16);
-//    a0_ch2 = -factor_ch2[0] * (int16_t)(b2_ch2 >> 16);
-//    a1_ch2 = -factor_ch2[1] * (int16_t)(b1_ch2 >> 16);
-//
-//    state0_ch1 = WebRtcSpl_AddSatW32(a0_ch1<<1, (uint32_t)sample0_ch1<<16);
-//    state1_ch1 = WebRtcSpl_AddSatW32(a1_ch1<<1, (uint32_t)sample1_ch1<<16);
-//    state0_ch2 = WebRtcSpl_AddSatW32(a0_ch2<<1, (uint32_t)sample0_ch2<<16);
-//    state1_ch2 = WebRtcSpl_AddSatW32(a1_ch2<<1, (uint32_t)sample1_ch2<<16);
-//
-//
-//    sample1_ch1 = data_ch1[n + 3];
-//    sample0_ch1 = (int16_t) (b2_ch1  >> 16); //Save as Q0
-//    sample1_ch2 = data_ch2[n + 3];
-//    sample0_ch2 = (int16_t) (b2_ch2 >> 16); //Save as Q0
-//
-//    data_ch1[n]     = (int16_t) (b0_ch1 >> 16); //Save as Q0
-//    data_ch1[n + 1] = (int16_t) (b1_ch1 >> 16); //Save as Q0
-//    data_ch2[n]     = (int16_t) (b0_ch2 >> 16);
-//    data_ch2[n + 1] = (int16_t) (b1_ch2 >> 16);
-//  }
-//
-//  // Loop unrolling post-processing.
-//
-//  a1_ch1 = (factor_ch1[0] * sample1_ch1) << 1;
-//  a0_ch1 = (factor_ch1[1] * sample0_ch1) << 1;
-//  a1_ch2 = (factor_ch2[0] * sample1_ch2) << 1;
-//  a0_ch2 = (factor_ch2[1] * sample0_ch2) << 1;
-//
-//  b1_ch1 = WebRtcSpl_AddSatW32(a1_ch1, state0_ch1);
-//  b0_ch1 = WebRtcSpl_AddSatW32(a0_ch1, state1_ch1);
-//  b1_ch2 = WebRtcSpl_AddSatW32(a1_ch2, state0_ch2);
-//  b0_ch2 = WebRtcSpl_AddSatW32(a0_ch2, state1_ch2);
-//
-//  a1_ch1 = -factor_ch1[0] * (int16_t)(b1_ch1 >> 16);
-//  a0_ch1 = -factor_ch1[1] * (int16_t)(b0_ch1 >> 16);
-//  a1_ch2 = -factor_ch2[0] * (int16_t)(b1_ch2 >> 16);
-//  a0_ch2 = -factor_ch2[1] * (int16_t)(b0_ch2 >> 16);
-//
-//  state0_ch1 = WebRtcSpl_AddSatW32(a1_ch1<<1, (uint32_t)sample1_ch1 << 16);
-//  state1_ch1 = WebRtcSpl_AddSatW32(a0_ch1<<1, (uint32_t)sample0_ch1 << 16);
-//  state0_ch2 = WebRtcSpl_AddSatW32(a1_ch2<<1, (uint32_t)sample1_ch2 << 16);
-//  state1_ch2 = WebRtcSpl_AddSatW32(a0_ch2<<1, (uint32_t)sample0_ch2 << 16);
-//
-//  data_ch1[n] = (int16_t) (b0_ch1 >> 16); //Save as Q0
-//  data_ch2[n] = (int16_t) (b0_ch2 >> 16);
-//
-//  sample1_ch1 = (int16_t) (b1_ch1 >> 16); //Save as Q0
-//  sample1_ch2  = (int16_t) (b1_ch2 >> 16); //Save as Q0
-//
-//  a1_ch1 = (factor_ch1[1] * sample1_ch1) << 1;
-//  a1_ch2 = (factor_ch2[1] * sample1_ch2) << 1;
-//
-//  b1_ch1 = WebRtcSpl_AddSatW32(a1_ch1, state1_ch1); //Q16+Q16=Q16
-//  b1_ch2 = WebRtcSpl_AddSatW32(a1_ch2, state1_ch2); //Q16+Q16=Q16
-//
-//  a1_ch1 = -factor_ch1[1] * (int16_t)(b1_ch1 >> 16);
-//  a1_ch2 = -factor_ch2[1] * (int16_t)(b1_ch2 >> 16);
-//
-//  state1_ch1 = WebRtcSpl_AddSatW32(a1_ch1<<1, (uint32_t)sample1_ch1<<16);
-//  state1_ch2 = WebRtcSpl_AddSatW32(a1_ch2<<1, (uint32_t)sample1_ch2<<16);
-//
-//  data_ch1[n + 1] = (int16_t) (b1_ch1 >> 16); //Save as Q0
-//  data_ch2[n + 1] = (int16_t) (b1_ch2 >> 16);
-//
-//  filter_state_ch1[0] = state0_ch1;
-//  filter_state_ch1[1] = state1_ch1;
-//  filter_state_ch2[0] = state0_ch2;
-//  filter_state_ch2[1] = state1_ch2;
-//}
diff --git a/modules/audio_coding/codecs/isac/fix/source/filterbanks_unittest.cc b/modules/audio_coding/codecs/isac/fix/source/filterbanks_unittest.cc
deleted file mode 100644
index 4a3db23..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/filterbanks_unittest.cc
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "common_audio/signal_processing/include/signal_processing_library.h"
-#include "modules/audio_coding/codecs/isac/fix/source/filterbank_internal.h"
-#include "modules/audio_coding/codecs/isac/fix/source/filterbank_tables.h"
-#include "modules/audio_coding/codecs/isac/fix/source/settings.h"
-#include "rtc_base/sanitizer.h"
-#include "system_wrappers/include/cpu_features_wrapper.h"
-#include "test/gtest.h"
-
-class FilterBanksTest : public ::testing::Test {
- protected:
-  // Pass a function pointer to the Tester function.
-  void RTC_NO_SANITIZE("signed-integer-overflow")  // bugs.webrtc.org/5513
-      CalculateResidualEnergyTester(
-          AllpassFilter2FixDec16 AllpassFilter2FixDec16Function) {
-    const int kSamples = QLOOKAHEAD;
-    const int kState = 2;
-    int16_t data_ch1[kSamples] = {0};
-    int16_t data_ch2[kSamples] = {0};
-    int32_t state_ch1[kState] = {0};
-    int32_t state_ch2[kState] = {0};
-    const int32_t out_state_ch1[kState] = {-809122714, 1645972152};
-    const int32_t out_state_ch2[kState] = {428019288, 1057309936};
-    const int32_t out_data_ch1[kSamples] = {
-        0,      0,     347,    10618,  16718,  -7089,  32767, 16913,
-        27042,  8377,  -22973, -28372, -27603, -14804, 398,   -25332,
-        -11200, 18044, 25223,  -6839,  1116,   -23984, 32717, 7364};
-    const int32_t out_data_ch2[kSamples] = {
-        0,      0,      3010,  22351,  21106, 16969, -2095, -664,
-        3513,   -30980, 32767, -23839, 13335, 20289, -6831, 339,
-        -17207, 32767,  4959,  6177,   32767, 16599, -4747, 20504};
-    int sign = 1;
-
-    for (int i = 0; i < kSamples; i++) {
-      sign *= -1;
-      data_ch1[i] = sign * WEBRTC_SPL_WORD32_MAX / (i * i + 1);
-      data_ch2[i] = sign * WEBRTC_SPL_WORD32_MIN / (i * i + 1);
-      // UBSan: -1 * -2147483648 cannot be represented in type 'int'
-    };
-
-    AllpassFilter2FixDec16Function(
-        data_ch1, data_ch2, WebRtcIsacfix_kUpperApFactorsQ15,
-        WebRtcIsacfix_kLowerApFactorsQ15, kSamples, state_ch1, state_ch2);
-
-    for (int i = 0; i < kSamples; i++) {
-      EXPECT_EQ(out_data_ch1[i], data_ch1[i]);
-      EXPECT_EQ(out_data_ch2[i], data_ch2[i]);
-    }
-    for (int i = 0; i < kState; i++) {
-      EXPECT_EQ(out_state_ch1[i], state_ch1[i]);
-      EXPECT_EQ(out_state_ch2[i], state_ch2[i]);
-    }
-  }
-};
-
-TEST_F(FilterBanksTest, AllpassFilter2FixDec16Test) {
-  CalculateResidualEnergyTester(WebRtcIsacfix_AllpassFilter2FixDec16C);
-#if defined(WEBRTC_HAS_NEON)
-  CalculateResidualEnergyTester(WebRtcIsacfix_AllpassFilter2FixDec16Neon);
-#endif
-}
-
-TEST_F(FilterBanksTest, HighpassFilterFixDec32Test) {
-  const int kSamples = 20;
-  int16_t in[kSamples];
-  int32_t state[2] = {12345, 987654};
-#ifdef WEBRTC_ARCH_ARM_V7
-  int32_t out[kSamples] = {-1040,  -1035, -22875, -1397, -27604, 20018,  7917,
-                           -1279,  -8552, -14494, -7558, -23537, -27258, -30554,
-                           -32768, -3432, -32768, 25215, -27536, 22436};
-#else
-  int32_t out[kSamples] = {-1040,  -1035, -22875, -1397, -27604, 20017,  7915,
-                           -1280,  -8554, -14496, -7561, -23541, -27263, -30560,
-                           -32768, -3441, -32768, 25203, -27550, 22419};
-#endif
-  HighpassFilterFixDec32 WebRtcIsacfix_HighpassFilterFixDec32;
-#if defined(MIPS_DSP_R1_LE)
-  WebRtcIsacfix_HighpassFilterFixDec32 =
-      WebRtcIsacfix_HighpassFilterFixDec32MIPS;
-#else
-  WebRtcIsacfix_HighpassFilterFixDec32 = WebRtcIsacfix_HighpassFilterFixDec32C;
-#endif
-
-  for (int i = 0; i < kSamples; i++) {
-    in[i] = WEBRTC_SPL_WORD32_MAX / (i + 1);
-  }
-
-  WebRtcIsacfix_HighpassFilterFixDec32(in, kSamples,
-                                       WebRtcIsacfix_kHPStCoeffOut1Q30, state);
-
-  for (int i = 0; i < kSamples; i++) {
-    EXPECT_EQ(out[i], in[i]);
-  }
-}
diff --git a/modules/audio_coding/codecs/isac/fix/source/filters.c b/modules/audio_coding/codecs/isac/fix/source/filters.c
deleted file mode 100644
index 838ba4b..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/filters.c
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "rtc_base/checks.h"
-#include "modules/audio_coding/codecs/isac/fix/source/codec.h"
-
-// Autocorrelation function in fixed point.
-// NOTE! Different from SPLIB-version in how it scales the signal.
-int WebRtcIsacfix_AutocorrC(int32_t* __restrict r,
-                            const int16_t* __restrict x,
-                            int16_t N,
-                            int16_t order,
-                            int16_t* __restrict scale) {
-  int i = 0;
-  int j = 0;
-  int16_t scaling = 0;
-  int32_t sum = 0;
-  uint32_t temp = 0;
-  int64_t prod = 0;
-
-  // The ARM assembly code assumptoins.
-  RTC_DCHECK_EQ(0, N % 4);
-  RTC_DCHECK_GE(N, 8);
-
-  // Calculate r[0].
-  for (i = 0; i < N; i++) {
-    prod += x[i] * x[i];
-  }
-
-  // Calculate scaling (the value of shifting).
-  temp = (uint32_t)(prod >> 31);
-  if(temp == 0) {
-    scaling = 0;
-  } else {
-    scaling = 32 - WebRtcSpl_NormU32(temp);
-  }
-  r[0] = (int32_t)(prod >> scaling);
-
-  // Perform the actual correlation calculation.
-  for (i = 1; i < order + 1; i++) {
-    prod = 0;
-    for (j = 0; j < N - i; j++) {
-      prod += x[j] * x[i + j];
-    }
-    sum = (int32_t)(prod >> scaling);
-    r[i] = sum;
-  }
-
-  *scale = scaling;
-
-  return(order + 1);
-}
-
-static const int32_t kApUpperQ15[ALLPASSSECTIONS] = { 1137, 12537 };
-static const int32_t kApLowerQ15[ALLPASSSECTIONS] = { 5059, 24379 };
-
-
-static void AllpassFilterForDec32(int16_t         *InOut16, //Q0
-                                  const int32_t   *APSectionFactors, //Q15
-                                  int16_t         lengthInOut,
-                                  int32_t          *FilterState) //Q16
-{
-  int n, j;
-  int32_t a, b;
-
-  for (j=0; j<ALLPASSSECTIONS; j++) {
-    for (n=0;n<lengthInOut;n+=2){
-      a = WEBRTC_SPL_MUL_16_32_RSFT16(InOut16[n], APSectionFactors[j]); //Q0*Q31=Q31 shifted 16 gives Q15
-      a <<= 1;  // Q15 -> Q16
-      b = WebRtcSpl_AddSatW32(a, FilterState[j]);  //Q16+Q16=Q16
-      // `a` in Q15 (Q0*Q31=Q31 shifted 16 gives Q15).
-      a = WEBRTC_SPL_MUL_16_32_RSFT16(b >> 16, -APSectionFactors[j]);
-      // FilterState[j]: Q15<<1 + Q0<<16 = Q16 + Q16 = Q16
-      FilterState[j] = WebRtcSpl_AddSatW32(a << 1, (uint32_t)InOut16[n] << 16);
-      InOut16[n] = (int16_t)(b >> 16);  // Save as Q0.
-    }
-  }
-}
-
-
-
-
-void WebRtcIsacfix_DecimateAllpass32(const int16_t *in,
-                                     int32_t *state_in,        /* array of size: 2*ALLPASSSECTIONS+1 */
-                                     int16_t N,                /* number of input samples */
-                                     int16_t *out)             /* array of size N/2 */
-{
-  int n;
-  int16_t data_vec[PITCH_FRAME_LEN];
-
-  /* copy input */
-  memcpy(data_vec + 1, in, sizeof(int16_t) * (N - 1));
-
-  data_vec[0] = (int16_t)(state_in[2 * ALLPASSSECTIONS] >> 16);  // z^-1 state.
-  state_in[2 * ALLPASSSECTIONS] = (uint32_t)in[N - 1] << 16;
-
-
-
-  AllpassFilterForDec32(data_vec+1, kApUpperQ15, N, state_in);
-  AllpassFilterForDec32(data_vec, kApLowerQ15, N, state_in+ALLPASSSECTIONS);
-
-  for (n=0;n<N/2;n++) {
-    out[n] = WebRtcSpl_AddSatW16(data_vec[2 * n], data_vec[2 * n + 1]);
-  }
-}
diff --git a/modules/audio_coding/codecs/isac/fix/source/filters_mips.c b/modules/audio_coding/codecs/isac/fix/source/filters_mips.c
deleted file mode 100644
index ded3d03..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/filters_mips.c
+++ /dev/null
@@ -1,365 +0,0 @@
-/*
- *  Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "modules/audio_coding/codecs/isac/fix/source/codec.h"
-
-// MIPS optimized implementation of the Autocorrelation function in fixed point.
-// NOTE! Different from SPLIB-version in how it scales the signal.
-int WebRtcIsacfix_AutocorrMIPS(int32_t* __restrict r,
-                               const int16_t* __restrict x,
-                               int16_t N,
-                               int16_t order,
-                               int16_t* __restrict scale) {
-  int i = 0;
-  int16_t scaling = 0;
-  int16_t* in = (int16_t*)x;
-  int loop_size = (int)(N >> 3);
-  int count = (int)(N & 7);
-  // Declare temporary variables used as registry values.
-  int32_t r0, r1, r2, r3;
-#if !defined(MIPS_DSP_R2_LE)
-  // For non-DSPR2 optimizations 4 more registers are used.
-  int32_t r4, r5, r6, r7;
-#endif
-
-  // Calculate r[0] and scaling needed.
-  __asm __volatile (
-    ".set          push                                            \n\t"
-    ".set          noreorder                                       \n\t"
-    "mult          $0,             $0                              \n\t"
-    // Loop is unrolled 8 times, set accumulator to zero in branch delay slot.
-    "beqz          %[loop_size],   2f                              \n\t"
-    " mult         $0,             $0                              \n\t"
-   "1:                                                             \n\t"
-    // Load 8 samples per loop iteration.
-#if defined(MIPS_DSP_R2_LE)
-    "ulw           %[r0],          0(%[in])                        \n\t"
-    "ulw           %[r1],          4(%[in])                        \n\t"
-    "ulw           %[r2],          8(%[in])                        \n\t"
-    "ulw           %[r3],          12(%[in])                       \n\t"
-#else
-    "lh            %[r0],          0(%[in])                        \n\t"
-    "lh            %[r1],          2(%[in])                        \n\t"
-    "lh            %[r2],          4(%[in])                        \n\t"
-    "lh            %[r3],          6(%[in])                        \n\t"
-    "lh            %[r4],          8(%[in])                        \n\t"
-    "lh            %[r5],          10(%[in])                       \n\t"
-    "lh            %[r6],          12(%[in])                       \n\t"
-    "lh            %[r7],          14(%[in])                       \n\t"
-#endif
-    "addiu         %[loop_size],   %[loop_size],   -1              \n\t"
-    // Multiply and accumulate.
-#if defined(MIPS_DSP_R2_LE)
-    "dpa.w.ph      $ac0,           %[r0],          %[r0]           \n\t"
-    "dpa.w.ph      $ac0,           %[r1],          %[r1]           \n\t"
-    "dpa.w.ph      $ac0,           %[r2],          %[r2]           \n\t"
-    "dpa.w.ph      $ac0,           %[r3],          %[r3]           \n\t"
-#else
-    "madd          %[r0],          %[r0]                           \n\t"
-    "madd          %[r1],          %[r1]                           \n\t"
-    "madd          %[r2],          %[r2]                           \n\t"
-    "madd          %[r3],          %[r3]                           \n\t"
-    "madd          %[r4],          %[r4]                           \n\t"
-    "madd          %[r5],          %[r5]                           \n\t"
-    "madd          %[r6],          %[r6]                           \n\t"
-    "madd          %[r7],          %[r7]                           \n\t"
-#endif
-    "bnez          %[loop_size],   1b                              \n\t"
-    " addiu        %[in],          %[in],          16              \n\t"
-   "2:                                                             \n\t"
-    "beqz          %[count],       4f                              \n\t"
-#if defined(MIPS_DSP_R1_LE)
-    " extr.w       %[r0],          $ac0,           31              \n\t"
-#else
-    " mfhi         %[r2]                                           \n\t"
-#endif
-    // Process remaining samples (if any).
-   "3:                                                             \n\t"
-    "lh            %[r0],          0(%[in])                        \n\t"
-    "addiu         %[count],       %[count],       -1              \n\t"
-    "madd          %[r0],          %[r0]                           \n\t"
-    "bnez          %[count],       3b                              \n\t"
-    " addiu        %[in],          %[in],          2               \n\t"
-#if defined(MIPS_DSP_R1_LE)
-    "extr.w        %[r0],          $ac0,           31              \n\t"
-#else
-    "mfhi          %[r2]                                           \n\t"
-#endif
-   "4:                                                             \n\t"
-#if !defined(MIPS_DSP_R1_LE)
-    "mflo          %[r3]                                           \n\t"
-    "sll           %[r0],          %[r2],          1               \n\t"
-    "srl           %[r1],          %[r3],          31              \n\t"
-    "addu          %[r0],          %[r0],          %[r1]           \n\t"
-#endif
-    // Calculate scaling (the value of shifting).
-    "clz           %[r1],          %[r0]                           \n\t"
-    "addiu         %[r1],          %[r1],          -32             \n\t"
-    "subu          %[scaling],     $0,             %[r1]           \n\t"
-    "slti          %[r1],          %[r0],          0x1             \n\t"
-    "movn          %[scaling],     $0,             %[r1]           \n\t"
-#if defined(MIPS_DSP_R1_LE)
-    "extrv.w       %[r0],          $ac0,           %[scaling]      \n\t"
-    "mfhi          %[r2],          $ac0                            \n\t"
-#else
-    "addiu         %[r1],          %[scaling],     -32             \n\t"
-    "subu          %[r1],          $0,             %[r1]           \n\t"
-    "sllv          %[r1],          %[r2],          %[r1]           \n\t"
-    "srlv          %[r0],          %[r3],          %[scaling]      \n\t"
-    "addu          %[r0],          %[r0],          %[r1]           \n\t"
-#endif
-    "slti          %[r1],          %[scaling],     32              \n\t"
-    "movz          %[r0],          %[r2],          %[r1]           \n\t"
-    ".set          pop                                             \n\t"
-    : [loop_size] "+r" (loop_size), [in] "+r" (in), [r0] "=&r" (r0),
-      [r1] "=&r" (r1), [r2] "=&r" (r2), [r3] "=&r" (r3),
-#if !defined(MIPS_DSP_R2_LE)
-      [r4] "=&r" (r4), [r5] "=&r" (r5), [r6] "=&r" (r6), [r7] "=&r" (r7),
-#endif
-      [count] "+r" (count), [scaling] "=r" (scaling)
-    : [N] "r" (N)
-    : "memory", "hi", "lo"
-  );
-  r[0] = r0;
-
-  // Correlation calculation is divided in 3 cases depending on the scaling
-  // value (different accumulator manipulation needed). Three slightly different
-  // loops are written in order to avoid branches inside the loop.
-  if (scaling == 0) {
-    // In this case, the result will be in low part of the accumulator.
-    for (i = 1; i < order + 1; i++) {
-      in = (int16_t*)x;
-      int16_t* in1 = (int16_t*)x + i;
-      count = N - i;
-      loop_size = (count) >> 2;
-      __asm  __volatile (
-        ".set        push                                          \n\t"
-        ".set        noreorder                                     \n\t"
-        "mult        $0,             $0                            \n\t"
-        "beqz        %[loop_size],   2f                            \n\t"
-        " andi       %[count],       %[count],       0x3           \n\t"
-        // Loop processing 4 pairs of samples per iteration.
-       "1:                                                         \n\t"
-#if defined(MIPS_DSP_R2_LE)
-        "ulw         %[r0],          0(%[in])                      \n\t"
-        "ulw         %[r1],          0(%[in1])                     \n\t"
-        "ulw         %[r2],          4(%[in])                      \n\t"
-        "ulw         %[r3],          4(%[in1])                     \n\t"
-#else
-        "lh          %[r0],          0(%[in])                      \n\t"
-        "lh          %[r1],          0(%[in1])                     \n\t"
-        "lh          %[r2],          2(%[in])                      \n\t"
-        "lh          %[r3],          2(%[in1])                     \n\t"
-        "lh          %[r4],          4(%[in])                      \n\t"
-        "lh          %[r5],          4(%[in1])                     \n\t"
-        "lh          %[r6],          6(%[in])                      \n\t"
-        "lh          %[r7],          6(%[in1])                     \n\t"
-#endif
-        "addiu       %[loop_size],   %[loop_size],   -1            \n\t"
-#if defined(MIPS_DSP_R2_LE)
-        "dpa.w.ph    $ac0,           %[r0],          %[r1]         \n\t"
-        "dpa.w.ph    $ac0,           %[r2],          %[r3]         \n\t"
-#else
-        "madd        %[r0],          %[r1]                         \n\t"
-        "madd        %[r2],          %[r3]                         \n\t"
-        "madd        %[r4],          %[r5]                         \n\t"
-        "madd        %[r6],          %[r7]                         \n\t"
-#endif
-        "addiu       %[in],          %[in],          8             \n\t"
-        "bnez        %[loop_size],   1b                            \n\t"
-        " addiu      %[in1],         %[in1],         8             \n\t"
-       "2:                                                         \n\t"
-        "beqz        %[count],       4f                            \n\t"
-        " mflo       %[r0]                                         \n\t"
-        // Process remaining samples (if any).
-       "3:                                                         \n\t"
-        "lh          %[r0],          0(%[in])                      \n\t"
-        "lh          %[r1],          0(%[in1])                     \n\t"
-        "addiu       %[count],       %[count],       -1            \n\t"
-        "addiu       %[in],          %[in],          2             \n\t"
-        "madd        %[r0],          %[r1]                         \n\t"
-        "bnez        %[count],       3b                            \n\t"
-        " addiu      %[in1],         %[in1],         2             \n\t"
-        "mflo        %[r0]                                         \n\t"
-       "4:                                                         \n\t"
-        ".set        pop                                           \n\t"
-        : [loop_size] "+r" (loop_size), [in] "+r" (in), [in1] "+r" (in1),
-#if !defined(MIPS_DSP_R2_LE)
-          [r4] "=&r" (r4), [r5] "=&r" (r5), [r6] "=&r" (r6), [r7] "=&r" (r7),
-#endif
-          [r0] "=&r" (r0), [r1] "=&r" (r1), [r2] "=&r" (r2), [r3] "=&r" (r3),
-          [count] "+r" (count)
-        :
-        : "memory", "hi", "lo"
-      );
-      r[i] = r0;
-    }
-  } else if (scaling == 32) {
-    // In this case, the result will be high part of the accumulator.
-    for (i = 1; i < order + 1; i++) {
-      in = (int16_t*)x;
-      int16_t* in1 = (int16_t*)x + i;
-      count = N - i;
-      loop_size = (count) >> 2;
-      __asm __volatile (
-        ".set        push                                          \n\t"
-        ".set        noreorder                                     \n\t"
-        "mult        $0,             $0                            \n\t"
-        "beqz        %[loop_size],   2f                            \n\t"
-        " andi       %[count],       %[count],       0x3           \n\t"
-        // Loop processing 4 pairs of samples per iteration.
-       "1:                                                         \n\t"
-#if defined(MIPS_DSP_R2_LE)
-        "ulw         %[r0],          0(%[in])                      \n\t"
-        "ulw         %[r1],          0(%[in1])                     \n\t"
-        "ulw         %[r2],          4(%[in])                      \n\t"
-        "ulw         %[r3],          4(%[in1])                     \n\t"
-#else
-        "lh          %[r0],          0(%[in])                      \n\t"
-        "lh          %[r1],          0(%[in1])                     \n\t"
-        "lh          %[r2],          2(%[in])                      \n\t"
-        "lh          %[r3],          2(%[in1])                     \n\t"
-        "lh          %[r4],          4(%[in])                      \n\t"
-        "lh          %[r5],          4(%[in1])                     \n\t"
-        "lh          %[r6],          6(%[in])                      \n\t"
-        "lh          %[r7],          6(%[in1])                     \n\t"
-#endif
-        "addiu       %[loop_size],   %[loop_size],   -1            \n\t"
-#if defined(MIPS_DSP_R2_LE)
-        "dpa.w.ph    $ac0,           %[r0],          %[r1]         \n\t"
-        "dpa.w.ph    $ac0,           %[r2],          %[r3]         \n\t"
-#else
-        "madd        %[r0],          %[r1]                         \n\t"
-        "madd        %[r2],          %[r3]                         \n\t"
-        "madd        %[r4],          %[r5]                         \n\t"
-        "madd        %[r6],          %[r7]                         \n\t"
-#endif
-        "addiu       %[in],          %[in],          8             \n\t"
-        "bnez        %[loop_size],   1b                            \n\t"
-        " addiu      %[in1],         %[in1],         8             \n\t"
-       "2:                                                         \n\t"
-        "beqz        %[count],       4f                            \n\t"
-        " mfhi       %[r0]                                         \n\t"
-        // Process remaining samples (if any).
-       "3:                                                         \n\t"
-        "lh          %[r0],          0(%[in])                      \n\t"
-        "lh          %[r1],          0(%[in1])                     \n\t"
-        "addiu       %[count],       %[count],       -1            \n\t"
-        "addiu       %[in],          %[in],          2             \n\t"
-        "madd        %[r0],          %[r1]                         \n\t"
-        "bnez        %[count],       3b                            \n\t"
-        " addiu      %[in1],         %[in1],         2             \n\t"
-        "mfhi        %[r0]                                         \n\t"
-       "4:                                                         \n\t"
-        ".set        pop                                           \n\t"
-        : [loop_size] "+r" (loop_size), [in] "+r" (in), [in1] "+r" (in1),
-#if !defined(MIPS_DSP_R2_LE)
-          [r4] "=&r" (r4), [r5] "=&r" (r5), [r6] "=&r" (r6), [r7] "=&r" (r7),
-#endif
-          [r0] "=&r" (r0), [r1] "=&r" (r1), [r2] "=&r" (r2), [r3] "=&r" (r3),
-          [count] "+r" (count)
-        :
-        : "memory", "hi", "lo"
-      );
-      r[i] = r0;
-    }
-  } else {
-    // In this case, the result is obtained by combining low and high parts
-    // of the accumulator.
-#if !defined(MIPS_DSP_R1_LE)
-    int32_t tmp_shift = 32 - scaling;
-#endif
-    for (i = 1; i < order + 1; i++) {
-      in = (int16_t*)x;
-      int16_t* in1 = (int16_t*)x + i;
-      count = N - i;
-      loop_size = (count) >> 2;
-      __asm __volatile (
-        ".set        push                                          \n\t"
-        ".set        noreorder                                     \n\t"
-        "mult        $0,             $0                            \n\t"
-        "beqz        %[loop_size],   2f                            \n\t"
-        " andi       %[count],       %[count],       0x3           \n\t"
-       "1:                                                         \n\t"
-#if defined(MIPS_DSP_R2_LE)
-        "ulw         %[r0],          0(%[in])                      \n\t"
-        "ulw         %[r1],          0(%[in1])                     \n\t"
-        "ulw         %[r2],          4(%[in])                      \n\t"
-        "ulw         %[r3],          4(%[in1])                     \n\t"
-#else
-        "lh          %[r0],          0(%[in])                      \n\t"
-        "lh          %[r1],          0(%[in1])                     \n\t"
-        "lh          %[r2],          2(%[in])                      \n\t"
-        "lh          %[r3],          2(%[in1])                     \n\t"
-        "lh          %[r4],          4(%[in])                      \n\t"
-        "lh          %[r5],          4(%[in1])                     \n\t"
-        "lh          %[r6],          6(%[in])                      \n\t"
-        "lh          %[r7],          6(%[in1])                     \n\t"
-#endif
-        "addiu       %[loop_size],   %[loop_size],   -1            \n\t"
-#if defined(MIPS_DSP_R2_LE)
-        "dpa.w.ph    $ac0,           %[r0],          %[r1]         \n\t"
-        "dpa.w.ph    $ac0,           %[r2],          %[r3]         \n\t"
-#else
-        "madd        %[r0],          %[r1]                         \n\t"
-        "madd        %[r2],          %[r3]                         \n\t"
-        "madd        %[r4],          %[r5]                         \n\t"
-        "madd        %[r6],          %[r7]                         \n\t"
-#endif
-        "addiu       %[in],          %[in],          8             \n\t"
-        "bnez        %[loop_size],   1b                            \n\t"
-        " addiu      %[in1],         %[in1],         8             \n\t"
-       "2:                                                         \n\t"
-        "beqz        %[count],       4f                            \n\t"
-#if defined(MIPS_DSP_R1_LE)
-        " extrv.w    %[r0],          $ac0,           %[scaling]    \n\t"
-#else
-        " mfhi       %[r0]                                         \n\t"
-#endif
-       "3:                                                         \n\t"
-        "lh          %[r0],          0(%[in])                      \n\t"
-        "lh          %[r1],          0(%[in1])                     \n\t"
-        "addiu       %[count],       %[count],       -1            \n\t"
-        "addiu       %[in],          %[in],          2             \n\t"
-        "madd        %[r0],          %[r1]                         \n\t"
-        "bnez        %[count],       3b                            \n\t"
-        " addiu      %[in1],         %[in1],         2             \n\t"
-#if defined(MIPS_DSP_R1_LE)
-        "extrv.w     %[r0],          $ac0,           %[scaling]    \n\t"
-#else
-        "mfhi        %[r0]                                         \n\t"
-#endif
-       "4:                                                         \n\t"
-#if !defined(MIPS_DSP_R1_LE)
-        "mflo        %[r1]                                         \n\t"
-        "sllv        %[r0],          %[r0],          %[tmp_shift]  \n\t"
-        "srlv        %[r1],          %[r1],          %[scaling]    \n\t"
-        "addu        %[r0],          %[r0],          %[r1]         \n\t"
-#endif
-        ".set        pop                                           \n\t"
-        : [loop_size] "+r" (loop_size), [in] "+r" (in), [in1] "+r" (in1),
-#if !defined(MIPS_DSP_R2_LE)
-          [r4] "=&r" (r4), [r5] "=&r" (r5), [r6] "=&r" (r6), [r7] "=&r" (r7),
-#endif
-          [r0] "=&r" (r0), [r1] "=&r" (r1), [r2] "=&r" (r2), [r3] "=&r" (r3),
-          [count] "+r" (count)
-        : [scaling] "r" (scaling)
-#if !defined(MIPS_DSP_R1_LE)
-        , [tmp_shift] "r" (tmp_shift)
-#endif
-        : "memory", "hi", "lo"
-      );
-      r[i] = r0;
-    }
-  }
-  *scale = scaling;
-
-  return (order + 1);
-}
diff --git a/modules/audio_coding/codecs/isac/fix/source/filters_neon.c b/modules/audio_coding/codecs/isac/fix/source/filters_neon.c
deleted file mode 100644
index 1734a96..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/filters_neon.c
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- *  Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <arm_neon.h>
-
-#include "rtc_base/checks.h"
-#include "modules/audio_coding/codecs/isac/fix/source/codec.h"
-
-// Autocorrelation function in fixed point.
-// NOTE! Different from SPLIB-version in how it scales the signal.
-int WebRtcIsacfix_AutocorrNeon(int32_t* __restrict r,
-                               const int16_t* x,
-                               int16_t n,
-                               int16_t order,
-                               int16_t* __restrict scale) {
-  int i = 0;
-  int16_t scaling = 0;
-  uint32_t temp = 0;
-  int64_t prod = 0;
-  int64_t prod_tail = 0;
-
-  RTC_DCHECK_EQ(0, n % 4);
-  RTC_DCHECK_GE(n, 8);
-
-  // Calculate r[0].
-  int16x4_t x0_v;
-  int32x4_t tmpa0_v;
-  int64x2_t tmpb_v;
-
-  tmpb_v = vdupq_n_s64(0);
-  const int16_t* x_start = x;
-  const int16_t* x_end0 = x_start + n;
-  while (x_start < x_end0) {
-    x0_v = vld1_s16(x_start);
-    tmpa0_v = vmull_s16(x0_v, x0_v);
-    tmpb_v = vpadalq_s32(tmpb_v, tmpa0_v);
-    x_start += 4;
-  }
-
-#ifdef WEBRTC_ARCH_ARM64
-  prod = vaddvq_s64(tmpb_v);
-#else
-  prod = vget_lane_s64(vadd_s64(vget_low_s64(tmpb_v), vget_high_s64(tmpb_v)),
-                       0);
-#endif
-  // Calculate scaling (the value of shifting).
-  temp = (uint32_t)(prod >> 31);
-
-  scaling = temp ? 32 - WebRtcSpl_NormU32(temp) : 0;
-  r[0] = (int32_t)(prod >> scaling);
-
-  int16x8_t x1_v;
-  int16x8_t y_v;
-  int32x4_t tmpa1_v;
-  // Perform the actual correlation calculation.
-  for (i = 1; i < order + 1; i++) {
-    tmpb_v = vdupq_n_s64(0);
-    int rest = (n - i) % 8;
-    x_start = x;
-    x_end0 = x_start + n - i - rest;
-    const int16_t* y_start = x_start + i;
-    while (x_start < x_end0) {
-      x1_v = vld1q_s16(x_start);
-      y_v = vld1q_s16(y_start);
-      tmpa0_v = vmull_s16(vget_low_s16(x1_v), vget_low_s16(y_v));
-#ifdef WEBRTC_ARCH_ARM64
-      tmpa1_v = vmull_high_s16(x1_v, y_v);
-#else
-      tmpa1_v = vmull_s16(vget_high_s16(x1_v), vget_high_s16(y_v));
-#endif
-      tmpb_v = vpadalq_s32(tmpb_v, tmpa0_v);
-      tmpb_v = vpadalq_s32(tmpb_v, tmpa1_v);
-      x_start += 8;
-      y_start += 8;
-    }
-    // The remaining calculation.
-    const int16_t* x_end1 = x + n - i;
-    if (rest >= 4) {
-        int16x4_t x2_v = vld1_s16(x_start);
-        int16x4_t y2_v = vld1_s16(y_start);
-        tmpa0_v = vmull_s16(x2_v, y2_v);
-        tmpb_v = vpadalq_s32(tmpb_v, tmpa0_v);
-        x_start += 4;
-        y_start += 4;
-    }
-#ifdef WEBRTC_ARCH_ARM64
-    prod = vaddvq_s64(tmpb_v);
-#else
-    prod = vget_lane_s64(vadd_s64(vget_low_s64(tmpb_v), vget_high_s64(tmpb_v)),
-                         0);
-#endif
-
-    prod_tail = 0;
-    while (x_start < x_end1) {
-      prod_tail += *x_start * *y_start;
-      ++x_start;
-      ++y_start;
-    }
-
-    r[i] = (int32_t)((prod + prod_tail) >> scaling);
-  }
-
-  *scale = scaling;
-
-  return order + 1;
-}
-
diff --git a/modules/audio_coding/codecs/isac/fix/source/filters_unittest.cc b/modules/audio_coding/codecs/isac/fix/source/filters_unittest.cc
deleted file mode 100644
index 192ef89..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/filters_unittest.cc
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "modules/audio_coding/codecs/isac/fix/source/codec.h"
-#include "system_wrappers/include/cpu_features_wrapper.h"
-#include "test/gtest.h"
-
-class FiltersTest : public ::testing::Test {
- protected:
-  // Pass a function pointer to the Tester function.
-  void FiltersTester(AutocorrFix WebRtcIsacfix_AutocorrFixFunction) {
-    const int kOrder = 12;
-    const int kBuffer = 40;
-    int16_t scale = 0;
-    int32_t r_buffer[kOrder + 2] = {0};
-
-    // Test an overflow case.
-    const int16_t x_buffer_0[kBuffer] = {
-        0,      0,      3010,  22351,  21106, 16969,  -2095, -664,
-        3513,   -30980, 32767, -23839, 13335, 20289,  -6831, 339,
-        -17207, 32767,  4959,  6177,   32767, 16599,  -4747, 20504,
-        3513,   -30980, 32767, -23839, 13335, 20289,  0,     -16969,
-        -2095,  -664,   3513,  31981,  32767, -13839, 23336, 30281};
-    const int32_t r_expected_0[kOrder + 2] = {
-        1872498461, -224288754, 203789985, 483400487,  -208272635,
-        2436500,    137785322,  266600814, -208486262, 329510080,
-        137949184,  -161738972, -26894267, 237630192};
-
-    WebRtcIsacfix_AutocorrFixFunction(r_buffer, x_buffer_0, kBuffer, kOrder + 1,
-                                      &scale);
-    for (int i = 0; i < kOrder + 2; i++) {
-      EXPECT_EQ(r_expected_0[i], r_buffer[i]);
-    }
-    EXPECT_EQ(3, scale);
-
-    // Test a no-overflow case.
-    const int16_t x_buffer_1[kBuffer] = {
-        0,   0,     300,   21,   206,   169,  -295, -664, 3513, -300,
-        327, -29,   15,    289,  -6831, 339,  -107, 37,   59,   6177,
-        327, 169,   -4747, 204,  313,   -980, 767,  -9,   135,  289,
-        0,   -6969, -2095, -664, 0,     1,    7,    -39,  236,  281};
-    const int32_t r_expected_1[kOrder + 2] = {
-        176253864, 8126617,   1983287,   -26196788, -3487363,
-        -42839676, -24644043, 3469813,   30559879,  31905045,
-        5101567,   29328896,  -55787438, -13163978};
-
-    WebRtcIsacfix_AutocorrFixFunction(r_buffer, x_buffer_1, kBuffer, kOrder + 1,
-                                      &scale);
-    for (int i = 0; i < kOrder + 2; i++) {
-      EXPECT_EQ(r_expected_1[i], r_buffer[i]);
-    }
-    EXPECT_EQ(0, scale);
-  }
-};
-
-TEST_F(FiltersTest, AutocorrFixTest) {
-  FiltersTester(WebRtcIsacfix_AutocorrC);
-#if defined(WEBRTC_HAS_NEON)
-  FiltersTester(WebRtcIsacfix_AutocorrNeon);
-#endif
-}
diff --git a/modules/audio_coding/codecs/isac/fix/source/initialize.c b/modules/audio_coding/codecs/isac/fix/source/initialize.c
deleted file mode 100644
index 1b82958..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/initialize.c
+++ /dev/null
@@ -1,173 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * initialize.c
- *
- * Internal initfunctions
- *
- */
-
-#include "modules/audio_coding/codecs/isac/fix/source/codec.h"
-#include "modules/audio_coding/codecs/isac/fix/source/structs.h"
-#include "modules/audio_coding/codecs/isac/fix/source/pitch_estimator.h"
-
-
-void WebRtcIsacfix_InitMaskingEnc(MaskFiltstr_enc *maskdata) {
-
-  int k;
-
-  for (k = 0; k < WINLEN; k++) {
-    maskdata->DataBufferLoQ0[k] = (int16_t) 0;
-    maskdata->DataBufferHiQ0[k] = (int16_t) 0;
-  }
-  for (k = 0; k < ORDERLO+1; k++) {
-    maskdata->CorrBufLoQQ[k] = (int32_t) 0;
-    maskdata->CorrBufLoQdom[k] = 0;
-
-    maskdata->PreStateLoGQ15[k] = 0;
-
-  }
-  for (k = 0; k < ORDERHI+1; k++) {
-    maskdata->CorrBufHiQQ[k] = (int32_t) 0;
-    maskdata->CorrBufHiQdom[k] = 0;
-    maskdata->PreStateHiGQ15[k] = 0;
-  }
-
-  maskdata->OldEnergy = 10;
-
-  return;
-}
-
-void WebRtcIsacfix_InitMaskingDec(MaskFiltstr_dec *maskdata) {
-
-  int k;
-
-  for (k = 0; k < ORDERLO+1; k++)
-  {
-    maskdata->PostStateLoGQ0[k] = 0;
-  }
-  for (k = 0; k < ORDERHI+1; k++)
-  {
-    maskdata->PostStateHiGQ0[k] = 0;
-  }
-
-  maskdata->OldEnergy = 10;
-
-  return;
-}
-
-
-
-
-
-
-
-void WebRtcIsacfix_InitPreFilterbank(PreFiltBankstr *prefiltdata)
-{
-  int k;
-
-  for (k = 0; k < QLOOKAHEAD; k++) {
-    prefiltdata->INLABUF1_fix[k] = 0;
-    prefiltdata->INLABUF2_fix[k] = 0;
-  }
-  for (k = 0; k < 2 * (QORDER - 1); k++) {
-    prefiltdata->INSTAT1_fix[k] = 0;
-    prefiltdata->INSTAT2_fix[k] = 0;
-  }
-
-  /* High pass filter states */
-  prefiltdata->HPstates_fix[0] = 0;
-  prefiltdata->HPstates_fix[1] = 0;
-
-  return;
-}
-
-void WebRtcIsacfix_InitPostFilterbank(PostFiltBankstr *postfiltdata)
-{
-  int k;
-
-  for (k = 0; k < 2 * POSTQORDER; k++) {
-    postfiltdata->STATE_0_LOWER_fix[k] = 0;
-    postfiltdata->STATE_0_UPPER_fix[k] = 0;
-  }
-
-  /* High pass filter states */
-
-  postfiltdata->HPstates1_fix[0] = 0;
-  postfiltdata->HPstates1_fix[1] = 0;
-
-  postfiltdata->HPstates2_fix[0] = 0;
-  postfiltdata->HPstates2_fix[1] = 0;
-
-  return;
-}
-
-
-void WebRtcIsacfix_InitPitchFilter(PitchFiltstr *pitchfiltdata)
-{
-  int k;
-
-  for (k = 0; k < PITCH_BUFFSIZE; k++)
-    pitchfiltdata->ubufQQ[k] = 0;
-  for (k = 0; k < (PITCH_DAMPORDER); k++)
-    pitchfiltdata->ystateQQ[k] = 0;
-
-  pitchfiltdata->oldlagQ7 = 6400; /* 50.0 in Q7 */
-  pitchfiltdata->oldgainQ12 = 0;
-}
-
-void WebRtcIsacfix_InitPitchAnalysis(PitchAnalysisStruct *State)
-{
-  int k;
-
-  for (k = 0; k < PITCH_CORR_LEN2+PITCH_CORR_STEP2+PITCH_MAX_LAG/2-PITCH_FRAME_LEN/2+2; k++) {
-    State->dec_buffer16[k] = 0;
-  }
-  for (k = 0; k < 2 * ALLPASSSECTIONS + 1; k++) {
-    State->decimator_state32[k] = 0;
-  }
-
-  for (k = 0; k < QLOOKAHEAD; k++)
-    State->inbuf[k] = 0;
-
-  WebRtcIsacfix_InitPitchFilter(&(State->PFstr_wght));
-
-  WebRtcIsacfix_InitPitchFilter(&(State->PFstr));
-}
-
-
-void WebRtcIsacfix_InitPlc( PLCstr *State )
-{
-  State->decayCoeffPriodic = WEBRTC_SPL_WORD16_MAX;
-  State->decayCoeffNoise = WEBRTC_SPL_WORD16_MAX;
-
-  State->used = PLC_WAS_USED;
-
-  WebRtcSpl_ZerosArrayW16(State->overlapLP, RECOVERY_OVERLAP);
-  WebRtcSpl_ZerosArrayW16(State->lofilt_coefQ15, ORDERLO);
-  WebRtcSpl_ZerosArrayW16(State->hifilt_coefQ15, ORDERHI );
-
-  State->AvgPitchGain_Q12 = 0;
-  State->lastPitchGain_Q12 = 0;
-  State->lastPitchLag_Q7 = 0;
-  State->gain_lo_hiQ17[0]=State->gain_lo_hiQ17[1] = 0;
-  WebRtcSpl_ZerosArrayW16(State->prevPitchInvIn, FRAMESAMPLES/2);
-  WebRtcSpl_ZerosArrayW16(State->prevPitchInvOut, PITCH_MAX_LAG + 10 );
-  WebRtcSpl_ZerosArrayW32(State->prevHP, PITCH_MAX_LAG + 10 );
-  State->pitchCycles = 0;
-  State->A = 0;
-  State->B = 0;
-  State->pitchIndex = 0;
-  State->stretchLag = 240;
-  State->seed = 4447;
-
-
-}
diff --git a/modules/audio_coding/codecs/isac/fix/source/isac_fix_type.h b/modules/audio_coding/codecs/isac/fix/source/isac_fix_type.h
deleted file mode 100644
index 512911a..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/isac_fix_type.h
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- *  Copyright (c) 2015 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_ISAC_FIX_TYPE_H_
-#define MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_ISAC_FIX_TYPE_H_
-
-#include "modules/audio_coding/codecs/isac/fix/include/isacfix.h"
-#include "rtc_base/checks.h"
-
-namespace webrtc {
-
-class IsacFix {
- public:
-  using instance_type = ISACFIX_MainStruct;
-  static const bool has_swb = false;
-  static inline int16_t Control(instance_type* inst,
-                                int32_t rate,
-                                int framesize) {
-    return WebRtcIsacfix_Control(inst, rate, framesize);
-  }
-  static inline int16_t ControlBwe(instance_type* inst,
-                                   int32_t rate_bps,
-                                   int frame_size_ms,
-                                   int16_t enforce_frame_size) {
-    return WebRtcIsacfix_ControlBwe(inst, rate_bps, frame_size_ms,
-                                    enforce_frame_size);
-  }
-  static inline int16_t Create(instance_type** inst) {
-    return WebRtcIsacfix_Create(inst);
-  }
-  static inline int DecodeInternal(instance_type* inst,
-                                   const uint8_t* encoded,
-                                   size_t len,
-                                   int16_t* decoded,
-                                   int16_t* speech_type) {
-    return WebRtcIsacfix_Decode(inst, encoded, len, decoded, speech_type);
-  }
-  static inline size_t DecodePlc(instance_type* inst,
-                                 int16_t* decoded,
-                                 size_t num_lost_frames) {
-    return WebRtcIsacfix_DecodePlc(inst, decoded, num_lost_frames);
-  }
-  static inline void DecoderInit(instance_type* inst) {
-    WebRtcIsacfix_DecoderInit(inst);
-  }
-  static inline int Encode(instance_type* inst,
-                           const int16_t* speech_in,
-                           uint8_t* encoded) {
-    return WebRtcIsacfix_Encode(inst, speech_in, encoded);
-  }
-  static inline int16_t EncoderInit(instance_type* inst, int16_t coding_mode) {
-    return WebRtcIsacfix_EncoderInit(inst, coding_mode);
-  }
-  static inline uint16_t EncSampRate(instance_type* inst) {
-    return kFixSampleRate;
-  }
-
-  static inline int16_t Free(instance_type* inst) {
-    return WebRtcIsacfix_Free(inst);
-  }
-  static inline int16_t GetErrorCode(instance_type* inst) {
-    return WebRtcIsacfix_GetErrorCode(inst);
-  }
-
-  static inline int16_t GetNewFrameLen(instance_type* inst) {
-    return WebRtcIsacfix_GetNewFrameLen(inst);
-  }
-  static inline int16_t SetDecSampRate(instance_type* inst,
-                                       uint16_t sample_rate_hz) {
-    RTC_DCHECK_EQ(sample_rate_hz, kFixSampleRate);
-    return 0;
-  }
-  static inline int16_t SetEncSampRate(instance_type* inst,
-                                       uint16_t sample_rate_hz) {
-    RTC_DCHECK_EQ(sample_rate_hz, kFixSampleRate);
-    return 0;
-  }
-  static inline void SetEncSampRateInDecoder(instance_type* inst,
-                                             uint16_t sample_rate_hz) {
-    RTC_DCHECK_EQ(sample_rate_hz, kFixSampleRate);
-  }
-  static inline void SetInitialBweBottleneck(instance_type* inst,
-                                             int bottleneck_bits_per_second) {
-    WebRtcIsacfix_SetInitialBweBottleneck(inst, bottleneck_bits_per_second);
-  }
-  static inline int16_t SetMaxPayloadSize(instance_type* inst,
-                                          int16_t max_payload_size_bytes) {
-    return WebRtcIsacfix_SetMaxPayloadSize(inst, max_payload_size_bytes);
-  }
-  static inline int16_t SetMaxRate(instance_type* inst, int32_t max_bit_rate) {
-    return WebRtcIsacfix_SetMaxRate(inst, max_bit_rate);
-  }
-
- private:
-  enum { kFixSampleRate = 16000 };
-};
-
-}  // namespace webrtc
-#endif  // MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_ISAC_FIX_TYPE_H_
diff --git a/modules/audio_coding/codecs/isac/fix/source/isacfix.c b/modules/audio_coding/codecs/isac/fix/source/isacfix.c
deleted file mode 100644
index a7d44e8..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/isacfix.c
+++ /dev/null
@@ -1,1230 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * isacfix.c
- *
- * This C file contains the functions for the ISAC API
- *
- */
-
-#include "modules/audio_coding/codecs/isac/fix/include/isacfix.h"
-
-#include <stdlib.h>
-
-#include "rtc_base/checks.h"
-#include "modules/audio_coding/codecs/isac/fix/source/bandwidth_estimator.h"
-#include "modules/audio_coding/codecs/isac/fix/source/codec.h"
-#include "modules/audio_coding/codecs/isac/fix/source/entropy_coding.h"
-#include "modules/audio_coding/codecs/isac/fix/source/filterbank_internal.h"
-#include "modules/audio_coding/codecs/isac/fix/source/lpc_masking_model.h"
-#include "modules/audio_coding/codecs/isac/fix/source/structs.h"
-
-// Declare function pointers.
-FilterMaLoopFix WebRtcIsacfix_FilterMaLoopFix;
-Spec2Time WebRtcIsacfix_Spec2Time;
-Time2Spec WebRtcIsacfix_Time2Spec;
-MatrixProduct1 WebRtcIsacfix_MatrixProduct1;
-MatrixProduct2 WebRtcIsacfix_MatrixProduct2;
-
-/* This method assumes that `stream_size_bytes` is in valid range,
- * i.e. >= 0 && <=  STREAM_MAXW16_60MS
- */
-static void InitializeDecoderBitstream(size_t stream_size_bytes,
-                                       Bitstr_dec* bitstream) {
-  bitstream->W_upper = 0xFFFFFFFF;
-  bitstream->streamval = 0;
-  bitstream->stream_index = 0;
-  bitstream->full = 1;
-  bitstream->stream_size = (stream_size_bytes + 1) >> 1;
-  memset(bitstream->stream, 0, sizeof(bitstream->stream));
-}
-
-/****************************************************************************
- * WebRtcIsacfix_Create(...)
- *
- * This function creates a ISAC instance, which will contain the state
- * information for one coding/decoding channel.
- *
- * Input:
- *      - *ISAC_main_inst   : a pointer to the coder instance.
- *
- * Return value             :  0 - Ok
- *                            -1 - Error
- */
-
-int16_t WebRtcIsacfix_Create(ISACFIX_MainStruct **ISAC_main_inst)
-{
-  ISACFIX_SubStruct *tempo;
-  tempo = malloc(1 * sizeof(ISACFIX_SubStruct));
-  *ISAC_main_inst = (ISACFIX_MainStruct *)tempo;
-  if (*ISAC_main_inst!=NULL) {
-    (*(ISACFIX_SubStruct**)ISAC_main_inst)->errorcode = 0;
-    (*(ISACFIX_SubStruct**)ISAC_main_inst)->initflag = 0;
-    (*(ISACFIX_SubStruct**)ISAC_main_inst)->ISACenc_obj.SaveEnc_ptr = NULL;
-    WebRtcIsacfix_InitBandwidthEstimator(&tempo->bwestimator_obj);
-    return(0);
-  } else {
-    return(-1);
-  }
-}
-
-
-/****************************************************************************
- * WebRtcIsacfix_CreateInternal(...)
- *
- * This function creates the memory that is used to store data in the encoder
- *
- * Input:
- *      - *ISAC_main_inst   : a pointer to the coder instance.
- *
- * Return value             :  0 - Ok
- *                            -1 - Error
- */
-
-int16_t WebRtcIsacfix_CreateInternal(ISACFIX_MainStruct *ISAC_main_inst)
-{
-  ISACFIX_SubStruct *ISAC_inst;
-
-  /* typecast pointer to real structure */
-  ISAC_inst = (ISACFIX_SubStruct *)ISAC_main_inst;
-
-  /* Allocate memory for storing encoder data */
-  ISAC_inst->ISACenc_obj.SaveEnc_ptr = malloc(1 * sizeof(IsacSaveEncoderData));
-
-  if (ISAC_inst->ISACenc_obj.SaveEnc_ptr!=NULL) {
-    return(0);
-  } else {
-    return(-1);
-  }
-}
-
-
-/****************************************************************************
- * WebRtcIsacfix_Free(...)
- *
- * This function frees the ISAC instance created at the beginning.
- *
- * Input:
- *      - ISAC_main_inst    : a ISAC instance.
- *
- * Return value             :  0 - Ok
- *                            -1 - Error
- */
-
-int16_t WebRtcIsacfix_Free(ISACFIX_MainStruct *ISAC_main_inst)
-{
-  free(ISAC_main_inst);
-  return(0);
-}
-
-/****************************************************************************
- * WebRtcIsacfix_FreeInternal(...)
- *
- * This function frees the internal memory for storing encoder data.
- *
- * Input:
- *       - ISAC_main_inst    : a ISAC instance.
- *
- * Return value              :  0 - Ok
- *                             -1 - Error
- */
-
-int16_t WebRtcIsacfix_FreeInternal(ISACFIX_MainStruct *ISAC_main_inst)
-{
-  ISACFIX_SubStruct *ISAC_inst;
-
-  /* typecast pointer to real structure */
-  ISAC_inst = (ISACFIX_SubStruct *)ISAC_main_inst;
-
-  /* Release memory */
-  free(ISAC_inst->ISACenc_obj.SaveEnc_ptr);
-
-  return(0);
-}
-
-/****************************************************************************
- * WebRtcIsacfix_InitNeon(...)
- *
- * This function initializes function pointers for ARM Neon platform.
- */
-
-#if defined(WEBRTC_HAS_NEON)
-static void WebRtcIsacfix_InitNeon(void) {
-  WebRtcIsacfix_AutocorrFix = WebRtcIsacfix_AutocorrNeon;
-  WebRtcIsacfix_FilterMaLoopFix = WebRtcIsacfix_FilterMaLoopNeon;
-  WebRtcIsacfix_Spec2Time = WebRtcIsacfix_Spec2TimeNeon;
-  WebRtcIsacfix_Time2Spec = WebRtcIsacfix_Time2SpecNeon;
-  WebRtcIsacfix_AllpassFilter2FixDec16 =
-      WebRtcIsacfix_AllpassFilter2FixDec16Neon;
-  WebRtcIsacfix_MatrixProduct1 = WebRtcIsacfix_MatrixProduct1Neon;
-  WebRtcIsacfix_MatrixProduct2 = WebRtcIsacfix_MatrixProduct2Neon;
-}
-#endif
-
-/****************************************************************************
- * WebRtcIsacfix_InitMIPS(...)
- *
- * This function initializes function pointers for MIPS platform.
- */
-
-#if defined(MIPS32_LE)
-static void WebRtcIsacfix_InitMIPS(void) {
-  WebRtcIsacfix_AutocorrFix = WebRtcIsacfix_AutocorrMIPS;
-  WebRtcIsacfix_FilterMaLoopFix = WebRtcIsacfix_FilterMaLoopMIPS;
-  WebRtcIsacfix_Spec2Time = WebRtcIsacfix_Spec2TimeMIPS;
-  WebRtcIsacfix_Time2Spec = WebRtcIsacfix_Time2SpecMIPS;
-  WebRtcIsacfix_MatrixProduct1 = WebRtcIsacfix_MatrixProduct1MIPS;
-  WebRtcIsacfix_MatrixProduct2 = WebRtcIsacfix_MatrixProduct2MIPS;
-#if defined(MIPS_DSP_R1_LE)
-  WebRtcIsacfix_AllpassFilter2FixDec16 =
-      WebRtcIsacfix_AllpassFilter2FixDec16MIPS;
-  WebRtcIsacfix_HighpassFilterFixDec32 =
-      WebRtcIsacfix_HighpassFilterFixDec32MIPS;
-#endif
-#if defined(MIPS_DSP_R2_LE)
-  WebRtcIsacfix_CalculateResidualEnergy =
-      WebRtcIsacfix_CalculateResidualEnergyMIPS;
-#endif
-}
-#endif
-
-static void InitFunctionPointers(void) {
-  WebRtcIsacfix_AutocorrFix = WebRtcIsacfix_AutocorrC;
-  WebRtcIsacfix_FilterMaLoopFix = WebRtcIsacfix_FilterMaLoopC;
-  WebRtcIsacfix_CalculateResidualEnergy =
-      WebRtcIsacfix_CalculateResidualEnergyC;
-  WebRtcIsacfix_AllpassFilter2FixDec16 = WebRtcIsacfix_AllpassFilter2FixDec16C;
-  WebRtcIsacfix_HighpassFilterFixDec32 = WebRtcIsacfix_HighpassFilterFixDec32C;
-  WebRtcIsacfix_Time2Spec = WebRtcIsacfix_Time2SpecC;
-  WebRtcIsacfix_Spec2Time = WebRtcIsacfix_Spec2TimeC;
-  WebRtcIsacfix_MatrixProduct1 = WebRtcIsacfix_MatrixProduct1C;
-  WebRtcIsacfix_MatrixProduct2 = WebRtcIsacfix_MatrixProduct2C;
-
-#if defined(WEBRTC_HAS_NEON)
-  WebRtcIsacfix_InitNeon();
-#endif
-
-#if defined(MIPS32_LE)
-  WebRtcIsacfix_InitMIPS();
-#endif
-}
-
-/****************************************************************************
- * WebRtcIsacfix_EncoderInit(...)
- *
- * This function initializes a ISAC instance prior to the encoder calls.
- *
- * Input:
- *      - ISAC_main_inst    : ISAC instance.
- *      - CodingMode        : 0 -> Bit rate and frame length are automatically
- *                                 adjusted to available bandwidth on
- *                                 transmission channel.
- *                            1 -> User sets a frame length and a target bit
- *                                 rate which is taken as the maximum short-term
- *                                 average bit rate.
- *
- * Return value             :  0 - Ok
- *                            -1 - Error
- */
-
-int16_t WebRtcIsacfix_EncoderInit(ISACFIX_MainStruct *ISAC_main_inst,
-                                  int16_t  CodingMode)
-{
-  int k;
-  int16_t statusInit;
-  ISACFIX_SubStruct *ISAC_inst;
-
-  statusInit = 0;
-  /* typecast pointer to rela structure */
-  ISAC_inst = (ISACFIX_SubStruct *)ISAC_main_inst;
-
-  /* flag encoder init */
-  ISAC_inst->initflag |= 2;
-
-  if (CodingMode == 0)
-    /* Adaptive mode */
-    ISAC_inst->ISACenc_obj.new_framelength  = INITIAL_FRAMESAMPLES;
-  else if (CodingMode == 1)
-    /* Instantaneous mode */
-    ISAC_inst->ISACenc_obj.new_framelength = 480;    /* default for I-mode */
-  else {
-    ISAC_inst->errorcode = ISAC_DISALLOWED_CODING_MODE;
-    statusInit = -1;
-  }
-
-  ISAC_inst->CodingMode = CodingMode;
-
-  WebRtcIsacfix_InitMaskingEnc(&ISAC_inst->ISACenc_obj.maskfiltstr_obj);
-  WebRtcIsacfix_InitPreFilterbank(&ISAC_inst->ISACenc_obj.prefiltbankstr_obj);
-  WebRtcIsacfix_InitPitchFilter(&ISAC_inst->ISACenc_obj.pitchfiltstr_obj);
-  WebRtcIsacfix_InitPitchAnalysis(&ISAC_inst->ISACenc_obj.pitchanalysisstr_obj);
-
-  WebRtcIsacfix_InitRateModel(&ISAC_inst->ISACenc_obj.rate_data_obj);
-
-
-  ISAC_inst->ISACenc_obj.buffer_index   = 0;
-  ISAC_inst->ISACenc_obj.frame_nb    = 0;
-  ISAC_inst->ISACenc_obj.BottleNeck      = 32000; /* default for I-mode */
-  ISAC_inst->ISACenc_obj.MaxDelay    = 10;    /* default for I-mode */
-  ISAC_inst->ISACenc_obj.current_framesamples = 0;
-  ISAC_inst->ISACenc_obj.s2nr     = 0;
-  ISAC_inst->ISACenc_obj.MaxBits    = 0;
-  ISAC_inst->ISACenc_obj.bitstr_seed   = 4447;
-  ISAC_inst->ISACenc_obj.payloadLimitBytes30  = STREAM_MAXW16_30MS << 1;
-  ISAC_inst->ISACenc_obj.payloadLimitBytes60  = STREAM_MAXW16_60MS << 1;
-  ISAC_inst->ISACenc_obj.maxPayloadBytes      = STREAM_MAXW16_60MS << 1;
-  ISAC_inst->ISACenc_obj.maxRateInBytes       = STREAM_MAXW16_30MS << 1;
-  ISAC_inst->ISACenc_obj.enforceFrameSize     = 0;
-
-  /* Init the bistream data area to zero */
-  for (k=0; k<STREAM_MAXW16_60MS; k++){
-    ISAC_inst->ISACenc_obj.bitstr_obj.stream[k] = 0;
-  }
-
-  InitFunctionPointers();
-
-  return statusInit;
-}
-
-/* Read the given number of bytes of big-endian 16-bit integers from `src` and
-   write them to `dest` in host endian. If `nbytes` is odd, the number of
-   output elements is rounded up, and the least significant byte of the last
-   element is set to 0. */
-static void read_be16(const uint8_t* src, size_t nbytes, uint16_t* dest) {
-  size_t i;
-  for (i = 0; i < nbytes / 2; ++i)
-    dest[i] = src[2 * i] << 8 | src[2 * i + 1];
-  if (nbytes % 2 == 1)
-    dest[nbytes / 2] = src[nbytes - 1] << 8;
-}
-
-/* Read the given number of bytes of host-endian 16-bit integers from `src` and
-   write them to `dest` in big endian. If `nbytes` is odd, the number of source
-   elements is rounded up (but only the most significant byte of the last
-   element is used), and the number of output bytes written will be
-   nbytes + 1. */
-static void write_be16(const uint16_t* src, size_t nbytes, uint8_t* dest) {
-  size_t i;
-  for (i = 0; i < nbytes / 2; ++i) {
-    dest[2 * i] = src[i] >> 8;
-    dest[2 * i + 1] = src[i];
-  }
-  if (nbytes % 2 == 1) {
-    dest[nbytes - 1] = src[nbytes / 2] >> 8;
-    dest[nbytes] = 0;
-  }
-}
-
-/****************************************************************************
- * WebRtcIsacfix_Encode(...)
- *
- * This function encodes 10ms frame(s) and inserts it into a package.
- * Input speech length has to be 160 samples (10ms). The encoder buffers those
- * 10ms frames until it reaches the chosen Framesize (480 or 960 samples
- * corresponding to 30 or 60 ms frames), and then proceeds to the encoding.
- *
- * Input:
- *      - ISAC_main_inst    : ISAC instance.
- *      - speechIn          : input speech vector.
- *
- * Output:
- *      - encoded           : the encoded data vector
- *
- * Return value:
- *                          : >0 - Length (in bytes) of coded data
- *                          :  0 - The buffer didn't reach the chosen framesize
- *                            so it keeps buffering speech samples.
- *                          : -1 - Error
- */
-
-int WebRtcIsacfix_Encode(ISACFIX_MainStruct *ISAC_main_inst,
-                         const int16_t    *speechIn,
-                         uint8_t* encoded)
-{
-  ISACFIX_SubStruct *ISAC_inst;
-  int stream_len;
-
-  /* typecast pointer to rela structure */
-  ISAC_inst = (ISACFIX_SubStruct *)ISAC_main_inst;
-
-
-  /* check if encoder initiated */
-  if ((ISAC_inst->initflag & 2) != 2) {
-    ISAC_inst->errorcode = ISAC_ENCODER_NOT_INITIATED;
-    return (-1);
-  }
-
-  stream_len = WebRtcIsacfix_EncodeImpl((int16_t*)speechIn,
-                                        &ISAC_inst->ISACenc_obj,
-                                        &ISAC_inst->bwestimator_obj,
-                                        ISAC_inst->CodingMode);
-  if (stream_len<0) {
-    ISAC_inst->errorcode = -(int16_t)stream_len;
-    return -1;
-  }
-
-  write_be16(ISAC_inst->ISACenc_obj.bitstr_obj.stream, (size_t)stream_len,
-             encoded);
-  return stream_len;
-
-}
-
-
-/****************************************************************************
- * WebRtcIsacfix_GetNewBitStream(...)
- *
- * This function returns encoded data, with the received bwe-index in the
- * stream. It should always return a complete packet, i.e. only called once
- * even for 60 msec frames
- *
- * Input:
- *      - ISAC_main_inst    : ISAC instance.
- *      - bweIndex          : index of bandwidth estimate to put in new bitstream
- *
- * Output:
- *      - encoded           : the encoded data vector
- *
- * Return value:
- *                          : >0 - Length (in bytes) of coded data
- *                          : -1 - Error
- */
-
-int16_t WebRtcIsacfix_GetNewBitStream(ISACFIX_MainStruct *ISAC_main_inst,
-                                      int16_t      bweIndex,
-                                      float              scale,
-                                      uint8_t* encoded)
-{
-  ISACFIX_SubStruct *ISAC_inst;
-  int16_t stream_len;
-
-  /* typecast pointer to rela structure */
-  ISAC_inst = (ISACFIX_SubStruct *)ISAC_main_inst;
-
-
-  /* check if encoder initiated */
-  if ((ISAC_inst->initflag & 2) != 2) {
-    ISAC_inst->errorcode = ISAC_ENCODER_NOT_INITIATED;
-    return (-1);
-  }
-
-  stream_len = WebRtcIsacfix_EncodeStoredData(&ISAC_inst->ISACenc_obj,
-                                              bweIndex,
-                                              scale);
-  if (stream_len<0) {
-    ISAC_inst->errorcode = - stream_len;
-    return -1;
-  }
-
-  write_be16(ISAC_inst->ISACenc_obj.bitstr_obj.stream, stream_len, encoded);
-  return stream_len;
-}
-
-
-
-/****************************************************************************
- * WebRtcIsacfix_DecoderInit(...)
- *
- * This function initializes a ISAC instance prior to the decoder calls.
- *
- * Input:
- *      - ISAC_main_inst    : ISAC instance.
- */
-
-void WebRtcIsacfix_DecoderInit(ISACFIX_MainStruct *ISAC_main_inst)
-{
-  ISACFIX_SubStruct *ISAC_inst;
-
-  InitFunctionPointers();
-
-  /* typecast pointer to real structure */
-  ISAC_inst = (ISACFIX_SubStruct *)ISAC_main_inst;
-
-  /* flag decoder init */
-  ISAC_inst->initflag |= 1;
-
-  WebRtcIsacfix_InitMaskingDec(&ISAC_inst->ISACdec_obj.maskfiltstr_obj);
-  WebRtcIsacfix_InitPostFilterbank(&ISAC_inst->ISACdec_obj.postfiltbankstr_obj);
-  WebRtcIsacfix_InitPitchFilter(&ISAC_inst->ISACdec_obj.pitchfiltstr_obj);
-
-  /* TS */
-  WebRtcIsacfix_InitPlc( &ISAC_inst->ISACdec_obj.plcstr_obj );
-}
-
-
-/****************************************************************************
- * WebRtcIsacfix_UpdateBwEstimate1(...)
- *
- * This function updates the estimate of the bandwidth.
- *
- * Input:
- *      - ISAC_main_inst    : ISAC instance.
- *      - encoded           : encoded ISAC frame(s).
- *      - packet_size       : size of the packet.
- *      - rtp_seq_number    : the RTP number of the packet.
- *      - arr_ts            : the arrival time of the packet (from NetEq)
- *                            in samples.
- *
- * Return value             :  0 - Ok
- *                            -1 - Error
- */
-
-int16_t WebRtcIsacfix_UpdateBwEstimate1(ISACFIX_MainStruct *ISAC_main_inst,
-                                        const uint8_t* encoded,
-                                        size_t packet_size,
-                                        uint16_t rtp_seq_number,
-                                        uint32_t arr_ts)
-{
-  ISACFIX_SubStruct *ISAC_inst;
-  Bitstr_dec streamdata;
-  int16_t err;
-  const size_t kRequiredEncodedLenBytes = 10;
-
-  /* typecast pointer to real structure */
-  ISAC_inst = (ISACFIX_SubStruct *)ISAC_main_inst;
-
-  /* Sanity check of packet length */
-  if (packet_size == 0) {
-    /* return error code if the packet length is null or less */
-    ISAC_inst->errorcode = ISAC_EMPTY_PACKET;
-    return -1;
-  } else if (packet_size > (STREAM_MAXW16<<1)) {
-    /* return error code if length of stream is too long */
-    ISAC_inst->errorcode = ISAC_LENGTH_MISMATCH;
-    return -1;
-  }
-
-  /* check if decoder initiated */
-  if ((ISAC_inst->initflag & 1) != 1) {
-    ISAC_inst->errorcode = ISAC_DECODER_NOT_INITIATED;
-    return (-1);
-  }
-
-  InitializeDecoderBitstream(packet_size, &streamdata);
-
-  read_be16(encoded, kRequiredEncodedLenBytes, streamdata.stream);
-
-  err = WebRtcIsacfix_EstimateBandwidth(&ISAC_inst->bwestimator_obj,
-                                        &streamdata,
-                                        packet_size,
-                                        rtp_seq_number,
-                                        0,
-                                        arr_ts);
-
-
-  if (err < 0)
-  {
-    /* return error code if something went wrong */
-    ISAC_inst->errorcode = -err;
-    return -1;
-  }
-
-
-  return 0;
-}
-
-/****************************************************************************
- * WebRtcIsacfix_UpdateBwEstimate(...)
- *
- * This function updates the estimate of the bandwidth.
- *
- * Input:
- *      - ISAC_main_inst    : ISAC instance.
- *      - encoded           : encoded ISAC frame(s).
- *      - packet_size       : size of the packet.
- *      - rtp_seq_number    : the RTP number of the packet.
- *      - send_ts           : Send Time Stamp from RTP header
- *      - arr_ts            : the arrival time of the packet (from NetEq)
- *                            in samples.
- *
- * Return value             :  0 - Ok
- *                            -1 - Error
- */
-
-int16_t WebRtcIsacfix_UpdateBwEstimate(ISACFIX_MainStruct *ISAC_main_inst,
-                                       const uint8_t* encoded,
-                                       size_t packet_size,
-                                       uint16_t rtp_seq_number,
-                                       uint32_t send_ts,
-                                       uint32_t arr_ts)
-{
-  ISACFIX_SubStruct *ISAC_inst;
-  Bitstr_dec streamdata;
-  int16_t err;
-  const size_t kRequiredEncodedLenBytes = 10;
-
-  /* typecast pointer to real structure */
-  ISAC_inst = (ISACFIX_SubStruct *)ISAC_main_inst;
-
-  /* Sanity check of packet length */
-  if (packet_size == 0) {
-    /* return error code if the packet length is null  or less */
-    ISAC_inst->errorcode = ISAC_EMPTY_PACKET;
-    return -1;
-  } else if (packet_size < kRequiredEncodedLenBytes) {
-    ISAC_inst->errorcode = ISAC_PACKET_TOO_SHORT;
-    return -1;
-  } else if (packet_size > (STREAM_MAXW16<<1)) {
-    /* return error code if length of stream is too long */
-    ISAC_inst->errorcode = ISAC_LENGTH_MISMATCH;
-    return -1;
-  }
-
-  /* check if decoder initiated */
-  if ((ISAC_inst->initflag & 1) != 1) {
-    ISAC_inst->errorcode = ISAC_DECODER_NOT_INITIATED;
-    return (-1);
-  }
-
-  InitializeDecoderBitstream(packet_size, &streamdata);
-
-  read_be16(encoded, kRequiredEncodedLenBytes, streamdata.stream);
-
-  err = WebRtcIsacfix_EstimateBandwidth(&ISAC_inst->bwestimator_obj,
-                                        &streamdata,
-                                        packet_size,
-                                        rtp_seq_number,
-                                        send_ts,
-                                        arr_ts);
-
-  if (err < 0)
-  {
-    /* return error code if something went wrong */
-    ISAC_inst->errorcode = -err;
-    return -1;
-  }
-
-
-  return 0;
-}
-
-/****************************************************************************
- * WebRtcIsacfix_Decode(...)
- *
- * This function decodes a ISAC frame. Output speech length
- * will be a multiple of 480 samples: 480 or 960 samples,
- * depending on the framesize (30 or 60 ms).
- *
- * Input:
- *      - ISAC_main_inst    : ISAC instance.
- *      - encoded           : encoded ISAC frame(s)
- *      - len               : bytes in encoded vector
- *
- * Output:
- *      - decoded           : The decoded vector
- *
- * Return value             : >0 - number of samples in decoded vector
- *                            -1 - Error
- */
-
-
-int WebRtcIsacfix_Decode(ISACFIX_MainStruct* ISAC_main_inst,
-                         const uint8_t* encoded,
-                         size_t len,
-                         int16_t* decoded,
-                         int16_t* speechType)
-{
-  ISACFIX_SubStruct *ISAC_inst;
-  /* number of samples (480 or 960), output from decoder */
-  /* that were actually used in the encoder/decoder (determined on the fly) */
-  size_t number_of_samples;
-  int declen_int = 0;
-  size_t declen;
-
-  /* typecast pointer to real structure */
-  ISAC_inst = (ISACFIX_SubStruct *)ISAC_main_inst;
-
-  /* check if decoder initiated */
-  if ((ISAC_inst->initflag & 1) != 1) {
-    ISAC_inst->errorcode = ISAC_DECODER_NOT_INITIATED;
-    return (-1);
-  }
-
-  /* Sanity check of packet length */
-  if (len == 0) {
-    /* return error code if the packet length is null  or less */
-    ISAC_inst->errorcode = ISAC_EMPTY_PACKET;
-    return -1;
-  } else if (len > (STREAM_MAXW16<<1)) {
-    /* return error code if length of stream is too long */
-    ISAC_inst->errorcode = ISAC_LENGTH_MISMATCH;
-    return -1;
-  }
-
-  InitializeDecoderBitstream(len, &ISAC_inst->ISACdec_obj.bitstr_obj);
-
-  read_be16(encoded, len, ISAC_inst->ISACdec_obj.bitstr_obj.stream);
-
-  /* added for NetEq purposes (VAD/DTX related) */
-  *speechType=1;
-
-  declen_int = WebRtcIsacfix_DecodeImpl(decoded, &ISAC_inst->ISACdec_obj,
-                                        &number_of_samples);
-  if (declen_int < 0) {
-    /* Some error inside the decoder */
-    ISAC_inst->errorcode = -(int16_t)declen_int;
-    memset(decoded, 0, sizeof(int16_t) * MAX_FRAMESAMPLES);
-    return -1;
-  }
-  declen = (size_t)declen_int;
-
-  /* error check */
-
-  if (declen & 1) {
-    if (len != declen &&
-        len != declen +
-            ((ISAC_inst->ISACdec_obj.bitstr_obj.stream[declen >> 1]) & 0xFF)) {
-      ISAC_inst->errorcode = ISAC_LENGTH_MISMATCH;
-      memset(decoded, 0, sizeof(int16_t) * number_of_samples);
-      return -1;
-    }
-  } else {
-    if (len != declen &&
-        len != declen +
-            ((ISAC_inst->ISACdec_obj.bitstr_obj.stream[declen >> 1]) >> 8)) {
-      ISAC_inst->errorcode = ISAC_LENGTH_MISMATCH;
-      memset(decoded, 0, sizeof(int16_t) * number_of_samples);
-      return -1;
-    }
-  }
-
-  return (int)number_of_samples;
-}
-
-
-/****************************************************************************
- * WebRtcIsacfix_DecodePlc(...)
- *
- * This function conducts PLC for ISAC frame(s) in wide-band (16kHz sampling).
- * Output speech length  will be "480*noOfLostFrames" samples
- * that is equevalent of "30*noOfLostFrames" millisecond.
- *
- * Input:
- *      - ISAC_main_inst    : ISAC instance.
- *      - noOfLostFrames    : Number of PLC frames (480sample = 30ms)
- *                                to produce
- *
- * Output:
- *      - decoded           : The decoded vector
- *
- * Return value             : Number of samples in decoded PLC vector
- */
-
-size_t WebRtcIsacfix_DecodePlc(ISACFIX_MainStruct* ISAC_main_inst,
-                               int16_t* decoded,
-                               size_t noOfLostFrames)
-{
-
-  size_t no_of_samples, declen, k;
-  int16_t outframe16[MAX_FRAMESAMPLES];
-
-  ISACFIX_SubStruct *ISAC_inst;
-  /* typecast pointer to real structure */
-  ISAC_inst = (ISACFIX_SubStruct *)ISAC_main_inst;
-
-  /* Limit number of frames to two = 60 msec. Otherwise we exceed data vectors */
-  if (noOfLostFrames > 2) {
-    noOfLostFrames = 2;
-  }
-  k = 0;
-  declen = 0;
-  while( noOfLostFrames > 0 )
-  {
-    WebRtcIsacfix_DecodePlcImpl(&(outframe16[k*480]), &ISAC_inst->ISACdec_obj,
-                                &no_of_samples);
-    declen += no_of_samples;
-    noOfLostFrames--;
-    k++;
-  }
-
-  for (k=0;k<declen;k++) {
-    decoded[k] = outframe16[k];
-  }
-
-  return declen;
-}
-
-
-/****************************************************************************
- * WebRtcIsacfix_Control(...)
- *
- * This function sets the limit on the short-term average bit rate and the
- * frame length. Should be used only in Instantaneous mode.
- *
- * Input:
- *      - ISAC_main_inst    : ISAC instance.
- *      - rate              : limit on the short-term average bit rate,
- *                            in bits/second (between 10000 and 32000)
- *      - framesize         : number of milliseconds per frame (30 or 60)
- *
- * Return value             : 0  - ok
- *                            -1 - Error
- */
-
-int16_t WebRtcIsacfix_Control(ISACFIX_MainStruct *ISAC_main_inst,
-                              int16_t rate,
-                              int framesize)
-{
-  ISACFIX_SubStruct *ISAC_inst;
-  /* typecast pointer to real structure */
-  ISAC_inst = (ISACFIX_SubStruct *)ISAC_main_inst;
-
-  if (ISAC_inst->CodingMode == 0)
-  {
-    /* in adaptive mode */
-    ISAC_inst->errorcode = ISAC_MODE_MISMATCH;
-    return -1;
-  }
-
-
-  if (rate >= 10000 && rate <= 32000)
-    ISAC_inst->ISACenc_obj.BottleNeck = rate;
-  else {
-    ISAC_inst->errorcode = ISAC_DISALLOWED_BOTTLENECK;
-    return -1;
-  }
-
-
-
-  if (framesize  == 30 || framesize == 60)
-    ISAC_inst->ISACenc_obj.new_framelength = (int16_t)((FS/1000) * framesize);
-  else {
-    ISAC_inst->errorcode = ISAC_DISALLOWED_FRAME_LENGTH;
-    return -1;
-  }
-
-  return 0;
-}
-
-void WebRtcIsacfix_SetInitialBweBottleneck(ISACFIX_MainStruct* ISAC_main_inst,
-                                           int bottleneck_bits_per_second) {
-  ISACFIX_SubStruct* inst = (ISACFIX_SubStruct*)ISAC_main_inst;
-  RTC_DCHECK_GE(bottleneck_bits_per_second, 10000);
-  RTC_DCHECK_LE(bottleneck_bits_per_second, 32000);
-  inst->bwestimator_obj.sendBwAvg = ((uint32_t)bottleneck_bits_per_second) << 7;
-}
-
-/****************************************************************************
- * WebRtcIsacfix_ControlBwe(...)
- *
- * This function sets the initial values of bottleneck and frame-size if
- * iSAC is used in channel-adaptive mode. Through this API, users can
- * enforce a frame-size for all values of bottleneck. Then iSAC will not
- * automatically change the frame-size.
- *
- *
- * Input:
- *  - ISAC_main_inst : ISAC instance.
- *      - rateBPS           : initial value of bottleneck in bits/second
- *                            10000 <= rateBPS <= 32000 is accepted
- *                            For default bottleneck set rateBPS = 0
- *      - frameSizeMs       : number of milliseconds per frame (30 or 60)
- *      - enforceFrameSize  : 1 to enforce the given frame-size through out
- *                            the adaptation process, 0 to let iSAC change
- *                            the frame-size if required.
- *
- * Return value    : 0  - ok
- *         -1 - Error
- */
-
-int16_t WebRtcIsacfix_ControlBwe(ISACFIX_MainStruct *ISAC_main_inst,
-                                 int16_t rateBPS,
-                                 int frameSizeMs,
-                                 int16_t enforceFrameSize)
-{
-  ISACFIX_SubStruct *ISAC_inst;
-  /* Typecast pointer to real structure */
-  ISAC_inst = (ISACFIX_SubStruct *)ISAC_main_inst;
-
-  /* check if encoder initiated */
-  if ((ISAC_inst->initflag & 2) != 2) {
-    ISAC_inst->errorcode = ISAC_ENCODER_NOT_INITIATED;
-    return (-1);
-  }
-
-  /* Check that we are in channel-adaptive mode, otherwise, return -1 */
-  if (ISAC_inst->CodingMode != 0) {
-    ISAC_inst->errorcode = ISAC_MODE_MISMATCH;
-    return (-1);
-  }
-
-  /* Set struct variable if enforceFrameSize is set. ISAC will then keep the */
-  /* chosen frame size.                                                      */
-  ISAC_inst->ISACenc_obj.enforceFrameSize = (enforceFrameSize != 0)? 1:0;
-
-  /* Set initial rate, if value between 10000 and 32000,                */
-  /* if rateBPS is 0, keep the default initial bottleneck value (15000) */
-  if ((rateBPS >= 10000) && (rateBPS <= 32000)) {
-    ISAC_inst->bwestimator_obj.sendBwAvg = (((uint32_t)rateBPS) << 7);
-  } else if (rateBPS != 0) {
-    ISAC_inst->errorcode = ISAC_DISALLOWED_BOTTLENECK;
-    return -1;
-  }
-
-  /* Set initial framesize. If enforceFrameSize is set the frame size will not change */
-  if ((frameSizeMs  == 30) || (frameSizeMs == 60)) {
-    ISAC_inst->ISACenc_obj.new_framelength = (int16_t)((FS/1000) * frameSizeMs);
-  } else {
-    ISAC_inst->errorcode = ISAC_DISALLOWED_FRAME_LENGTH;
-    return -1;
-  }
-
-  return 0;
-}
-
-
-
-
-
-/****************************************************************************
- * WebRtcIsacfix_GetDownLinkBwIndex(...)
- *
- * This function returns index representing the Bandwidth estimate from
- * other side to this side.
- *
- * Input:
- *      - ISAC_main_inst: iSAC struct
- *
- * Output:
- *      - rateIndex     : Bandwidth estimate to transmit to other side.
- *
- */
-
-int16_t WebRtcIsacfix_GetDownLinkBwIndex(ISACFIX_MainStruct* ISAC_main_inst,
-                                         int16_t*     rateIndex)
-{
-  ISACFIX_SubStruct *ISAC_inst;
-
-  /* typecast pointer to real structure */
-  ISAC_inst = (ISACFIX_SubStruct *)ISAC_main_inst;
-
-  /* Call function to get Bandwidth Estimate */
-  *rateIndex = WebRtcIsacfix_GetDownlinkBwIndexImpl(&ISAC_inst->bwestimator_obj);
-
-  return 0;
-}
-
-
-/****************************************************************************
- * WebRtcIsacfix_UpdateUplinkBw(...)
- *
- * This function takes an index representing the Bandwidth estimate from
- * this side to other side and updates BWE.
- *
- * Input:
- *      - ISAC_main_inst: iSAC struct
- *      - rateIndex     : Bandwidth estimate from other side.
- *
- */
-
-int16_t WebRtcIsacfix_UpdateUplinkBw(ISACFIX_MainStruct* ISAC_main_inst,
-                                     int16_t     rateIndex)
-{
-  int16_t err = 0;
-  ISACFIX_SubStruct *ISAC_inst;
-
-  /* typecast pointer to real structure */
-  ISAC_inst = (ISACFIX_SubStruct *)ISAC_main_inst;
-
-  /* Call function to update BWE with received Bandwidth Estimate */
-  err = WebRtcIsacfix_UpdateUplinkBwRec(&ISAC_inst->bwestimator_obj, rateIndex);
-  if (err < 0) {
-    ISAC_inst->errorcode = -err;
-    return (-1);
-  }
-
-  return 0;
-}
-
-/****************************************************************************
- * WebRtcIsacfix_ReadFrameLen(...)
- *
- * This function returns the length of the frame represented in the packet.
- *
- * Input:
- *      - encoded       : Encoded bitstream
- *
- * Output:
- *      - frameLength   : Length of frame in packet (in samples)
- *
- */
-
-int16_t WebRtcIsacfix_ReadFrameLen(const uint8_t* encoded,
-                                   size_t encoded_len_bytes,
-                                   size_t* frameLength)
-{
-  Bitstr_dec streamdata;
-  int16_t err;
-  const size_t kRequiredEncodedLenBytes = 10;
-
-  if (encoded_len_bytes < kRequiredEncodedLenBytes) {
-    return -1;
-  }
-
-  InitializeDecoderBitstream(encoded_len_bytes, &streamdata);
-
-  read_be16(encoded, kRequiredEncodedLenBytes, streamdata.stream);
-
-  /* decode frame length */
-  err = WebRtcIsacfix_DecodeFrameLen(&streamdata, frameLength);
-  if (err<0)  // error check
-    return err;
-
-  return 0;
-}
-
-
-/****************************************************************************
- * WebRtcIsacfix_ReadBwIndex(...)
- *
- * This function returns the index of the Bandwidth estimate from the bitstream.
- *
- * Input:
- *      - encoded       : Encoded bitstream
- *
- * Output:
- *      - frameLength   : Length of frame in packet (in samples)
- *      - rateIndex     : Bandwidth estimate in bitstream
- *
- */
-
-int16_t WebRtcIsacfix_ReadBwIndex(const uint8_t* encoded,
-                                  size_t encoded_len_bytes,
-                                  int16_t* rateIndex)
-{
-  Bitstr_dec streamdata;
-  int16_t err;
-  const size_t kRequiredEncodedLenBytes = 10;
-
-  if (encoded_len_bytes < kRequiredEncodedLenBytes) {
-    return -1;
-  }
-
-  InitializeDecoderBitstream(encoded_len_bytes, &streamdata);
-
-  read_be16(encoded, kRequiredEncodedLenBytes, streamdata.stream);
-
-  /* decode frame length, needed to get to the rateIndex in the bitstream */
-  size_t frameLength;
-  err = WebRtcIsacfix_DecodeFrameLen(&streamdata, &frameLength);
-  if (err<0)  // error check
-    return err;
-
-  /* decode BW estimation */
-  err = WebRtcIsacfix_DecodeSendBandwidth(&streamdata, rateIndex);
-  if (err<0)  // error check
-    return err;
-
-  return 0;
-}
-
-
-
-
-/****************************************************************************
- * WebRtcIsacfix_GetErrorCode(...)
- *
- * This function can be used to check the error code of an iSAC instance. When
- * a function returns -1 a error code will be set for that instance. The
- * function below extract the code of the last error that occured in the
- * specified instance.
- *
- * Input:
- *      - ISAC_main_inst    : ISAC instance
- *
- * Return value             : Error code
- */
-
-int16_t WebRtcIsacfix_GetErrorCode(ISACFIX_MainStruct *ISAC_main_inst)
-{
-  ISACFIX_SubStruct *ISAC_inst;
-  /* typecast pointer to real structure */
-  ISAC_inst = (ISACFIX_SubStruct *)ISAC_main_inst;
-
-  return ISAC_inst->errorcode;
-}
-
-
-
-/****************************************************************************
- * WebRtcIsacfix_GetUplinkBw(...)
- *
- * This function returns the inst quantized iSAC send bitrate
- *
- * Input:
- *      - ISAC_main_inst    : iSAC instance
- *
- * Return value             : bitrate
- */
-
-int32_t WebRtcIsacfix_GetUplinkBw(ISACFIX_MainStruct *ISAC_main_inst)
-{
-  ISACFIX_SubStruct *ISAC_inst = (ISACFIX_SubStruct *)ISAC_main_inst;
-  BwEstimatorstr * bw = (BwEstimatorstr*)&(ISAC_inst->bwestimator_obj);
-
-  return (int32_t) WebRtcIsacfix_GetUplinkBandwidth(bw);
-}
-
-/****************************************************************************
- * WebRtcIsacfix_GetNewFrameLen(...)
- *
- * This function return the next frame length (in samples) of iSAC.
- *
- * Input:
- *      - ISAC_main_inst    : iSAC instance
- *
- * Return value             :  frame lenght in samples
- */
-
-int16_t WebRtcIsacfix_GetNewFrameLen(ISACFIX_MainStruct *ISAC_main_inst)
-{
-  ISACFIX_SubStruct *ISAC_inst = (ISACFIX_SubStruct *)ISAC_main_inst;
-  return ISAC_inst->ISACenc_obj.new_framelength;
-}
-
-
-/****************************************************************************
- * WebRtcIsacfix_SetMaxPayloadSize(...)
- *
- * This function sets a limit for the maximum payload size of iSAC. The same
- * value is used both for 30 and 60 msec packets.
- * The absolute max will be valid until next time the function is called.
- * NOTE! This function may override the function WebRtcIsacfix_SetMaxRate()
- *
- * Input:
- *      - ISAC_main_inst    : iSAC instance
- *      - maxPayloadBytes   : maximum size of the payload in bytes
- *                            valid values are between 100 and 400 bytes
- *
- *
- * Return value             : 0 if sucessful
- *                           -1 if error happens
- */
-
-int16_t WebRtcIsacfix_SetMaxPayloadSize(ISACFIX_MainStruct *ISAC_main_inst,
-                                        int16_t maxPayloadBytes)
-{
-  ISACFIX_SubStruct *ISAC_inst;
-
-  /* typecast pointer to real structure */
-  ISAC_inst = (ISACFIX_SubStruct *)ISAC_main_inst;
-
-  if((maxPayloadBytes < 100) || (maxPayloadBytes > 400))
-  {
-    /* maxPayloadBytes is out of valid range */
-    return -1;
-  }
-  else
-  {
-    /* Set new absolute max, which will not change unless this function
-       is called again with a new value */
-    ISAC_inst->ISACenc_obj.maxPayloadBytes = maxPayloadBytes;
-
-    /* Set new maximum values for 30 and 60 msec packets */
-    if (maxPayloadBytes < ISAC_inst->ISACenc_obj.maxRateInBytes) {
-      ISAC_inst->ISACenc_obj.payloadLimitBytes30 = maxPayloadBytes;
-    } else {
-      ISAC_inst->ISACenc_obj.payloadLimitBytes30 = ISAC_inst->ISACenc_obj.maxRateInBytes;
-    }
-
-    if ( maxPayloadBytes < (ISAC_inst->ISACenc_obj.maxRateInBytes << 1)) {
-      ISAC_inst->ISACenc_obj.payloadLimitBytes60 = maxPayloadBytes;
-    } else {
-      ISAC_inst->ISACenc_obj.payloadLimitBytes60 = (ISAC_inst->ISACenc_obj.maxRateInBytes << 1);
-    }
-  }
-  return 0;
-}
-
-
-/****************************************************************************
- * WebRtcIsacfix_SetMaxRate(...)
- *
- * This function sets the maximum rate which the codec may not exceed for a
- * singel packet. The maximum rate is set in bits per second.
- * The codec has an absolute maximum rate of 53400 bits per second (200 bytes
- * per 30 msec).
- * It is possible to set a maximum rate between 32000 and 53400 bits per second.
- *
- * The rate limit is valid until next time the function is called.
- *
- * NOTE! Packet size will never go above the value set if calling
- * WebRtcIsacfix_SetMaxPayloadSize() (default max packet size is 400 bytes).
- *
- * Input:
- *      - ISAC_main_inst    : iSAC instance
- *      - maxRateInBytes    : maximum rate in bits per second,
- *                            valid values are 32000 to 53400 bits
- *
- * Return value             : 0 if sucessful
- *                           -1 if error happens
- */
-
-int16_t WebRtcIsacfix_SetMaxRate(ISACFIX_MainStruct *ISAC_main_inst,
-                                 int32_t maxRate)
-{
-  ISACFIX_SubStruct *ISAC_inst;
-  int16_t maxRateInBytes;
-
-  /* typecast pointer to real structure */
-  ISAC_inst = (ISACFIX_SubStruct *)ISAC_main_inst;
-
-  if((maxRate < 32000) || (maxRate > 53400))
-  {
-    /* maxRate is out of valid range */
-    return -1;
-  }
-  else
-  {
-    /* Calculate maximum number of bytes per 30 msec packets for the given
-       maximum rate. Multiply with 30/1000 to get number of bits per 30 msec,
-       divide by 8 to get number of bytes per 30 msec:
-       maxRateInBytes = floor((maxRate * 30/1000) / 8); */
-    maxRateInBytes = (int16_t)( WebRtcSpl_DivW32W16ResW16(WEBRTC_SPL_MUL(maxRate, 3), 800) );
-
-    /* Store the value for usage in the WebRtcIsacfix_SetMaxPayloadSize-function */
-    ISAC_inst->ISACenc_obj.maxRateInBytes = maxRateInBytes;
-
-    /* For 30 msec packets: if the new limit is below the maximum
-       payload size, set a new limit */
-    if (maxRateInBytes < ISAC_inst->ISACenc_obj.maxPayloadBytes) {
-      ISAC_inst->ISACenc_obj.payloadLimitBytes30 = maxRateInBytes;
-    } else {
-      ISAC_inst->ISACenc_obj.payloadLimitBytes30 = ISAC_inst->ISACenc_obj.maxPayloadBytes;
-    }
-
-    /* For 60 msec packets: if the new limit (times 2) is below the
-       maximum payload size, set a new limit */
-    if ( (maxRateInBytes << 1) < ISAC_inst->ISACenc_obj.maxPayloadBytes) {
-      ISAC_inst->ISACenc_obj.payloadLimitBytes60 = (maxRateInBytes << 1);
-    } else {
-      ISAC_inst->ISACenc_obj.payloadLimitBytes60 = ISAC_inst->ISACenc_obj.maxPayloadBytes;
-    }
-  }
-
-  return 0;
-}
-
-
-
-/****************************************************************************
- * WebRtcIsacfix_version(...)
- *
- * This function returns the version number.
- *
- * Output:
- *      - version  : Pointer to character string
- *
- */
-
-void WebRtcIsacfix_version(char *version)
-{
-  strcpy(version, "3.6.0");
-}
diff --git a/modules/audio_coding/codecs/isac/fix/source/lattice.c b/modules/audio_coding/codecs/isac/fix/source/lattice.c
deleted file mode 100644
index 7bbf4e0..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/lattice.c
+++ /dev/null
@@ -1,321 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * lattice.c
- *
- * Contains the normalized lattice filter routines (MA and AR) for iSAC codec
- *
- */
-
-#include "modules/audio_coding/codecs/isac/fix/source/codec.h"
-#include "modules/audio_coding/codecs/isac/fix/source/settings.h"
-#include "rtc_base/sanitizer.h"
-
-#define LATTICE_MUL_32_32_RSFT16(a32a, a32b, b32)                  \
-  ((int32_t)(WEBRTC_SPL_MUL(a32a, b32) + (WEBRTC_SPL_MUL_16_32_RSFT16(a32b, b32))))
-/* This macro is FORBIDDEN to use elsewhere than in a function in this file and
-   its corresponding neon version. It might give unpredictable results, since a
-   general int32_t*int32_t multiplication results in a 64 bit value.
-   The result is then shifted just 16 steps to the right, giving need for 48
-   bits, i.e. in the generel case, it will NOT fit in a int32_t. In the
-   cases used in here, the int32_t will be enough, since (for a good
-   reason) the involved multiplicands aren't big enough to overflow a
-   int32_t after shifting right 16 bits. I have compared the result of a
-   multiplication between t32 and tmp32, done in two ways:
-   1) Using (int32_t) (((float)(tmp32))*((float)(tmp32b))/65536.0);
-   2) Using LATTICE_MUL_32_32_RSFT16(t16a, t16b, tmp32b);
-   By running 25 files, I haven't found any bigger diff than 64 - this was in the
-   case when  method 1) gave 650235648 and 2) gave 650235712.
-*/
-
-/* Function prototype: filtering ar_g_Q0[] and ar_f_Q0[] through an AR filter
-   with coefficients cth_Q15[] and sth_Q15[].
-   Implemented for both generic and ARMv7 platforms.
- */
-void WebRtcIsacfix_FilterArLoop(int16_t* ar_g_Q0,
-                                int16_t* ar_f_Q0,
-                                int16_t* cth_Q15,
-                                int16_t* sth_Q15,
-                                size_t order_coef);
-
-/* Inner loop used for function WebRtcIsacfix_NormLatticeFilterMa(). It does:
-   for 0 <= n < HALF_SUBFRAMELEN - 1:
-     *ptr2 = input2 * (*ptr2) + input0 * (*ptr0));
-     *ptr1 = input1 * (*ptr0) + input0 * (*ptr2);
-   Note, function WebRtcIsacfix_FilterMaLoopNeon and WebRtcIsacfix_FilterMaLoopC
-   are not bit-exact. The accuracy by the ARM Neon function is same or better.
-*/
-void WebRtcIsacfix_FilterMaLoopC(int16_t input0,  // Filter coefficient
-                                 int16_t input1,  // Filter coefficient
-                                 int32_t input2,  // Inverse coeff. (1/input1)
-                                 int32_t* ptr0,   // Sample buffer
-                                 int32_t* ptr1,   // Sample buffer
-                                 int32_t* ptr2) { // Sample buffer
-  int n = 0;
-
-  // Separate the 32-bit variable input2 into two 16-bit integers (high 16 and
-  // low 16 bits), for using LATTICE_MUL_32_32_RSFT16 in the loop.
-  int16_t t16a = (int16_t)(input2 >> 16);
-  int16_t t16b = (int16_t)input2;
-  if (t16b < 0) t16a++;
-
-  // The loop filtering the samples *ptr0, *ptr1, *ptr2 with filter coefficients
-  // input0, input1, and input2.
-  for(n = 0; n < HALF_SUBFRAMELEN - 1; n++, ptr0++, ptr1++, ptr2++) {
-    int32_t tmp32a = 0;
-    int32_t tmp32b = 0;
-
-    // Calculate *ptr2 = input2 * (*ptr2 + input0 * (*ptr0));
-    tmp32a = WEBRTC_SPL_MUL_16_32_RSFT15(input0, *ptr0); // Q15 * Q15 >> 15 = Q15
-    tmp32b = *ptr2 + tmp32a; // Q15 + Q15 = Q15
-    *ptr2 = LATTICE_MUL_32_32_RSFT16(t16a, t16b, tmp32b);
-
-    // Calculate *ptr1 = input1 * (*ptr0) + input0 * (*ptr2);
-    tmp32a = WEBRTC_SPL_MUL_16_32_RSFT15(input1, *ptr0); // Q15*Q15>>15 = Q15
-    tmp32b = WEBRTC_SPL_MUL_16_32_RSFT15(input0, *ptr2); // Q15*Q15>>15 = Q15
-    *ptr1 = tmp32a + tmp32b; // Q15 + Q15 = Q15
-  }
-}
-
-/* filter the signal using normalized lattice filter */
-/* MA filter */
-void WebRtcIsacfix_NormLatticeFilterMa(size_t orderCoef,
-                                       int32_t *stateGQ15,
-                                       int16_t *lat_inQ0,
-                                       int16_t *filt_coefQ15,
-                                       int32_t *gain_lo_hiQ17,
-                                       int16_t lo_hi,
-                                       int16_t *lat_outQ9)
-{
-  int16_t sthQ15[MAX_AR_MODEL_ORDER];
-  int16_t cthQ15[MAX_AR_MODEL_ORDER];
-
-  int u, n;
-  size_t i, k;
-  int16_t temp2,temp3;
-  size_t ord_1 = orderCoef+1;
-  int32_t inv_cthQ16[MAX_AR_MODEL_ORDER];
-
-  int32_t gain32, fQtmp;
-  int16_t gain16;
-  int16_t gain_sh;
-
-  int32_t tmp32, tmp32b;
-  int32_t fQ15vec[HALF_SUBFRAMELEN];
-  int32_t gQ15[MAX_AR_MODEL_ORDER+1][HALF_SUBFRAMELEN];
-  int16_t sh;
-  int16_t t16a;
-  int16_t t16b;
-
-  for (u=0;u<SUBFRAMES;u++)
-  {
-    int32_t temp1 = u * HALF_SUBFRAMELEN;
-
-    /* set the Direct Form coefficients */
-    temp2 = (int16_t)(u * orderCoef);
-    temp3 = (int16_t)(2 * u + lo_hi);
-
-    /* compute lattice filter coefficients */
-    memcpy(sthQ15, &filt_coefQ15[temp2], orderCoef * sizeof(int16_t));
-
-    WebRtcSpl_SqrtOfOneMinusXSquared(sthQ15, orderCoef, cthQ15);
-
-    /* compute the gain */
-    gain32 = gain_lo_hiQ17[temp3];
-    gain_sh = WebRtcSpl_NormW32(gain32);
-    gain32 <<= gain_sh;  // Q(17+gain_sh)
-
-    for (k=0;k<orderCoef;k++)
-    {
-      gain32 = WEBRTC_SPL_MUL_16_32_RSFT15(cthQ15[k], gain32); //Q15*Q(17+gain_sh)>>15 = Q(17+gain_sh)
-      inv_cthQ16[k] = WebRtcSpl_DivW32W16((int32_t)2147483647, cthQ15[k]); // 1/cth[k] in Q31/Q15 = Q16
-    }
-    gain16 = (int16_t)(gain32 >> 16);  // Q(1+gain_sh).
-
-    /* normalized lattice filter */
-    /*****************************/
-
-    /* initial conditions */
-    for (i=0;i<HALF_SUBFRAMELEN;i++)
-    {
-      fQ15vec[i] = lat_inQ0[i + temp1] << 15;  // Q15
-      gQ15[0][i] = lat_inQ0[i + temp1] << 15;  // Q15
-    }
-
-
-    fQtmp = fQ15vec[0];
-
-    /* get the state of f&g for the first input, for all orders */
-    for (i=1;i<ord_1;i++)
-    {
-      // Calculate f[i][0] = inv_cth[i-1]*(f[i-1][0] + sth[i-1]*stateG[i-1]);
-      tmp32 = WEBRTC_SPL_MUL_16_32_RSFT15(sthQ15[i-1], stateGQ15[i-1]);//Q15*Q15>>15 = Q15
-      tmp32b= fQtmp + tmp32; //Q15+Q15=Q15
-      tmp32 = inv_cthQ16[i-1]; //Q16
-      t16a = (int16_t)(tmp32 >> 16);
-      t16b = (int16_t)(tmp32 - (t16a << 16));
-      if (t16b<0) t16a++;
-      tmp32 = LATTICE_MUL_32_32_RSFT16(t16a, t16b, tmp32b);
-      fQtmp = tmp32; // Q15
-
-      // Calculate g[i][0] = cth[i-1]*stateG[i-1] + sth[i-1]* f[i][0];
-      tmp32  = WEBRTC_SPL_MUL_16_32_RSFT15(cthQ15[i-1], stateGQ15[i-1]); //Q15*Q15>>15 = Q15
-      tmp32b = WEBRTC_SPL_MUL_16_32_RSFT15(sthQ15[i-1], fQtmp); //Q15*Q15>>15 = Q15
-      tmp32  = tmp32 + tmp32b;//Q15+Q15 = Q15
-      gQ15[i][0] = tmp32; // Q15
-    }
-
-    /* filtering */
-    /* save the states */
-    for(k=0;k<orderCoef;k++)
-    {
-      // for 0 <= n < HALF_SUBFRAMELEN - 1:
-      //   f[k+1][n+1] = inv_cth[k]*(f[k][n+1] + sth[k]*g[k][n]);
-      //   g[k+1][n+1] = cth[k]*g[k][n] + sth[k]* f[k+1][n+1];
-      WebRtcIsacfix_FilterMaLoopFix(sthQ15[k], cthQ15[k], inv_cthQ16[k],
-                                    &gQ15[k][0], &gQ15[k+1][1], &fQ15vec[1]);
-    }
-
-    fQ15vec[0] = fQtmp;
-
-    for(n=0;n<HALF_SUBFRAMELEN;n++)
-    {
-      //gain32 >>= gain_sh; // Q(17+gain_sh) -> Q17
-      tmp32 = WEBRTC_SPL_MUL_16_32_RSFT16(gain16, fQ15vec[n]); //Q(1+gain_sh)*Q15>>16 = Q(gain_sh)
-      sh = 9-gain_sh; //number of needed shifts to reach Q9
-      t16a = (int16_t) WEBRTC_SPL_SHIFT_W32(tmp32, sh);
-      lat_outQ9[n + temp1] = t16a;
-    }
-
-    /* save the states */
-    for (i=0;i<ord_1;i++)
-    {
-      stateGQ15[i] = gQ15[i][HALF_SUBFRAMELEN-1];
-    }
-    //process next frame
-  }
-
-  return;
-}
-
-// Left shift of an int32_t that's allowed to overflow. (It's still undefined
-// behavior, so not a good idea; this just makes UBSan ignore the violation, so
-// that our old code can continue to do what it's always been doing.)
-static inline int32_t RTC_NO_SANITIZE("shift")
-    OverflowingLShiftS32(int32_t x, int shift) {
-  return x << shift;
-}
-
-/* ----------------AR filter-------------------------*/
-/* filter the signal using normalized lattice filter */
-void WebRtcIsacfix_NormLatticeFilterAr(size_t orderCoef,
-                                       int16_t *stateGQ0,
-                                       int32_t *lat_inQ25,
-                                       int16_t *filt_coefQ15,
-                                       int32_t *gain_lo_hiQ17,
-                                       int16_t lo_hi,
-                                       int16_t *lat_outQ0)
-{
-  size_t ii, k, i;
-  int n, u;
-  int16_t sthQ15[MAX_AR_MODEL_ORDER];
-  int16_t cthQ15[MAX_AR_MODEL_ORDER];
-  int32_t tmp32;
-
-
-  int16_t tmpAR;
-  int16_t ARfQ0vec[HALF_SUBFRAMELEN];
-  int16_t ARgQ0vec[MAX_AR_MODEL_ORDER+1];
-
-  int32_t inv_gain32;
-  int16_t inv_gain16;
-  int16_t den16;
-  int16_t sh;
-
-  int16_t temp2,temp3;
-  size_t ord_1 = orderCoef+1;
-
-  for (u=0;u<SUBFRAMES;u++)
-  {
-    int32_t temp1 = u * HALF_SUBFRAMELEN;
-
-    //set the denominator and numerator of the Direct Form
-    temp2 = (int16_t)(u * orderCoef);
-    temp3 = (int16_t)(2 * u + lo_hi);
-
-    for (ii=0; ii<orderCoef; ii++) {
-      sthQ15[ii] = filt_coefQ15[temp2+ii];
-    }
-
-    WebRtcSpl_SqrtOfOneMinusXSquared(sthQ15, orderCoef, cthQ15);
-
-    // Originally, this line was assumed to never overflow, since "[s]imulation
-    // of the 25 files shows that maximum value in the vector gain_lo_hiQ17[]
-    // is 441344, which means that it is log2((2^31)/441344) = 12.2 shifting
-    // bits from saturation. Therefore, it should be safe to use Q27 instead of
-    // Q17." However, a fuzzer test succeeded in provoking an overflow here,
-    // which we ignore on the theory that only "abnormal" inputs cause
-    // overflow.
-    tmp32 = OverflowingLShiftS32(gain_lo_hiQ17[temp3], 10);  // Q27
-
-    for (k=0;k<orderCoef;k++) {
-      tmp32 = WEBRTC_SPL_MUL_16_32_RSFT15(cthQ15[k], tmp32); // Q15*Q27>>15 = Q27
-    }
-
-    sh = WebRtcSpl_NormW32(tmp32); // tmp32 is the gain
-    den16 = (int16_t) WEBRTC_SPL_SHIFT_W32(tmp32, sh-16); //Q(27+sh-16) = Q(sh+11) (all 16 bits are value bits)
-    inv_gain32 = WebRtcSpl_DivW32W16((int32_t)2147483647, den16); // 1/gain in Q31/Q(sh+11) = Q(20-sh)
-
-    //initial conditions
-    inv_gain16 = (int16_t)(inv_gain32 >> 2);  // 1/gain in Q(20-sh-2) = Q(18-sh)
-
-    for (i=0;i<HALF_SUBFRAMELEN;i++)
-    {
-      tmp32 = OverflowingLShiftS32(lat_inQ25[i + temp1], 1);  // Q25->Q26
-      tmp32 = WEBRTC_SPL_MUL_16_32_RSFT16(inv_gain16, tmp32); //lat_in[]*inv_gain in (Q(18-sh)*Q26)>>16 = Q(28-sh)
-      tmp32 = WEBRTC_SPL_SHIFT_W32(tmp32, -(28-sh)); // lat_in[]*inv_gain in Q0
-
-      ARfQ0vec[i] = (int16_t)WebRtcSpl_SatW32ToW16(tmp32); // Q0
-    }
-
-    // Get the state of f & g for the first input, for all orders.
-    for (i = orderCoef; i > 0; i--)
-    {
-      tmp32 = (cthQ15[i - 1] * ARfQ0vec[0] - sthQ15[i - 1] * stateGQ0[i - 1] +
-               16384) >> 15;
-      tmpAR = (int16_t)WebRtcSpl_SatW32ToW16(tmp32); // Q0
-
-      tmp32 = (sthQ15[i - 1] * ARfQ0vec[0] + cthQ15[i - 1] * stateGQ0[i - 1] +
-               16384) >> 15;
-      ARgQ0vec[i] = (int16_t)WebRtcSpl_SatW32ToW16(tmp32); // Q0
-      ARfQ0vec[0] = tmpAR;
-    }
-    ARgQ0vec[0] = ARfQ0vec[0];
-
-    // Filter ARgQ0vec[] and ARfQ0vec[] through coefficients cthQ15[] and sthQ15[].
-    WebRtcIsacfix_FilterArLoop(ARgQ0vec, ARfQ0vec, cthQ15, sthQ15, orderCoef);
-
-    for(n=0;n<HALF_SUBFRAMELEN;n++)
-    {
-      lat_outQ0[n + temp1] = ARfQ0vec[n];
-    }
-
-
-    /* cannot use memcpy in the following */
-
-    for (i=0;i<ord_1;i++)
-    {
-      stateGQ0[i] = ARgQ0vec[i];
-    }
-  }
-
-  return;
-}
diff --git a/modules/audio_coding/codecs/isac/fix/source/lattice_armv7.S b/modules/audio_coding/codecs/isac/fix/source/lattice_armv7.S
deleted file mode 100644
index 4c63227..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/lattice_armv7.S
+++ /dev/null
@@ -1,77 +0,0 @@
-@
-@ Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
-@
-@ Use of this source code is governed by a BSD-style license
-@ that can be found in the LICENSE file in the root of the source
-@ tree. An additional intellectual property rights grant can be found
-@ in the file PATENTS.  All contributing project authors may
-@ be found in the AUTHORS file in the root of the source tree.
-@
-
-@ Contains a function for the core loop in the normalized lattice AR
-@ filter routine for iSAC codec, optimized for ARMv7 platforms.
-@
-@ Output is bit-exact with the reference C code in lattic_c.c
-@
-@ Register usage:
-@
-@ r0:  &ar_g_Q0
-@ r1:  &ar_f_Q0
-@ r2:  &cth_Q15
-@ r3:  &sth_Q15
-@ r4:  out loop counter
-@ r5:  tmpAR
-@ r9:  inner loop counter
-@ r12: constant #16384
-@ r6, r7, r8, r10, r11: scratch
-
-#include "modules/audio_coding/codecs/isac/fix/source/settings.h"
-#include "rtc_base/system/asm_defines.h"
-
-GLOBAL_FUNCTION WebRtcIsacfix_FilterArLoop
-.align  2
-DEFINE_FUNCTION WebRtcIsacfix_FilterArLoop
-  push    {r4-r11}
-
-  add     r1, #2                 @ &ar_f_Q0[1]
-  mov     r12, #16384
-  mov     r4, #HALF_SUBFRAMELEN
-  sub     r4, #1                 @ Outer loop counter = HALF_SUBFRAMELEN - 1
-
-HALF_SUBFRAME_LOOP:  @ for (n = 0; n < HALF_SUBFRAMELEN - 1; n++)
-
-  ldr     r9, [sp, #32]          @ Restore the inner loop counter to order_coef
-  ldrh    r5, [r1]               @ tmpAR = ar_f_Q0[n+1]
-  add     r0, r9, asl #1         @ Restore r0 to &ar_g_Q0[order_coef]
-  add     r2, r9, asl #1         @ Restore r2 to &cth_Q15[order_coef]
-  add     r3, r9, asl #1         @ Restore r3 to &sth_Q15[order_coef]
-
-ORDER_COEF_LOOP:  @ for (k = order_coef; k > 0; k--)
-
-  ldrh    r7, [r3, #-2]!         @ sth_Q15[k - 1]
-  ldrh    r6, [r2, #-2]!         @ cth_Q15[k - 1]
-
-  ldrh    r8, [r0, #-2]          @ ar_g_Q0[k - 1]
-  smlabb  r11, r7, r5, r12       @ sth_Q15[k - 1] * tmpAR + 16384
-  smlabb  r10, r6, r5, r12       @ cth_Q15[k - 1] * tmpAR + 16384
-  smulbb  r7, r7, r8             @ sth_Q15[k - 1] * ar_g_Q0[k - 1]
-  smlabb  r11, r6, r8, r11       @ cth_Q15[k - 1] * ar_g_Q0[k - 1] +
-                                 @     (sth_Q15[k - 1] * tmpAR + 16384)
-
-  sub     r10, r10, r7           @ cth_Q15[k - 1] * tmpAR + 16384 -
-                                 @     (sth_Q15[k - 1] * ar_g_Q0[k - 1])
-  ssat    r11, #16, r11, asr #15
-  ssat    r5, #16, r10, asr #15
-  strh    r11, [r0], #-2         @ Output: ar_g_Q0[k]
-
-  subs    r9, #1
-  bgt     ORDER_COEF_LOOP
-
-  strh    r5, [r0]               @ Output: ar_g_Q0[0] = tmpAR;
-  strh    r5, [r1], #2           @ Output: ar_f_Q0[n+1] = tmpAR;
-
-  subs    r4, #1
-  bne     HALF_SUBFRAME_LOOP
-
-  pop     {r4-r11}
-  bx      lr
diff --git a/modules/audio_coding/codecs/isac/fix/source/lattice_c.c b/modules/audio_coding/codecs/isac/fix/source/lattice_c.c
deleted file mode 100644
index 4340661..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/lattice_c.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * Contains the core loop function for the lattice filter AR routine
- * for iSAC codec.
- *
- */
-
-#include "common_audio/signal_processing/include/signal_processing_library.h"
-#include "modules/audio_coding/codecs/isac/fix/source/settings.h"
-
-/* Filter ar_g_Q0[] and ar_f_Q0[] through an AR filter with coefficients
- * cth_Q15[] and sth_Q15[].
- */
-void WebRtcIsacfix_FilterArLoop(int16_t* ar_g_Q0,     // Input samples
-                                int16_t* ar_f_Q0,     // Input samples
-                                int16_t* cth_Q15,     // Filter coefficients
-                                int16_t* sth_Q15,     // Filter coefficients
-                                size_t order_coef) { // order of the filter
-  int n = 0;
-
-  for (n = 0; n < HALF_SUBFRAMELEN - 1; n++) {
-    size_t k = 0;
-    int16_t tmpAR = 0;
-    int32_t tmp32 = 0;
-    int32_t tmp32_2 = 0;
-
-    tmpAR = ar_f_Q0[n + 1];
-    for (k = order_coef; k > 0; k--) {
-      tmp32 = (cth_Q15[k - 1] * tmpAR - sth_Q15[k - 1] * ar_g_Q0[k - 1] +
-               16384) >> 15;
-      tmp32_2 = (sth_Q15[k - 1] * tmpAR + cth_Q15[k - 1] * ar_g_Q0[k - 1] +
-                 16384) >> 15;
-      tmpAR   = (int16_t)WebRtcSpl_SatW32ToW16(tmp32);
-      ar_g_Q0[k] = (int16_t)WebRtcSpl_SatW32ToW16(tmp32_2);
-    }
-    ar_f_Q0[n + 1] = tmpAR;
-    ar_g_Q0[0] = tmpAR;
-  }
-}
diff --git a/modules/audio_coding/codecs/isac/fix/source/lattice_mips.c b/modules/audio_coding/codecs/isac/fix/source/lattice_mips.c
deleted file mode 100644
index 3189726..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/lattice_mips.c
+++ /dev/null
@@ -1,329 +0,0 @@
-/*
- *  Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <stddef.h>
-#include <stdint.h>
-
-#include "modules/audio_coding/codecs/isac/fix/source/settings.h"
-
-// Filter ar_g_Q0[] and ar_f_Q0[] through an AR filter with coefficients
-// cth_Q15[] and sth_Q15[].
-void WebRtcIsacfix_FilterArLoop(int16_t* ar_g_Q0,     // Input samples
-                                int16_t* ar_f_Q0,     // Input samples
-                                int16_t* cth_Q15,     // Filter coefficients
-                                int16_t* sth_Q15,     // Filter coefficients
-                                size_t order_coef) { // order of the filter
-  int n = 0;
-
-  for (n = 0; n < HALF_SUBFRAMELEN - 1; n++) {
-    int count = (int)(order_coef - 1);
-    int offset;
-#if !defined(MIPS_DSP_R1_LE)
-    int16_t* tmp_cth;
-    int16_t* tmp_sth;
-    int16_t* tmp_arg;
-    int32_t max_q16 = 0x7fff;
-    int32_t min_q16 = 0xffff8000;
-#endif
-    // Declare variables used as temporary registers.
-    int32_t r0, r1, r2, t0, t1, t2, t_ar;
-
-    __asm __volatile (
-      ".set          push                                                \n\t"
-      ".set          noreorder                                           \n\t"
-      "bltz          %[count],     2f                                    \n\t"
-      " lh           %[t_ar],      0(%[tmp])                             \n\t"
-      // Inner loop
-     "1:                                                                 \n\t"
-      "sll           %[offset],    %[count],               1             \n\t"
-#if defined(MIPS_DSP_R1_LE)
-      "lhx           %[r0],        %[offset](%[cth_Q15])                 \n\t"
-      "lhx           %[r1],        %[offset](%[sth_Q15])                 \n\t"
-      "lhx           %[r2],        %[offset](%[ar_g_Q0])                 \n\t"
-#else
-      "addu          %[tmp_cth],   %[cth_Q15],             %[offset]     \n\t"
-      "addu          %[tmp_sth],   %[sth_Q15],             %[offset]     \n\t"
-      "addu          %[tmp_arg],   %[ar_g_Q0],             %[offset]     \n\t"
-      "lh            %[r0],        0(%[tmp_cth])                         \n\t"
-      "lh            %[r1],        0(%[tmp_sth])                         \n\t"
-      "lh            %[r2],        0(%[tmp_arg])                         \n\t"
-#endif
-      "mul           %[t0],        %[r0],                  %[t_ar]       \n\t"
-      "mul           %[t1],        %[r1],                  %[t_ar]       \n\t"
-      "mul           %[t2],        %[r1],                  %[r2]         \n\t"
-      "mul           %[r0],        %[r0],                  %[r2]         \n\t"
-      "subu          %[t0],        %[t0],                  %[t2]         \n\t"
-      "addu          %[t1],        %[t1],                  %[r0]         \n\t"
-#if defined(MIPS_DSP_R1_LE)
-      "shra_r.w      %[t1],        %[t1],                  15            \n\t"
-      "shra_r.w      %[t0],        %[t0],                  15            \n\t"
-#else
-      "addiu         %[t1],        %[t1],                  0x4000        \n\t"
-      "sra           %[t1],        %[t1],                  15            \n\t"
-      "addiu         %[t0],        %[t0],                  0x4000        \n\t"
-      "sra           %[t0],        %[t0],                  15            \n\t"
-#endif
-      "addiu         %[offset],    %[offset],              2             \n\t"
-#if defined(MIPS_DSP_R1_LE)
-      "shll_s.w      %[t1],        %[t1],                  16            \n\t"
-      "shll_s.w      %[t_ar],      %[t0],                  16            \n\t"
-#else
-      "slt           %[r0],        %[t1],                  %[max_q16]    \n\t"
-      "slt           %[r1],        %[t0],                  %[max_q16]    \n\t"
-      "movz          %[t1],        %[max_q16],             %[r0]         \n\t"
-      "movz          %[t0],        %[max_q16],             %[r1]         \n\t"
-#endif
-      "addu          %[offset],    %[offset],              %[ar_g_Q0]    \n\t"
-#if defined(MIPS_DSP_R1_LE)
-      "sra           %[t1],        %[t1],                  16            \n\t"
-      "sra           %[t_ar],      %[t_ar],                16            \n\t"
-#else
-      "slt           %[r0],        %[t1],                  %[min_q16]    \n\t"
-      "slt           %[r1],        %[t0],                  %[min_q16]    \n\t"
-      "movn          %[t1],        %[min_q16],             %[r0]         \n\t"
-      "movn          %[t0],        %[min_q16],             %[r1]         \n\t"
-      "addu          %[t_ar],      $zero,                  %[t0]         \n\t"
-#endif
-      "sh            %[t1],        0(%[offset])                          \n\t"
-      "bgtz          %[count],     1b                                    \n\t"
-      " addiu        %[count],     %[count],               -1            \n\t"
-     "2:                                                                 \n\t"
-      "sh            %[t_ar],      0(%[tmp])                             \n\t"
-      "sh            %[t_ar],      0(%[ar_g_Q0])                         \n\t"
-      ".set          pop                                                 \n\t"
-      : [t_ar] "=&r" (t_ar), [count] "+r" (count), [offset] "=&r" (offset),
-        [r0] "=&r" (r0), [r1] "=&r" (r1), [r2] "=&r" (r2), [t0] "=&r" (t0),
-#if !defined(MIPS_DSP_R1_LE)
-        [tmp_cth] "=&r" (tmp_cth), [tmp_sth] "=&r" (tmp_sth),
-        [tmp_arg] "=&r" (tmp_arg),
-#endif
-        [t1] "=&r" (t1), [t2] "=&r" (t2)
-      : [tmp] "r" (&ar_f_Q0[n+1]), [cth_Q15] "r" (cth_Q15),
-#if !defined(MIPS_DSP_R1_LE)
-        [max_q16] "r" (max_q16), [min_q16] "r" (min_q16),
-#endif
-        [sth_Q15] "r" (sth_Q15), [ar_g_Q0] "r" (ar_g_Q0)
-      : "memory", "hi", "lo"
-    );
-  }
-}
-
-// MIPS optimization of the inner loop used for function
-// WebRtcIsacfix_NormLatticeFilterMa(). It does:
-//
-// for 0 <= n < HALF_SUBFRAMELEN - 1:
-//   *ptr2 = input2 * (*ptr2) + input0 * (*ptr0));
-//   *ptr1 = input1 * (*ptr0) + input0 * (*ptr2);
-//
-// Note, function WebRtcIsacfix_FilterMaLoopMIPS and WebRtcIsacfix_FilterMaLoopC
-// are not bit-exact. The accuracy of the MIPS function is same or better.
-void WebRtcIsacfix_FilterMaLoopMIPS(int16_t input0,  // Filter coefficient
-                                    int16_t input1,  // Filter coefficient
-                                    int32_t input2,  // Inverse coeff (1/input1)
-                                    int32_t* ptr0,   // Sample buffer
-                                    int32_t* ptr1,   // Sample buffer
-                                    int32_t* ptr2) { // Sample buffer
-#if defined(MIPS_DSP_R2_LE)
-  // MIPS DSPR2 version. 4 available accumulators allows loop unrolling 4 times.
-  // This variant is not bit-exact with WebRtcIsacfix_FilterMaLoopC, since we
-  // are exploiting 64-bit accumulators. The accuracy of the MIPS DSPR2 function
-  // is same or better.
-  int n = (HALF_SUBFRAMELEN - 1) >> 2;
-  int m = (HALF_SUBFRAMELEN - 1) & 3;
-
-  int r0, r1, r2, r3;
-  int t0, t1, t2, t3;
-  int s0, s1, s2, s3;
-
-  __asm __volatile (
-    ".set          push                                      \n\t"
-    ".set          noreorder                                 \n\t"
-   "1:                                                       \n\t"
-    "lw            %[r0],        0(%[ptr0])                  \n\t"
-    "lw            %[r1],        4(%[ptr0])                  \n\t"
-    "lw            %[r2],        8(%[ptr0])                  \n\t"
-    "lw            %[r3],        12(%[ptr0])                 \n\t"
-    "mult          $ac0,         %[r0],        %[input0]     \n\t"
-    "mult          $ac1,         %[r1],        %[input0]     \n\t"
-    "mult          $ac2,         %[r2],        %[input0]     \n\t"
-    "mult          $ac3,         %[r3],        %[input0]     \n\t"
-    "lw            %[t0],        0(%[ptr2])                  \n\t"
-    "extr_rs.w     %[s0],        $ac0,         15            \n\t"
-    "extr_rs.w     %[s1],        $ac1,         15            \n\t"
-    "extr_rs.w     %[s2],        $ac2,         15            \n\t"
-    "extr_rs.w     %[s3],        $ac3,         15            \n\t"
-    "lw            %[t1],        4(%[ptr2])                  \n\t"
-    "lw            %[t2],        8(%[ptr2])                  \n\t"
-    "lw            %[t3],        12(%[ptr2])                 \n\t"
-    "addu          %[t0],        %[t0],        %[s0]         \n\t"
-    "addu          %[t1],        %[t1],        %[s1]         \n\t"
-    "addu          %[t2],        %[t2],        %[s2]         \n\t"
-    "addu          %[t3],        %[t3],        %[s3]         \n\t"
-    "mult          $ac0,         %[t0],        %[input2]     \n\t"
-    "mult          $ac1,         %[t1],        %[input2]     \n\t"
-    "mult          $ac2,         %[t2],        %[input2]     \n\t"
-    "mult          $ac3,         %[t3],        %[input2]     \n\t"
-    "addiu         %[ptr0],      %[ptr0],      16            \n\t"
-    "extr_rs.w     %[t0],        $ac0,         16            \n\t"
-    "extr_rs.w     %[t1],        $ac1,         16            \n\t"
-    "extr_rs.w     %[t2],        $ac2,         16            \n\t"
-    "extr_rs.w     %[t3],        $ac3,         16            \n\t"
-    "addiu         %[n],         %[n],         -1            \n\t"
-    "mult          $ac0,         %[r0],        %[input1]     \n\t"
-    "mult          $ac1,         %[r1],        %[input1]     \n\t"
-    "mult          $ac2,         %[r2],        %[input1]     \n\t"
-    "mult          $ac3,         %[r3],        %[input1]     \n\t"
-    "sw            %[t0],        0(%[ptr2])                  \n\t"
-    "extr_rs.w     %[s0],        $ac0,         15            \n\t"
-    "extr_rs.w     %[s1],        $ac1,         15            \n\t"
-    "extr_rs.w     %[s2],        $ac2,         15            \n\t"
-    "extr_rs.w     %[s3],        $ac3,         15            \n\t"
-    "sw            %[t1],        4(%[ptr2])                  \n\t"
-    "sw            %[t2],        8(%[ptr2])                  \n\t"
-    "sw            %[t3],        12(%[ptr2])                 \n\t"
-    "mult          $ac0,         %[t0],        %[input0]     \n\t"
-    "mult          $ac1,         %[t1],        %[input0]     \n\t"
-    "mult          $ac2,         %[t2],        %[input0]     \n\t"
-    "mult          $ac3,         %[t3],        %[input0]     \n\t"
-    "addiu         %[ptr2],      %[ptr2],      16            \n\t"
-    "extr_rs.w     %[t0],        $ac0,         15            \n\t"
-    "extr_rs.w     %[t1],        $ac1,         15            \n\t"
-    "extr_rs.w     %[t2],        $ac2,         15            \n\t"
-    "extr_rs.w     %[t3],        $ac3,         15            \n\t"
-    "addu          %[t0],        %[t0],        %[s0]         \n\t"
-    "addu          %[t1],        %[t1],        %[s1]         \n\t"
-    "addu          %[t2],        %[t2],        %[s2]         \n\t"
-    "addu          %[t3],        %[t3],        %[s3]         \n\t"
-    "sw            %[t0],        0(%[ptr1])                  \n\t"
-    "sw            %[t1],        4(%[ptr1])                  \n\t"
-    "sw            %[t2],        8(%[ptr1])                  \n\t"
-    "sw            %[t3],        12(%[ptr1])                 \n\t"
-    "bgtz          %[n],         1b                          \n\t"
-    " addiu        %[ptr1],      %[ptr1],      16            \n\t"
-    "beq           %[m],         %0,           3f            \n\t"
-    " nop                                                    \n\t"
-   "2:                                                       \n\t"
-    "lw            %[r0],        0(%[ptr0])                  \n\t"
-    "lw            %[t0],        0(%[ptr2])                  \n\t"
-    "addiu         %[ptr0],      %[ptr0],      4             \n\t"
-    "mult          $ac0,         %[r0],        %[input0]     \n\t"
-    "mult          $ac1,         %[r0],        %[input1]     \n\t"
-    "extr_rs.w     %[r1],        $ac0,         15            \n\t"
-    "extr_rs.w     %[t1],        $ac1,         15            \n\t"
-    "addu          %[t0],        %[t0],        %[r1]         \n\t"
-    "mult          $ac0,         %[t0],        %[input2]     \n\t"
-    "extr_rs.w     %[t0],        $ac0,         16            \n\t"
-    "sw            %[t0],        0(%[ptr2])                  \n\t"
-    "mult          $ac0,         %[t0],        %[input0]     \n\t"
-    "addiu         %[ptr2],      %[ptr2],      4             \n\t"
-    "addiu         %[m],         %[m],         -1            \n\t"
-    "extr_rs.w     %[t0],        $ac0,         15            \n\t"
-    "addu          %[t0],        %[t0],        %[t1]         \n\t"
-    "sw            %[t0],        0(%[ptr1])                  \n\t"
-    "bgtz          %[m],         2b                          \n\t"
-    " addiu        %[ptr1],      %[ptr1],      4             \n\t"
-   "3:                                                       \n\t"
-    ".set          pop                                       \n\t"
-    : [r0] "=&r" (r0), [r1] "=&r" (r1), [r2] "=&r" (r2),
-      [r3] "=&r" (r3), [t0] "=&r" (t0), [t1] "=&r" (t1),
-      [t2] "=&r" (t2), [t3] "=&r" (t3), [s0] "=&r" (s0),
-      [s1] "=&r" (s1), [s2] "=&r" (s2), [s3] "=&r" (s3),
-      [ptr0] "+r" (ptr0), [ptr1] "+r" (ptr1), [m] "+r" (m),
-      [ptr2] "+r" (ptr2), [n] "+r" (n)
-    : [input0] "r" (input0), [input1] "r" (input1),
-      [input2] "r" (input2)
-    : "memory", "hi", "lo", "$ac1hi", "$ac1lo", "$ac2hi",
-      "$ac2lo", "$ac3hi", "$ac3lo"
-  );
-#else
-  // Non-DSPR2 version of the function. Avoiding the accumulator usage due to
-  // large latencies. This variant is bit-exact with C code.
-  int n = HALF_SUBFRAMELEN - 1;
-  int32_t t16a, t16b;
-  int32_t r0, r1, r2, r3, r4;
-
-  __asm __volatile (
-    ".set          push                                      \n\t"
-    ".set          noreorder                                 \n\t"
-    "sra           %[t16a],      %[input2],     16           \n\t"
-    "andi          %[t16b],      %[input2],     0xFFFF       \n\t"
-#if defined(MIPS32R2_LE)
-    "seh           %[t16b],      %[t16b]                     \n\t"
-    "seh           %[input0],    %[input0]                   \n\t"
-    "seh           %[input1],    %[input1]                   \n\t"
-#else
-    "sll           %[t16b],      %[t16b],       16           \n\t"
-    "sra           %[t16b],      %[t16b],       16           \n\t"
-    "sll           %[input0],    %[input0],     16           \n\t"
-    "sra           %[input0],    %[input0],     16           \n\t"
-    "sll           %[input1],    %[input1],     16           \n\t"
-    "sra           %[input1],    %[input1],     16           \n\t"
-#endif
-    "addiu         %[r0],        %[t16a],       1            \n\t"
-    "slt           %[r1],        %[t16b],       $zero        \n\t"
-    "movn          %[t16a],      %[r0],         %[r1]        \n\t"
-   "1:                                                       \n\t"
-    "lw            %[r0],        0(%[ptr0])                  \n\t"
-    "lw            %[r1],        0(%[ptr2])                  \n\t"
-    "addiu         %[ptr0],      %[ptr0],       4            \n\t"
-    "sra           %[r2],        %[r0],         16           \n\t"
-    "andi          %[r0],        %[r0],         0xFFFF       \n\t"
-    "mul           %[r3],        %[r2],         %[input0]    \n\t"
-    "mul           %[r4],        %[r0],         %[input0]    \n\t"
-    "mul           %[r2],        %[r2],         %[input1]    \n\t"
-    "mul           %[r0],        %[r0],         %[input1]    \n\t"
-    "addiu         %[ptr2],      %[ptr2],       4            \n\t"
-    "sll           %[r3],        %[r3],         1            \n\t"
-    "sra           %[r4],        %[r4],         1            \n\t"
-    "addiu         %[r4],        %[r4],         0x2000       \n\t"
-    "sra           %[r4],        %[r4],         14           \n\t"
-    "addu          %[r3],        %[r3],         %[r4]        \n\t"
-    "addu          %[r1],        %[r1],         %[r3]        \n\t"
-    "sra           %[r3],        %[r1],         16           \n\t"
-    "andi          %[r4],        %[r1],         0xFFFF       \n\t"
-    "sra           %[r4],        %[r4],         1            \n\t"
-    "mul           %[r1],        %[r1],         %[t16a]      \n\t"
-    "mul           %[r3],        %[r3],         %[t16b]      \n\t"
-    "mul           %[r4],        %[r4],         %[t16b]      \n\t"
-    "sll           %[r2],        %[r2],         1            \n\t"
-    "sra           %[r0],        %[r0],         1            \n\t"
-    "addiu         %[r0],        %[r0],         0x2000       \n\t"
-    "sra           %[r0],        %[r0],         14           \n\t"
-    "addu          %[r0],        %[r0],         %[r2]        \n\t"
-    "addiu         %[n],         %[n],          -1           \n\t"
-    "addu          %[r1],        %[r1],         %[r3]        \n\t"
-    "addiu         %[r4],        %[r4],         0x4000       \n\t"
-    "sra           %[r4],        %[r4],         15           \n\t"
-    "addu          %[r1],        %[r1],         %[r4]        \n\t"
-    "sra           %[r2],        %[r1],         16           \n\t"
-    "andi          %[r3],        %[r1],         0xFFFF       \n\t"
-    "mul           %[r3],        %[r3],         %[input0]    \n\t"
-    "mul           %[r2],        %[r2],         %[input0]    \n\t"
-    "sw            %[r1],        -4(%[ptr2])                 \n\t"
-    "sra           %[r3],        %[r3],         1            \n\t"
-    "addiu         %[r3],        %[r3],         0x2000       \n\t"
-    "sra           %[r3],        %[r3],         14           \n\t"
-    "addu          %[r0],        %[r0],         %[r3]        \n\t"
-    "sll           %[r2],        %[r2],         1            \n\t"
-    "addu          %[r0],        %[r0],         %[r2]        \n\t"
-    "sw            %[r0],        0(%[ptr1])                  \n\t"
-    "bgtz          %[n],         1b                          \n\t"
-    " addiu        %[ptr1],      %[ptr1],       4            \n\t"
-    ".set          pop                                       \n\t"
-    : [t16a] "=&r" (t16a), [t16b] "=&r" (t16b), [r0] "=&r" (r0),
-      [r1] "=&r" (r1), [r2] "=&r" (r2), [r3] "=&r" (r3),
-      [r4] "=&r" (r4), [ptr0] "+r" (ptr0), [ptr1] "+r" (ptr1),
-      [ptr2] "+r" (ptr2), [n] "+r" (n)
-    : [input0] "r" (input0), [input1] "r" (input1),
-      [input2] "r" (input2)
-    : "hi", "lo", "memory"
-  );
-#endif
-}
diff --git a/modules/audio_coding/codecs/isac/fix/source/lattice_neon.c b/modules/audio_coding/codecs/isac/fix/source/lattice_neon.c
deleted file mode 100644
index 8ea9b63..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/lattice_neon.c
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- *  Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <arm_neon.h>
-
-#include "modules/audio_coding/codecs/isac/fix/source/codec.h"
-#include "modules/audio_coding/codecs/isac/fix/source/settings.h"
-
-// Contains a function for the core loop in the normalized lattice MA
-// filter routine for iSAC codec, optimized for ARM Neon platform.
-// It does:
-//  for 0 <= n < HALF_SUBFRAMELEN - 1:
-//    *ptr2 = input2 * ((*ptr2) + input0 * (*ptr0));
-//    *ptr1 = input1 * (*ptr0) + input0 * (*ptr2);
-// Output is not bit-exact with the reference C code, due to the replacement
-// of WEBRTC_SPL_MUL_16_32_RSFT15 and LATTICE_MUL_32_32_RSFT16 with Neon
-// instructions. The difference should not be bigger than 1.
-void WebRtcIsacfix_FilterMaLoopNeon(int16_t input0,  // Filter coefficient
-                                    int16_t input1,  // Filter coefficient
-                                    int32_t input2,  // Inverse coefficient
-                                    int32_t* ptr0,   // Sample buffer
-                                    int32_t* ptr1,   // Sample buffer
-                                    int32_t* ptr2)   // Sample buffer
-{
-  int n = 0;
-  int loop = (HALF_SUBFRAMELEN - 1) >> 3;
-  int loop_tail = (HALF_SUBFRAMELEN - 1) & 0x7;
-
-  int32x4_t input0_v = vdupq_n_s32((int32_t)input0 << 16);
-  int32x4_t input1_v = vdupq_n_s32((int32_t)input1 << 16);
-  int32x4_t input2_v = vdupq_n_s32(input2);
-  int32x4_t tmp0a, tmp1a, tmp2a, tmp3a;
-  int32x4_t tmp0b, tmp1b, tmp2b, tmp3b;
-  int32x4_t ptr0va, ptr1va, ptr2va;
-  int32x4_t ptr0vb, ptr1vb, ptr2vb;
-
-  int64x2_t tmp2al_low, tmp2al_high, tmp2bl_low, tmp2bl_high;
-  // Unroll to process 8 samples at once.
-  for (n = 0; n < loop; n++) {
-    ptr0va = vld1q_s32(ptr0);
-    ptr0vb = vld1q_s32(ptr0 + 4);
-    ptr0 += 8;
-
-    ptr2va = vld1q_s32(ptr2);
-    ptr2vb = vld1q_s32(ptr2 + 4);
-
-    // Calculate tmp0 = (*ptr0) * input0.
-    tmp0a = vqrdmulhq_s32(ptr0va, input0_v);
-    tmp0b = vqrdmulhq_s32(ptr0vb, input0_v);
-
-    // Calculate tmp1 = (*ptr0) * input1.
-    tmp1a = vqrdmulhq_s32(ptr0va, input1_v);
-    tmp1b = vqrdmulhq_s32(ptr0vb, input1_v);
-
-    // Calculate tmp2 = tmp0 + *(ptr2).
-    tmp2a = vaddq_s32(tmp0a, ptr2va);
-    tmp2b = vaddq_s32(tmp0b, ptr2vb);
-
-    // Calculate *ptr2 = input2 * tmp2.
-    tmp2al_low = vmull_s32(vget_low_s32(tmp2a), vget_low_s32(input2_v));
-#if defined(WEBRTC_ARCH_ARM64)
-    tmp2al_high = vmull_high_s32(tmp2a, input2_v);
-#else
-    tmp2al_high = vmull_s32(vget_high_s32(tmp2a), vget_high_s32(input2_v));
-#endif
-    ptr2va = vcombine_s32(vrshrn_n_s64(tmp2al_low, 16),
-                          vrshrn_n_s64(tmp2al_high, 16));
-
-    tmp2bl_low = vmull_s32(vget_low_s32(tmp2b), vget_low_s32(input2_v));
-#if defined(WEBRTC_ARCH_ARM64)
-    tmp2bl_high = vmull_high_s32(tmp2b, input2_v);
-#else
-    tmp2bl_high = vmull_s32(vget_high_s32(tmp2b), vget_high_s32(input2_v));
-#endif
-    ptr2vb = vcombine_s32(vrshrn_n_s64(tmp2bl_low, 16),
-                          vrshrn_n_s64(tmp2bl_high, 16));
-
-    vst1q_s32(ptr2, ptr2va);
-    vst1q_s32(ptr2 + 4, ptr2vb);
-    ptr2 += 8;
-
-    // Calculate tmp3 = ptr2v * input0.
-    tmp3a = vqrdmulhq_s32(ptr2va, input0_v);
-    tmp3b = vqrdmulhq_s32(ptr2vb, input0_v);
-
-    // Calculate *ptr1 = tmp1 + tmp3.
-    ptr1va = vaddq_s32(tmp1a, tmp3a);
-    ptr1vb = vaddq_s32(tmp1b, tmp3b);
-
-    vst1q_s32(ptr1, ptr1va);
-    vst1q_s32(ptr1 + 4, ptr1vb);
-    ptr1 += 8;
-  }
-
-  // Process four more samples.
-  if (loop_tail & 0x4) {
-    ptr0va = vld1q_s32(ptr0);
-    ptr2va = vld1q_s32(ptr2);
-    ptr0 += 4;
-
-    // Calculate tmp0 = (*ptr0) * input0.
-    tmp0a = vqrdmulhq_s32(ptr0va, input0_v);
-
-    // Calculate tmp1 = (*ptr0) * input1.
-    tmp1a = vqrdmulhq_s32(ptr0va, input1_v);
-
-    // Calculate tmp2 = tmp0 + *(ptr2).
-    tmp2a = vaddq_s32(tmp0a, ptr2va);
-
-    // Calculate *ptr2 = input2 * tmp2.
-    tmp2al_low = vmull_s32(vget_low_s32(tmp2a), vget_low_s32(input2_v));
-
-#if defined(WEBRTC_ARCH_ARM64)
-    tmp2al_high = vmull_high_s32(tmp2a, input2_v);
-#else
-    tmp2al_high = vmull_s32(vget_high_s32(tmp2a), vget_high_s32(input2_v));
-#endif
-    ptr2va = vcombine_s32(vrshrn_n_s64(tmp2al_low, 16),
-                          vrshrn_n_s64(tmp2al_high, 16));
-
-    vst1q_s32(ptr2, ptr2va);
-    ptr2 += 4;
-
-    // Calculate tmp3 = *(ptr2) * input0.
-    tmp3a = vqrdmulhq_s32(ptr2va, input0_v);
-
-    // Calculate *ptr1 = tmp1 + tmp3.
-    ptr1va = vaddq_s32(tmp1a, tmp3a);
-
-    vst1q_s32(ptr1, ptr1va);
-    ptr1 += 4;
-  }
-
-  // Process two more samples.
-  if (loop_tail & 0x2) {
-    int32x2_t ptr0v_tail, ptr2v_tail, ptr1v_tail;
-    int32x2_t tmp0_tail, tmp1_tail, tmp2_tail, tmp3_tail;
-    int64x2_t tmp2l_tail;
-    ptr0v_tail = vld1_s32(ptr0);
-    ptr2v_tail = vld1_s32(ptr2);
-    ptr0 += 2;
-
-    // Calculate tmp0 = (*ptr0) * input0.
-    tmp0_tail = vqrdmulh_s32(ptr0v_tail, vget_low_s32(input0_v));
-
-    // Calculate tmp1 = (*ptr0) * input1.
-    tmp1_tail = vqrdmulh_s32(ptr0v_tail, vget_low_s32(input1_v));
-
-    // Calculate tmp2 = tmp0 + *(ptr2).
-    tmp2_tail = vadd_s32(tmp0_tail, ptr2v_tail);
-
-    // Calculate *ptr2 = input2 * tmp2.
-    tmp2l_tail = vmull_s32(tmp2_tail, vget_low_s32(input2_v));
-    ptr2v_tail = vrshrn_n_s64(tmp2l_tail, 16);
-
-    vst1_s32(ptr2, ptr2v_tail);
-    ptr2 += 2;
-
-    // Calculate tmp3 = *(ptr2) * input0.
-    tmp3_tail = vqrdmulh_s32(ptr2v_tail, vget_low_s32(input0_v));
-
-    // Calculate *ptr1 = tmp1 + tmp3.
-    ptr1v_tail = vadd_s32(tmp1_tail, tmp3_tail);
-
-    vst1_s32(ptr1, ptr1v_tail);
-    ptr1 += 2;
-  }
-
-  // Process one more sample.
-  if (loop_tail & 0x1) {
-    int16_t t16a = (int16_t)(input2 >> 16);
-    int16_t t16b = (int16_t)input2;
-    if (t16b < 0) t16a++;
-    int32_t tmp32a;
-    int32_t tmp32b;
-
-    // Calculate *ptr2 = input2 * (*ptr2 + input0 * (*ptr0)).
-    tmp32a = WEBRTC_SPL_MUL_16_32_RSFT15(input0, *ptr0);
-    tmp32b = *ptr2 + tmp32a;
-    *ptr2 = (int32_t)(WEBRTC_SPL_MUL(t16a, tmp32b) +
-                       (WEBRTC_SPL_MUL_16_32_RSFT16(t16b, tmp32b)));
-
-    // Calculate *ptr1 = input1 * (*ptr0) + input0 * (*ptr2).
-    tmp32a = WEBRTC_SPL_MUL_16_32_RSFT15(input1, *ptr0);
-    tmp32b = WEBRTC_SPL_MUL_16_32_RSFT15(input0, *ptr2);
-    *ptr1 = tmp32a + tmp32b;
-  }
-}
diff --git a/modules/audio_coding/codecs/isac/fix/source/lpc_masking_model.c b/modules/audio_coding/codecs/isac/fix/source/lpc_masking_model.c
deleted file mode 100644
index f151cd1..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/lpc_masking_model.c
+++ /dev/null
@@ -1,949 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * lpc_masking_model.c
- *
- * LPC analysis and filtering functions
- *
- */
-
-#include "lpc_masking_model.h"
-
-#include <limits.h>  /* For LLONG_MAX and LLONG_MIN. */
-
-#include "modules/audio_coding/codecs/isac/fix/source/codec.h"
-#include "modules/audio_coding/codecs/isac/fix/source/entropy_coding.h"
-#include "modules/audio_coding/codecs/isac/fix/source/settings.h"
-
-/* The conversion is implemented by the step-down algorithm */
-void WebRtcSpl_AToK_JSK(
-    int16_t *a16, /* Q11 */
-    int16_t useOrder,
-    int16_t *k16  /* Q15 */
-                        )
-{
-  int m, k;
-  int32_t tmp32[MAX_AR_MODEL_ORDER];
-  int32_t tmp32b;
-  int32_t tmp_inv_denum32;
-  int16_t tmp_inv_denum16;
-
-  k16[useOrder-1] = a16[useOrder] << 4;  // Q11<<4 => Q15
-
-  for (m=useOrder-1; m>0; m--) {
-    // (1 - k^2) in Q30
-    tmp_inv_denum32 = 1073741823 - k16[m] * k16[m];
-    tmp_inv_denum16 = (int16_t)(tmp_inv_denum32 >> 15);  // (1 - k^2) in Q15.
-
-    for (k=1; k<=m; k++) {
-      tmp32b = (a16[k] << 16) - ((k16[m] * a16[m - k + 1]) << 1);
-
-      tmp32[k] = WebRtcSpl_DivW32W16(tmp32b, tmp_inv_denum16); //Q27/Q15 = Q12
-    }
-
-    for (k=1; k<m; k++) {
-      a16[k] = (int16_t)(tmp32[k] >> 1);  // Q12>>1 => Q11
-    }
-
-    tmp32[m] = WEBRTC_SPL_SAT(4092, tmp32[m], -4092);
-    k16[m - 1] = (int16_t)(tmp32[m] << 3);  // Q12<<3 => Q15
-  }
-
-  return;
-}
-
-
-
-
-
-int16_t WebRtcSpl_LevinsonW32_JSK(
-    int32_t *R,  /* (i) Autocorrelation of length >= order+1 */
-    int16_t *A,  /* (o) A[0..order] LPC coefficients (Q11) */
-    int16_t *K,  /* (o) K[0...order-1] Reflection coefficients (Q15) */
-    int16_t order /* (i) filter order */
-                                        ) {
-  int16_t i, j;
-  int16_t R_hi[LEVINSON_MAX_ORDER+1], R_low[LEVINSON_MAX_ORDER+1];
-  /* Aurocorr coefficients in high precision */
-  int16_t A_hi[LEVINSON_MAX_ORDER+1], A_low[LEVINSON_MAX_ORDER+1];
-  /* LPC coefficients in high precicion */
-  int16_t A_upd_hi[LEVINSON_MAX_ORDER+1], A_upd_low[LEVINSON_MAX_ORDER+1];
-  /* LPC coefficients for next iteration */
-  int16_t K_hi, K_low;      /* reflection coefficient in high precision */
-  int16_t Alpha_hi, Alpha_low, Alpha_exp; /* Prediction gain Alpha in high precision
-                                                   and with scale factor */
-  int16_t tmp_hi, tmp_low;
-  int32_t temp1W32, temp2W32, temp3W32;
-  int16_t norm;
-
-  /* Normalize the autocorrelation R[0]...R[order+1] */
-
-  norm = WebRtcSpl_NormW32(R[0]);
-
-  for (i=order;i>=0;i--) {
-    temp1W32 = R[i] << norm;
-    /* Put R in hi and low format */
-    R_hi[i] = (int16_t)(temp1W32 >> 16);
-    R_low[i] = (int16_t)((temp1W32 - ((int32_t)R_hi[i] << 16)) >> 1);
-  }
-
-  /* K = A[1] = -R[1] / R[0] */
-
-  temp2W32 = (R_hi[1] << 16) + (R_low[1] << 1);  /* R[1] in Q31      */
-  temp3W32  = WEBRTC_SPL_ABS_W32(temp2W32);      /* abs R[1]         */
-  temp1W32  = WebRtcSpl_DivW32HiLow(temp3W32, R_hi[0], R_low[0]); /* abs(R[1])/R[0] in Q31 */
-  /* Put back the sign on R[1] */
-  if (temp2W32 > 0) {
-    temp1W32 = -temp1W32;
-  }
-
-  /* Put K in hi and low format */
-  K_hi = (int16_t)(temp1W32 >> 16);
-  K_low = (int16_t)((temp1W32 - ((int32_t)K_hi << 16)) >> 1);
-
-  /* Store first reflection coefficient */
-  K[0] = K_hi;
-
-  temp1W32 >>= 4;  /* A[1] in Q27. */
-
-  /* Put A[1] in hi and low format */
-  A_hi[1] = (int16_t)(temp1W32 >> 16);
-  A_low[1] = (int16_t)((temp1W32 - ((int32_t)A_hi[1] << 16)) >> 1);
-
-  /*  Alpha = R[0] * (1-K^2) */
-
-  temp1W32  = (((K_hi * K_low) >> 14) + K_hi * K_hi) << 1;  /* = k^2 in Q31 */
-
-  temp1W32 = WEBRTC_SPL_ABS_W32(temp1W32);    /* Guard against <0 */
-  temp1W32 = (int32_t)0x7fffffffL - temp1W32;    /* temp1W32 = (1 - K[0]*K[0]) in Q31 */
-
-  /* Store temp1W32 = 1 - K[0]*K[0] on hi and low format */
-  tmp_hi = (int16_t)(temp1W32 >> 16);
-  tmp_low = (int16_t)((temp1W32 - ((int32_t)tmp_hi << 16)) >> 1);
-
-  /* Calculate Alpha in Q31 */
-  temp1W32 = (R_hi[0] * tmp_hi + ((R_hi[0] * tmp_low) >> 15) +
-      ((R_low[0] * tmp_hi) >> 15)) << 1;
-
-  /* Normalize Alpha and put it in hi and low format */
-
-  Alpha_exp = WebRtcSpl_NormW32(temp1W32);
-  temp1W32 <<= Alpha_exp;
-  Alpha_hi = (int16_t)(temp1W32 >> 16);
-  Alpha_low = (int16_t)((temp1W32 - ((int32_t)Alpha_hi<< 16)) >> 1);
-
-  /* Perform the iterative calculations in the
-     Levinson Durbin algorithm */
-
-  for (i=2; i<=order; i++)
-  {
-
-    /*                    ----
-                          \
-        temp1W32 =  R[i] + > R[j]*A[i-j]
-                          /
-                          ----
-                          j=1..i-1
-    */
-
-    temp1W32 = 0;
-
-    for(j=1; j<i; j++) {
-      /* temp1W32 is in Q31 */
-      temp1W32 += ((R_hi[j] * A_hi[i - j]) << 1) +
-          ((((R_hi[j] * A_low[i - j]) >> 15) +
-              ((R_low[j] * A_hi[i - j]) >> 15)) << 1);
-    }
-
-    temp1W32 <<= 4;
-    temp1W32 += (R_hi[i] << 16) + (R_low[i] << 1);
-
-    /* K = -temp1W32 / Alpha */
-    temp2W32 = WEBRTC_SPL_ABS_W32(temp1W32);      /* abs(temp1W32) */
-    temp3W32 = WebRtcSpl_DivW32HiLow(temp2W32, Alpha_hi, Alpha_low); /* abs(temp1W32)/Alpha */
-
-    /* Put the sign of temp1W32 back again */
-    if (temp1W32 > 0) {
-      temp3W32 = -temp3W32;
-    }
-
-    /* Use the Alpha shifts from earlier to denormalize */
-    norm = WebRtcSpl_NormW32(temp3W32);
-    if ((Alpha_exp <= norm)||(temp3W32==0)) {
-      temp3W32 <<= Alpha_exp;
-    } else {
-      if (temp3W32 > 0)
-      {
-        temp3W32 = (int32_t)0x7fffffffL;
-      } else
-      {
-        temp3W32 = (int32_t)0x80000000L;
-      }
-    }
-
-    /* Put K on hi and low format */
-    K_hi = (int16_t)(temp3W32 >> 16);
-    K_low = (int16_t)((temp3W32 - ((int32_t)K_hi << 16)) >> 1);
-
-    /* Store Reflection coefficient in Q15 */
-    K[i-1] = K_hi;
-
-    /* Test for unstable filter. If unstable return 0 and let the
-       user decide what to do in that case
-    */
-
-    if ((int32_t)WEBRTC_SPL_ABS_W16(K_hi) > (int32_t)32740) {
-      return(-i); /* Unstable filter */
-    }
-
-    /*
-      Compute updated LPC coefficient: Anew[i]
-      Anew[j]= A[j] + K*A[i-j]   for j=1..i-1
-      Anew[i]= K
-    */
-
-    for(j=1; j<i; j++)
-    {
-      temp1W32 = (A_hi[j] << 16) + (A_low[j] << 1);  // temp1W32 = A[j] in Q27
-
-      temp1W32 += (K_hi * A_hi[i - j] + ((K_hi * A_low[i - j]) >> 15) +
-          ((K_low * A_hi[i - j]) >> 15)) << 1;  // temp1W32 += K*A[i-j] in Q27.
-
-      /* Put Anew in hi and low format */
-      A_upd_hi[j] = (int16_t)(temp1W32 >> 16);
-      A_upd_low[j] = (int16_t)((temp1W32 - ((int32_t)A_upd_hi[j] << 16)) >> 1);
-    }
-
-    temp3W32 >>= 4;  /* temp3W32 = K in Q27 (Convert from Q31 to Q27) */
-
-    /* Store Anew in hi and low format */
-    A_upd_hi[i] = (int16_t)(temp3W32 >> 16);
-    A_upd_low[i] = (int16_t)((temp3W32 - ((int32_t)A_upd_hi[i] << 16)) >> 1);
-
-    /*  Alpha = Alpha * (1-K^2) */
-
-    temp1W32 = (((K_hi * K_low) >> 14) + K_hi * K_hi) << 1;  /* K*K in Q31 */
-
-    temp1W32 = WEBRTC_SPL_ABS_W32(temp1W32);      /* Guard against <0 */
-    temp1W32 = (int32_t)0x7fffffffL - temp1W32;      /* 1 - K*K  in Q31 */
-
-    /* Convert 1- K^2 in hi and low format */
-    tmp_hi = (int16_t)(temp1W32 >> 16);
-    tmp_low = (int16_t)((temp1W32 - ((int32_t)tmp_hi << 16)) >> 1);
-
-    /* Calculate Alpha = Alpha * (1-K^2) in Q31 */
-    temp1W32 = (Alpha_hi * tmp_hi + ((Alpha_hi * tmp_low) >> 15) +
-        ((Alpha_low * tmp_hi) >> 15)) << 1;
-
-    /* Normalize Alpha and store it on hi and low format */
-
-    norm = WebRtcSpl_NormW32(temp1W32);
-    temp1W32 <<= norm;
-
-    Alpha_hi = (int16_t)(temp1W32 >> 16);
-    Alpha_low = (int16_t)((temp1W32 - ((int32_t)Alpha_hi << 16)) >> 1);
-
-    /* Update the total nomalization of Alpha */
-    Alpha_exp = Alpha_exp + norm;
-
-    /* Update A[] */
-
-    for(j=1; j<=i; j++)
-    {
-      A_hi[j] =A_upd_hi[j];
-      A_low[j] =A_upd_low[j];
-    }
-  }
-
-  /*
-    Set A[0] to 1.0 and store the A[i] i=1...order in Q12
-    (Convert from Q27 and use rounding)
-  */
-
-  A[0] = 2048;
-
-  for(i=1; i<=order; i++) {
-    /* temp1W32 in Q27 */
-    temp1W32 = (A_hi[i] << 16) + (A_low[i] << 1);
-    /* Round and store upper word */
-    A[i] = (int16_t)((temp1W32 + 32768) >> 16);
-  }
-  return(1); /* Stable filters */
-}
-
-
-
-
-
-/* window */
-/* Matlab generation of floating point code:
- *  t = (1:256)/257; r = 1-(1-t).^.45; w = sin(r*pi).^3; w = w/sum(w); plot((1:256)/8, w); grid;
- *  for k=1:16, fprintf(1, '%.8f, ', w(k*16 + (-15:0))); fprintf(1, '\n'); end
- * All values are multiplyed with 2^21 in fixed point code.
- */
-static const int16_t kWindowAutocorr[WINLEN] = {
-  0,     0,     0,     0,     0,     1,     1,     2,     2,     3,     5,     6,
-  8,    10,    12,    14,    17,    20,    24,    28,    33,    38,    43,    49,
-  56,    63,    71,    79,    88,    98,   108,   119,   131,   143,   157,   171,
-  186,   202,   219,   237,   256,   275,   296,   318,   341,   365,   390,   416,
-  444,   472,   502,   533,   566,   600,   635,   671,   709,   748,   789,   831,
-  875,   920,   967,  1015,  1065,  1116,  1170,  1224,  1281,  1339,  1399,  1461,
-  1525,  1590,  1657,  1726,  1797,  1870,  1945,  2021,  2100,  2181,  2263,  2348,
-  2434,  2523,  2614,  2706,  2801,  2898,  2997,  3099,  3202,  3307,  3415,  3525,
-  3637,  3751,  3867,  3986,  4106,  4229,  4354,  4481,  4611,  4742,  4876,  5012,
-  5150,  5291,  5433,  5578,  5725,  5874,  6025,  6178,  6333,  6490,  6650,  6811,
-  6974,  7140,  7307,  7476,  7647,  7820,  7995,  8171,  8349,  8529,  8711,  8894,
-  9079,  9265,  9453,  9642,  9833, 10024, 10217, 10412, 10607, 10803, 11000, 11199,
-  11398, 11597, 11797, 11998, 12200, 12401, 12603, 12805, 13008, 13210, 13412, 13614,
-  13815, 14016, 14216, 14416, 14615, 14813, 15009, 15205, 15399, 15591, 15782, 15971,
-  16157, 16342, 16524, 16704, 16881, 17056, 17227, 17395, 17559, 17720, 17877, 18030,
-  18179, 18323, 18462, 18597, 18727, 18851, 18970, 19082, 19189, 19290, 19384, 19471,
-  19551, 19623, 19689, 19746, 19795, 19835, 19867, 19890, 19904, 19908, 19902, 19886,
-  19860, 19823, 19775, 19715, 19644, 19561, 19465, 19357, 19237, 19102, 18955, 18793,
-  18618, 18428, 18223, 18004, 17769, 17518, 17252, 16970, 16672, 16357, 16025, 15677,
-  15311, 14929, 14529, 14111, 13677, 13225, 12755, 12268, 11764, 11243, 10706, 10152,
-  9583,  8998,  8399,  7787,  7162,  6527,  5883,  5231,  4576,  3919,  3265,  2620,
-  1990,  1386,   825,   333
-};
-
-
-/* By using a hearing threshold level in dB of -28 dB (higher value gives more noise),
-   the H_T_H (in float) can be calculated as:
-   H_T_H = pow(10.0, 0.05 * (-28.0)) = 0.039810717055350
-   In Q19, H_T_H becomes round(0.039810717055350*2^19) ~= 20872, i.e.
-   H_T_H = 20872/524288.0, and H_T_HQ19 = 20872;
-*/
-
-
-/* The bandwidth expansion vectors are created from:
-   kPolyVecLo=[0.900000,0.810000,0.729000,0.656100,0.590490,0.531441,0.478297,0.430467,0.387420,0.348678,0.313811,0.282430];
-   kPolyVecHi=[0.800000,0.640000,0.512000,0.409600,0.327680,0.262144];
-   round(kPolyVecLo*32768)
-   round(kPolyVecHi*32768)
-*/
-static const int16_t kPolyVecLo[12] = {
-  29491, 26542, 23888, 21499, 19349, 17414, 15673, 14106, 12695, 11425, 10283, 9255
-};
-static const int16_t kPolyVecHi[6] = {
-  26214, 20972, 16777, 13422, 10737, 8590
-};
-
-static __inline int32_t log2_Q8_LPC( uint32_t x ) {
-
-  int32_t zeros;
-  int16_t frac;
-
-  zeros=WebRtcSpl_NormU32(x);
-  frac = (int16_t)(((x << zeros) & 0x7FFFFFFF) >> 23);
-
-  /* log2(x) */
-  return ((31 - zeros) << 8) + frac;
-}
-
-static const int16_t kMulPitchGain = -25; /* 200/256 in Q5 */
-static const int16_t kChngFactor = 3523; /* log10(2)*10/4*0.4/1.4=log10(2)/1.4= 0.2150 in Q14 */
-static const int16_t kExp2 = 11819; /* 1/log(2) */
-const int kShiftLowerBand = 11;  /* Shift value for lower band in Q domain. */
-const int kShiftHigherBand = 12;  /* Shift value for higher band in Q domain. */
-
-void WebRtcIsacfix_GetVars(const int16_t *input, const int16_t *pitchGains_Q12,
-                           uint32_t *oldEnergy, int16_t *varscale)
-{
-  int k;
-  uint32_t nrgQ[4];
-  int16_t nrgQlog[4];
-  int16_t tmp16, chng1, chng2, chng3, chng4, tmp, chngQ, oldNrgQlog, pgQ, pg3;
-  int32_t expPg32;
-  int16_t expPg, divVal;
-  int16_t tmp16_1, tmp16_2;
-
-  /* Calculate energies of first and second frame halfs */
-  nrgQ[0]=0;
-  for (k = QLOOKAHEAD/2; k < (FRAMESAMPLES/4 + QLOOKAHEAD) / 2; k++) {
-    nrgQ[0] += (uint32_t)(input[k] * input[k]);
-  }
-  nrgQ[1]=0;
-  for ( ; k < (FRAMESAMPLES/2 + QLOOKAHEAD) / 2; k++) {
-    nrgQ[1] += (uint32_t)(input[k] * input[k]);
-  }
-  nrgQ[2]=0;
-  for ( ; k < (FRAMESAMPLES * 3 / 4 + QLOOKAHEAD) / 2; k++) {
-    nrgQ[2] += (uint32_t)(input[k] * input[k]);
-  }
-  nrgQ[3]=0;
-  for ( ; k < (FRAMESAMPLES + QLOOKAHEAD) / 2; k++) {
-    nrgQ[3] += (uint32_t)(input[k] * input[k]);
-  }
-
-  for ( k=0; k<4; k++) {
-    nrgQlog[k] = (int16_t)log2_Q8_LPC(nrgQ[k]); /* log2(nrgQ) */
-  }
-  oldNrgQlog = (int16_t)log2_Q8_LPC(*oldEnergy);
-
-  /* Calculate average level change */
-  chng1 = WEBRTC_SPL_ABS_W16(nrgQlog[3]-nrgQlog[2]);
-  chng2 = WEBRTC_SPL_ABS_W16(nrgQlog[2]-nrgQlog[1]);
-  chng3 = WEBRTC_SPL_ABS_W16(nrgQlog[1]-nrgQlog[0]);
-  chng4 = WEBRTC_SPL_ABS_W16(nrgQlog[0]-oldNrgQlog);
-  tmp = chng1+chng2+chng3+chng4;
-  chngQ = (int16_t)(tmp * kChngFactor >> 10);  /* Q12 */
-  chngQ += 2926; /* + 1.0/1.4 in Q12 */
-
-  /* Find average pitch gain */
-  pgQ = 0;
-  for (k=0; k<4; k++)
-  {
-    pgQ += pitchGains_Q12[k];
-  }
-
-  pg3 = (int16_t)(pgQ * pgQ >> 11);  // pgQ in Q(12+2)=Q14. Q14*Q14>>11 => Q17
-  pg3 = (int16_t)(pgQ * pg3 >> 13);  /* Q14*Q17>>13 =>Q18  */
-  /* kMulPitchGain = -25 = -200 in Q-3. */
-  pg3 = (int16_t)(pg3 * kMulPitchGain >> 5);  // Q10
-  tmp16=(int16_t)WEBRTC_SPL_MUL_16_16_RSFT_WITH_ROUND(kExp2,pg3,13);/* Q13*Q10>>13 => Q10*/
-  if (tmp16<0) {
-    tmp16_2 = (0x0400 | (tmp16 & 0x03FF));
-    tmp16_1 = ((uint16_t)(tmp16 ^ 0xFFFF) >> 10) - 3;  /* Gives result in Q14 */
-    if (tmp16_1<0)
-      expPg = -(tmp16_2 << -tmp16_1);
-    else
-      expPg = -(tmp16_2 >> tmp16_1);
-  } else
-    expPg = (int16_t) -16384; /* 1 in Q14, since 2^0=1 */
-
-  expPg32 = (int32_t)expPg << 8;  /* Q22 */
-  divVal = WebRtcSpl_DivW32W16ResW16(expPg32, chngQ); /* Q22/Q12=Q10 */
-
-  tmp16=(int16_t)WEBRTC_SPL_MUL_16_16_RSFT_WITH_ROUND(kExp2,divVal,13);/* Q13*Q10>>13 => Q10*/
-  if (tmp16<0) {
-    tmp16_2 = (0x0400 | (tmp16 & 0x03FF));
-    tmp16_1 = ((uint16_t)(tmp16 ^ 0xFFFF) >> 10) - 3;  /* Gives result in Q14 */
-    if (tmp16_1<0)
-      expPg = tmp16_2 << -tmp16_1;
-    else
-      expPg = tmp16_2 >> tmp16_1;
-  } else
-    expPg = (int16_t) 16384; /* 1 in Q14, since 2^0=1 */
-
-  *varscale = expPg-1;
-  *oldEnergy = nrgQ[3];
-}
-
-
-
-static __inline int16_t  exp2_Q10_T(int16_t x) { // Both in and out in Q10
-
-  int16_t tmp16_1, tmp16_2;
-
-  tmp16_2=(int16_t)(0x0400|(x&0x03FF));
-  tmp16_1 = -(x >> 10);
-  if(tmp16_1>0)
-    return tmp16_2 >> tmp16_1;
-  else
-    return tmp16_2 << -tmp16_1;
-
-}
-
-
-// Declare function pointers.
-AutocorrFix WebRtcIsacfix_AutocorrFix;
-CalculateResidualEnergy WebRtcIsacfix_CalculateResidualEnergy;
-
-/* This routine calculates the residual energy for LPC.
- * Formula as shown in comments inside.
- */
-int32_t WebRtcIsacfix_CalculateResidualEnergyC(int lpc_order,
-                                               int32_t q_val_corr,
-                                               int q_val_polynomial,
-                                               int16_t* a_polynomial,
-                                               int32_t* corr_coeffs,
-                                               int* q_val_residual_energy) {
-  int i = 0, j = 0;
-  int shift_internal = 0, shift_norm = 0;
-  int32_t tmp32 = 0, word32_high = 0, word32_low = 0, residual_energy = 0;
-  int64_t sum64 = 0, sum64_tmp = 0;
-
-  for (i = 0; i <= lpc_order; i++) {
-    for (j = i; j <= lpc_order; j++) {
-      /* For the case of i == 0: residual_energy +=
-       *    a_polynomial[j] * corr_coeffs[i] * a_polynomial[j - i];
-       * For the case of i != 0: residual_energy +=
-       *    a_polynomial[j] * corr_coeffs[i] * a_polynomial[j - i] * 2;
-       */
-
-      tmp32 = a_polynomial[j] * a_polynomial[j - i];
-                                   /* tmp32 in Q(q_val_polynomial * 2). */
-      if (i != 0) {
-        tmp32 <<= 1;
-      }
-      sum64_tmp = (int64_t)tmp32 * (int64_t)corr_coeffs[i];
-      sum64_tmp >>= shift_internal;
-
-      /* Test overflow and sum the result. */
-      if(((sum64_tmp > 0 && sum64 > 0) && (LLONG_MAX - sum64 < sum64_tmp)) ||
-         ((sum64_tmp < 0 && sum64 < 0) && (LLONG_MIN - sum64 > sum64_tmp))) {
-        /* Shift right for overflow. */
-        shift_internal += 1;
-        sum64 >>= 1;
-        sum64 += sum64_tmp >> 1;
-      } else {
-        sum64 += sum64_tmp;
-      }
-    }
-  }
-
-  word32_high = (int32_t)(sum64 >> 32);
-  word32_low = (int32_t)sum64;
-
-  // Calculate the value of shifting (shift_norm) for the 64-bit sum.
-  if(word32_high != 0) {
-    shift_norm = 32 - WebRtcSpl_NormW32(word32_high);
-    residual_energy = (int32_t)(sum64 >> shift_norm);
-  } else {
-    if((word32_low & 0x80000000) != 0) {
-      shift_norm = 1;
-      residual_energy = (uint32_t)word32_low >> 1;
-    } else {
-      shift_norm = WebRtcSpl_NormW32(word32_low);
-      residual_energy = word32_low << shift_norm;
-      shift_norm = -shift_norm;
-    }
-  }
-
-  /* Q(q_val_polynomial * 2) * Q(q_val_corr) >> shift_internal >> shift_norm
-   *   = Q(q_val_corr - shift_internal - shift_norm + q_val_polynomial * 2)
-   */
-  *q_val_residual_energy = q_val_corr - shift_internal - shift_norm
-                           + q_val_polynomial * 2;
-
-  return residual_energy;
-}
-
-void WebRtcIsacfix_GetLpcCoef(int16_t *inLoQ0,
-                              int16_t *inHiQ0,
-                              MaskFiltstr_enc *maskdata,
-                              int16_t snrQ10,
-                              const int16_t *pitchGains_Q12,
-                              int32_t *gain_lo_hiQ17,
-                              int16_t *lo_coeffQ15,
-                              int16_t *hi_coeffQ15)
-{
-  int k, n, ii;
-  int pos1, pos2;
-  int sh_lo, sh_hi, sh, ssh, shMem;
-  int16_t varscaleQ14;
-
-  int16_t tmpQQlo, tmpQQhi;
-  int32_t tmp32;
-  int16_t tmp16,tmp16b;
-
-  int16_t polyHI[ORDERHI+1];
-  int16_t rcQ15_lo[ORDERLO], rcQ15_hi[ORDERHI];
-
-
-  int16_t DataLoQ6[WINLEN], DataHiQ6[WINLEN];
-  int32_t corrloQQ[ORDERLO+2];
-  int32_t corrhiQQ[ORDERHI+1];
-  int32_t corrlo2QQ[ORDERLO+1];
-  int16_t scale;
-  int16_t QdomLO, QdomHI, newQdomHI, newQdomLO;
-
-  int32_t res_nrgQQ;
-  int32_t sqrt_nrg;
-
-  /* less-noise-at-low-frequencies factor */
-  int16_t aaQ14;
-
-  /* Multiplication with 1/sqrt(12) ~= 0.28901734104046 can be done by convertion to
-     Q15, i.e. round(0.28901734104046*32768) = 9471, and use 9471/32768.0 ~= 0.289032
-  */
-  int16_t snrq;
-  int shft;
-
-  int16_t tmp16a;
-  int32_t tmp32a, tmp32b, tmp32c;
-
-  int16_t a_LOQ11[ORDERLO+1];
-  int16_t k_vecloQ15[ORDERLO];
-  int16_t a_HIQ12[ORDERHI+1];
-  int16_t k_vechiQ15[ORDERHI];
-
-  int16_t stab;
-
-  snrq=snrQ10;
-
-  /* SNR= C * 2 ^ (D * snrq) ; C=0.289, D=0.05*log2(10)=0.166 (~=172 in Q10)*/
-  tmp16 = (int16_t)(snrq * 172 >> 10);  // Q10
-  tmp16b = exp2_Q10_T(tmp16); // Q10
-  snrq = (int16_t)(tmp16b * 285 >> 10);  // Q10
-
-  /* change quallevel depending on pitch gains and level fluctuations */
-  WebRtcIsacfix_GetVars(inLoQ0, pitchGains_Q12, &(maskdata->OldEnergy), &varscaleQ14);
-
-  /* less-noise-at-low-frequencies factor */
-  /* Calculation of 0.35 * (0.5 + 0.5 * varscale) in fixpoint:
-     With 0.35 in Q16 (0.35 ~= 22938/65536.0 = 0.3500061) and varscaleQ14 in Q14,
-     we get Q16*Q14>>16 = Q14
-  */
-  aaQ14 = (int16_t)((22938 * (8192 + (varscaleQ14 >> 1)) + 32768) >> 16);
-
-  /* Calculate tmp = (1.0 + aa*aa); in Q12 */
-  tmp16 = (int16_t)(aaQ14 * aaQ14 >> 15);  // Q14*Q14>>15 = Q13
-  tmpQQlo = 4096 + (tmp16 >> 1);  // Q12 + Q13>>1 = Q12.
-
-  /* Calculate tmp = (1.0+aa) * (1.0+aa); */
-  tmp16 = 8192 + (aaQ14 >> 1);  // 1+a in Q13.
-  tmpQQhi = (int16_t)(tmp16 * tmp16 >> 14);  // Q13*Q13>>14 = Q12
-
-  /* replace data in buffer by new look-ahead data */
-  for (pos1 = 0; pos1 < QLOOKAHEAD; pos1++) {
-    maskdata->DataBufferLoQ0[pos1 + WINLEN - QLOOKAHEAD] = inLoQ0[pos1];
-  }
-
-  for (k = 0; k < SUBFRAMES; k++) {
-
-    /* Update input buffer and multiply signal with window */
-    for (pos1 = 0; pos1 < WINLEN - UPDATE/2; pos1++) {
-      maskdata->DataBufferLoQ0[pos1] = maskdata->DataBufferLoQ0[pos1 + UPDATE/2];
-      maskdata->DataBufferHiQ0[pos1] = maskdata->DataBufferHiQ0[pos1 + UPDATE/2];
-      DataLoQ6[pos1] = (int16_t)(maskdata->DataBufferLoQ0[pos1] *
-          kWindowAutocorr[pos1] >> 15);  // Q0*Q21>>15 = Q6
-      DataHiQ6[pos1] = (int16_t)(maskdata->DataBufferHiQ0[pos1] *
-          kWindowAutocorr[pos1] >> 15);  // Q0*Q21>>15 = Q6
-    }
-    pos2 = (int16_t)(k * UPDATE / 2);
-    for (n = 0; n < UPDATE/2; n++, pos1++) {
-      maskdata->DataBufferLoQ0[pos1] = inLoQ0[QLOOKAHEAD + pos2];
-      maskdata->DataBufferHiQ0[pos1] = inHiQ0[pos2++];
-      DataLoQ6[pos1] = (int16_t)(maskdata->DataBufferLoQ0[pos1] *
-          kWindowAutocorr[pos1] >> 15);  // Q0*Q21>>15 = Q6
-      DataHiQ6[pos1] = (int16_t)(maskdata->DataBufferHiQ0[pos1] *
-          kWindowAutocorr[pos1] >> 15);  // Q0*Q21>>15 = Q6
-    }
-
-    /* Get correlation coefficients */
-    /* The highest absolute value measured inside DataLo in the test set
-       For DataHi, corresponding value was 160.
-
-       This means that it should be possible to represent the input values
-       to WebRtcSpl_AutoCorrelation() as Q6 values (since 307*2^6 =
-       19648). Of course, Q0 will also work, but due to the low energy in
-       DataLo and DataHi, the outputted autocorrelation will be more accurate
-       and mimic the floating point code better, by being in an high as possible
-       Q-domain.
-    */
-
-    WebRtcIsacfix_AutocorrFix(corrloQQ,DataLoQ6,WINLEN, ORDERLO+1, &scale);
-    QdomLO = 12-scale; // QdomLO is the Q-domain of corrloQQ
-    sh_lo = WebRtcSpl_NormW32(corrloQQ[0]);
-    QdomLO += sh_lo;
-    for (ii=0; ii<ORDERLO+2; ii++) {
-      corrloQQ[ii] <<= sh_lo;
-    }
-    /* It is investigated whether it was possible to use 16 bits for the
-       32-bit vector corrloQQ, but it didn't work. */
-
-    WebRtcIsacfix_AutocorrFix(corrhiQQ,DataHiQ6,WINLEN, ORDERHI, &scale);
-
-    QdomHI = 12-scale; // QdomHI is the Q-domain of corrhiQQ
-    sh_hi = WebRtcSpl_NormW32(corrhiQQ[0]);
-    QdomHI += sh_hi;
-    for (ii=0; ii<ORDERHI+1; ii++) {
-      corrhiQQ[ii] <<= sh_hi;
-    }
-
-    /* less noise for lower frequencies, by filtering/scaling autocorrelation sequences */
-
-    /* Calculate corrlo2[0] = tmpQQlo * corrlo[0] - 2.0*tmpQQlo * corrlo[1];*/
-    // `corrlo2QQ` in Q(QdomLO-5).
-    corrlo2QQ[0] = (WEBRTC_SPL_MUL_16_32_RSFT16(tmpQQlo, corrloQQ[0]) >> 1) -
-        (WEBRTC_SPL_MUL_16_32_RSFT16(aaQ14, corrloQQ[1]) >> 2);
-
-    /* Calculate corrlo2[n] = tmpQQlo * corrlo[n] - tmpQQlo * (corrlo[n-1] + corrlo[n+1]);*/
-    for (n = 1; n <= ORDERLO; n++) {
-
-      tmp32 = (corrloQQ[n - 1] >> 1) + (corrloQQ[n + 1] >> 1);  // Q(QdomLO-1).
-      corrlo2QQ[n] = (WEBRTC_SPL_MUL_16_32_RSFT16(tmpQQlo, corrloQQ[n]) >> 1) -
-          (WEBRTC_SPL_MUL_16_32_RSFT16(aaQ14, tmp32) >> 2);
-    }
-    QdomLO -= 5;
-
-    /* Calculate corrhi[n] = tmpQQhi * corrhi[n]; */
-    for (n = 0; n <= ORDERHI; n++) {
-      corrhiQQ[n] = WEBRTC_SPL_MUL_16_32_RSFT16(tmpQQhi, corrhiQQ[n]); // Q(12+QdomHI-16) = Q(QdomHI-4)
-    }
-    QdomHI -= 4;
-
-    /* add white noise floor */
-    /* corrlo2QQ is in Q(QdomLO) and corrhiQQ is in Q(QdomHI) */
-    /* Calculate corrlo2[0] += 9.5367431640625e-7; and
-       corrhi[0]  += 9.5367431640625e-7, where the constant is 1/2^20 */
-
-    tmp32 = WEBRTC_SPL_SHIFT_W32((int32_t) 1, QdomLO-20);
-    corrlo2QQ[0] += tmp32;
-    tmp32 = WEBRTC_SPL_SHIFT_W32((int32_t) 1, QdomHI-20);
-    corrhiQQ[0]  += tmp32;
-
-    /* corrlo2QQ is in Q(QdomLO) and corrhiQQ is in Q(QdomHI) before the following
-       code segment, where we want to make sure we get a 1-bit margin */
-    for (n = 0; n <= ORDERLO; n++) {
-      corrlo2QQ[n] >>= 1;  // Make sure we have a 1-bit margin.
-    }
-    QdomLO -= 1; // Now, corrlo2QQ is in Q(QdomLO), with a 1-bit margin
-
-    for (n = 0; n <= ORDERHI; n++) {
-      corrhiQQ[n] >>= 1;  // Make sure we have a 1-bit margin.
-    }
-    QdomHI -= 1; // Now, corrhiQQ is in Q(QdomHI), with a 1-bit margin
-
-
-    newQdomLO = QdomLO;
-
-    for (n = 0; n <= ORDERLO; n++) {
-      int32_t tmp, tmpB, tmpCorr;
-      int16_t alpha=328; //0.01 in Q15
-      int16_t beta=324; //(1-0.01)*0.01=0.0099 in Q15
-      int16_t gamma=32440; //(1-0.01)=0.99 in Q15
-
-      if (maskdata->CorrBufLoQQ[n] != 0) {
-        shMem=WebRtcSpl_NormW32(maskdata->CorrBufLoQQ[n]);
-        sh = QdomLO - maskdata->CorrBufLoQdom[n];
-        if (sh<=shMem) {
-          tmp = WEBRTC_SPL_SHIFT_W32(maskdata->CorrBufLoQQ[n], sh); // Get CorrBufLoQQ to same domain as corrlo2
-          tmp = WEBRTC_SPL_MUL_16_32_RSFT15(alpha, tmp);
-        } else if ((sh-shMem)<7){
-          tmp = WEBRTC_SPL_SHIFT_W32(maskdata->CorrBufLoQQ[n], shMem); // Shift up CorrBufLoQQ as much as possible
-          // Shift `alpha` the number of times required to get `tmp` in QdomLO.
-          tmp = WEBRTC_SPL_MUL_16_32_RSFT15(alpha << (sh - shMem), tmp);
-        } else {
-          tmp = WEBRTC_SPL_SHIFT_W32(maskdata->CorrBufLoQQ[n], shMem); // Shift up CorrBufHiQQ as much as possible
-          // Shift `alpha` as much as possible without overflow the number of
-          // times required to get `tmp` in QdomLO.
-          tmp = WEBRTC_SPL_MUL_16_32_RSFT15(alpha << 6, tmp);
-          tmpCorr = corrloQQ[n] >> (sh - shMem - 6);
-          tmp = tmp + tmpCorr;
-          maskdata->CorrBufLoQQ[n] = tmp;
-          newQdomLO = QdomLO-(sh-shMem-6);
-          maskdata->CorrBufLoQdom[n] = newQdomLO;
-        }
-      } else
-        tmp = 0;
-
-      tmp = tmp + corrlo2QQ[n];
-
-      maskdata->CorrBufLoQQ[n] = tmp;
-      maskdata->CorrBufLoQdom[n] = QdomLO;
-
-      tmp=WEBRTC_SPL_MUL_16_32_RSFT15(beta, tmp);
-      tmpB=WEBRTC_SPL_MUL_16_32_RSFT15(gamma, corrlo2QQ[n]);
-      corrlo2QQ[n] = tmp + tmpB;
-    }
-    if( newQdomLO!=QdomLO) {
-      for (n = 0; n <= ORDERLO; n++) {
-        if (maskdata->CorrBufLoQdom[n] != newQdomLO)
-          corrloQQ[n] >>= maskdata->CorrBufLoQdom[n] - newQdomLO;
-      }
-      QdomLO = newQdomLO;
-    }
-
-
-    newQdomHI = QdomHI;
-
-    for (n = 0; n <= ORDERHI; n++) {
-      int32_t tmp, tmpB, tmpCorr;
-      int16_t alpha=328; //0.01 in Q15
-      int16_t beta=324; //(1-0.01)*0.01=0.0099 in Q15
-      int16_t gamma=32440; //(1-0.01)=0.99 in Q1
-      if (maskdata->CorrBufHiQQ[n] != 0) {
-        shMem=WebRtcSpl_NormW32(maskdata->CorrBufHiQQ[n]);
-        sh = QdomHI - maskdata->CorrBufHiQdom[n];
-        if (sh<=shMem) {
-          tmp = WEBRTC_SPL_SHIFT_W32(maskdata->CorrBufHiQQ[n], sh); // Get CorrBufHiQQ to same domain as corrhi
-          tmp = WEBRTC_SPL_MUL_16_32_RSFT15(alpha, tmp);
-          tmpCorr = corrhiQQ[n];
-          tmp = tmp + tmpCorr;
-          maskdata->CorrBufHiQQ[n] = tmp;
-          maskdata->CorrBufHiQdom[n] = QdomHI;
-        } else if ((sh-shMem)<7) {
-          tmp = WEBRTC_SPL_SHIFT_W32(maskdata->CorrBufHiQQ[n], shMem); // Shift up CorrBufHiQQ as much as possible
-          // Shift `alpha` the number of times required to get `tmp` in QdomHI.
-          tmp = WEBRTC_SPL_MUL_16_32_RSFT15(alpha << (sh - shMem), tmp);
-          tmpCorr = corrhiQQ[n];
-          tmp = tmp + tmpCorr;
-          maskdata->CorrBufHiQQ[n] = tmp;
-          maskdata->CorrBufHiQdom[n] = QdomHI;
-        } else {
-          tmp = WEBRTC_SPL_SHIFT_W32(maskdata->CorrBufHiQQ[n], shMem); // Shift up CorrBufHiQQ as much as possible
-          // Shift `alpha` as much as possible without overflow the number of
-          // times required to get `tmp` in QdomHI.
-          tmp = WEBRTC_SPL_MUL_16_32_RSFT15(alpha << 6, tmp);
-          tmpCorr = corrhiQQ[n] >> (sh - shMem - 6);
-          tmp = tmp + tmpCorr;
-          maskdata->CorrBufHiQQ[n] = tmp;
-          newQdomHI = QdomHI-(sh-shMem-6);
-          maskdata->CorrBufHiQdom[n] = newQdomHI;
-        }
-      } else {
-        tmp = corrhiQQ[n];
-        tmpCorr = tmp;
-        maskdata->CorrBufHiQQ[n] = tmp;
-        maskdata->CorrBufHiQdom[n] = QdomHI;
-      }
-
-      tmp=WEBRTC_SPL_MUL_16_32_RSFT15(beta, tmp);
-      tmpB=WEBRTC_SPL_MUL_16_32_RSFT15(gamma, tmpCorr);
-      corrhiQQ[n] = tmp + tmpB;
-    }
-
-    if( newQdomHI!=QdomHI) {
-      for (n = 0; n <= ORDERHI; n++) {
-        if (maskdata->CorrBufHiQdom[n] != newQdomHI)
-          corrhiQQ[n] >>= maskdata->CorrBufHiQdom[n] - newQdomHI;
-      }
-      QdomHI = newQdomHI;
-    }
-
-    stab=WebRtcSpl_LevinsonW32_JSK(corrlo2QQ, a_LOQ11, k_vecloQ15, ORDERLO);
-
-    if (stab<0) {  // If unstable use lower order
-      a_LOQ11[0]=2048;
-      for (n = 1; n <= ORDERLO; n++) {
-        a_LOQ11[n]=0;
-      }
-
-      stab=WebRtcSpl_LevinsonW32_JSK(corrlo2QQ, a_LOQ11, k_vecloQ15, 8);
-    }
-
-
-    WebRtcSpl_LevinsonDurbin(corrhiQQ,  a_HIQ12,  k_vechiQ15, ORDERHI);
-
-    /* bandwidth expansion */
-    for (n = 1; n <= ORDERLO; n++) {
-      a_LOQ11[n] = (int16_t)((kPolyVecLo[n - 1] * a_LOQ11[n] + (1 << 14)) >>
-          15);
-    }
-
-
-    polyHI[0] = a_HIQ12[0];
-    for (n = 1; n <= ORDERHI; n++) {
-      a_HIQ12[n] = (int16_t)(((int32_t)(kPolyVecHi[n - 1] * a_HIQ12[n]) +
-        (1 << 14)) >> 15);
-      polyHI[n] = a_HIQ12[n];
-    }
-
-    /* Normalize the corrlo2 vector */
-    sh = WebRtcSpl_NormW32(corrlo2QQ[0]);
-    for (n = 0; n <= ORDERLO; n++) {
-      corrlo2QQ[n] <<= sh;
-    }
-    QdomLO += sh; /* Now, corrlo2QQ is still in Q(QdomLO) */
-
-
-    /* residual energy */
-
-    sh_lo = 31;
-    res_nrgQQ = WebRtcIsacfix_CalculateResidualEnergy(ORDERLO, QdomLO,
-        kShiftLowerBand, a_LOQ11, corrlo2QQ, &sh_lo);
-
-    /* Convert to reflection coefficients */
-    WebRtcSpl_AToK_JSK(a_LOQ11, ORDERLO, rcQ15_lo);
-
-    if (sh_lo & 0x0001) {
-      res_nrgQQ >>= 1;
-      sh_lo-=1;
-    }
-
-
-    if( res_nrgQQ > 0 )
-    {
-      sqrt_nrg=WebRtcSpl_Sqrt(res_nrgQQ);
-
-      /* add hearing threshold and compute the gain */
-      /* lo_coeff = varscale * S_N_R / (sqrt_nrg + varscale * H_T_H); */
-
-      tmp32a = varscaleQ14 >> 1;  // H_T_HQ19=65536 (16-17=-1)
-      ssh = sh_lo >> 1;  // sqrt_nrg is in Qssh.
-      sh = ssh - 14;
-      tmp32b = WEBRTC_SPL_SHIFT_W32(tmp32a, sh); // Q14->Qssh
-      tmp32c = sqrt_nrg + tmp32b;  // Qssh  (denominator)
-      tmp32a = varscaleQ14 * snrq;  // Q24 (numerator)
-
-      sh = WebRtcSpl_NormW32(tmp32c);
-      shft = 16 - sh;
-      tmp16a = (int16_t) WEBRTC_SPL_SHIFT_W32(tmp32c, -shft); // Q(ssh-shft)  (denominator)
-
-      tmp32b = WebRtcSpl_DivW32W16(tmp32a, tmp16a); // Q(24-ssh+shft)
-      sh = ssh-shft-7;
-      *gain_lo_hiQ17 = WEBRTC_SPL_SHIFT_W32(tmp32b, sh);  // Gains in Q17
-    }
-    else
-    {
-      *gain_lo_hiQ17 = 100;  // Gains in Q17
-    }
-    gain_lo_hiQ17++;
-
-    /* copy coefficients to output array */
-    for (n = 0; n < ORDERLO; n++) {
-      *lo_coeffQ15 = (int16_t) (rcQ15_lo[n]);
-      lo_coeffQ15++;
-    }
-    /* residual energy */
-    sh_hi = 31;
-    res_nrgQQ = WebRtcIsacfix_CalculateResidualEnergy(ORDERHI, QdomHI,
-        kShiftHigherBand, a_HIQ12, corrhiQQ, &sh_hi);
-
-    /* Convert to reflection coefficients */
-    WebRtcSpl_LpcToReflCoef(polyHI, ORDERHI, rcQ15_hi);
-
-    if (sh_hi & 0x0001) {
-      res_nrgQQ >>= 1;
-      sh_hi-=1;
-    }
-
-
-    if( res_nrgQQ > 0 )
-    {
-      sqrt_nrg=WebRtcSpl_Sqrt(res_nrgQQ);
-
-
-      /* add hearing threshold and compute the gain */
-      /* hi_coeff = varscale * S_N_R / (sqrt_nrg + varscale * H_T_H); */
-
-      tmp32a = varscaleQ14 >> 1;  // H_T_HQ19=65536 (16-17=-1)
-
-      ssh = sh_hi >> 1;  // `sqrt_nrg` is in Qssh.
-      sh = ssh - 14;
-      tmp32b = WEBRTC_SPL_SHIFT_W32(tmp32a, sh); // Q14->Qssh
-      tmp32c = sqrt_nrg + tmp32b;  // Qssh  (denominator)
-      tmp32a = varscaleQ14 * snrq;  // Q24 (numerator)
-
-      sh = WebRtcSpl_NormW32(tmp32c);
-      shft = 16 - sh;
-      tmp16a = (int16_t) WEBRTC_SPL_SHIFT_W32(tmp32c, -shft); // Q(ssh-shft)  (denominator)
-
-      tmp32b = WebRtcSpl_DivW32W16(tmp32a, tmp16a); // Q(24-ssh+shft)
-      sh = ssh-shft-7;
-      *gain_lo_hiQ17 = WEBRTC_SPL_SHIFT_W32(tmp32b, sh);  // Gains in Q17
-    }
-    else
-    {
-      *gain_lo_hiQ17 = 100;  // Gains in Q17
-    }
-    gain_lo_hiQ17++;
-
-
-    /* copy coefficients to output array */
-    for (n = 0; n < ORDERHI; n++) {
-      *hi_coeffQ15 = rcQ15_hi[n];
-      hi_coeffQ15++;
-    }
-  }
-}
diff --git a/modules/audio_coding/codecs/isac/fix/source/lpc_masking_model.h b/modules/audio_coding/codecs/isac/fix/source/lpc_masking_model.h
deleted file mode 100644
index 40a99e8..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/lpc_masking_model.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * lpc_masking_model.h
- *
- * LPC functions
- *
- */
-
-#ifndef MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_LPC_MASKING_MODEL_H_
-#define MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_LPC_MASKING_MODEL_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "modules/audio_coding/codecs/isac/fix/source/structs.h"
-
-void WebRtcIsacfix_GetVars(const int16_t* input,
-                           const int16_t* pitchGains_Q12,
-                           uint32_t* oldEnergy,
-                           int16_t* varscale);
-
-void WebRtcIsacfix_GetLpcCoef(int16_t* inLoQ0,
-                              int16_t* inHiQ0,
-                              MaskFiltstr_enc* maskdata,
-                              int16_t snrQ10,
-                              const int16_t* pitchGains_Q12,
-                              int32_t* gain_lo_hiQ17,
-                              int16_t* lo_coeffQ15,
-                              int16_t* hi_coeffQ15);
-
-typedef int32_t (*CalculateResidualEnergy)(int lpc_order,
-                                           int32_t q_val_corr,
-                                           int q_val_polynomial,
-                                           int16_t* a_polynomial,
-                                           int32_t* corr_coeffs,
-                                           int* q_val_residual_energy);
-extern CalculateResidualEnergy WebRtcIsacfix_CalculateResidualEnergy;
-
-int32_t WebRtcIsacfix_CalculateResidualEnergyC(int lpc_order,
-                                               int32_t q_val_corr,
-                                               int q_val_polynomial,
-                                               int16_t* a_polynomial,
-                                               int32_t* corr_coeffs,
-                                               int* q_val_residual_energy);
-
-#if defined(MIPS_DSP_R2_LE)
-int32_t WebRtcIsacfix_CalculateResidualEnergyMIPS(int lpc_order,
-                                                  int32_t q_val_corr,
-                                                  int q_val_polynomial,
-                                                  int16_t* a_polynomial,
-                                                  int32_t* corr_coeffs,
-                                                  int* q_val_residual_energy);
-#endif
-
-#ifdef __cplusplus
-} /* extern "C" */
-#endif
-
-#endif /* MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_LPC_MASKING_MODEL_H_ */
diff --git a/modules/audio_coding/codecs/isac/fix/source/lpc_masking_model_mips.c b/modules/audio_coding/codecs/isac/fix/source/lpc_masking_model_mips.c
deleted file mode 100644
index 727008d..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/lpc_masking_model_mips.c
+++ /dev/null
@@ -1,237 +0,0 @@
-/*
- *  Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "modules/audio_coding/codecs/isac/fix/source/lpc_masking_model.h"
-
-// MIPS DSPR2 optimization for function WebRtcIsacfix_CalculateResidualEnergy
-// Bit-exact with WebRtcIsacfix_CalculateResidualEnergyC from file
-// lpc_masking_model.c
-int32_t WebRtcIsacfix_CalculateResidualEnergyMIPS(int lpc_order,
-                                                  int32_t q_val_corr,
-                                                  int q_val_polynomial,
-                                                  int16_t* a_polynomial,
-                                                  int32_t* corr_coeffs,
-                                                  int* q_val_residual_energy) {
-
-  int i = 0, j = 0;
-  int shift_internal = 0, shift_norm = 0;
-  int32_t tmp32 = 0, word32_high = 0, word32_low = 0, residual_energy = 0;
-  int32_t tmp_corr_c = corr_coeffs[0];
-  int16_t* tmp_a_poly = &a_polynomial[0];
-  int32_t sum64_hi = 0;
-  int32_t sum64_lo = 0;
-
-  for (j = 0; j <= lpc_order; j++) {
-    // For the case of i == 0:
-    //   residual_energy +=
-    //     a_polynomial[j] * corr_coeffs[i] * a_polynomial[j - i];
-
-    int32_t tmp2, tmp3;
-    int16_t sign_1;
-    int16_t sign_2;
-    int16_t sign_3;
-
-    __asm __volatile (
-      ".set      push                                                \n\t"
-      ".set      noreorder                                           \n\t"
-      "lh        %[tmp2],         0(%[tmp_a_poly])                   \n\t"
-      "mul       %[tmp32],        %[tmp2],            %[tmp2]        \n\t"
-      "addiu     %[tmp_a_poly],   %[tmp_a_poly],      2              \n\t"
-      "sra       %[sign_2],       %[sum64_hi],        31             \n\t"
-      "mult      $ac0,            %[tmp32],           %[tmp_corr_c]  \n\t"
-      "shilov    $ac0,            %[shift_internal]                  \n\t"
-      "mfhi      %[tmp2],         $ac0                               \n\t"
-      "mflo      %[tmp3],         $ac0                               \n\t"
-      "sra       %[sign_1],       %[tmp2],            31             \n\t"
-      "xor       %[sign_3],       %[sign_1],          %[sign_2]      \n\t"
-      ".set      pop                                                 \n\t"
-      : [tmp2] "=&r" (tmp2), [tmp3] "=&r" (tmp3), [tmp32] "=&r" (tmp32),
-        [tmp_a_poly] "+r" (tmp_a_poly), [sign_1] "=&r" (sign_1),
-        [sign_3] "=&r" (sign_3), [sign_2] "=&r" (sign_2),
-        [sum64_hi] "+r" (sum64_hi), [sum64_lo] "+r" (sum64_lo)
-      : [tmp_corr_c] "r" (tmp_corr_c), [shift_internal] "r" (shift_internal)
-      : "hi", "lo", "memory"
-    );
-
-    if (sign_3 != 0) {
-      __asm __volatile (
-        ".set      push                                      \n\t"
-        ".set      noreorder                                 \n\t"
-        "addsc     %[sum64_lo],   %[sum64_lo],    %[tmp3]    \n\t"
-        "addwc     %[sum64_hi],   %[sum64_hi],    %[tmp2]    \n\t"
-        ".set      pop                                       \n\t"
-        : [sum64_hi] "+r" (sum64_hi), [sum64_lo] "+r" (sum64_lo)
-        : [tmp2] "r" (tmp2), [tmp3] "r" (tmp3)
-        : "hi", "lo", "memory"
-      );
-    } else {
-      if (((!(sign_1 || sign_2)) && (0x7FFFFFFF - sum64_hi < tmp2)) ||
-          ((sign_1 && sign_2) && (sum64_hi + tmp2 > 0))) {
-        // Shift right for overflow.
-        __asm __volatile (
-          ".set      push                                             \n\t"
-          ".set      noreorder                                        \n\t"
-          "addiu     %[shift_internal], %[shift_internal],  1         \n\t"
-          "prepend   %[sum64_lo],       %[sum64_hi],        1         \n\t"
-          "sra       %[sum64_hi],       %[sum64_hi],        1         \n\t"
-          "prepend   %[tmp3],           %[tmp2],            1         \n\t"
-          "sra       %[tmp2],           %[tmp2],            1         \n\t"
-          "addsc     %[sum64_lo],       %[sum64_lo],        %[tmp3]   \n\t"
-          "addwc     %[sum64_hi],       %[sum64_hi],        %[tmp2]   \n\t"
-          ".set      pop                                              \n\t"
-          : [tmp2] "+r" (tmp2), [tmp3] "+r" (tmp3),
-            [shift_internal] "+r" (shift_internal),
-            [sum64_hi] "+r" (sum64_hi), [sum64_lo] "+r" (sum64_lo)
-          :
-          : "hi", "lo", "memory"
-        );
-      } else {
-        __asm __volatile (
-          ".set      push                                      \n\t"
-          ".set      noreorder                                 \n\t"
-          "addsc     %[sum64_lo],   %[sum64_lo],    %[tmp3]    \n\t"
-          "addwc     %[sum64_hi],   %[sum64_hi],    %[tmp2]    \n\t"
-          ".set      pop                                       \n\t"
-          : [sum64_hi] "+r" (sum64_hi), [sum64_lo] "+r" (sum64_lo)
-          : [tmp2] "r" (tmp2), [tmp3] "r" (tmp3)
-          : "hi", "lo", "memory"
-        );
-      }
-    }
-  }
-
-  for (i = 1; i <= lpc_order; i++) {
-    tmp_corr_c = corr_coeffs[i];
-    int16_t* tmp_a_poly_j = &a_polynomial[i];
-    int16_t* tmp_a_poly_j_i = &a_polynomial[0];
-    for (j = i; j <= lpc_order; j++) {
-      // For the case of i = 1 .. lpc_order:
-      //   residual_energy +=
-      //     a_polynomial[j] * corr_coeffs[i] * a_polynomial[j - i] * 2;
-
-      int32_t tmp2, tmp3;
-      int16_t sign_1;
-      int16_t sign_2;
-      int16_t sign_3;
-
-      __asm __volatile (
-        ".set      push                                                   \n\t"
-        ".set      noreorder                                              \n\t"
-        "lh        %[tmp3],           0(%[tmp_a_poly_j])                  \n\t"
-        "lh        %[tmp2],           0(%[tmp_a_poly_j_i])                \n\t"
-        "addiu     %[tmp_a_poly_j],   %[tmp_a_poly_j],    2               \n\t"
-        "addiu     %[tmp_a_poly_j_i], %[tmp_a_poly_j_i],  2               \n\t"
-        "mul       %[tmp32],          %[tmp3],            %[tmp2]         \n\t"
-        "sll       %[tmp32],          %[tmp32],           1               \n\t"
-        "mult      $ac0,              %[tmp32],           %[tmp_corr_c]   \n\t"
-        "shilov    $ac0,              %[shift_internal]                   \n\t"
-        "mfhi      %[tmp2],           $ac0                                \n\t"
-        "mflo      %[tmp3],           $ac0                                \n\t"
-        "sra       %[sign_1],         %[tmp2],            31              \n\t"
-        "sra       %[sign_2],         %[sum64_hi],        31              \n\t"
-        "xor       %[sign_3],         %[sign_1],          %[sign_2]       \n\t"
-        ".set      pop                                                    \n\t"
-        : [tmp2] "=&r" (tmp2), [tmp3] "=&r" (tmp3), [tmp32] "=&r" (tmp32),
-          [tmp_a_poly_j] "+r" (tmp_a_poly_j), [sign_1] "=&r" (sign_1),
-          [tmp_a_poly_j_i] "+r" (tmp_a_poly_j_i), [sign_2] "=&r" (sign_2),
-          [sign_3] "=&r" (sign_3), [sum64_hi] "+r" (sum64_hi),
-          [sum64_lo] "+r" (sum64_lo)
-        : [tmp_corr_c] "r" (tmp_corr_c), [shift_internal] "r" (shift_internal)
-        : "hi", "lo", "memory"
-      );
-      if (sign_3 != 0) {
-        __asm __volatile (
-          ".set      push                                     \n\t"
-          ".set      noreorder                                \n\t"
-          "addsc     %[sum64_lo],   %[sum64_lo],   %[tmp3]    \n\t"
-          "addwc     %[sum64_hi],   %[sum64_hi],   %[tmp2]    \n\t"
-          ".set      pop                                      \n\t"
-          : [tmp2] "+r" (tmp2), [tmp3] "+r" (tmp3), [sum64_hi] "+r" (sum64_hi),
-            [sum64_lo] "+r" (sum64_lo)
-          :
-          :"memory"
-        );
-      } else {
-        // Test overflow and sum the result.
-        if (((!(sign_1 || sign_2)) && (0x7FFFFFFF - sum64_hi < tmp2)) ||
-            ((sign_1 && sign_2) && (sum64_hi + tmp2 > 0))) {
-          // Shift right for overflow.
-          __asm __volatile (
-            ".set      push                                              \n\t"
-            ".set      noreorder                                         \n\t"
-            "addiu     %[shift_internal],  %[shift_internal],  1         \n\t"
-            "prepend   %[sum64_lo],        %[sum64_hi],        1         \n\t"
-            "sra       %[sum64_hi],        %[sum64_hi],        1         \n\t"
-            "prepend   %[tmp3],            %[tmp2],            1         \n\t"
-            "sra       %[tmp2],            %[tmp2],            1         \n\t"
-            "addsc     %[sum64_lo],        %[sum64_lo],        %[tmp3]   \n\t"
-            "addwc     %[sum64_hi],        %[sum64_hi],        %[tmp2]   \n\t"
-            ".set      pop                                               \n\t"
-            : [tmp2] "+r" (tmp2), [tmp3] "+r" (tmp3),
-              [shift_internal] "+r" (shift_internal),
-              [sum64_hi] "+r" (sum64_hi), [sum64_lo] "+r" (sum64_lo)
-            :
-            : "hi", "lo", "memory"
-          );
-        } else {
-          __asm __volatile (
-            ".set      push                                      \n\t"
-            ".set      noreorder                                 \n\t"
-            "addsc     %[sum64_lo],    %[sum64_lo],   %[tmp3]    \n\t"
-            "addwc     %[sum64_hi],    %[sum64_hi],   %[tmp2]    \n\t"
-            ".set      pop                                       \n\t"
-            : [tmp2] "+r" (tmp2), [tmp3] "+r" (tmp3),
-              [sum64_hi] "+r" (sum64_hi), [sum64_lo] "+r" (sum64_lo)
-            :
-            : "hi", "lo", "memory"
-          );
-        }
-      }
-    }
-  }
-  word32_high = sum64_hi;
-  word32_low = sum64_lo;
-
-  // Calculate the value of shifting (shift_norm) for the 64-bit sum.
-  if (word32_high != 0) {
-    shift_norm = 32 - WebRtcSpl_NormW32(word32_high);
-    int tmp1;
-    __asm __volatile (
-      ".set    push                                                     \n\t"
-      ".set    noreorder                                                \n\t"
-      "srl     %[residual_energy],  %[sum64_lo],         %[shift_norm]  \n\t"
-      "li      %[tmp1],             32                                  \n\t"
-      "subu    %[tmp1],             %[tmp1],             %[shift_norm]  \n\t"
-      "sll     %[tmp1],             %[sum64_hi],         %[tmp1]        \n\t"
-      "or      %[residual_energy],  %[residual_energy],  %[tmp1]        \n\t"
-      ".set    pop                                                      \n\t"
-      : [residual_energy] "=&r" (residual_energy), [tmp1]"=&r"(tmp1),
-        [sum64_hi] "+r" (sum64_hi), [sum64_lo] "+r" (sum64_lo)
-      : [shift_norm] "r" (shift_norm)
-      : "memory"
-    );
-  } else {
-    if ((word32_low & 0x80000000) != 0) {
-      shift_norm = 1;
-      residual_energy = (uint32_t)word32_low >> 1;
-    } else {
-      shift_norm = WebRtcSpl_NormW32(word32_low);
-      residual_energy = word32_low << shift_norm;
-      shift_norm = -shift_norm;
-    }
-  }
-
-  // Q(q_val_polynomial * 2) * Q(q_val_corr) >> shift_internal >> shift_norm
-  //   = Q(q_val_corr - shift_internal - shift_norm + q_val_polynomial * 2)
-  *q_val_residual_energy =
-      q_val_corr - shift_internal - shift_norm + q_val_polynomial * 2;
-
-  return residual_energy;
-}
diff --git a/modules/audio_coding/codecs/isac/fix/source/lpc_masking_model_unittest.cc b/modules/audio_coding/codecs/isac/fix/source/lpc_masking_model_unittest.cc
deleted file mode 100644
index 82793f1..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/lpc_masking_model_unittest.cc
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "modules/audio_coding/codecs/isac/fix/source/lpc_masking_model.h"
-
-#include "system_wrappers/include/cpu_features_wrapper.h"
-#include "test/gtest.h"
-
-class LpcMaskingModelTest : public ::testing::Test {
- protected:
-  // Pass a function pointer to the Tester function.
-  void CalculateResidualEnergyTester(
-      CalculateResidualEnergy CalculateResidualEnergyFunction) {
-    const int kIntOrder = 10;
-    const int32_t kInt32QDomain = 5;
-    const int kIntShift = 11;
-    int16_t a[kIntOrder + 1] = {32760, 122,   7,   0, -32760, -3958,
-                                -48,   18745, 498, 9, 23456};
-    int32_t corr[kIntOrder + 1] = {11443647, -27495, 0, 98745, -11443600, 1,
-                                   1,        498,    9, 888,   23456};
-    int q_shift_residual = 0;
-    int32_t residual_energy = 0;
-
-    // Test the code path where (residual_energy >= 0x10000).
-    residual_energy = CalculateResidualEnergyFunction(
-        kIntOrder, kInt32QDomain, kIntShift, a, corr, &q_shift_residual);
-    EXPECT_EQ(1789023310, residual_energy);
-    EXPECT_EQ(2, q_shift_residual);
-
-    // Test the code path where (residual_energy < 0x10000)
-    // and ((energy & 0x8000) != 0).
-    for (int i = 0; i < kIntOrder + 1; i++) {
-      a[i] = 24575 >> i;
-      corr[i] = i;
-    }
-    residual_energy = CalculateResidualEnergyFunction(
-        kIntOrder, kInt32QDomain, kIntShift, a, corr, &q_shift_residual);
-    EXPECT_EQ(1595279092, residual_energy);
-    EXPECT_EQ(26, q_shift_residual);
-
-    // Test the code path where (residual_energy <= 0x7fff).
-    for (int i = 0; i < kIntOrder + 1; i++) {
-      a[i] = 2457 >> i;
-    }
-    residual_energy = CalculateResidualEnergyFunction(
-        kIntOrder, kInt32QDomain, kIntShift, a, corr, &q_shift_residual);
-    EXPECT_EQ(2029266944, residual_energy);
-    EXPECT_EQ(33, q_shift_residual);
-  }
-};
-
-TEST_F(LpcMaskingModelTest, CalculateResidualEnergyTest) {
-  CalculateResidualEnergyTester(WebRtcIsacfix_CalculateResidualEnergyC);
-}
diff --git a/modules/audio_coding/codecs/isac/fix/source/lpc_tables.c b/modules/audio_coding/codecs/isac/fix/source/lpc_tables.c
deleted file mode 100644
index d495d29..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/lpc_tables.c
+++ /dev/null
@@ -1,1281 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * lpc_tables.c
- *
- * Coding tables for the KLT coefficients
- *
- */
-
-
-#include "modules/audio_coding/codecs/isac/fix/source/settings.h"
-#include "modules/audio_coding/codecs/isac/fix/source/lpc_tables.h"
-
-/* indices of KLT coefficients used */
-const uint16_t WebRtcIsacfix_kSelIndGain[12] = {
-  0,  1,  2,  3,  4,  5,  6,  7,  8,  9,
-  10,  11};
-
-const uint16_t WebRtcIsacfix_kSelIndShape[108] = {
-  0,  1,  2,  3,  4,  5,  6,  7,  8,  9,
-  10,  11,  12,  13,  14,  15,  16,  17,  18,  19,
-  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
-  30,  31,  32,  33,  34,  35,  36,  37,  38,  39,
-  40,  41,  42,  43,  44,  45,  46,  47,  48,  49,
-  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,
-  60,  61,  62,  63,  64,  65,  66,  67,  68,  69,
-  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
-  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,
-  90,  91,  92,  93,  94,  95,  96,  97,  98,  99,
-  100,  101,  102,  103,  104,  105,  106,  107
-};
-
-/* cdf array for model indicator */
-const uint16_t WebRtcIsacfix_kModelCdf[4] = {
-  0,  15434,  37548,  65535
-};
-
-/* pointer to cdf array for model indicator */
-const uint16_t *WebRtcIsacfix_kModelCdfPtr[1] = {
-  WebRtcIsacfix_kModelCdf
-};
-
-/* initial cdf index for decoder of model indicator */
-const uint16_t WebRtcIsacfix_kModelInitIndex[1] = {
-  1
-};
-
-/* offset to go from rounded value to quantization index */
-const int16_t WebRtcIsacfix_kQuantMinGain[12] ={
-  3,  6,  4,  6,  6,  9,  5,  16,  11,  34,  32,  47
-};
-
-const int16_t WebRtcIsacfix_kQuantMinShape[108] = {
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,
-  1,  1,  1,  1,  2,  2,  2,  3,  0,  0,
-  0,  0,  1,  0,  0,  0,  0,  1,  1,  1,
-  1,  1,  1,  2,  2,  3,  0,  0,  0,  0,
-  1,  0,  1,  1,  1,  1,  1,  1,  1,  2,
-  2,  4,  3,  5,  0,  0,  0,  0,  1,  1,
-  1,  1,  1,  1,  2,  1,  2,  2,  3,  4,
-  4,  7,  0,  0,  1,  1,  1,  1,  1,  1,
-  1,  2,  3,  2,  3,  4,  4,  5,  7,  13,
-  0,  1,  1,  2,  3,  2,  2,  2,  4,  4,
-  5,  6,  7,  11, 9, 13, 12, 26
-};
-
-/* maximum quantization index */
-const uint16_t WebRtcIsacfix_kMaxIndGain[12] = {
-  6,  12,  8,  14,  10,  19,  12,  31,  22,  56,  52,  138
-};
-
-const uint16_t WebRtcIsacfix_kMaxIndShape[108] = {
-  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,
-  2,  2,  2,  2,  4,  4,  5,  6,  0,  0,
-  0,  0,  1,  0,  0,  0,  0,  1,  2,  2,
-  2,  2,  3,  4,  5,  7,  0,  0,  0,  0,
-  2,  0,  2,  2,  2,  2,  3,  2,  2,  4,
-  4,  6,  6,  9,  0,  0,  0,  0,  2,  2,
-  2,  2,  2,  2,  3,  2,  4,  4,  7,  7,
-  9,  13, 0,  0,  2,  2,  2,  2,  2,  2,
-  3,  4,  5,  4,  6,  8,  8, 10, 16, 25,
-  0,  2,  2,  4,  5,  4,  4,  4,  7,  8,
-  9, 10, 13, 19, 17, 23, 25, 49
-};
-
-/* index offset */
-const uint16_t WebRtcIsacfix_kOffsetGain[3][12] = {
-  { 0,  7,  20,  29,  44,  55,  75,  88,  120,  143,  200,  253},
-  { 0,  7,  19,  27,  42,  53,  73,  86,  117,  140,  197,  249},
-  { 0,  7,  20,  28,  44,  55,  75,  89,  121,  145,  202,  257}
-};
-
-const uint16_t WebRtcIsacfix_kOffsetShape[3][108] = {
-  {
-    0,  1,  2,  3,  4,  5,  6,  7,  8,  9,
-    11,  14,  17,  20,  23,  28,  33,  39,  46,  47,
-    48,  49,  50,  52,  53,  54,  55,  56,  58,  61,
-    64,  67,  70,  74,  79,  85,  93,  94,  95,  96,
-    97,  100,  101,  104,  107,  110,  113,  117,  120,  123,
-    128,  133,  140,  147,  157,  158,  159,  160,  161,  164,
-    167,  170,  173,  176,  179,  183,  186,  191,  196,  204,
-    212,  222,  236,  237,  238,  241,  244,  247,  250,  253,
-    256,  260,  265,  271,  276,  283,  292,  301,  312,  329,
-    355,  356,  359,  362,  367,  373,  378,  383,  388,  396,
-    405,  415,  426,  440,  460,  478,  502,  528
-  },
-  {
-    0,  1,  2,  3,  4,  6,  7,  8,  9,  11,
-    13,  16,  19,  22,  26,  29,  34,  39,  45,  46,
-    47,  48,  49,  50,  51,  52,  53,  55,  57,  60,
-    63,  66,  70,  73,  78,  84,  91,  92,  93,  94,
-    95,  96,  97,  99,  102,  105,  108,  111,  114,  118,
-    123,  128,  134,  141,  151,  152,  153,  154,  156,  159,
-    162,  165,  168,  171,  174,  177,  181,  186,  194,  200,
-    208,  218,  233,  234,  235,  236,  239,  242,  245,  248,
-    251,  254,  258,  263,  270,  277,  288,  297,  308,  324,
-    349,  351,  354,  357,  361,  366,  372,  378,  383,  390,
-    398,  407,  420,  431,  450,  472,  496,  524
-  },
-  {
-    0,  1,  2,  3,  4,  5,  6,  7,  8,  11,
-    14,  17,  20,  23,  26,  29,  34,  40,  47,  48,
-    49,  50,  51,  52,  53,  54,  55,  58,  61,  64,
-    67,  70,  73,  77,  82,  88,  96,  97,  98,  99,
-    101,  102,  104,  107,  110,  113,  116,  119,  122,  125,
-    129,  134,  141,  150,  160,  161,  162,  163,  166,  168,
-    171,  174,  177,  180,  183,  186,  190,  195,  201,  208,
-    216,  226,  243,  244,  245,  248,  251,  254,  257,  260,
-    263,  268,  273,  278,  284,  291,  299,  310,  323,  340,
-    366,  368,  371,  374,  379,  383,  389,  394,  399,  406,
-    414,  422,  433,  445,  461,  480,  505,  533
-  }
-};
-
-/* initial cdf index for KLT coefficients */
-const uint16_t WebRtcIsacfix_kInitIndexGain[3][12] = {
-  { 3,  6,  4,  7,  5,  10,  6,  16,  11,  28,  26,  69},
-  { 3,  6,  4,  7,  5,  10,  6,  15,  11,  28,  26,  69},
-  { 3,  6,  4,  8,  5,  10,  7,  16,  12,  28,  27,  70}
-};
-
-const uint16_t WebRtcIsacfix_kInitIndexShape[3][108] = {
-  {
-    0,  0,  0,  0,  0,  0,  0,  0,  0,  1,
-    1,  1,  1,  1,  2,  2,  3,  3,  0,  0,
-    0,  0,  1,  0,  0,  0,  0,  1,  1,  1,
-    1,  1,  2,  2,  3,  4,  0,  0,  0,  0,
-    1,  0,  1,  1,  1,  1,  2,  1,  1,  2,
-    2,  3,  3,  5,  0,  0,  0,  0,  1,  1,
-    1,  1,  1,  1,  2,  1,  2,  2,  4,  4,
-    5,  7,  0,  0,  1,  1,  1,  1,  1,  1,
-    2,  2,  3,  2,  3,  4,  4,  5,  8,  13,
-    0,  1,  1,  2,  3,  2,  2,  2,  4,  4,
-    5,  5,  7,  10,  9,  12,  13,  25
-  },
-  {
-    0,  0,  0,  0,  1,  0,  0,  0,  1,  1,
-    1,  1,  1,  2,  1,  2,  2,  3,  0,  0,
-    0,  0,  0,  0,  0,  0,  1,  1,  1,  1,
-    1,  2,  1,  2,  3,  3,  0,  0,  0,  0,
-    0,  0,  1,  1,  1,  1,  1,  1,  2,  2,
-    2,  3,  3,  5,  0,  0,  0,  1,  1,  1,
-    1,  1,  1,  1,  1,  2,  2,  4,  3,  4,
-    5,  7,  0,  0,  0,  1,  1,  1,  1,  1,
-    1,  2,  2,  3,  3,  5,  4,  5,  8,  12,
-    1,  1,  1,  2,  2,  3,  3,  2,  3,  4,
-    4,  6,  5,  9,  11,  12,  14,  25
-  },
-  {
-    0,  0,  0,  0,  0,  0,  0,  0,  1,  1,
-    1,  1,  1,  1,  1,  2,  3,  3,  0,  0,
-    0,  0,  0,  0,  0,  0,  1,  1,  1,  1,
-    1,  1,  2,  2,  3,  4,  0,  0,  0,  1,
-    0,  1,  1,  1,  1,  1,  1,  1,  1,  2,
-    2,  3,  4,  5,  0,  0,  0,  1,  1,  1,
-    1,  1,  1,  1,  1,  2,  2,  3,  3,  4,
-    5,  8,  0,  0,  1,  1,  1,  1,  1,  1,
-    2,  2,  2,  3,  3,  4,  5,  6,  8,  13,
-    1,  1,  1,  2,  2,  3,  2,  2,  3,  4,
-    4,  5,  6,  8,  9,  12,  14,  25
-  }
-};
-
-/* offsets for quantizer representation levels*/
-const uint16_t WebRtcIsacfix_kOfLevelsGain[3] = {
-  0,  392,  779
-};
-
-const uint16_t WebRtcIsacfix_kOfLevelsShape[3] = {
-  0,  578,  1152
-};
-
-/* quantizer representation levels */
-
-
-
-const int32_t WebRtcIsacfix_kLevelsGainQ17[1176] = {
-  -364547,-231664,-102123,-573,104807,238257,368823,-758583,-640135,-510291
-  ,-377662,-252785,-113177,2627,112906,248601,389461,522691,644517,763974
-  ,-538963,-368179,-245823,-106095,-890,104299,241111,350730,493190,-800763
-  ,-646230,-510239,-382115,-248623,-111829,-2983,113852,251105,388114,519757
-  ,644048,774712,896334,1057931,-770009,-635310,-503690,-375087,-248106,-108525
-  ,-105,108259,243472,377948,519271,-1160885,-1032044,-914636,-777593,-647891
-  ,-518408,-388028,-254321,-115293,-598,117849,251296,385367,515510,652727
-  ,777432,920363,1038625,1153637,1316836,-632287,-505430,-379430,-248458,-118013
-  ,-888,118762,250266,381650,513327,652169,766471,932113,-2107480,-1971030
-  ,-1827020,-1698263,-1558670,-1436314,-1305377,-1172252,-1047355,-914202,-779651,-651001
-  ,-520999,-390394,-255761,-123490,-1893,126839,256703,385493,518607,651760
-  ,782750,908693,1044131,1163865,1311066,1424177,1582628,1709823,1831740,1955391
-  ,-1423044,-1288917,-1181281,-1043222,-911770,-780354,-646799,-522664,-386721,-258266
-  ,-128060,-1101,128233,259996,390336,519590,649290,778701,908010,1040796
-  ,1161235,1306889,1441882,-4446002,-4301031,-4194304,-4080591,-3947740,-3808975,-3686530
-  ,-3567839,-3383251,-3287089,-3136577,-3017405,-2869860,-2751321,-2619984,-2482932,-2354790
-  ,-2223147,-2090669,-1964135,-1831208,-1706697,-1570817,-1446008,-1305386,-1175773,-1046066
-  ,-915356,-785120,-653614,-524331,-393767,-260442,-130187,-799,128841,261466
-  ,393616,520542,652117,784613,914159,1045399,1181072,1308971,1442502,1570346
-  ,1693912,1843986,1966014,2090474,2224869,2364593,2475934,2628403,2752512,2856640
-  ,-4192441,-4063232,-3917821,-3799195,-3666233,-3519199,-3411021,-3269192,-3135684,-3008826
-  ,-2880875,-2747342,-2620981,-2494872,-2354979,-2229718,-2098939,-1964971,-1835399,-1703452
-  ,-1572806,-1440482,-1311794,-1179338,-1046521,-919823,-785914,-655335,-523416,-395507
-  ,-264833,-132184,-2546,131698,256217,391372,522688,651248,789964,909618
-  ,1035305,1179145,1313824,1436934,1552353,1693722,1815508,1972826,2096328,2228224
-  ,2359296,2490368,2598848,-6160384,-6029312,-5881382,-5767168,-5636096,-5505024,-5373952
-  ,-5228418,-5110384,-4954923,-4880576,-4710990,-4587364,-4471340,-4333905,-4211513,-4051293
-  ,-3907927,-3800105,-3675961,-3538640,-3413663,-3271148,-3152105,-3019103,-2869647,-2744015
-  ,-2620639,-2479385,-2364211,-2227611,-2095427,-1974497,-1834168,-1703561,-1568961,-1439826
-  ,-1309192,-1174050,-1050191,-917836,-786015,-656943,-518934,-394831,-257708,-128041
-  ,1610,128991,264442,393977,521383,653849,788164,918641,1049122,1181971
-  ,1308934,1439505,1571808,1706305,1836318,1966235,2097269,2228990,2357005,2490292
-  ,2617400,2749680,2881234,3014880,3145637,3276467,3409099,3536637,3671493,3802918
-  ,3929740,4065036,4194143,4325999,4456126,4586857,4717194,4843923,4978676,5110913
-  ,5245281,5371394,5499780,5633779,5762611,5897682,6028688,6167546,6296465,6421682
-  ,6548882,6682074,6809432,6941956,7078143,7204509,7334296,7475137,7609896,7732044
-  ,7861604,8002039,8131670,8259222,8390299,8522399,8650037,8782348,8908402,9037815
-  ,9164594,9300338,9434679,9574500,9699702,9833934,9948152,10083972,10244937,10332822
-  ,10485760,10600122,10760754,10892964,11010048,11111004,11272192,11403264,11525091,11624984
-  ,11796480,11915146,-393216,-262144,-101702,-740,100568,262144,393216,-786432
-  ,-655360,-524288,-383907,-243301,-94956,-156,95547,269629,416691,524288
-  ,655360,-393216,-262144,-88448,-37,87318,262144,393216,524288,-917504
-  ,-786432,-655360,-495894,-373308,-267503,-93211,4119,91308,250895,393216
-  ,526138,655360,786432,917504,-786432,-655360,-524288,-393216,-262144,-83497
-  ,222,86893,240922,393216,524288,-1048576,-917504,-790472,-655360,-508639
-  ,-383609,-262016,-95550,-3775,96692,256797,364847,534906,655360,786432
-  ,889679,1048576,1179648,1310720,1441792,-655360,-524288,-377684,-248408,-93690
-  ,1261,95441,227519,393216,524288,655360,786432,917504,-2097152,-1966080
-  ,-1809470,-1703936,-1572864,-1441792,-1314289,-1195149,-1056205,-917504,-809951,-657769
-  ,-521072,-383788,-248747,-106350,-2944,105550,243408,388548,521064,628732
-  ,786432,885456,1064548,1179648,1310720,1441792,1572864,1703936,1835008,-1441792
-  ,-1310720,-1179648,-1037570,-888492,-767774,-646634,-519935,-373458,-248029,-111915
-  ,760,111232,247735,379432,507672,672699,786432,917504,1048576,1179648
-  ,1310720,1441792,-4456448,-4325376,-4194304,-4063232,-3932160,-3801088,-3670016,-3538944
-  ,-3407872,-3276800,-3145728,-3014656,-2883584,-2752512,-2647002,-2490368,-2359296,-2228224
-  ,-2097152,-1951753,-1835008,-1703936,-1594177,-1462001,-1289150,-1160774,-1025917,-924928
-  ,-782509,-641294,-516191,-386630,-251910,-118886,5210,121226,253949,386008
-  ,517973,649374,780064,917783,1052462,1183856,1290593,1419389,1556641,1699884
-  ,1835008,1988314,2090470,2228224,2359296,2490368,2621440,2752512,2883584,-3801088
-  ,-3643514,-3539937,-3409931,-3263294,-3145658,-3012952,-2879230,-2752359,-2622556,-2483471
-  ,-2357556,-2226500,-2093112,-1965892,-1833664,-1701035,-1567767,-1440320,-1310556,-1178339
-  ,-1049625,-916812,-786477,-655277,-525050,-393773,-264828,-130696,-480,132126
-  ,260116,394197,527846,652294,785563,917183,1049511,1175958,1308161,1438759
-  ,1572253,1698835,1828535,1967072,2089391,2212798,2348901,2461547,2621440,2752512
-  ,2883584,-7309870,-7203780,-7062699,-6939106,-6790819,-6672036,-6553600,-6422317,-6288422
-  ,-6164694,-6026456,-5901410,-5754168,-5621459,-5502710,-5369686,-5240454,-5120712,-4976140
-  ,-4847970,-4723070,-4589083,-4450923,-4324680,-4189892,-4065551,-3931803,-3800209,-3668539
-  ,-3539395,-3404801,-3277470,-3141389,-3016710,-2885724,-2752612,-2618541,-2486762,-2354153
-  ,-2225059,-2094984,-1968194,-1830895,-1699508,-1575743,-1444516,-1308683,-1179714,-1053088
-  ,-917981,-783707,-653900,-524980,-395409,-260309,-131948,-3452,132113,263241
-  ,392185,522597,654134,788288,919810,1045795,1179210,1314201,1444235,1574447
-  ,1705193,1834009,1967332,2098102,2229019,2359147,2489859,2619878,2754966,2879671
-  ,3014438,3146143,3276733,3405958,3542196,3667493,3798815,3932961,4062458,4187125
-  ,4322346,4454875,4587752,4716809,4848274,4975027,5111957,5242215,5373085,5501158
-  ,5640140,5762918,5895358,6024008,6157906,6290628,6422713,6546339,6675888,6815606
-  ,6955288,7077501,7211630,7337893,7473635,7607175,7728310,7866475,7999658,8127888
-  ,8241758,8386483,8522550,8641582,8771915,8922139,9038632,9179385,9313426,9437184
-  ,9568256,9699328,9830400,9952933,10120004,10223616,10354688,10474645,10616832,-393216
-  ,-262144,-85425,-121,82533,262144,393216,-786432,-655360,-524288,-379928
-  ,-222821,-95200,287,95541,227093,393216,493567,655360,786432,-393216
-  ,-262144,-86805,510,86722,262144,393216,524288,-1048576,-917504,-786432
-  ,-624456,-529951,-395071,-241627,-101168,81,99975,241605,393216,524288
-  ,655360,786432,917504,-786432,-655360,-524288,-393216,-230359,-95619,-137
-  ,94425,226222,393216,524288,-1179648,-1048576,-917504,-773841,-655360,-492258
-  ,-379715,-244707,-103621,-434,104523,242680,381575,523659,650565,786432
-  ,917504,1048576,1179648,1310720,-786432,-629344,-524288,-376757,-242858,-101932
-  ,-2715,107155,239212,366480,514943,655360,786432,917504,-2228224,-2097152
-  ,-1966080,-1835008,-1703936,-1572864,-1441792,-1284584,-1179648,-1048819,-934658,-777181
-  ,-626371,-515660,-377493,-248975,-113036,436,113584,248354,379718,512475
-  ,653932,796494,917504,1048576,1179648,1310720,1441792,1572864,1703936,1835008
-  ,-1572864,-1441792,-1297608,-1161159,-1032316,-917092,-779770,-647384,-515529,-384269
-  ,-250003,-119252,1053,118111,249512,380545,512039,648101,770656,907003
-  ,1021725,1178082,1310720,1441792,-4587520,-4456448,-4325376,-4194304,-4063232,-3932160
-  ,-3801088,-3670016,-3538944,-3407872,-3276800,-3145728,-2999335,-2883584,-2752512,-2621440
-  ,-2490368,-2359296,-2228224,-2112691,-1966080,-1848781,-1709830,-1566109,-1438427,-1303530
-  ,-1176124,-1040936,-913876,-784585,-652025,-518361,-385267,-256342,-127297,-2733
-  ,125422,257792,389363,519911,651106,783805,909407,1044143,1174156,1309267
-  ,1436173,1553771,1708958,1814083,1967036,2095386,2255169,2359296,2478303,2621440
-  ,2752512,-4456448,-4325376,-4194304,-4063232,-3932160,-3797524,-3670016,-3560250,-3413217
-  ,-3257719,-3166416,-2986626,-2878000,-2781144,-2625383,-2495465,-2346792,-2230930,-2077063
-  ,-1949225,-1819274,-1697261,-1568664,-1443074,-1304302,-1175289,-1043794,-913423,-785561
-  ,-652104,-522835,-392667,-260517,-130088,-2,129509,260990,391931,522470
-  ,655770,784902,917093,1046445,1176951,1303121,1441362,1565401,1702022,1822856
-  ,1952852,2090384,2214607,2338436,2457483,2621440,-8781824,-8650752,-8519680,-8388608
-  ,-8260828,-8126464,-8003337,-7859030,-7750057,-7602176,-7471104,-7340032,-7193045,-7090588
-  ,-6946816,-6843344,-6676635,-6557575,-6447804,-6277614,-6159736,-6035729,-5884723,-5739567
-  ,-5634818,-5489867,-5372864,-5243300,-5098939,-4988639,-4856258,-4728494,-4591717,-4447428
-  ,-4322409,-4192918,-4062638,-3934141,-3797545,-3673373,-3531587,-3407391,-3277404,-3147797
-  ,-3013578,-2886548,-2749811,-2616428,-2490949,-2361301,-2228482,-2096883,-1964343,-1831754
-  ,-1702201,-1572495,-1442012,-1309242,-1182451,-1048996,-916905,-786510,-657079,-524730
-  ,-393672,-261313,-128743,166,130678,261334,393287,524155,655570,786839
-  ,917353,1052167,1179013,1309360,1442634,1571153,1703961,1832027,1965014,2097912
-  ,2224861,2355341,2490455,2623051,2753484,2877015,3015783,3144157,3273705,3405255
-  ,3542006,3669580,3802417,3935413,4065088,4190896,4333521,4456355,4579781,4713832
-  ,4845707,4978625,5113278,5243817,5382318,5500592,5638135,5761179,5900822,6029270
-  ,6186398,6297816,6436435,6559163,6666389,6806548,6950461,7086078,7195777,7350973
-  ,7480132,7614852,7743514,7847288,8014762,8126464,8257536,8388608,8519680,8650752
-  ,8781824,8912896,9043968,9175040,9306112,9437184
-};
-
-
-
-const int16_t WebRtcIsacfix_kLevelsShapeQ10[1735] = {
-  0,     0,    -1,     0,     0,     1,     0,     1,     0,  -821
-  ,     1,  -763,    -1,   656,  -620,     0,   633,  -636,     4,   615
-  ,  -630,     1,   649, -1773,  -670,     5,   678,  1810, -1876,  -676
-  ,     0,   691,  1843, -1806,  -743,    -1,   749,  1795,  2920, -2872
-  , -1761,  -772,    -3,   790,  1763,  2942,     0,     0,     0,     0
-  ,  -792,     2,     0,     0,     1,     0,  -854,     0,  -702,    -1
-  ,   662,  -624,    -5,   638,  -611,    -6,   638,  -647,     0,   651
-  ,  -685,    -4,   679,  2123, -1814,  -693,     0,   664,  1791, -1735
-  ,  -737,     0,   771,  1854,  2873, -2867, -1842,  -793,    -1,   821
-  ,  1826,  2805,  3922,     0,     0,     0,    -1,  -779,     1,   786
-  ,     1,  -708,     0,   789,  -799,     1,   797,  -663,     2,   646
-  ,  -600,     3,   609,  -600,     1,   658,  1807,  -627,    -3,   612
-  ,  -625,     3,   632, -1732,  -674,     1,   672,  2048, -1768,  -715
-  ,     0,   724,  1784, -3881, -3072, -1774,  -719,    -1,   730,  1811
-  , -2963, -1829,  -806,    -1,   816,  1795,  3050, -5389, -3784, -2942
-  , -1893,  -865,   -12,   867,  1885,  2945,  3928,    -2,     1,     4
-  ,     0,  -694,     2,   665,  -598,     5,   587,  -599,    -1,   661
-  ,  -656,    -7,   611,  -607,     5,   603,  -618,    -4,   620, -1794
-  ,  -645,    -2,   654,  -655,    -1,   658, -1801,  -700,     5,   707
-  ,  1927, -1752,  -745,    -8,   752,  1843, -2838, -1781,  -801,    11
-  ,   796,  1811,  2942,  3866, -3849, -3026, -1848,  -819,     2,   827
-  ,  1825,  2963, -3873, -2904, -1869,  -910,    -6,   903,  1902,  2885
-  ,  3978,  5286, -7168, -6081, -4989, -3968, -2963, -1970,  -943,    -2
-  ,   953,  1951,  2968,  3974,  5009,  6032,    -2,     3, -1024,     2
-  ,  1024,  -637,     1,   669,  -613,    -7,   630,  -603,     4,   612
-  ,  -612,     0,   590,  -645,   -11,   627,  -657,    -2,   671,  1849
-  , -1853,  -694,     2,   702,  1838, -3304, -1780,  -736,    -8,   732
-  ,  1772, -1709,  -755,    -6,   760,  1780, -2994, -1780,  -800,     8
-  ,   819,  1830,  2816, -4096, -2822, -1881,  -851,    -4,   855,  1872
-  ,  2840,  3899, -3908, -2904, -1878,  -887,     6,   897,  1872,  2942
-  ,  4008, -4992, -3881, -2933, -1915,  -928,     1,   937,  1919,  2900
-  ,  4009,  4881, -6848, -6157, -5065, -3981, -2983, -1972,  -978,    -1
-  ,   968,  1979,  2988,  4008,  5007,  6108,  7003,  8051,  9027,-13272
-  ,-12012,-11228,-10213, -9261, -8084, -7133, -6075, -5052, -4050, -3036
-  , -2014,  -996,    -4,  1007,  2031,  3038,  4049,  5074,  6134,  7069
-  ,  8094,  9069, 10212, 11049, 12104,    51, -1024,   -13,  1024,  -609
-  ,  -107,   613, -2048,  -687,   -95,   667,  2048, -3072, -1724,  -785
-  ,   -34,   732,  1819, -2048,  -703,   -26,   681,  2048, -2048,  -686
-  ,    -9,   665,  2048, -2048,  -702,    37,   748,  1723, -4096, -2786
-  , -1844,  -837,    37,   811,  1742,  3072, -4096, -2783, -1848,  -881
-  ,    39,   898,  1843,  2792,  3764, -5120, -4096, -2923, -1833,  -852
-  ,   -14,   862,  1824,  2834,  4096, -6144, -5120, -3914, -2842, -1870
-  ,  -886,   -27,   888,  1929,  2931,  4051, -7168, -6144, -5120, -3866
-  , -2933, -1915,  -927,    64,   933,  1902,  2929,  3912,  5063,  6144
-  ,-11264,-10240, -9216, -8192, -7086, -6144, -5039, -3972, -2943, -1929
-  ,  -941,     3,   938,  1942,  2959,  3933,  4905,  6088,  6983,  8192
-  , -9216, -8192, -7202, -6088, -4983, -4019, -2955, -1975,  -966,    17
-  ,   997,  1981,  2967,  3990,  4948,  6022,  6967,  8192,-13312,-12288
-  ,-11264,-10240, -9216, -8049, -6997, -6040, -5026, -4043, -3029, -2034
-  , -1015,   -23,   984,  1997,  3010,  4038,  5002,  6015,  6946,  8061
-  ,  9216, 10240,-12381,-11264,-10240, -9060, -8058, -7153, -6085, -5075
-  , -4051, -3042, -2037, -1017,    -5,  1007,  2028,  3035,  4050,  5088
-  ,  6111,  7160,  8156,  9215, 10095, 11229, 12202, 13016,-26624,-25600
-  ,-24582,-23671,-22674,-21400,-20355,-19508,-18315,-17269,-16361,-15299
-  ,-14363,-13294,-12262,-11237,-10203, -9227, -8165, -7156, -6116, -5122
-  , -4076, -3056, -2043, -1020,    -8,  1027,  2047,  3065,  4110,  5130
-  ,  6125,  7168,  8195,  9206, 10230, 11227, 12256, 13304, 14281, 15316
-  , 16374, 17382, 18428, 19388, 20361, 21468, 22448, 23781,     0,     0
-  ,    -1,     0,    -2,  1024,     0,     0,     0,    -1,  1024, -1024
-  ,     1, -1024,     4,  1024, -1024,     2,  1024, -1024,     2,  1024
-  , -2048, -1024,    -4,  1024, -1024,     2,  1024, -2048, -1024,    -3
-  ,  1024,  2048, -2048, -1024,     4,  1024,  2048, -3072, -2048, -1024
-  ,    -1,   662,  2048,     0,     1,     0,     0,     1,    -2,    -2
-  ,     0,     2,  1024,    -1,  1024, -1024,     4,  1024, -1024,     1
-  ,  1024, -1024,     1,  1024, -2048,  -781,    -4,   844,  -807,    -5
-  ,   866, -2048,  -726,   -13,   777,  2048, -2048,  -643,    -4,   617
-  ,  2048,  3072, -3072, -2048,  -629,     1,   630,  2048,  3072,     0
-  ,    -1,     1,    -2,     2,     1, -1024,     5, -1024,     6,  1024
-  , -1024,     4,  1024, -1024,     1,  1024, -1024,    -9,  1024,  -673
-  ,    -7,   655, -2048,  -665,   -15,   716, -2048,  -647,     4,   640
-  ,  2048, -2048,  -615,    -1,   635,  2048, -2048,  -613,    10,   637
-  ,  2048,  3072, -3072, -2048,  -647,    -3,   641,  2048,  3072, -5120
-  , -4096, -3072, -2048,  -681,     6,   685,  2048,  3072,  4096,     1
-  ,     1,     0,    -1,  1024, -1024,    -3,  1024, -1024,     6,  1024
-  , -1024,    -1,   769,  -733,     0,  1024,  -876,    -2,   653, -1024
-  ,    -4,   786,  -596,   -13,   595,  -634,    -2,   638,  2048, -2048
-  ,  -620,    -5,   620,  2048, -4096, -3072, -2048,  -639,    11,   655
-  ,  2048,  3072, -3072, -2048,  -659,     5,   663,  2048, -3072, -1823
-  ,  -687,    22,   695,  2048,  3072,  4096, -4096, -3072, -1848,  -715
-  ,    -3,   727,  1816,  3072,  4096,  5120, -8192, -7168, -6144, -5120
-  , -4096, -2884, -1771,  -756,   -14,   775,  1844,  3072,  4096,  5120
-  ,  6144,    -1,     1,     0, -1024,     2,   815,  -768,     2,   708
-  , -1024,    -3,   693,  -661,    -7,   607,  -643,    -5,   609,  -624
-  ,     3,   631,  -682,    -3,   691,  2048, -2048,  -640,     5,   650
-  ,  2048, -3072, -2048,  -701,     9,   704,  2048,  3072, -3072, -2048
-  ,  -670,    10,   674,  2048,  3072, -5120, -4096, -3072, -1749,  -738
-  ,     0,   733,  1811,  3072,  4096,  5120, -4096, -3072, -1873,  -753
-  ,     0,   756,  1874,  3072,  4096, -5120, -4096, -2900, -1838,  -793
-  ,    -6,   793,  1868,  2837,  4096,  5120, -7168, -6144, -5120, -4096
-  , -2832, -1891,  -828,     1,   828,  1901,  2823,  3912,  5120,  6144
-  ,  7168,  8192,-13312,-12288,-11264,-10240, -9216, -8192, -7168, -6144
-  , -5120, -3976, -3004, -1911,  -869,     7,   869,  1932,  3024,  3992
-  ,  5009,  6144,  7168,  8192,  9216, 10240, 11264,    -4,  1024,  -629
-  ,   -22,   609,  -623,     9,   640, -2048,  -768,     1,   682, -2048
-  ,  -741,    49,   722,  2048, -3072, -1706,  -808,   -20,   768,  1750
-  , -1684,  -727,   -29,   788,  1840,  3033, -1758,  -784,     0,   801
-  ,  1702, -3072, -1813,  -814,    38,   820,  1884,  2927, -4096, -3241
-  , -1839,  -922,    25,   882,  1886,  2812, -4096, -2982, -1923,  -894
-  ,    84,   912,  1869,  2778,  4096, -4928, -3965, -2902, -1920,  -883
-  ,     3,   917,  1953,  2921,  3957,  4922,  6144,  7168, -5120, -3916
-  , -2897, -1949,  -930,    31,   959,  1934,  2901,  3851,  5120, -9216
-  , -8192, -7046, -6029, -5030, -4034, -2980, -1969, -1013,   -76,   963
-  ,  1963,  2901,  3929,  4893,  6270,  7168,  8192,  9216,-12288,-11264
-  ,-10240, -9216, -8192, -6846, -6123, -5108, -4008, -3000, -1963,  -954
-  ,    -6,   958,  1992,  3009,  4020,  5085,  6097,  7168,  8192,  9216
-  ,-11264,-10139, -9194, -8127, -7156, -6102, -5053, -4049, -3036, -2025
-  , -1009,   -34,   974,  1984,  3034,  4028,  5138,  6000,  7057,  8166
-  ,  9070, 10033, 11360, 12288,-13312,-12288,-10932,-10190, -9120, -8123
-  , -7128, -6103, -5074, -4081, -3053, -2029,  -989,    -4,  1010,  2028
-  ,  3051,  4073,  5071,  6099,  7132,  8147,  9295, 10159, 11023, 12263
-  , 13312, 14336,-25600,-24576,-23552,-22529,-21504,-20480,-19456,-18637
-  ,-17425,-16165,-15316,-14327,-13606,-12135,-11182,-10107, -9153, -8144
-  , -7146, -6160, -5129, -4095, -3064, -2038, -1025,     1,  1031,  2072
-  ,  3074,  4088,  5123,  6149,  7157,  8173,  9198, 10244, 11250, 12268
-  , 13263, 14289, 15351, 16370, 17402, 18413, 19474, 20337, 21386, 22521
-  , 23367, 24350,     0,     0,     0,     0,     0,     0,     0,     0
-  , -1024,     0,  1024, -1024,     0,  1024, -1024,     0,  1024, -1024
-  ,     0,  1024, -1024,     0,  1024,  -773,     0,  1024,  -674,     0
-  ,   645, -2048,  -745,     0,   628,  2048, -2048,  -712,     0,   681
-  ,  2048,  3072, -3072, -2048,  -673,     0,   682,  1964,  3257,     0
-  ,     0,     0,     0,     0,     0,     0,     0, -1024,     0,  1024
-  , -1024,     0,  1024, -1024,     0,  1024,  -705,     0,   623,  -771
-  ,     0,  1024,  -786,     0,   688,  -631,     0,   652,  2048, -2048
-  ,  -627,    -1,   666,  2048, -3072, -1756,  -694,     0,   674,  2048
-  , -3098, -1879,  -720,     5,   694,  1886,  2958,  4096,     0,     0
-  ,     0,     0,  1024,     0,     0,  1024,  -769,     0,  1024, -1024
-  ,     0,  1024, -1024,     0,  1024,  -817,     0,   734,  -786,     0
-  ,   651,  -638,     0,   637,  -623,     0,   671,  -652,     0,   619
-  ,  2048, -2048,  -670,    -1,   663,  2048, -1908,  -680,     1,   686
-  ,  2048,  3072,  4096, -4096, -3072, -1833,  -711,     0,   727,  1747
-  ,  3072,  4096, -4096, -2971, -1826,  -762,     2,   766,  1832,  2852
-  ,  3928,  5079,     0,     0,     0, -1024,     0,  1024, -1024,     0
-  ,  -656,     0,  1024,  -599,     0,   620, -1024,     0,  1024,  -603
-  ,     0,   622,  -643,     0,   660,  -599,     0,   611,  -641,    -1
-  ,   651,  2048, -2048,  -648,    -2,   647,  1798, -3072, -2048,  -672
-  ,     2,   670,  2048, -3072, -1780,  -694,    -1,   706,  1751,  3072
-  , -3072, -1862,  -757,     7,   739,  1798,  3072,  4096, -5120, -4096
-  , -3253, -1811,  -787,     3,   782,  1887,  3123,  4096, -7252, -6144
-  , -5354, -4060, -2864, -1863,  -820,   -11,   847,  1903,  2970,  3851
-  ,  4921,  5957,  7168,  8192,  9306,     0,     0, -1024,     0,  1024
-  ,  -726,     0,   706,  -692,     0,   593,  -598,     0,   616,  -624
-  ,     0,   616,  -605,     0,   613, -2048,  -652,     1,   635,  2048
-  , -2048,  -647,    -1,   660,  2048, -1811,  -668,    -2,   685,  2048
-  , -1796,  -731,    -2,   730,  1702,  3072, -3072, -1766,  -747,    -4
-  ,   756,  1770,  3072, -4096, -3024, -1762,  -783,     4,   771,  1781
-  ,  3072, -5120, -4057, -2807, -1832,  -822,     0,   816,  1804,  2851
-  ,  3949,  5120, -6144, -4899, -3927, -2920, -1893,  -874,    -2,   868
-  ,  1881,  2905,  3960,  4912,  6144, -9216, -8192, -7168, -6225, -4963
-  , -3943, -2956, -1890,  -902,     0,   897,  1914,  2916,  3984,  4990
-  ,  6050,  7168,-11264,-10217, -9114, -8132, -7035, -5988, -4984, -4000
-  , -2980, -1962,  -927,     7,   931,  1956,  2981,  4031,  4972,  6213
-  ,  7227,  8192,  9216, 10240, 11170, 12288, 13312, 14336,     0,  1024
-  ,  -557,     1,   571,  -606,    -4,   612, -1676,  -707,    10,   673
-  ,  2048, -2048,  -727,     5,   686, -3072, -1772,  -755,    12,   716
-  ,  1877, -1856,  -786,     2,   786,  1712, -1685,  -818,   -16,   863
-  ,  1729, -3072, -1762,  -857,     3,   866,  1838,  2841, -3862, -2816
-  , -1864,  -925,    -2,   923,  1897,  2779, -2782, -1838,  -920,   -28
-  ,   931,  1951,  2835,  3804, -4815, -4001, -2940, -1934,  -959,   -22
-  ,   975,  1957,  2904,  3971,  4835, -5148, -3892, -2944, -1953,  -986
-  ,   -11,   989,  1968,  2939,  3949,  4947,  5902, -9216, -8192, -6915
-  , -6004, -4965, -4013, -3009, -1977,  -987,    -1,   982,  1972,  3000
-  ,  3960,  4939,  5814, -8976, -7888, -7084, -5955, -5043, -4009, -2991
-  , -2002, -1000,    -8,   993,  2011,  3023,  4026,  5028,  6023,  7052
-  ,  8014,  9216,-11240,-10036, -9125, -8118, -7105, -6062, -5048, -4047
-  , -3044, -2025, -1009,    -1,  1011,  2023,  3042,  4074,  5085,  6108
-  ,  7119,  8142,  9152, 10114, 11141, 12250, 13307,-15360,-14099,-13284
-  ,-12291,-11223,-10221, -9152, -8147, -7128, -6104, -5077, -4072, -3062
-  , -2033, -1020,     7,  1018,  2038,  3059,  4081,  5084,  6109,  7102
-  ,  8128,  9134, 10125, 11239, 12080,-23552,-22528,-21504,-20480,-19456
-  ,-18159,-17240,-16291,-15364,-14285,-13305,-12271,-11233,-10217, -9198
-  , -8175, -7157, -6134, -5122, -4089, -3071, -2047, -1018,     3,  1026
-  ,  2041,  3077,  4090,  5108,  6131,  7150,  8172,  9175, 10196, 11272
-  , 12303, 13273, 14328, 15332, 16334, 17381, 18409, 19423, 20423, 21451
-  , 22679, 23391, 24568, 25600, 26589
-};
-
-/* cdf tables for quantizer indices */
-const uint16_t WebRtcIsacfix_kCdfGain[1212] = {
-  0,  13,  301,  3730,  61784,  65167,  65489,  65535,  0,  17,
-  142,  314,  929,  2466,  7678,  56450,  63463,  64740,  65204,  65426,
-  65527,  65535,  0,  8,  100,  724,  6301,  60105,  65125,  65510,
-  65531,  65535,  0,  13,  117,  368,  1068,  3010,  11928,  53603,
-  61177,  63404,  64505,  65108,  65422,  65502,  65531,  65535,  0,  4,
-  17,  96,  410,  1859,  12125,  54361,  64103,  65305,  65497,  65535,
-  0,  4,  88,  230,  469,  950,  1746,  3228,  6092,  16592,
-  44756,  56848,  61256,  63308,  64325,  64920,  65309,  65460,  65502,  65522,
-  65535,  0,  88,  352,  1675,  6339,  20749,  46686,  59284,  63525,
-  64949,  65359,  65502,  65527,  65535,  0,  13,  38,  63,  117,
-  234,  381,  641,  929,  1407,  2043,  2809,  4032,  5753,  8792,
-  14407,  24308,  38941,  48947,  55403,  59293,  61411,  62688,  63630,  64329,
-  64840,  65188,  65376,  65472,  65506,  65527,  65531,  65535,  0,  8,
-  29,  75,  222,  615,  1327,  2801,  5623,  9931,  16094,  24966,
-  34419,  43458,  50676,  56186,  60055,  62500,  63936,  64765,  65225,  65435,
-  65514,  65535,  0,  8,  13,  15,  17,  21,  33,  59,
-  71,  92,  151,  243,  360,  456,  674,  934,  1223,  1583,
-  1989,  2504,  3031,  3617,  4354,  5154,  6163,  7411,  8780,  10747,
-  12874,  15591,  18974,  23027,  27436,  32020,  36948,  41830,  46205,  49797,
-  53042,  56094,  58418,  60360,  61763,  62818,  63559,  64103,  64509,  64798,
-  65045,  65162,  65288,  65363,  65447,  65506,  65522,  65531,  65533,  65535,
-  0,  4,  6,  25,  38,  71,  138,  264,  519,  808,
-  1227,  1825,  2516,  3408,  4279,  5560,  7092,  9197,  11420,  14108,
-  16947,  20300,  23926,  27459,  31164,  34827,  38575,  42178,  45540,  48747,
-  51444,  54090,  56426,  58460,  60080,  61595,  62734,  63668,  64275,  64673,
-  64936,  65112,  65217,  65334,  65426,  65464,  65477,  65489,  65518,  65527,
-  65529,  65531,  65533,  65535,  0,  2,  4,  8,  10,  12,
-  14,  16,  21,  33,  50,  71,  84,  92,  105,  138,
-  180,  255,  318,  377,  435,  473,  511,  590,  682,  758,
-  913,  1097,  1256,  1449,  1671,  1884,  2169,  2445,  2772,  3157,
-  3563,  3944,  4375,  4848,  5334,  5820,  6448,  7101,  7716,  8378,
-  9102,  9956,  10752,  11648,  12707,  13670,  14758,  15910,  17187,  18472,
-  19627,  20649,  21951,  23169,  24283,  25552,  26862,  28227,  29391,  30764,
-  31882,  33213,  34432,  35600,  36910,  38116,  39464,  40729,  41872,  43144,
-  44371,  45514,  46762,  47813,  48968,  50069,  51032,  51974,  52908,  53737,
-  54603,  55445,  56282,  56990,  57572,  58191,  58840,  59410,  59887,  60264,
-  60607,  60946,  61269,  61516,  61771,  61960,  62198,  62408,  62558,  62776,
-  62985,  63207,  63408,  63546,  63739,  63906,  64070,  64237,  64371,  64551,
-  64677,  64836,  64999,  65095,  65213,  65284,  65338,  65380,  65426,  65447,
-  65472,  65485,  65487,  65489,  65502,  65510,  65512,  65514,  65516,  65518,
-  65522,  65531,  65533,  65535,  0,  2,  4,  6,  65528,  65531,
-  65533,  65535,  0,  2,  4,  6,  8,  10,  222,  65321,
-  65513,  65528,  65531,  65533,  65535,  0,  2,  4,  50,  65476,
-  65529,  65531,  65533,  65535,  0,  2,  4,  6,  8,  12,
-  38,  544,  64936,  65509,  65523,  65525,  65529,  65531,  65533,  65535,
-  0,  2,  4,  6,  8,  10,  1055,  64508,  65528,  65531,
-  65533,  65535,  0,  2,  4,  6,  8,  10,  12,  123,
-  3956,  62999,  65372,  65495,  65515,  65521,  65523,  65525,  65527,  65529,
-  65531,  65533,  65535,  0,  2,  4,  12,  53,  4707,  59445,
-  65467,  65525,  65527,  65529,  65531,  65533,  65535,  0,  2,  4,
-  6,  8,  10,  12,  14,  16,  38,  40,  50,  67,
-  96,  234,  929,  14345,  55750,  64866,  65389,  65462,  65514,  65517,
-  65519,  65521,  65523,  65525,  65527,  65529,  65531,  65533,  65535,  0,
-  2,  4,  6,  8,  10,  15,  35,  91,  377,  1946,
-  13618,  52565,  63714,  65184,  65465,  65520,  65523,  65525,  65527,  65529,
-  65531,  65533,  65535,  0,  2,  4,  6,  8,  10,  12,
-  14,  16,  18,  20,  22,  24,  26,  28,  30,  32,
-  34,  36,  38,  40,  42,  44,  46,  48,  50,  52,
-  54,  82,  149,  362,  751,  1701,  4239,  12893,  38627,  55072,
-  60875,  63071,  64158,  64702,  65096,  65283,  65412,  65473,  65494,  65505,
-  65508,  65517,  65519,  65521,  65523,  65525,  65527,  65529,  65531,  65533,
-  65535,  0,  2,  15,  23,  53,  143,  260,  418,  698,
-  988,  1353,  1812,  2411,  3144,  4015,  5143,  6401,  7611,  8999,
-  10653,  12512,  14636,  16865,  19404,  22154,  24798,  27521,  30326,  33102,
-  35790,  38603,  41415,  43968,  46771,  49435,  52152,  54715,  57143,  59481,
-  61178,  62507,  63603,  64489,  64997,  65257,  65427,  65473,  65503,  65520,
-  65529,  65531,  65533,  65535,  0,  3,  6,  9,  26,  32,
-  44,  46,  64,  94,  111,  164,  205,  254,  327,  409,
-  506,  608,  733,  885,  1093,  1292,  1482,  1742,  1993,  2329,
-  2615,  3029,  3374,  3798,  4257,  4870,  5405,  5992,  6618,  7225,
-  7816,  8418,  9051,  9761,  10532,  11380,  12113,  13010,  13788,  14594,
-  15455,  16361,  17182,  18088,  18997,  20046,  20951,  21968,  22947,  24124,
-  25296,  26547,  27712,  28775,  29807,  30835,  31709,  32469,  33201,  34014,
-  34876,  35773,  36696,  37620,  38558,  39547,  40406,  41277,  42367,  43290,
-  44445,  45443,  46510,  47684,  48973,  50157,  51187,  52242,  53209,  54083,
-  55006,  55871,  56618,  57293,  57965,  58556,  59222,  59722,  60180,  60554,
-  60902,  61250,  61554,  61837,  62100,  62372,  62631,  62856,  63078,  63324,
-  63557,  63768,  63961,  64089,  64235,  64352,  64501,  64633,  64770,  64887,
-  65001,  65059,  65121,  65188,  65246,  65302,  65346,  65390,  65428,  65463,
-  65477,  65506,  65515,  65517,  65519,  65521,  65523,  65525,  65527,  65529,
-  65531,  65533,  65535,  0,  2,  4,  109,  65332,  65531,  65533,
-  65535,  0,  2,  4,  6,  8,  25,  1817,  63874,  65511,
-  65527,  65529,  65531,  65533,  65535,  0,  2,  4,  907,  65014,
-  65529,  65531,  65533,  65535,  0,  2,  4,  6,  8,  10,
-  12,  132,  2743,  62708,  65430,  65525,  65527,  65529,  65531,  65533,
-  65535,  0,  2,  4,  6,  8,  35,  3743,  61666,  65485,
-  65531,  65533,  65535,  0,  2,  4,  6,  8,  10,  23,
-  109,  683,  6905,  58417,  64911,  65398,  65497,  65518,  65525,  65527,
-  65529,  65531,  65533,  65535,  0,  2,  4,  6,  53,  510,
-  10209,  55212,  64573,  65441,  65522,  65529,  65531,  65533,  65535,  0,
-  2,  4,  6,  8,  10,  12,  14,  16,  18,  20,
-  22,  32,  90,  266,  1037,  3349,  14468,  50488,  62394,  64685,
-  65341,  65480,  65514,  65519,  65521,  65523,  65525,  65527,  65529,  65531,
-  65533,  65535,  0,  2,  4,  6,  9,  16,  37,  106,
-  296,  748,  1868,  5733,  18897,  45553,  60165,  63949,  64926,  65314,
-  65441,  65508,  65524,  65529,  65531,  65533,  65535,  0,  2,  4,
-  6,  8,  10,  12,  14,  16,  18,  20,  22,  24,
-  26,  28,  30,  32,  34,  36,  38,  40,  42,  44,
-  46,  48,  50,  83,  175,  344,  667,  1293,  2337,  4357,
-  8033,  14988,  28600,  43244,  52011,  57042,  59980,  61779,  63065,  63869,
-  64390,  64753,  64988,  65164,  65326,  65422,  65462,  65492,  65506,  65522,
-  65524,  65526,  65531,  65533,  65535,  0,  2,  4,  6,  8,
-  10,  12,  14,  16,  25,  39,  48,  55,  62,  65,
-  85,  106,  139,  169,  194,  252,  323,  485,  688,  1074,
-  1600,  2544,  3863,  5733,  8303,  11397,  15529,  20273,  25734,  31455,
-  36853,  41891,  46410,  50306,  53702,  56503,  58673,  60479,  61880,  62989,
-  63748,  64404,  64852,  65124,  65309,  65424,  65480,  65524,  65528,  65533,
-  65535,  0,  2,  4,  6,  8,  10,  12,  14,  21,
-  23,  25,  27,  29,  31,  39,  41,  43,  48,  60,
-  72,  79,  106,  136,  166,  187,  224,  252,  323,  381,
-  427,  478,  568,  660,  783,  912,  1046,  1175,  1365,  1567,
-  1768,  2024,  2347,  2659,  3049,  3529,  4033,  4623,  5281,  5925,
-  6726,  7526,  8417,  9468,  10783,  12141,  13571,  15222,  16916,  18659,
-  20350,  22020,  23725,  25497,  27201,  29026,  30867,  32632,  34323,  36062,
-  37829,  39466,  41144,  42654,  43981,  45343,  46579,  47759,  49013,  50171,
-  51249,  52283,  53245,  54148,  54938,  55669,  56421,  57109,  57791,  58464,
-  59092,  59674,  60105,  60653,  61083,  61407,  61757,  62095,  62388,  62649,
-  62873,  63157,  63358,  63540,  63725,  63884,  64046,  64155,  64278,  64426,
-  64548,  64654,  64806,  64906,  64994,  65077,  65137,  65215,  65277,  65324,
-  65354,  65409,  65437,  65455,  65462,  65490,  65495,  65499,  65508,  65511,
-  65513,  65515,  65517,  65519,  65521,  65523,  65525,  65527,  65529,  65531,
-  65533,  65535
-};
-
-const uint16_t WebRtcIsacfix_kCdfShape[2059] = {
-  0,  65535,  0,  65535,  0,  65535,  0,  65535,  0,  65535,
-  0,  65535,  0,  65535,  0,  65535,  0,  65535,  0,  4,
-  65535,  0,  8,  65514,  65535,  0,  29,  65481,  65535,  0,
-  121,  65439,  65535,  0,  239,  65284,  65535,  0,  8,  779,
-  64999,  65527,  65535,  0,  8,  888,  64693,  65522,  65535,  0,
-  29,  2604,  62843,  65497,  65531,  65535,  0,  25,  176,  4576,
-  61164,  65275,  65527,  65535,  0,  65535,  0,  65535,  0,  65535,
-  0,  65535,  0,  4,  65535,  0,  65535,  0,  65535,  0,
-  65535,  0,  65535,  0,  4,  65535,  0,  33,  65502,  65535,
-  0,  54,  65481,  65535,  0,  251,  65309,  65535,  0,  611,
-  65074,  65535,  0,  1273,  64292,  65527,  65535,  0,  4,  1809,
-  63940,  65518,  65535,  0,  88,  4392,  60603,  65426,  65531,  65535,
-  0,  25,  419,  7046,  57756,  64961,  65514,  65531,  65535,  0,
-  65535,  0,  65535,  0,  65535,  0,  65535,  0,  4,  65531,
-  65535,  0,  65535,  0,  8,  65531,  65535,  0,  4,  65527,
-  65535,  0,  17,  65510,  65535,  0,  42,  65481,  65535,  0,
-  197,  65342,  65531,  65535,  0,  385,  65154,  65535,  0,  1005,
-  64522,  65535,  0,  8,  1985,  63469,  65533,  65535,  0,  38,
-  3119,  61884,  65514,  65535,  0,  4,  6,  67,  4961,  60804,
-  65472,  65535,  0,  17,  565,  9182,  56538,  65087,  65514,  65535,
-  0,  8,  63,  327,  2118,  14490,  52774,  63839,  65376,  65522,
-  65535,  0,  65535,  0,  65535,  0,  65535,  0,  65535,  0,
-  17,  65522,  65535,  0,  59,  65489,  65535,  0,  50,  65522,
-  65535,  0,  54,  65489,  65535,  0,  310,  65179,  65535,  0,
-  615,  64836,  65535,  0,  4,  1503,  63965,  65535,  0,  2780,
-  63383,  65535,  0,  21,  3919,  61051,  65527,  65535,  0,  84,
-  6674,  59929,  65435,  65535,  0,  4,  255,  7976,  55784,  65150,
-  65518,  65531,  65535,  0,  4,  8,  582,  10726,  53465,  64949,
-  65518,  65535,  0,  29,  339,  3006,  17555,  49517,  62956,  65200,
-  65497,  65531,  65535,  0,  2,  33,  138,  565,  2324,  7670,
-  22089,  45966,  58949,  63479,  64966,  65380,  65518,  65535,  0,  65535,
-  0,  65535,  0,  2,  65533,  65535,  0,  46,  65514,  65535,
-  0,  414,  65091,  65535,  0,  540,  64911,  65535,  0,  419,
-  65162,  65535,  0,  976,  64790,  65535,  0,  2977,  62495,  65531,
-  65535,  0,  4,  3852,  61034,  65527,  65535,  0,  4,  29,
-  6021,  60243,  65468,  65535,  0,  84,  6711,  58066,  65418,  65535,
-  0,  13,  281,  9550,  54917,  65125,  65506,  65535,  0,  2,
-  63,  984,  12108,  52644,  64342,  65435,  65527,  65535,  0,  29,
-  251,  2014,  14871,  47553,  62881,  65229,  65518,  65535,  0,  13,
-  142,  749,  4220,  18497,  45200,  60913,  64823,  65426,  65527,  65535,
-  0,  13,  71,  264,  1176,  3789,  10500,  24480,  43488,  56324,
-  62315,  64493,  65242,  65464,  65514,  65522,  65531,  65535,  0,  4,
-  13,  38,  109,  205,  448,  850,  1708,  3429,  6276,  11371,
-  19221,  29734,  40955,  49391,  55411,  59460,  62102,  63793,  64656,  65150,
-  65401,  65485,  65522,  65531,  65535,  0,  65535,  0,  2,  65533,
-  65535,  0,  1160,  65476,  65535,  0,  2,  6640,  64763,  65533,
-  65535,  0,  2,  38,  9923,  61009,  65527,  65535,  0,  2,
-  4949,  63092,  65533,  65535,  0,  2,  3090,  63398,  65533,  65535,
-  0,  2,  2520,  58744,  65510,  65535,  0,  2,  13,  544,
-  8784,  51403,  65148,  65533,  65535,  0,  2,  25,  1017,  10412,
-  43550,  63651,  65489,  65527,  65535,  0,  2,  4,  29,  783,
-  13377,  52462,  64524,  65495,  65533,  65535,  0,  2,  4,  6,
-  100,  1817,  18451,  52590,  63559,  65376,  65531,  65535,  0,  2,
-  4,  6,  46,  385,  2562,  11225,  37416,  60488,  65026,  65487,
-  65529,  65533,  65535,  0,  2,  4,  6,  8,  10,  12,
-  42,  222,  971,  5221,  19811,  45048,  60312,  64486,  65294,  65474,
-  65525,  65529,  65533,  65535,  0,  2,  4,  8,  71,  167,
-  666,  2533,  7875,  19622,  38082,  54359,  62108,  64633,  65290,  65495,
-  65529,  65533,  65535,  0,  2,  4,  6,  8,  10,  13,
-  109,  586,  1930,  4949,  11600,  22641,  36125,  48312,  56899,  61495,
-  63927,  64932,  65389,  65489,  65518,  65531,  65533,  65535,  0,  4,
-  6,  8,  67,  209,  712,  1838,  4195,  8432,  14432,  22834,
-  31723,  40523,  48139,  53929,  57865,  60657,  62403,  63584,  64363,  64907,
-  65167,  65372,  65472,  65514,  65535,  0,  2,  4,  13,  25,
-  42,  46,  50,  75,  113,  147,  281,  448,  657,  909,
-  1185,  1591,  1976,  2600,  3676,  5317,  7398,  9914,  12941,  16169,
-  19477,  22885,  26464,  29851,  33360,  37228,  41139,  44802,  48654,  52058,
-  55181,  57676,  59581,  61022,  62190,  63107,  63676,  64199,  64547,  64924,
-  65158,  65313,  65430,  65481,  65518,  65535,  0,  65535,  0,  65535,
-  0,  65535,  0,  65535,  0,  65533,  65535,  0,  65535,  0,
-  65535,  0,  65535,  0,  65533,  65535,  0,  2,  65535,  0,
-  2,  65533,  65535,  0,  2,  65533,  65535,  0,  2,  65533,
-  65535,  0,  2,  4,  65533,  65535,  0,  2,  65533,  65535,
-  0,  2,  4,  65531,  65533,  65535,  0,  2,  4,  65531,
-  65533,  65535,  0,  2,  4,  6,  65524,  65533,  65535,  0,
-  65535,  0,  65535,  0,  65535,  0,  65535,  0,  65535,  0,
-  65535,  0,  65535,  0,  65535,  0,  65533,  65535,  0,  65533,
-  65535,  0,  2,  65533,  65535,  0,  2,  65533,  65535,  0,
-  2,  65533,  65535,  0,  2,  4,  65532,  65535,  0,  6,
-  65523,  65535,  0,  2,  15,  65530,  65533,  65535,  0,  2,
-  35,  65493,  65531,  65533,  65535,  0,  2,  4,  158,  65382,
-  65531,  65533,  65535,  0,  65535,  0,  65535,  0,  65535,  0,
-  65535,  0,  65535,  0,  65535,  0,  2,  65535,  0,  2,
-  65533,  65535,  0,  2,  65533,  65535,  0,  2,  65533,  65535,
-  0,  2,  65533,  65535,  0,  9,  65512,  65535,  0,  2,
-  12,  65529,  65535,  0,  2,  73,  65434,  65533,  65535,  0,
-  2,  240,  65343,  65533,  65535,  0,  2,  476,  65017,  65531,
-  65533,  65535,  0,  2,  4,  1046,  64686,  65531,  65533,  65535,
-  0,  2,  4,  6,  8,  1870,  63898,  65529,  65531,  65533,
-  65535,  0,  65535,  0,  65535,  0,  65535,  0,  65533,  65535,
-  0,  2,  65533,  65535,  0,  2,  65533,  65535,  0,  2,
-  65532,  65535,  0,  6,  65533,  65535,  0,  6,  65523,  65535,
-  0,  2,  65532,  65535,  0,  137,  65439,  65535,  0,  576,
-  64899,  65533,  65535,  0,  2,  289,  65299,  65533,  65535,  0,
-  2,  4,  6,  880,  64134,  65531,  65533,  65535,  0,  2,
-  4,  1853,  63347,  65533,  65535,  0,  2,  6,  2516,  61762,
-  65529,  65531,  65533,  65535,  0,  2,  4,  9,  3980,  61380,
-  65503,  65529,  65531,  65533,  65535,  0,  2,  4,  6,  8,
-  10,  12,  61,  6393,  59859,  65466,  65527,  65529,  65531,  65533,
-  65535,  0,  65535,  0,  65535,  0,  65535,  0,  2,  65532,
-  65535,  0,  3,  65529,  65535,  0,  2,  65529,  65535,  0,
-  61,  65453,  65535,  0,  234,  65313,  65535,  0,  503,  65138,
-  65535,  0,  155,  65402,  65533,  65535,  0,  2,  1058,  64554,
-  65533,  65535,  0,  2,  4,  3138,  62109,  65531,  65533,  65535,
-  0,  2,  4,  2031,  63339,  65531,  65533,  65535,  0,  2,
-  4,  6,  9,  4155,  60778,  65523,  65529,  65531,  65533,  65535,
-  0,  2,  4,  41,  6189,  59269,  65490,  65531,  65533,  65535,
-  0,  2,  4,  6,  210,  8789,  57043,  65400,  65528,  65531,
-  65533,  65535,  0,  2,  4,  6,  8,  26,  453,  10086,
-  55499,  64948,  65483,  65524,  65527,  65529,  65531,  65533,  65535,  0,
-  2,  4,  6,  8,  10,  12,  14,  16,  18,  20,
-  114,  1014,  11202,  52670,  64226,  65356,  65503,  65514,  65523,  65525,
-  65527,  65529,  65531,  65533,  65535,  0,  65533,  65535,  0,  15,
-  65301,  65535,  0,  152,  64807,  65535,  0,  2,  3328,  63308,
-  65535,  0,  2,  4050,  59730,  65533,  65535,  0,  2,  164,
-  10564,  61894,  65529,  65535,  0,  15,  6712,  59831,  65076,  65532,
-  65535,  0,  32,  7712,  57449,  65459,  65535,  0,  2,  210,
-  7849,  53110,  65021,  65523,  65535,  0,  2,  12,  1081,  13883,
-  48262,  62870,  65477,  65535,  0,  2,  88,  847,  6145,  37852,
-  62012,  65454,  65533,  65535,  0,  9,  47,  207,  1823,  14522,
-  45521,  61069,  64891,  65481,  65528,  65531,  65533,  65535,  0,  2,
-  9,  488,  2881,  12758,  38703,  58412,  64420,  65410,  65533,  65535,
-  0,  2,  4,  6,  61,  333,  1891,  6486,  19720,  43188,
-  57547,  62472,  64796,  65421,  65497,  65523,  65529,  65531,  65533,  65535,
-  0,  2,  4,  6,  8,  10,  12,  29,  117,  447,
-  1528,  6138,  21242,  43133,  56495,  62432,  64746,  65362,  65500,  65529,
-  65531,  65533,  65535,  0,  2,  18,  105,  301,  760,  1490,
-  3472,  7568,  15002,  26424,  40330,  53029,  60048,  62964,  64274,  64890,
-  65337,  65445,  65489,  65513,  65527,  65530,  65533,  65535,  0,  2,
-  4,  6,  41,  102,  409,  853,  2031,  4316,  7302,  11328,
-  16869,  24825,  34926,  43481,  50877,  56126,  59874,  62103,  63281,  63857,
-  64166,  64675,  65382,  65522,  65531,  65533,  65535,  0,  2,  4,
-  6,  8,  10,  12,  14,  16,  18,  29,  38,  53,
-  58,  96,  181,  503,  1183,  2849,  5590,  8600,  11379,  13942,
-  16478,  19453,  22638,  26039,  29411,  32921,  37596,  41433,  44998,  48560,
-  51979,  55106,  57666,  59892,  61485,  62616,  63484,  64018,  64375,  64685,
-  64924,  65076,  65278,  65395,  65471,  65509,  65529,  65535,  0,  65535,
-  0,  65535,  0,  65535,  0,  65535,  0,  65535,  0,  65535,
-  0,  65535,  0,  65535,  0,  2,  65533,  65535,  0,  2,
-  65533,  65535,  0,  2,  65533,  65535,  0,  2,  65533,  65535,
-  0,  2,  65533,  65535,  0,  2,  65533,  65535,  0,  7,
-  65519,  65535,  0,  2,  14,  65491,  65533,  65535,  0,  2,
-  81,  65427,  65531,  65533,  65535,  0,  2,  4,  312,  65293,
-  65528,  65533,  65535,  0,  65535,  0,  65535,  0,  65535,  0,
-  65535,  0,  65535,  0,  65535,  0,  65535,  0,  65535,  0,
-  2,  65533,  65535,  0,  2,  65533,  65535,  0,  2,  65533,
-  65535,  0,  5,  65523,  65535,  0,  2,  65533,  65535,  0,
-  7,  65526,  65535,  0,  46,  65464,  65533,  65535,  0,  2,
-  120,  65309,  65533,  65535,  0,  2,  5,  362,  65097,  65533,
-  65535,  0,  2,  18,  1164,  64785,  65528,  65531,  65533,  65535,
-  0,  65535,  0,  65535,  0,  65535,  0,  65533,  65535,  0,
-  65535,  0,  65533,  65535,  0,  2,  65533,  65535,  0,  2,
-  65533,  65535,  0,  2,  65533,  65535,  0,  2,  65530,  65535,
-  0,  2,  65523,  65535,  0,  69,  65477,  65535,  0,  141,
-  65459,  65535,  0,  194,  65325,  65533,  65535,  0,  2,  543,
-  64912,  65533,  65535,  0,  5,  1270,  64301,  65529,  65531,  65533,
-  65535,  0,  2,  4,  12,  2055,  63538,  65508,  65531,  65533,
-  65535,  0,  2,  7,  102,  3775,  61970,  65429,  65526,  65528,
-  65533,  65535,  0,  65535,  0,  65535,  0,  65535,  0,  2,
-  65533,  65535,  0,  2,  65535,  0,  9,  65533,  65535,  0,
-  25,  65512,  65535,  0,  2,  65533,  65535,  0,  44,  65480,
-  65535,  0,  48,  65475,  65535,  0,  162,  65373,  65535,  0,
-  637,  64806,  65533,  65535,  0,  2,  935,  64445,  65533,  65535,
-  0,  2,  4,  1662,  64083,  65533,  65535,  0,  2,  12,
-  3036,  62469,  65521,  65533,  65535,  0,  2,  120,  5405,  60468,
-  65469,  65531,  65533,  65535,  0,  2,  4,  18,  254,  6663,
-  58999,  65272,  65528,  65533,  65535,  0,  2,  4,  9,  12,
-  67,  591,  8981,  56781,  64564,  65365,  65508,  65524,  65526,  65529,
-  65531,  65533,  65535,  0,  65535,  0,  65535,  0,  2,  65533,
-  65535,  0,  9,  65526,  65535,  0,  14,  65503,  65535,  0,
-  127,  65390,  65535,  0,  517,  64990,  65535,  0,  178,  65330,
-  65535,  0,  2,  1055,  64533,  65533,  65535,  0,  2,  1558,
-  63942,  65533,  65535,  0,  2,  2205,  63173,  65533,  65535,  0,
-  25,  4493,  60862,  65505,  65533,  65535,  0,  2,  48,  5890,
-  59442,  65482,  65533,  65535,  0,  2,  4,  127,  7532,  58191,
-  65394,  65533,  65535,  0,  2,  5,  32,  550,  10388,  54924,
-  65046,  65510,  65531,  65533,  65535,  0,  2,  4,  30,  150,
-  1685,  14340,  51375,  63619,  65288,  65503,  65528,  65533,  65535,  0,
-  2,  4,  6,  8,  28,  97,  473,  2692,  15407,  50020,
-  62880,  65064,  65445,  65508,  65531,  65533,  65535,  0,  2,  4,
-  12,  32,  79,  150,  372,  907,  2184,  5868,  18207,  45431,
-  59856,  64031,  65096,  65401,  65481,  65507,  65521,  65523,  65525,  65527,
-  65529,  65531,  65533,  65535,  0,  65533,  65535,  0,  182,  65491,
-  65535,  0,  877,  64286,  65535,  0,  9,  2708,  63612,  65533,
-  65535,  0,  2,  6038,  59532,  65535,  0,  2,  92,  5500,
-  60539,  65533,  65535,  0,  268,  8908,  56512,  65385,  65535,  0,
-  129,  13110,  52742,  65036,  65535,  0,  2,  806,  14003,  51929,
-  64732,  65523,  65535,  0,  7,  92,  2667,  18159,  47678,  62610,
-  65355,  65535,  0,  32,  1836,  19676,  48237,  61677,  64960,  65526,
-  65535,  0,  21,  159,  967,  5668,  22782,  44709,  58317,  64020,
-  65406,  65528,  65535,  0,  7,  162,  1838,  8328,  23929,  43014,
-  56394,  63374,  65216,  65484,  65521,  65535,  0,  2,  4,  6,
-  28,  268,  1120,  3613,  10688,  24185,  40989,  54917,  61684,  64510,
-  65403,  65530,  65535,  0,  2,  16,  44,  139,  492,  1739,
-  5313,  13558,  26766,  41566,  52446,  58937,  62815,  64480,  65201,  65454,
-  65524,  65533,  65535,  0,  7,  25,  76,  263,  612,  1466,
-  3325,  6832,  12366,  20152,  29466,  39255,  47360,  53506,  57740,  60726,
-  62845,  64131,  64882,  65260,  65459,  65521,  65528,  65530,  65535,  0,
-  2,  4,  14,  48,  136,  312,  653,  1240,  2369,  4327,
-  7028,  10759,  15449,  21235,  28027,  35386,  42938,  49562,  54990,  59119,
-  62086,  63916,  64863,  65249,  65445,  65493,  65523,  65535,  0,  2,
-  4,  6,  8,  10,  12,  21,  83,  208,  409,  723,
-  1152,  1868,  2951,  4463,  6460,  8979,  11831,  15195,  18863,  22657,
-  26762,  30881,  34963,  39098,  43054,  47069,  50620,  53871,  56821,  59386,
-  61340,  62670,  63512,  64023,  64429,  64750,  64944,  65126,  65279,  65366,
-  65413,  65445,  65473,  65505,  65510,  65521,  65528,  65530,  65535
-};
-
-/* pointers to cdf tables for quantizer indices */
-const uint16_t *WebRtcIsacfix_kCdfGainPtr[3][12] = {
-  { WebRtcIsacfix_kCdfGain +0 +0,   WebRtcIsacfix_kCdfGain +0 +8,   WebRtcIsacfix_kCdfGain +0 +22,
-    WebRtcIsacfix_kCdfGain +0 +32,  WebRtcIsacfix_kCdfGain +0 +48,  WebRtcIsacfix_kCdfGain +0 +60,
-    WebRtcIsacfix_kCdfGain +0 +81,  WebRtcIsacfix_kCdfGain +0 +95,  WebRtcIsacfix_kCdfGain +0 +128,
-    WebRtcIsacfix_kCdfGain +0 +152, WebRtcIsacfix_kCdfGain +0 +210, WebRtcIsacfix_kCdfGain +0 +264
-  },
-  { WebRtcIsacfix_kCdfGain +404 +0,   WebRtcIsacfix_kCdfGain +404 +8,   WebRtcIsacfix_kCdfGain +404 +21,
-    WebRtcIsacfix_kCdfGain +404 +30,  WebRtcIsacfix_kCdfGain +404 +46,  WebRtcIsacfix_kCdfGain +404 +58,
-    WebRtcIsacfix_kCdfGain +404 +79,  WebRtcIsacfix_kCdfGain +404 +93,  WebRtcIsacfix_kCdfGain +404 +125,
-    WebRtcIsacfix_kCdfGain +404 +149, WebRtcIsacfix_kCdfGain +404 +207, WebRtcIsacfix_kCdfGain +404 +260
-  },
-  { WebRtcIsacfix_kCdfGain +803 +0,   WebRtcIsacfix_kCdfGain +803 +8,   WebRtcIsacfix_kCdfGain +803 +22,
-    WebRtcIsacfix_kCdfGain +803 +31,  WebRtcIsacfix_kCdfGain +803 +48,  WebRtcIsacfix_kCdfGain +803 +60,
-    WebRtcIsacfix_kCdfGain +803 +81,  WebRtcIsacfix_kCdfGain +803 +96,  WebRtcIsacfix_kCdfGain +803 +129,
-    WebRtcIsacfix_kCdfGain +803 +154, WebRtcIsacfix_kCdfGain +803 +212, WebRtcIsacfix_kCdfGain +803 +268
-  }
-};
-
-const uint16_t *WebRtcIsacfix_kCdfShapePtr[3][108] = {
-  { WebRtcIsacfix_kCdfShape +0 +0,   WebRtcIsacfix_kCdfShape +0 +2,   WebRtcIsacfix_kCdfShape +0 +4,
-    WebRtcIsacfix_kCdfShape +0 +6,   WebRtcIsacfix_kCdfShape +0 +8,   WebRtcIsacfix_kCdfShape +0 +10,
-    WebRtcIsacfix_kCdfShape +0 +12,  WebRtcIsacfix_kCdfShape +0 +14,  WebRtcIsacfix_kCdfShape +0 +16,
-    WebRtcIsacfix_kCdfShape +0 +18,  WebRtcIsacfix_kCdfShape +0 +21,  WebRtcIsacfix_kCdfShape +0 +25,
-    WebRtcIsacfix_kCdfShape +0 +29,  WebRtcIsacfix_kCdfShape +0 +33,  WebRtcIsacfix_kCdfShape +0 +37,
-    WebRtcIsacfix_kCdfShape +0 +43,  WebRtcIsacfix_kCdfShape +0 +49,  WebRtcIsacfix_kCdfShape +0 +56,
-    WebRtcIsacfix_kCdfShape +0 +64,  WebRtcIsacfix_kCdfShape +0 +66,  WebRtcIsacfix_kCdfShape +0 +68,
-    WebRtcIsacfix_kCdfShape +0 +70,  WebRtcIsacfix_kCdfShape +0 +72,  WebRtcIsacfix_kCdfShape +0 +75,
-    WebRtcIsacfix_kCdfShape +0 +77,  WebRtcIsacfix_kCdfShape +0 +79,  WebRtcIsacfix_kCdfShape +0 +81,
-    WebRtcIsacfix_kCdfShape +0 +83,  WebRtcIsacfix_kCdfShape +0 +86,  WebRtcIsacfix_kCdfShape +0 +90,
-    WebRtcIsacfix_kCdfShape +0 +94,  WebRtcIsacfix_kCdfShape +0 +98,  WebRtcIsacfix_kCdfShape +0 +102,
-    WebRtcIsacfix_kCdfShape +0 +107, WebRtcIsacfix_kCdfShape +0 +113, WebRtcIsacfix_kCdfShape +0 +120,
-    WebRtcIsacfix_kCdfShape +0 +129, WebRtcIsacfix_kCdfShape +0 +131, WebRtcIsacfix_kCdfShape +0 +133,
-    WebRtcIsacfix_kCdfShape +0 +135, WebRtcIsacfix_kCdfShape +0 +137, WebRtcIsacfix_kCdfShape +0 +141,
-    WebRtcIsacfix_kCdfShape +0 +143, WebRtcIsacfix_kCdfShape +0 +147, WebRtcIsacfix_kCdfShape +0 +151,
-    WebRtcIsacfix_kCdfShape +0 +155, WebRtcIsacfix_kCdfShape +0 +159, WebRtcIsacfix_kCdfShape +0 +164,
-    WebRtcIsacfix_kCdfShape +0 +168, WebRtcIsacfix_kCdfShape +0 +172, WebRtcIsacfix_kCdfShape +0 +178,
-    WebRtcIsacfix_kCdfShape +0 +184, WebRtcIsacfix_kCdfShape +0 +192, WebRtcIsacfix_kCdfShape +0 +200,
-    WebRtcIsacfix_kCdfShape +0 +211, WebRtcIsacfix_kCdfShape +0 +213, WebRtcIsacfix_kCdfShape +0 +215,
-    WebRtcIsacfix_kCdfShape +0 +217, WebRtcIsacfix_kCdfShape +0 +219, WebRtcIsacfix_kCdfShape +0 +223,
-    WebRtcIsacfix_kCdfShape +0 +227, WebRtcIsacfix_kCdfShape +0 +231, WebRtcIsacfix_kCdfShape +0 +235,
-    WebRtcIsacfix_kCdfShape +0 +239, WebRtcIsacfix_kCdfShape +0 +243, WebRtcIsacfix_kCdfShape +0 +248,
-    WebRtcIsacfix_kCdfShape +0 +252, WebRtcIsacfix_kCdfShape +0 +258, WebRtcIsacfix_kCdfShape +0 +264,
-    WebRtcIsacfix_kCdfShape +0 +273, WebRtcIsacfix_kCdfShape +0 +282, WebRtcIsacfix_kCdfShape +0 +293,
-    WebRtcIsacfix_kCdfShape +0 +308, WebRtcIsacfix_kCdfShape +0 +310, WebRtcIsacfix_kCdfShape +0 +312,
-    WebRtcIsacfix_kCdfShape +0 +316, WebRtcIsacfix_kCdfShape +0 +320, WebRtcIsacfix_kCdfShape +0 +324,
-    WebRtcIsacfix_kCdfShape +0 +328, WebRtcIsacfix_kCdfShape +0 +332, WebRtcIsacfix_kCdfShape +0 +336,
-    WebRtcIsacfix_kCdfShape +0 +341, WebRtcIsacfix_kCdfShape +0 +347, WebRtcIsacfix_kCdfShape +0 +354,
-    WebRtcIsacfix_kCdfShape +0 +360, WebRtcIsacfix_kCdfShape +0 +368, WebRtcIsacfix_kCdfShape +0 +378,
-    WebRtcIsacfix_kCdfShape +0 +388, WebRtcIsacfix_kCdfShape +0 +400, WebRtcIsacfix_kCdfShape +0 +418,
-    WebRtcIsacfix_kCdfShape +0 +445, WebRtcIsacfix_kCdfShape +0 +447, WebRtcIsacfix_kCdfShape +0 +451,
-    WebRtcIsacfix_kCdfShape +0 +455, WebRtcIsacfix_kCdfShape +0 +461, WebRtcIsacfix_kCdfShape +0 +468,
-    WebRtcIsacfix_kCdfShape +0 +474, WebRtcIsacfix_kCdfShape +0 +480, WebRtcIsacfix_kCdfShape +0 +486,
-    WebRtcIsacfix_kCdfShape +0 +495, WebRtcIsacfix_kCdfShape +0 +505, WebRtcIsacfix_kCdfShape +0 +516,
-    WebRtcIsacfix_kCdfShape +0 +528, WebRtcIsacfix_kCdfShape +0 +543, WebRtcIsacfix_kCdfShape +0 +564,
-    WebRtcIsacfix_kCdfShape +0 +583, WebRtcIsacfix_kCdfShape +0 +608, WebRtcIsacfix_kCdfShape +0 +635
-  },
-  { WebRtcIsacfix_kCdfShape +686 +0,   WebRtcIsacfix_kCdfShape +686 +2,   WebRtcIsacfix_kCdfShape +686 +4,
-    WebRtcIsacfix_kCdfShape +686 +6,   WebRtcIsacfix_kCdfShape +686 +8,   WebRtcIsacfix_kCdfShape +686 +11,
-    WebRtcIsacfix_kCdfShape +686 +13,  WebRtcIsacfix_kCdfShape +686 +15,  WebRtcIsacfix_kCdfShape +686 +17,
-    WebRtcIsacfix_kCdfShape +686 +20,  WebRtcIsacfix_kCdfShape +686 +23,  WebRtcIsacfix_kCdfShape +686 +27,
-    WebRtcIsacfix_kCdfShape +686 +31,  WebRtcIsacfix_kCdfShape +686 +35,  WebRtcIsacfix_kCdfShape +686 +40,
-    WebRtcIsacfix_kCdfShape +686 +44,  WebRtcIsacfix_kCdfShape +686 +50,  WebRtcIsacfix_kCdfShape +686 +56,
-    WebRtcIsacfix_kCdfShape +686 +63,  WebRtcIsacfix_kCdfShape +686 +65,  WebRtcIsacfix_kCdfShape +686 +67,
-    WebRtcIsacfix_kCdfShape +686 +69,  WebRtcIsacfix_kCdfShape +686 +71,  WebRtcIsacfix_kCdfShape +686 +73,
-    WebRtcIsacfix_kCdfShape +686 +75,  WebRtcIsacfix_kCdfShape +686 +77,  WebRtcIsacfix_kCdfShape +686 +79,
-    WebRtcIsacfix_kCdfShape +686 +82,  WebRtcIsacfix_kCdfShape +686 +85,  WebRtcIsacfix_kCdfShape +686 +89,
-    WebRtcIsacfix_kCdfShape +686 +93,  WebRtcIsacfix_kCdfShape +686 +97,  WebRtcIsacfix_kCdfShape +686 +102,
-    WebRtcIsacfix_kCdfShape +686 +106, WebRtcIsacfix_kCdfShape +686 +112, WebRtcIsacfix_kCdfShape +686 +119,
-    WebRtcIsacfix_kCdfShape +686 +127, WebRtcIsacfix_kCdfShape +686 +129, WebRtcIsacfix_kCdfShape +686 +131,
-    WebRtcIsacfix_kCdfShape +686 +133, WebRtcIsacfix_kCdfShape +686 +135, WebRtcIsacfix_kCdfShape +686 +137,
-    WebRtcIsacfix_kCdfShape +686 +139, WebRtcIsacfix_kCdfShape +686 +142, WebRtcIsacfix_kCdfShape +686 +146,
-    WebRtcIsacfix_kCdfShape +686 +150, WebRtcIsacfix_kCdfShape +686 +154, WebRtcIsacfix_kCdfShape +686 +158,
-    WebRtcIsacfix_kCdfShape +686 +162, WebRtcIsacfix_kCdfShape +686 +167, WebRtcIsacfix_kCdfShape +686 +173,
-    WebRtcIsacfix_kCdfShape +686 +179, WebRtcIsacfix_kCdfShape +686 +186, WebRtcIsacfix_kCdfShape +686 +194,
-    WebRtcIsacfix_kCdfShape +686 +205, WebRtcIsacfix_kCdfShape +686 +207, WebRtcIsacfix_kCdfShape +686 +209,
-    WebRtcIsacfix_kCdfShape +686 +211, WebRtcIsacfix_kCdfShape +686 +214, WebRtcIsacfix_kCdfShape +686 +218,
-    WebRtcIsacfix_kCdfShape +686 +222, WebRtcIsacfix_kCdfShape +686 +226, WebRtcIsacfix_kCdfShape +686 +230,
-    WebRtcIsacfix_kCdfShape +686 +234, WebRtcIsacfix_kCdfShape +686 +238, WebRtcIsacfix_kCdfShape +686 +242,
-    WebRtcIsacfix_kCdfShape +686 +247, WebRtcIsacfix_kCdfShape +686 +253, WebRtcIsacfix_kCdfShape +686 +262,
-    WebRtcIsacfix_kCdfShape +686 +269, WebRtcIsacfix_kCdfShape +686 +278, WebRtcIsacfix_kCdfShape +686 +289,
-    WebRtcIsacfix_kCdfShape +686 +305, WebRtcIsacfix_kCdfShape +686 +307, WebRtcIsacfix_kCdfShape +686 +309,
-    WebRtcIsacfix_kCdfShape +686 +311, WebRtcIsacfix_kCdfShape +686 +315, WebRtcIsacfix_kCdfShape +686 +319,
-    WebRtcIsacfix_kCdfShape +686 +323, WebRtcIsacfix_kCdfShape +686 +327, WebRtcIsacfix_kCdfShape +686 +331,
-    WebRtcIsacfix_kCdfShape +686 +335, WebRtcIsacfix_kCdfShape +686 +340, WebRtcIsacfix_kCdfShape +686 +346,
-    WebRtcIsacfix_kCdfShape +686 +354, WebRtcIsacfix_kCdfShape +686 +362, WebRtcIsacfix_kCdfShape +686 +374,
-    WebRtcIsacfix_kCdfShape +686 +384, WebRtcIsacfix_kCdfShape +686 +396, WebRtcIsacfix_kCdfShape +686 +413,
-    WebRtcIsacfix_kCdfShape +686 +439, WebRtcIsacfix_kCdfShape +686 +442, WebRtcIsacfix_kCdfShape +686 +446,
-    WebRtcIsacfix_kCdfShape +686 +450, WebRtcIsacfix_kCdfShape +686 +455, WebRtcIsacfix_kCdfShape +686 +461,
-    WebRtcIsacfix_kCdfShape +686 +468, WebRtcIsacfix_kCdfShape +686 +475, WebRtcIsacfix_kCdfShape +686 +481,
-    WebRtcIsacfix_kCdfShape +686 +489, WebRtcIsacfix_kCdfShape +686 +498, WebRtcIsacfix_kCdfShape +686 +508,
-    WebRtcIsacfix_kCdfShape +686 +522, WebRtcIsacfix_kCdfShape +686 +534, WebRtcIsacfix_kCdfShape +686 +554,
-    WebRtcIsacfix_kCdfShape +686 +577, WebRtcIsacfix_kCdfShape +686 +602, WebRtcIsacfix_kCdfShape +686 +631
-  },
-  { WebRtcIsacfix_kCdfShape +1368 +0,   WebRtcIsacfix_kCdfShape +1368 +2,   WebRtcIsacfix_kCdfShape +1368 +4,
-    WebRtcIsacfix_kCdfShape +1368 +6,   WebRtcIsacfix_kCdfShape +1368 +8,   WebRtcIsacfix_kCdfShape +1368 +10,
-    WebRtcIsacfix_kCdfShape +1368 +12,  WebRtcIsacfix_kCdfShape +1368 +14,  WebRtcIsacfix_kCdfShape +1368 +16,
-    WebRtcIsacfix_kCdfShape +1368 +20,  WebRtcIsacfix_kCdfShape +1368 +24,  WebRtcIsacfix_kCdfShape +1368 +28,
-    WebRtcIsacfix_kCdfShape +1368 +32,  WebRtcIsacfix_kCdfShape +1368 +36,  WebRtcIsacfix_kCdfShape +1368 +40,
-    WebRtcIsacfix_kCdfShape +1368 +44,  WebRtcIsacfix_kCdfShape +1368 +50,  WebRtcIsacfix_kCdfShape +1368 +57,
-    WebRtcIsacfix_kCdfShape +1368 +65,  WebRtcIsacfix_kCdfShape +1368 +67,  WebRtcIsacfix_kCdfShape +1368 +69,
-    WebRtcIsacfix_kCdfShape +1368 +71,  WebRtcIsacfix_kCdfShape +1368 +73,  WebRtcIsacfix_kCdfShape +1368 +75,
-    WebRtcIsacfix_kCdfShape +1368 +77,  WebRtcIsacfix_kCdfShape +1368 +79,  WebRtcIsacfix_kCdfShape +1368 +81,
-    WebRtcIsacfix_kCdfShape +1368 +85,  WebRtcIsacfix_kCdfShape +1368 +89,  WebRtcIsacfix_kCdfShape +1368 +93,
-    WebRtcIsacfix_kCdfShape +1368 +97,  WebRtcIsacfix_kCdfShape +1368 +101, WebRtcIsacfix_kCdfShape +1368 +105,
-    WebRtcIsacfix_kCdfShape +1368 +110, WebRtcIsacfix_kCdfShape +1368 +116, WebRtcIsacfix_kCdfShape +1368 +123,
-    WebRtcIsacfix_kCdfShape +1368 +132, WebRtcIsacfix_kCdfShape +1368 +134, WebRtcIsacfix_kCdfShape +1368 +136,
-    WebRtcIsacfix_kCdfShape +1368 +138, WebRtcIsacfix_kCdfShape +1368 +141, WebRtcIsacfix_kCdfShape +1368 +143,
-    WebRtcIsacfix_kCdfShape +1368 +146, WebRtcIsacfix_kCdfShape +1368 +150, WebRtcIsacfix_kCdfShape +1368 +154,
-    WebRtcIsacfix_kCdfShape +1368 +158, WebRtcIsacfix_kCdfShape +1368 +162, WebRtcIsacfix_kCdfShape +1368 +166,
-    WebRtcIsacfix_kCdfShape +1368 +170, WebRtcIsacfix_kCdfShape +1368 +174, WebRtcIsacfix_kCdfShape +1368 +179,
-    WebRtcIsacfix_kCdfShape +1368 +185, WebRtcIsacfix_kCdfShape +1368 +193, WebRtcIsacfix_kCdfShape +1368 +203,
-    WebRtcIsacfix_kCdfShape +1368 +214, WebRtcIsacfix_kCdfShape +1368 +216, WebRtcIsacfix_kCdfShape +1368 +218,
-    WebRtcIsacfix_kCdfShape +1368 +220, WebRtcIsacfix_kCdfShape +1368 +224, WebRtcIsacfix_kCdfShape +1368 +227,
-    WebRtcIsacfix_kCdfShape +1368 +231, WebRtcIsacfix_kCdfShape +1368 +235, WebRtcIsacfix_kCdfShape +1368 +239,
-    WebRtcIsacfix_kCdfShape +1368 +243, WebRtcIsacfix_kCdfShape +1368 +247, WebRtcIsacfix_kCdfShape +1368 +251,
-    WebRtcIsacfix_kCdfShape +1368 +256, WebRtcIsacfix_kCdfShape +1368 +262, WebRtcIsacfix_kCdfShape +1368 +269,
-    WebRtcIsacfix_kCdfShape +1368 +277, WebRtcIsacfix_kCdfShape +1368 +286, WebRtcIsacfix_kCdfShape +1368 +297,
-    WebRtcIsacfix_kCdfShape +1368 +315, WebRtcIsacfix_kCdfShape +1368 +317, WebRtcIsacfix_kCdfShape +1368 +319,
-    WebRtcIsacfix_kCdfShape +1368 +323, WebRtcIsacfix_kCdfShape +1368 +327, WebRtcIsacfix_kCdfShape +1368 +331,
-    WebRtcIsacfix_kCdfShape +1368 +335, WebRtcIsacfix_kCdfShape +1368 +339, WebRtcIsacfix_kCdfShape +1368 +343,
-    WebRtcIsacfix_kCdfShape +1368 +349, WebRtcIsacfix_kCdfShape +1368 +355, WebRtcIsacfix_kCdfShape +1368 +361,
-    WebRtcIsacfix_kCdfShape +1368 +368, WebRtcIsacfix_kCdfShape +1368 +376, WebRtcIsacfix_kCdfShape +1368 +385,
-    WebRtcIsacfix_kCdfShape +1368 +397, WebRtcIsacfix_kCdfShape +1368 +411, WebRtcIsacfix_kCdfShape +1368 +429,
-    WebRtcIsacfix_kCdfShape +1368 +456, WebRtcIsacfix_kCdfShape +1368 +459, WebRtcIsacfix_kCdfShape +1368 +463,
-    WebRtcIsacfix_kCdfShape +1368 +467, WebRtcIsacfix_kCdfShape +1368 +473, WebRtcIsacfix_kCdfShape +1368 +478,
-    WebRtcIsacfix_kCdfShape +1368 +485, WebRtcIsacfix_kCdfShape +1368 +491, WebRtcIsacfix_kCdfShape +1368 +497,
-    WebRtcIsacfix_kCdfShape +1368 +505, WebRtcIsacfix_kCdfShape +1368 +514, WebRtcIsacfix_kCdfShape +1368 +523,
-    WebRtcIsacfix_kCdfShape +1368 +535, WebRtcIsacfix_kCdfShape +1368 +548, WebRtcIsacfix_kCdfShape +1368 +565,
-    WebRtcIsacfix_kCdfShape +1368 +585, WebRtcIsacfix_kCdfShape +1368 +611, WebRtcIsacfix_kCdfShape +1368 +640
-  }
-};
-
-/* code length for all coefficients using different models */
-
-const int16_t WebRtcIsacfix_kCodeLenGainQ11[392] = {
-  25189, 16036,  8717,   358,  8757, 15706, 21456, 24397, 18502, 17559
-  , 13794, 11088,  7480,   873,  6603, 11636, 14627, 16805, 19132, 26624
-  , 26624, 19408, 13751,  7280,   583,  7591, 15178, 23773, 28672, 25189
-  , 19045, 16442, 13412, 10397,  5893,  1338,  6376,  9992, 12074, 13853
-  , 15781, 19821, 22819, 28672, 28672, 25189, 19858, 15781, 11262,  5477
-  ,  1298,  5632, 11814, 17234, 22020, 28672, 19677, 18125, 16587, 14521
-  , 13032, 11196,  9249,  5411,  2495,  4994,  7975, 10234, 12308, 13892
-  , 15148, 17944, 21725, 23917, 25189, 19539, 16293, 11531,  7808,  4475
-  ,  2739,  4872,  8089, 11314, 14992, 18105, 23257, 26624, 25189, 23257
-  , 23257, 20982, 18697, 18023, 16338, 16036, 14539, 13695, 13146, 11763
-  , 10754,  9074,  7260,  5584,  4430,  5553,  6848,  8344, 10141, 11636
-  , 12535, 13416, 14342, 15477, 17296, 19282, 22349, 23773, 28672, 28672
-  , 26624, 23773, 21456, 18023, 15118, 13362, 11212,  9293,  8043,  6985
-  ,  5908,  5721,  5853,  6518,  7316,  8360,  9716, 11289, 12912, 14652
-  , 16969, 19858, 23773, 26624, 28013, 30720, 30720, 28672, 25426, 23141
-  , 25426, 23773, 20720, 19408, 18697, 19282, 16859, 16338, 16026, 15377
-  , 15021, 14319, 14251, 13937, 13260, 13017, 12332, 11703, 11430, 10359
-  , 10128,  9405,  8757,  8223,  7974,  7859,  7646,  7673,  7997,  8580
-  ,  8880,  9061,  9866, 10397, 11358, 12200, 13244, 14157, 15021, 16026
-  , 16490, 18697, 18479, 20011, 19677, 20720, 24576, 26276, 30720, 30720
-  , 28672, 30720, 24068, 25189, 22437, 20345, 18479, 16396, 16026, 14928
-  , 13877, 13450, 12696, 12766, 11626, 11098, 10159,  9998,  9437,  9275
-  ,  8783,  8552,  8629,  8488,  8522,  8454,  8571,  8775,  8915,  9427
-  ,  9483,  9851, 10260, 10933, 11131, 11974, 12560, 13833, 15080, 16304
-  , 17491, 19017, 18697, 19408, 22020, 25189, 25426, 22819, 26276, 30720
-  , 30720, 30720, 30720, 30720, 30720, 28672, 30720, 30720, 30720, 30720
-  , 28013, 25426, 24397, 23773, 25189, 26624, 25189, 22437, 21725, 20011
-  , 20527, 20720, 20771, 22020, 22020, 19858, 19408, 19972, 17866, 17360
-  , 17791, 17219, 16805, 16927, 16067, 16162, 15661, 15178, 15021, 15209
-  , 14845, 14570, 14490, 14490, 13733, 13617, 13794, 13577, 13312, 12824
-  , 13032, 12683, 12189, 12469, 12109, 11940, 11636, 11617, 11932, 12294
-  , 11578, 11775, 12039, 11654, 11560, 11439, 11909, 11421, 12029, 11513
-  , 11773, 11899, 11560, 11805, 11476, 11664, 11963, 11647, 11754, 11963
-  , 11703, 12211, 11932, 12074, 12469, 12535, 12560, 12912, 12783, 12866
-  , 12884, 13378, 13957, 13775, 13635, 14019, 14545, 15240, 15520, 15554
-  , 15697, 16490, 16396, 17281, 16599, 16969, 17963, 16859, 16983, 16805
-  , 17099, 18210, 17219, 17646, 17700, 17646, 18297, 17425, 18479, 17791
-  , 17718, 19282, 18672, 20173, 20982, 21725, 21456, 23773, 23257, 25189
-  , 30720, 30720, 25189, 26624, 30720, 30720, 30720, 30720, 28672, 26276
-  , 30720, 30720
-};
-
-const int16_t WebRtcIsacfix_kCodeLenShapeQ11[578] = {
-  0,     0,     0,     0,     0,     0,     0,     0,     0, 28672
-  ,     0, 26624,     1, 23773, 22819,     4, 20982, 18598,    10, 19282
-  , 16587,    22, 16442, 26624, 13126,    60, 14245, 26624, 26624, 12736
-  ,    79, 12912, 25189, 22819,  9563,   249,  9474, 22349, 28672, 23257
-  , 17944,  7980,   434,  8181, 16431, 26624,     0,     0,     0,     0
-  , 28672,     0,     0,     0,     0,     0, 28672,     0, 22437,     3
-  , 22437, 20982,     5, 20982, 16442,    22, 16752, 13814,    49, 14646
-  , 11645,   116, 11734, 26624, 28672, 10613,   158, 11010, 24397, 19539
-  ,  8046,   453,  7709, 19017, 28672, 23257, 15110,  6770,   758,  6523
-  , 14108, 24397, 28672,     0,     0,     0,     0, 28672,     0, 28672
-  ,     0, 26624,     1, 28672, 28672,     1, 26624, 24397,     2, 23257
-  , 21725,     4, 20982, 17158,    18, 17281, 28672, 15178,    35, 15209
-  , 12343,    92, 12320, 26624, 10344,   189, 10217, 30720, 22020,  9033
-  ,   322,  8549, 23773, 28672, 30720, 20622,  7666,   473,  7806, 20527
-  , 24397, 14135,  5995,   960,  6018, 14872, 23773, 26624, 20928, 16293
-  , 10636,  4926,  1588,  5256, 11088, 18043, 25189,     0,     0,     0
-  ,     0, 24397,     1, 25189, 20720,     5, 21456, 21209,     3, 25189
-  , 20982,     5, 21456, 15818,    30, 15410, 13794,    60, 13416, 28672
-  , 11162,   142, 11025,  9337,   231, 10094, 23773,  8338,   405,  7930
-  , 26624, 19677,  6787,   613,  7318, 19161, 28672, 16442,  6319,   932
-  ,  5748, 15312, 25189, 28672, 28672, 28672, 13998,  5513,  1263,  5146
-  , 14024, 24397, 22819, 15818,  9460,  4447,  2122,  4681,  9970, 15945
-  , 22349, 28672, 30720, 22622, 19017, 14872, 10689,  7405,  4473,  2983
-  ,  4783,  7894, 11186, 14964, 18210, 24397,     0,     0, 30720,     0
-  , 30720, 21456,     3, 23773, 14964,    39, 14757, 14179,    53, 13751
-  , 14928,    36, 15272, 12430,    79, 13228,  9135,   285,  9077, 28672
-  , 28672,  8377,   403,  7919, 26624, 28672, 23257,  7068,   560,  7473
-  , 20345, 19677,  6770,   720,  6464, 18697, 25189, 16249,  5779,  1087
-  ,  5494, 15209, 22819, 30720, 20622, 12601,  5240,  1419,  5091, 12095
-  , 19408, 26624, 22819, 16805, 10683,  4812,  2056,  4293,  9836, 16026
-  , 24397, 25189, 18409, 13833,  8681,  4503,  2653,  4220,  8329, 13853
-  , 19132, 26624, 25189, 20771, 17219, 12630,  9520,  6733,  4565,  3657
-  ,  4817,  7069, 10058, 13212, 16805, 21209, 26624, 26276, 28672, 28672
-  , 26276, 23257, 20173, 19282, 16538, 15051, 12811, 10754,  9267,  7547
-  ,  6270,  5407,  5214,  6057,  7054,  8226,  9488, 10806, 12793, 14442
-  , 16442, 19677, 22099, 26276, 28672,     0, 30720,     0, 30720, 11920
-  ,    56, 20720, 30720,  6766,   355, 13130, 30720, 30720, 22180,  5589
-  ,   736,  7902, 26624, 30720,  7634,   354,  9721, 30720, 30720,  9027
-  ,   246, 10117, 30720, 30720,  9630,   453,  6709, 23257, 30720, 25683
-  , 14228,  6127,  1271,  4615, 15178, 30720, 30720, 23504, 12382,  5739
-  ,  2015,  3492, 10560, 22020, 26624, 30720, 30720, 23257, 13192,  4873
-  ,  1527,  5001, 12445, 22020, 30720, 30720, 30720, 30720, 19344, 10761
-  ,  4051,  1927,  5281, 10594, 17866, 28672, 30720, 30720, 30720, 21869
-  , 15554, 10060,  5979,  2710,  3085,  7889, 14646, 21725, 28672, 30720
-  , 30720, 30720, 30720, 30720, 30720, 30720, 22719, 17425, 13212,  8083
-  ,  4439,  2820,  4305,  8136, 12988, 17425, 21151, 28672, 28672, 30720
-  , 30720, 30720, 28672, 20527, 19282, 14412, 10513,  7407,  5079,  3744
-  ,  4115,  6308,  9621, 13599, 17040, 22349, 28672, 30720, 30720, 30720
-  , 30720, 30720, 30720, 29522, 19282, 14545, 11485,  9093,  6760,  5262
-  ,  4672,  4970,  6005,  7852,  9732, 12343, 14672, 19161, 22819, 25189
-  , 30720, 30720, 28672, 30720, 30720, 20720, 18125, 14388, 12007,  9825
-  ,  8092,  7064,  6069,  5903,  5932,  6359,  7169,  8310,  9324, 10711
-  , 11867, 13096, 14157, 16338, 17040, 19161, 21725, 23773, 30720, 30720
-  , 26276, 25426, 24397, 28672, 28672, 23257, 22020, 22349, 18297, 17646
-  , 16983, 16431, 16162, 15021, 15178, 13751, 12142, 10895, 10193,  9632
-  ,  9086,  8896,  8823,  8735,  8591,  8754,  8649,  8361,  8329,  8522
-  ,  8373,  8739,  8993,  9657, 10454, 11279, 11899, 12614, 14024, 14273
-  , 15477, 15240, 16649, 17866, 18697, 21151, 22099, 0
-  // The final 0 was added due to http://bugs.webrtc.org/10584.
-};
-
-/* left KLT transforms */
-const int16_t WebRtcIsacfix_kT1GainQ15[3][4] = {
-  { -26130, 19773, 19773, 26130 },
-  { -26664, 19046, 19046, 26664 },
-  { -23538, 22797, 22797, 23538 }
-};
-
-
-
-const int16_t WebRtcIsacfix_kT1ShapeQ15[3][324] = {
-  { 52,16,168,7,439,-138,-89,306,671,882,
-    157,1301,291,1598,-3571,-1943,-1119,32404,96,-12,
-    379,-64,-307,345,-836,539,1045,2541,-2865,-992,
-    1683,-4717,5808,7427,30599,2319,183,-73,451,481,
-    933,-198,781,-397,1244,-777,3690,-2414,149,-1356,
-    -2593,-31140,8289,-1737,-202,-14,-214,360,501,450,
-    -245,-7,797,3638,-2804,3042,-337,22137,-22103,2264,
-    6838,-3381,305,172,263,-195,-355,351,179,513,
-    2234,3343,5509,7531,19075,-17740,-16836,2244,-629,-1505,
-    -153,108,124,-324,2694,-124,1492,-850,5347,4285,
-    7439,-10229,-22822,-12467,-12891,3645,822,-232,131,13,
-    374,565,536,4681,1294,-1935,1926,-5734,-10643,26462,
-    -12480,-5589,-1038,-2468,964,-704,-247,-106,186,-558,
-    -4050,3760,2972,2141,-7393,6294,26740,11991,-3251,5461,
-    5341,1574,2208,-51,-552,-297,-753,-154,2068,-5371,
-    3578,4106,28043,-10533,8041,2353,2389,4609,3410,1906,
-    351,-249,18,-15,1117,539,2870,9084,17585,-24528,
-    -366,-6490,2009,-3170,2942,1116,-232,1672,1065,606,
-    -399,-388,-518,38,3728,28948,-11936,4543,4104,-4441,
-    1545,-4044,1485,622,-68,186,-473,135,-280,125,
-    -546,-1813,6989,6606,23711,19376,-2636,2870,-4553,-1687,
-    878,-375,205,-208,-409,-108,-200,-45,-1670,-337,
-    8213,-5524,-2334,5240,-12939,-26205,5937,-1582,-592,-959,
-    -5374,2449,3400,559,349,-492,668,12379,-27684,3419,
-    5117,4415,-297,-8270,-1252,-3490,-1272,-1199,-3159,191,
-    630,488,-797,-3071,12912,-27783,-10249,1047,647,619,
-    111,-3722,-915,-1055,-502,5,-1384,-306,221,68,
-    5219,13173,-26474,-11663,-5626,927,806,-1127,236,-589,
-    -522,-230,-312,-315,-428,-573,426,192,-11830,-26883,
-    -14121,-2785,-1429,-109,410,-832,-302,539,-459,104,
-    1,-530,-202,-289,153,116,30082,-12944,-671,20,
-    649,98,103,215,234,0,280,-51,-169,298,
-    31,230,-73,-51
-  },
-  { -154,-7,-192,61,-739,-389,-947,-162,-60,94,
-    511,-716,1520,-1428,4168,-2214,1816,32270,-123,-77,
-    -199,-99,-42,-588,203,-240,-930,-35,1580,234,
-    3206,-5507,-1495,-10946,30000,-2667,-136,-176,-240,-175,
-    -204,-661,-1796,-1039,-1271,498,3143,734,2663,2699,
-    -8127,29333,10495,2356,-72,113,-91,118,-2840,-723,
-    -1733,-1158,-389,-2116,-3054,-3,-5179,8071,29546,6308,
-    5657,-3178,-186,-294,-473,-635,1213,-983,-1437,-1715,
-    -1094,1280,-92,-9573,948,29576,-7060,-5921,2954,1349,
-    -337,-108,-1099,962,418,-413,-1149,-334,1241,3975,
-    -6825,26725,-14377,7051,-4772,-1707,2335,2008,-150,570,
-    1371,42,-1649,-619,2039,3369,-1225,1583,-2755,-15207,
-    -27504,-4855,-4304,1495,2733,1324,15,-448,403,353,
-    3016,-1242,2338,2673,2064,-7496,-30447,-3686,5833,-1301,
-    -2455,2122,1519,608,43,-653,773,-3072,912,-1537,
-    4505,10284,30237,1549,3200,-691,205,1702,658,1014,
-    1499,148,79,-322,-1162,-4639,-813,7536,3204,29109,
-    -10747,-26,1611,2286,2114,2561,1022,372,348,207,
-    1062,-1088,-443,-9849,2381,5671,29097,-7612,-2927,3853,
-    194,1155,275,1438,1438,1312,581,888,-784,906,
-    112,-11103,25104,14438,-9311,-3068,1210,368,370,-940,
-    -2434,-1148,1925,392,657,258,-526,1475,-2281,-4265,
-    -1880,1534,2185,-1472,959,-30934,6306,3114,-4109,1768,
-    -2612,-703,45,644,2185,2033,5670,7211,19114,-22427,
-    6432,5150,-4090,-2694,3860,1245,-596,293,1829,369,
-    -319,229,-3256,2170,-6374,-26216,-4570,-16053,-5766,-262,
-    -2006,2873,-1477,147,378,-1544,-344,-544,-985,-481,
-    4210,4542,30757,-7291,-4863,1529,-2079,-628,-603,-783,
-    -408,1646,697,808,-620,-292,181,158,-13313,-29173,
-    5984,-1262,859,-1776,-558,-24,-883,-1421,739,210,
-    -531,-285,131,-160,-246,-56,29345,-13706,-2859,-2966,
-    -300,-970,-2382,-268,-103,-636,-12,-62,-691,-253,
-    -147,-127,27,66
-  },
-  { 55,-212,-198,489,-274,81,682,399,328,-934,
-    -389,-37,1357,-3632,5276,6581,-9493,-29921,29,-45,
-    2,190,172,-15,311,-130,-1085,-25,324,-684,
-    3223,-6580,4485,-5280,-29521,9933,82,-320,-530,229,
-    -705,-533,-414,848,-1842,-4473,1390,-857,6717,-6692,
-    4648,29397,576,8339,-68,-85,238,-330,264,-1012,
-    -381,-203,-3384,-3329,3906,6810,3790,-6250,28312,-8078,
-    8089,1565,160,-569,-612,-613,-1063,-1928,-1125,3421,
-    -7481,-7484,4942,-6984,4330,-25591,-10574,-6982,5682,-1781,
-    -308,89,178,-1715,-420,-3530,-5776,1219,-8617,-7137,
-    7015,4981,24875,12657,-5408,-3356,-785,-1972,326,-858,
-    -506,-3382,-986,-6258,-2259,4015,-8374,-10482,3127,23826,
-    -14126,-514,-5417,2178,-2912,-17,-587,80,67,-5881,
-    -1702,-5351,-4481,398,-10156,-225,20727,-15460,-11603,7752,
-    3660,1714,-2001,-359,499,-527,-1225,-7820,-1297,-6326,
-    -8526,7900,-18328,13311,-17488,-2926,-196,-17,2281,873,
-    480,-160,-624,471,780,-8729,1707,-14262,-20647,1721,
-    18590,-2206,-1214,-1066,312,-2602,783,-412,-113,49,
-    -119,1305,-2371,-15132,-1833,-18252,20295,-8316,2227,341,
-    -2074,-702,3082,-262,-465,-198,430,30,-70,-788,
-    2342,-25132,-4863,19783,-484,2137,2811,-1906,799,1586,
-    962,-734,-191,-30,-129,-93,-1126,1729,5860,-2030,
-    8953,603,-3338,-10869,-1144,22070,12130,10513,3191,-6881,
-    -3514,2090,711,-666,1843,-5997,-5681,2921,-17641,-2801,
-    4969,18590,7169,12214,8587,4405,3008,-1074,-371,-77,
-    253,331,-5611,5014,13152,-1985,18483,-1696,8043,20463,
-    2381,-393,1688,-1205,618,1220,457,248,-83,176,
-    7920,-13676,-22139,-3038,17402,2036,844,3258,994,719,
-    2087,-44,426,494,12,-91,46,5,-14204,22912,
-    -18156,-361,442,2298,-829,2229,386,1433,1335,1323,
-    55,-592,-139,49,-12,-57,27783,17134,350,-282,
-    552,158,142,2488,465,329,1087,118,143,10,
-    56,65,-15,-31
-  }
-};
-
-/* right KLT transforms */
-const int16_t WebRtcIsacfix_kT2GainQ15[3][36] = {
-  {   4775, -14892,  20313, -17104,  10533,  -3613,  -6782,  16044,  -8889,
-      -11019,  21330, -10720,  13193, -15678, -11101,  14461,  12250, -13096,
-      -16951,   2167,  16066,  15569,   -702, -16754, -19195, -12823,  -4321,
-      5128,    13348,  17825,  13232,  13404,  13494,  13490,  13383,  13261
-  },
-  {  -3725,  11408, -18493,  20031, -13097,   3865,   9344, -19294,  10740,
-     8856, -18432,   8982,  13975, -14444, -11930,  11774,  14285, -13594,
-     -16323,     -4,  16340,  15609,    359, -17220, -18401, -13471,  -4643,
-     5225,  13375,  18053,  13124,  13463,  13621,  13583,  13393,  13072
-  },
-  {  -3513,  11402, -17883,  19504, -14399,   4885,   8702, -19513,  12046,
-     8533, -18110,   8447,  12778, -14838, -12444,  13177,  14107, -12759,
-     -17268,    914,  15822,  15661,    838, -16686, -18907, -12936,  -4820,
-     4175,  12398,  18830,  12913,  13215,  13433,  13572,  13601,  13518
-  }
-};
-
-const int16_t WebRtcIsacfix_kT2ShapeQ15[3][36] = {
-  {   4400, -11512,  17205, -19470,  14770,  -5345,   9784, -19222,  11228,
-      6842, -18371,   9909,  14191, -13496, -11563,  14015,  11827, -14839,
-      -15439,    948,  17802,  14827,  -2053, -17132,  18723,  14516,   4135,
-      -6822, -13869, -16016,  12975,  13341,  13563,  13603,  13478,  13296
-  },
-  {   5420, -14215,  19060, -18073,  11709,  -3911,   9645, -18335,   7717,
-      10842, -19283,   9777,  14898, -12555, -13661,  11668,  13520, -13733,
-      -15936,  -1358,  15671,  16728,    328, -17100,  17527,  13973,   5587,
-      -5194, -14165, -17677,  12970,  13446,  13693,  13660,  13462,  13015
-  },
-  {   4386, -12426,  18019, -18895,  13894,  -5034,   9713, -19270,  10283,
-      8692, -18439,   9317,  13992, -13454, -13241,  12850,  13366, -13336,
-      -16334,   -498,  15976,  16213,   -114, -16987,  18191,  13659,   4958,
-      -5116, -13444, -18021,  12911,  13424,  13718,  13674,  13464,  13054
-  }
-};
-
-/* means of log gains and LAR coefficients*/
-const int16_t WebRtcIsacfix_kMeansGainQ8[3][12] = {
-  { -1758, -1370, -1758, -1373, -1757, -1375,
-    -1758, -1374, -1758, -1373, -1755, -1370
-  },
-  { -1569, -1224, -1569, -1225, -1569, -1227,
-    -1569, -1226, -1567, -1225, -1565, -1224
-  },
-  { -1452,  -957, -1447,  -951, -1438,  -944,
-    -1431,  -938, -1419,  -931, -1406,  -926
-  }
-};
-
-
-const int32_t WebRtcIsacfix_kMeansShapeQ17[3][108] = {
-  { -119581, 34418, -44193, 11112, -4428, 18906, 9222, 8068, 1953, 5425,
-    1871, 1689, 109933, 33751, 10471, -2566, 1090, 2320, -119219, 33728,
-    -43759, 11450, -4870, 19117, 9174, 8037, 1972, 5331, 1872, 1843,
-    109899, 34301, 10629, -2316, 1272, 2562, -118608, 32318, -44012, 11591,
-    -4914, 18932, 9456, 8088, 1900, 5419, 1723, 1853, 109963, 35059,
-    10745, -2335, 1161, 2520, -119174, 32107, -44462, 11635, -4694, 18611,
-    9757, 8108, 1969, 5486, 1673, 1777, 109636, 34907, 10643, -2406,
-    1034, 2420, -118597, 32320, -44590, 10854, -4569, 18821, 9701, 7866,
-    2003, 5577, 1732, 1626, 109913, 34448, 10714, -2752, 990, 2228,
-    -118138, 32996, -44352, 10334, -3772, 18488, 9464, 7865, 2208, 5540,
-    1745, 1664, 109880, 33381, 10640, -2779, 980, 2054
-  },
-  { -146328, 46370, 1047, 26431, 10035, 13933, 6415, 14359, -2368, 6661,
-    2269, 1764, 96623, 7802, 4163, 10742, 1643, 2954, -146871, 46561, 1127,
-    26225, 10113, 14096, 6771, 14323, -2037, 6788, 2297, 1761, 96324, 8382,
-    4309, 10450, 1695, 3016, -146502, 46475, 1580, 26118, 10487, 14179, 6622,
-    14439, -2034, 6757, 2342, 1761, 95869, 8966, 4347, 10358, 1999, 2855,
-    -146958, 47717, 826, 25952, 10263, 14061, 5266, 13681, -2417, 6582, 2047,
-    1608, 96257, 9107, 4452, 10301, 1792, 2676, -146992, 47123, 446, 25822,
-    10405, 14292, 5140, 13804, -2403, 6496, 1834, 1735, 97489, 9253, 4414,
-    10684, 1549, 2721, -145811, 46182, 901, 26482, 10241, 14524, 6075, 14514,
-    -2147, 6691, 2196, 1899, 97011, 8178, 4102, 10758, 1638, 2869
-  },
-  { -166617, 46969, -43908, 17726, 6330, 25615, 6913, 5450, -2301, 1984,
-    507, 2883, 149998, 28709, 19333, 16703, 11093, 8965, -168254, 46604,
-    -44315, 17862, 6474, 25746, 7018, 5373, -2343, 1930, 513, 2819, 150391,
-    28627, 19194, 16678, 10998, 8929, -169093, 46084, -44767, 17427, 6401,
-    25674, 7147, 5472, -2336, 1820, 491, 2802, 149860, 28430, 19064, 16524,
-    10898, 8875, -170205, 46189, -44877, 17403, 6190, 25209, 7035, 5673, -2173,
-    1894, 574, 2756, 148830, 28230, 18819, 16418, 10789, 8811, -171263, 45045,
-    -44834, 16858, 6103, 24726, 7014, 5713, -2103, 1877, 518, 2729, 147073,
-    27744, 18629, 16277, 10690, 8703, -171720, 44153, -45062, 15951, 5872,
-    24429, 7044, 5585, -2082, 1807, 519, 2769, 144791, 27402, 18490, 16126,
-    10548, 8635
-  }
-};
diff --git a/modules/audio_coding/codecs/isac/fix/source/lpc_tables.h b/modules/audio_coding/codecs/isac/fix/source/lpc_tables.h
deleted file mode 100644
index 50e1b12..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/lpc_tables.h
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * lpc_tables.h
- *
- * header file for coding tables for the LPC coefficients
- *
- */
-
-#ifndef MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_LPC_TABLES_H_
-#define MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_LPC_TABLES_H_
-
-#include <stdint.h>
-
-#include "modules/audio_coding/codecs/isac/fix/source/settings.h"
-
-/* indices of KLT coefficients used */
-extern const uint16_t WebRtcIsacfix_kSelIndGain[12];
-
-extern const uint16_t WebRtcIsacfix_kSelIndShape[108];
-
-/* cdf array for model indicator */
-extern const uint16_t WebRtcIsacfix_kModelCdf[KLT_NUM_MODELS + 1];
-
-/* pointer to cdf array for model indicator */
-extern const uint16_t* WebRtcIsacfix_kModelCdfPtr[1];
-
-/* initial cdf index for decoder of model indicator */
-extern const uint16_t WebRtcIsacfix_kModelInitIndex[1];
-
-/* offset to go from rounded value to quantization index */
-extern const int16_t WebRtcIsacfix_kQuantMinGain[12];
-
-extern const int16_t WebRtcIsacfix_kQuantMinShape[108];
-
-/* maximum quantization index */
-extern const uint16_t WebRtcIsacfix_kMaxIndGain[12];
-
-extern const uint16_t WebRtcIsacfix_kMaxIndShape[108];
-
-/* index offset */
-extern const uint16_t WebRtcIsacfix_kOffsetGain[KLT_NUM_MODELS][12];
-
-extern const uint16_t WebRtcIsacfix_kOffsetShape[KLT_NUM_MODELS][108];
-
-/* initial cdf index for KLT coefficients */
-extern const uint16_t WebRtcIsacfix_kInitIndexGain[KLT_NUM_MODELS][12];
-
-extern const uint16_t WebRtcIsacfix_kInitIndexShape[KLT_NUM_MODELS][108];
-
-/* offsets for quantizer representation levels */
-extern const uint16_t WebRtcIsacfix_kOfLevelsGain[3];
-
-extern const uint16_t WebRtcIsacfix_kOfLevelsShape[3];
-
-/* quantizer representation levels */
-extern const int32_t WebRtcIsacfix_kLevelsGainQ17[1176];
-
-extern const int16_t WebRtcIsacfix_kLevelsShapeQ10[1735];
-
-/* cdf tables for quantizer indices */
-extern const uint16_t WebRtcIsacfix_kCdfGain[1212];
-
-extern const uint16_t WebRtcIsacfix_kCdfShape[2059];
-
-/* pointers to cdf tables for quantizer indices */
-extern const uint16_t* WebRtcIsacfix_kCdfGainPtr[KLT_NUM_MODELS][12];
-
-extern const uint16_t* WebRtcIsacfix_kCdfShapePtr[KLT_NUM_MODELS][108];
-
-/* code length for all coefficients using different models */
-extern const int16_t WebRtcIsacfix_kCodeLenGainQ11[392];
-
-extern const int16_t WebRtcIsacfix_kCodeLenShapeQ11[578];
-
-/* left KLT transforms */
-extern const int16_t WebRtcIsacfix_kT1GainQ15[KLT_NUM_MODELS][4];
-
-extern const int16_t WebRtcIsacfix_kT1ShapeQ15[KLT_NUM_MODELS][324];
-
-/* right KLT transforms */
-extern const int16_t WebRtcIsacfix_kT2GainQ15[KLT_NUM_MODELS][36];
-
-extern const int16_t WebRtcIsacfix_kT2ShapeQ15[KLT_NUM_MODELS][36];
-
-/* means of log gains and LAR coefficients */
-extern const int16_t WebRtcIsacfix_kMeansGainQ8[KLT_NUM_MODELS][12];
-
-extern const int32_t WebRtcIsacfix_kMeansShapeQ17[3][108];
-
-#endif /* MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_LPC_TABLES_H_ */
diff --git a/modules/audio_coding/codecs/isac/fix/source/pitch_estimator.c b/modules/audio_coding/codecs/isac/fix/source/pitch_estimator.c
deleted file mode 100644
index 78cb93f..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/pitch_estimator.c
+++ /dev/null
@@ -1,435 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "modules/audio_coding/codecs/isac/fix/source/pitch_estimator.h"
-#include "common_audio/signal_processing/include/signal_processing_library.h"
-#include "rtc_base/compile_assert_c.h"
-
-/* log2[0.2, 0.5, 0.98] in Q8 */
-static const int16_t kLogLagWinQ8[3] = {
-  -594, -256, -7
-};
-
-/* [1 -0.75 0.25] in Q12 */
-static const int16_t kACoefQ12[3] = {
-  4096, -3072, 1024
-};
-
-int32_t WebRtcIsacfix_Log2Q8(uint32_t x) {
-  int32_t zeros;
-  int16_t frac;
-
-  zeros=WebRtcSpl_NormU32(x);
-  frac = (int16_t)(((x << zeros) & 0x7FFFFFFF) >> 23);
-  /* log2(magn(i)) */
-
-  return ((31 - zeros) << 8) + frac;
-}
-
-static __inline int16_t Exp2Q10(int16_t x) { // Both in and out in Q10
-
-  int16_t tmp16_1, tmp16_2;
-
-  tmp16_2=(int16_t)(0x0400|(x&0x03FF));
-  tmp16_1 = -(x >> 10);
-  if(tmp16_1>0)
-    return tmp16_2 >> tmp16_1;
-  else
-    return tmp16_2 << -tmp16_1;
-
-}
-
-
-
-/* 1D parabolic interpolation . All input and output values are in Q8 */
-static __inline void Intrp1DQ8(int32_t *x, int32_t *fx, int32_t *y, int32_t *fy) {
-
-  int16_t sign1=1, sign2=1;
-  int32_t r32, q32, t32, nom32, den32;
-  int16_t t16, tmp16, tmp16_1;
-
-  if ((fx[0]>0) && (fx[2]>0)) {
-    r32=fx[1]-fx[2];
-    q32=fx[0]-fx[1];
-    nom32=q32+r32;
-    den32 = (q32 - r32) * 2;
-    if (nom32<0)
-      sign1=-1;
-    if (den32<0)
-      sign2=-1;
-
-    /* t = (q32+r32)/(2*(q32-r32)) = (fx[0]-fx[1] + fx[1]-fx[2])/(2 * fx[0]-fx[1] - (fx[1]-fx[2]))*/
-    /* (Signs are removed because WebRtcSpl_DivResultInQ31 can't handle negative numbers) */
-    /* t in Q31, without signs */
-    t32 = WebRtcSpl_DivResultInQ31(nom32 * sign1, den32 * sign2);
-
-    t16 = (int16_t)(t32 >> 23);  /* Q8 */
-    t16=t16*sign1*sign2;        /* t in Q8 with signs */
-
-    *y = x[0]+t16;          /* Q8 */
-    // *y = x[1]+t16;          /* Q8 */
-
-    /* The following code calculates fy in three steps */
-    /* fy = 0.5 * t * (t-1) * fx[0] + (1-t*t) * fx[1] + 0.5 * t * (t+1) * fx[2]; */
-
-    /* Part I: 0.5 * t * (t-1) * fx[0] */
-    tmp16_1 = (int16_t)(t16 * t16);  /* Q8*Q8=Q16 */
-    tmp16_1 >>= 2;  /* Q16>>2 = Q14 */
-    t16 <<= 6;  /* Q8<<6 = Q14  */
-    tmp16 = tmp16_1-t16;
-    *fy = WEBRTC_SPL_MUL_16_32_RSFT15(tmp16, fx[0]); /* (Q14 * Q8 >>15)/2 = Q8 */
-
-    /* Part II: (1-t*t) * fx[1] */
-    tmp16 = 16384-tmp16_1;        /* 1 in Q14 - Q14 */
-    *fy += WEBRTC_SPL_MUL_16_32_RSFT14(tmp16, fx[1]);/* Q14 * Q8 >> 14 = Q8 */
-
-    /* Part III: 0.5 * t * (t+1) * fx[2] */
-    tmp16 = tmp16_1+t16;
-    *fy += WEBRTC_SPL_MUL_16_32_RSFT15(tmp16, fx[2]);/* (Q14 * Q8 >>15)/2 = Q8 */
-  } else {
-    *y = x[0];
-    *fy= fx[1];
-  }
-}
-
-
-static void FindFour32(int32_t *in, int16_t length, int16_t *bestind)
-{
-  int32_t best[4]= {-100, -100, -100, -100};
-  int16_t k;
-
-  for (k=0; k<length; k++) {
-    if (in[k] > best[3]) {
-      if (in[k] > best[2]) {
-        if (in[k] > best[1]) {
-          if (in[k] > best[0]) { // The Best
-            best[3] = best[2];
-            bestind[3] = bestind[2];
-            best[2] = best[1];
-            bestind[2] = bestind[1];
-            best[1] = best[0];
-            bestind[1] = bestind[0];
-            best[0] = in[k];
-            bestind[0] = k;
-          } else { // 2nd best
-            best[3] = best[2];
-            bestind[3] = bestind[2];
-            best[2] = best[1];
-            bestind[2] = bestind[1];
-            best[1] = in[k];
-            bestind[1] = k;
-          }
-        } else { // 3rd best
-          best[3] = best[2];
-          bestind[3] = bestind[2];
-          best[2] = in[k];
-          bestind[2] = k;
-        }
-      } else {  // 4th best
-        best[3] = in[k];
-        bestind[3] = k;
-      }
-    }
-  }
-}
-
-
-
-
-
-extern void WebRtcIsacfix_PCorr2Q32(const int16_t *in, int32_t *logcorQ8);
-
-
-
-void WebRtcIsacfix_InitialPitch(const int16_t *in, /* Q0 */
-                                PitchAnalysisStruct *State,
-                                int16_t *lagsQ7                   /* Q7 */
-                                )
-{
-  int16_t buf_dec16[PITCH_CORR_LEN2+PITCH_CORR_STEP2+PITCH_MAX_LAG/2+2];
-  int32_t *crrvecQ8_1,*crrvecQ8_2;
-  int32_t cv1q[PITCH_LAG_SPAN2+2],cv2q[PITCH_LAG_SPAN2+2], peakvq[PITCH_LAG_SPAN2+2];
-  int k;
-  int16_t peaks_indq;
-  int16_t peakiq[PITCH_LAG_SPAN2];
-  int32_t corr;
-  int32_t corr32, corr_max32, corr_max_o32;
-  int16_t npkq;
-  int16_t best4q[4]={0,0,0,0};
-  int32_t xq[3],yq[1],fyq[1];
-  int32_t *fxq;
-  int32_t best_lag1q, best_lag2q;
-  int32_t tmp32a,tmp32b,lag32,ratq;
-  int16_t start;
-  int16_t oldgQ12, tmp16a, tmp16b, gain_bias16,tmp16c, tmp16d, bias16;
-  int32_t tmp32c,tmp32d, tmp32e;
-  int16_t old_lagQ;
-  int32_t old_lagQ8;
-  int32_t lagsQ8[4];
-
-  old_lagQ = State->PFstr_wght.oldlagQ7; // Q7
-  old_lagQ8 = old_lagQ << 1;  // Q8
-
-  oldgQ12= State->PFstr_wght.oldgainQ12;
-
-  crrvecQ8_1=&cv1q[1];
-  crrvecQ8_2=&cv2q[1];
-
-
-  /* copy old values from state buffer */
-  memcpy(buf_dec16, State->dec_buffer16, sizeof(State->dec_buffer16));
-
-  /* decimation; put result after the old values */
-  WebRtcIsacfix_DecimateAllpass32(in, State->decimator_state32, PITCH_FRAME_LEN,
-                                  &buf_dec16[PITCH_CORR_LEN2+PITCH_CORR_STEP2+PITCH_MAX_LAG/2-PITCH_FRAME_LEN/2+2]);
-
-  /* low-pass filtering */
-  start= PITCH_CORR_LEN2+PITCH_CORR_STEP2+PITCH_MAX_LAG/2-PITCH_FRAME_LEN/2+2;
-  WebRtcSpl_FilterARFastQ12(&buf_dec16[start],&buf_dec16[start],(int16_t*)kACoefQ12,3, PITCH_FRAME_LEN/2);
-
-  /* copy end part back into state buffer */
-  for (k = 0; k < (PITCH_CORR_LEN2+PITCH_CORR_STEP2+PITCH_MAX_LAG/2-PITCH_FRAME_LEN/2+2); k++)
-    State->dec_buffer16[k] = buf_dec16[k+PITCH_FRAME_LEN/2];
-
-
-  /* compute correlation for first and second half of the frame */
-  WebRtcIsacfix_PCorr2Q32(buf_dec16, crrvecQ8_1);
-  WebRtcIsacfix_PCorr2Q32(buf_dec16 + PITCH_CORR_STEP2, crrvecQ8_2);
-
-
-  /* bias towards pitch lag of previous frame */
-  tmp32a = WebRtcIsacfix_Log2Q8((uint32_t) old_lagQ8) - 2304;
-      // log2(0.5*oldlag) in Q8
-  tmp32b = oldgQ12 * oldgQ12 >> 10;  // Q12 & * 4.0;
-  gain_bias16 = (int16_t) tmp32b;  //Q12
-  if (gain_bias16 > 3276) gain_bias16 = 3276; // 0.8 in Q12
-
-
-  for (k = 0; k < PITCH_LAG_SPAN2; k++)
-  {
-    if (crrvecQ8_1[k]>0) {
-      tmp32b = WebRtcIsacfix_Log2Q8((uint32_t) (k + (PITCH_MIN_LAG/2-2)));
-      tmp16a = (int16_t) (tmp32b - tmp32a); // Q8 & fabs(ratio)<4
-      tmp32c = tmp16a * tmp16a >> 6;  // Q10
-      tmp16b = (int16_t) tmp32c; // Q10 & <8
-      tmp32d = tmp16b * 177 >> 8;  // mult with ln2 in Q8
-      tmp16c = (int16_t) tmp32d; // Q10 & <4
-      tmp16d = Exp2Q10((int16_t) -tmp16c); //Q10
-      tmp32c = gain_bias16 * tmp16d >> 13;  // Q10  & * 0.5
-      bias16 = (int16_t) (1024 + tmp32c); // Q10
-      tmp32b = WebRtcIsacfix_Log2Q8((uint32_t)bias16) - 2560;
-          // Q10 in -> Q8 out with 10*2^8 offset
-      crrvecQ8_1[k] += tmp32b ; // -10*2^8 offset
-    }
-  }
-
-  /* taper correlation functions */
-  for (k = 0; k < 3; k++) {
-    crrvecQ8_1[k] += kLogLagWinQ8[k];
-    crrvecQ8_2[k] += kLogLagWinQ8[k];
-
-    crrvecQ8_1[PITCH_LAG_SPAN2-1-k] += kLogLagWinQ8[k];
-    crrvecQ8_2[PITCH_LAG_SPAN2-1-k] += kLogLagWinQ8[k];
-  }
-
-
-  /* Make zeropadded corr vectors */
-  cv1q[0]=0;
-  cv2q[0]=0;
-  cv1q[PITCH_LAG_SPAN2+1]=0;
-  cv2q[PITCH_LAG_SPAN2+1]=0;
-  corr_max32 = 0;
-
-  for (k = 1; k <= PITCH_LAG_SPAN2; k++)
-  {
-
-
-    corr32=crrvecQ8_1[k-1];
-    if (corr32 > corr_max32)
-      corr_max32 = corr32;
-
-    corr32=crrvecQ8_2[k-1];
-    corr32 += -4; // Compensate for later (log2(0.99))
-
-    if (corr32 > corr_max32)
-      corr_max32 = corr32;
-
-  }
-
-  /* threshold value to qualify as a peak */
-  // corr_max32 += -726; // log(0.14)/log(2.0) in Q8
-  corr_max32 += -1000; // log(0.14)/log(2.0) in Q8
-  corr_max_o32 = corr_max32;
-
-
-  /* find peaks in corr1 */
-  peaks_indq = 0;
-  for (k = 1; k <= PITCH_LAG_SPAN2; k++)
-  {
-    corr32=cv1q[k];
-    if (corr32>corr_max32) { // Disregard small peaks
-      if ((corr32>=cv1q[k-1]) && (corr32>cv1q[k+1])) { // Peak?
-        peakvq[peaks_indq] = corr32;
-        peakiq[peaks_indq++] = k;
-      }
-    }
-  }
-
-
-  /* find highest interpolated peak */
-  corr_max32=0;
-  best_lag1q =0;
-  if (peaks_indq > 0) {
-    FindFour32(peakvq, (int16_t) peaks_indq, best4q);
-    npkq = WEBRTC_SPL_MIN(peaks_indq, 4);
-
-    for (k=0;k<npkq;k++) {
-
-      lag32 =  peakiq[best4q[k]];
-      fxq = &cv1q[peakiq[best4q[k]]-1];
-      xq[0]= lag32;
-      xq[0] <<= 8;
-      Intrp1DQ8(xq, fxq, yq, fyq);
-
-      tmp32a= WebRtcIsacfix_Log2Q8((uint32_t) *yq) - 2048; // offset 8*2^8
-      /* Bias towards short lags */
-      /* log(pow(0.8, log(2.0 * *y )))/log(2.0) */
-      tmp32b = (int16_t)tmp32a * -42 >> 8;
-      tmp32c= tmp32b + 256;
-      *fyq += tmp32c;
-      if (*fyq > corr_max32) {
-        corr_max32 = *fyq;
-        best_lag1q = *yq;
-      }
-    }
-    tmp32b = (best_lag1q - OFFSET_Q8) * 2;
-    lagsQ8[0] = tmp32b + PITCH_MIN_LAG_Q8;
-    lagsQ8[1] = lagsQ8[0];
-  } else {
-    lagsQ8[0] = old_lagQ8;
-    lagsQ8[1] = lagsQ8[0];
-  }
-
-  /* Bias towards constant pitch */
-  tmp32a = lagsQ8[0] - PITCH_MIN_LAG_Q8;
-  ratq = (tmp32a >> 1) + OFFSET_Q8;
-
-  for (k = 1; k <= PITCH_LAG_SPAN2; k++)
-  {
-    tmp32a = k << 7; // 0.5*k Q8
-    tmp32b = tmp32a * 2 - ratq;  // Q8
-    tmp32c = (int16_t)tmp32b * (int16_t)tmp32b >> 8;  // Q8
-
-    tmp32b = tmp32c + (ratq >> 1);
-        // (k-r)^2 + 0.5 * r  Q8
-    tmp32c = WebRtcIsacfix_Log2Q8((uint32_t)tmp32a) - 2048;
-        // offset 8*2^8 , log2(0.5*k) Q8
-    tmp32d = WebRtcIsacfix_Log2Q8((uint32_t)tmp32b) - 2048;
-        // offset 8*2^8 , log2(0.5*k) Q8
-    tmp32e =  tmp32c - tmp32d;
-
-    cv2q[k] += tmp32e >> 1;
-
-  }
-
-  /* find peaks in corr2 */
-  corr_max32 = corr_max_o32;
-  peaks_indq = 0;
-
-  for (k = 1; k <= PITCH_LAG_SPAN2; k++)
-  {
-    corr=cv2q[k];
-    if (corr>corr_max32) { // Disregard small peaks
-      if ((corr>=cv2q[k-1]) && (corr>cv2q[k+1])) { // Peak?
-        peakvq[peaks_indq] = corr;
-        peakiq[peaks_indq++] = k;
-      }
-    }
-  }
-
-
-
-  /* find highest interpolated peak */
-  corr_max32 = 0;
-  best_lag2q =0;
-  if (peaks_indq > 0) {
-
-    FindFour32(peakvq, (int16_t) peaks_indq, best4q);
-    npkq = WEBRTC_SPL_MIN(peaks_indq, 4);
-    for (k=0;k<npkq;k++) {
-
-      lag32 =  peakiq[best4q[k]];
-      fxq = &cv2q[peakiq[best4q[k]]-1];
-
-      xq[0]= lag32;
-      xq[0] <<= 8;
-      Intrp1DQ8(xq, fxq, yq, fyq);
-
-      /* Bias towards short lags */
-      /* log(pow(0.8, log(2.0f * *y )))/log(2.0f) */
-      tmp32a= WebRtcIsacfix_Log2Q8((uint32_t) *yq) - 2048; // offset 8*2^8
-      tmp32b = (int16_t)tmp32a * -82 >> 8;
-      tmp32c= tmp32b + 256;
-      *fyq += tmp32c;
-      if (*fyq > corr_max32) {
-        corr_max32 = *fyq;
-        best_lag2q = *yq;
-      }
-    }
-
-    tmp32b = (best_lag2q - OFFSET_Q8) * 2;
-    lagsQ8[2] = tmp32b + PITCH_MIN_LAG_Q8;
-    lagsQ8[3] = lagsQ8[2];
-  } else {
-    lagsQ8[2] = lagsQ8[0];
-    lagsQ8[3] = lagsQ8[0];
-  }
-
-  lagsQ7[0] = (int16_t)(lagsQ8[0] >> 1);
-  lagsQ7[1] = (int16_t)(lagsQ8[1] >> 1);
-  lagsQ7[2] = (int16_t)(lagsQ8[2] >> 1);
-  lagsQ7[3] = (int16_t)(lagsQ8[3] >> 1);
-}
-
-
-
-void WebRtcIsacfix_PitchAnalysis(const int16_t *inn,               /* PITCH_FRAME_LEN samples */
-                                 int16_t *outQ0,                  /* PITCH_FRAME_LEN+QLOOKAHEAD samples */
-                                 PitchAnalysisStruct *State,
-                                 int16_t *PitchLags_Q7,
-                                 int16_t *PitchGains_Q12)
-{
-  int16_t inbufQ0[PITCH_FRAME_LEN + QLOOKAHEAD];
-  int16_t k;
-
-  /* inital pitch estimate */
-  WebRtcIsacfix_InitialPitch(inn, State,  PitchLags_Q7);
-
-
-  /* Calculate gain */
-  WebRtcIsacfix_PitchFilterGains(inn, &(State->PFstr_wght), PitchLags_Q7, PitchGains_Q12);
-
-  /* concatenate previous input's end and current input */
-  for (k = 0; k < QLOOKAHEAD; k++) {
-    inbufQ0[k] = State->inbuf[k];
-  }
-  for (k = 0; k < PITCH_FRAME_LEN; k++) {
-    inbufQ0[k+QLOOKAHEAD] = (int16_t) inn[k];
-  }
-
-  /* lookahead pitch filtering for masking analysis */
-  WebRtcIsacfix_PitchFilter(inbufQ0, outQ0, &(State->PFstr), PitchLags_Q7,PitchGains_Q12, 2);
-
-
-  /* store last part of input */
-  for (k = 0; k < QLOOKAHEAD; k++) {
-    State->inbuf[k] = inbufQ0[k + PITCH_FRAME_LEN];
-  }
-}
diff --git a/modules/audio_coding/codecs/isac/fix/source/pitch_estimator.h b/modules/audio_coding/codecs/isac/fix/source/pitch_estimator.h
deleted file mode 100644
index 4303c82..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/pitch_estimator.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * pitch_estimator.h
- *
- * Pitch functions
- *
- */
-
-#ifndef MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_PITCH_ESTIMATOR_H_
-#define MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_PITCH_ESTIMATOR_H_
-
-#include "modules/audio_coding/codecs/isac/fix/source/structs.h"
-
-void WebRtcIsacfix_PitchAnalysis(
-    const int16_t* in, /* PITCH_FRAME_LEN samples */
-    int16_t* outQ0,    /* PITCH_FRAME_LEN+QLOOKAHEAD samples */
-    PitchAnalysisStruct* State,
-    int16_t* lagsQ7,
-    int16_t* PitchGains_Q12);
-
-void WebRtcIsacfix_InitialPitch(const int16_t* in,
-                                PitchAnalysisStruct* State,
-                                int16_t* qlags);
-
-void WebRtcIsacfix_PitchFilter(int16_t* indatFix,
-                               int16_t* outdatQQ,
-                               PitchFiltstr* pfp,
-                               int16_t* lagsQ7,
-                               int16_t* gainsQ12,
-                               int16_t type);
-
-void WebRtcIsacfix_PitchFilterCore(int loopNumber,
-                                   int16_t gain,
-                                   size_t index,
-                                   int16_t sign,
-                                   int16_t* inputState,
-                                   int16_t* outputBuff2,
-                                   const int16_t* coefficient,
-                                   int16_t* inputBuf,
-                                   int16_t* outputBuf,
-                                   int* index2);
-
-void WebRtcIsacfix_PitchFilterGains(const int16_t* indatQ0,
-                                    PitchFiltstr* pfp,
-                                    int16_t* lagsQ7,
-                                    int16_t* gainsQ12);
-
-void WebRtcIsacfix_DecimateAllpass32(
-    const int16_t* in,
-    int32_t* state_in, /* array of size: 2*ALLPASSSECTIONS+1 */
-    int16_t N,         /* number of input samples */
-    int16_t* out);     /* array of size N/2 */
-
-int32_t WebRtcIsacfix_Log2Q8(uint32_t x);
-
-void WebRtcIsacfix_PCorr2Q32(const int16_t* in, int32_t* logcorQ8);
-
-#endif /* MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_PITCH_ESTIMATOR_H_ */
diff --git a/modules/audio_coding/codecs/isac/fix/source/pitch_estimator_c.c b/modules/audio_coding/codecs/isac/fix/source/pitch_estimator_c.c
deleted file mode 100644
index c4af9ab..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/pitch_estimator_c.c
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- *  Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "modules/audio_coding/codecs/isac/fix/source/pitch_estimator.h"
-
-#ifdef WEBRTC_HAS_NEON
-#include <arm_neon.h>
-#endif
-
-#include "common_audio/signal_processing/include/signal_processing_library.h"
-#include "rtc_base/compile_assert_c.h"
-
-extern int32_t WebRtcIsacfix_Log2Q8(uint32_t x);
-
-void WebRtcIsacfix_PCorr2Q32(const int16_t* in, int32_t* logcorQ8) {
-  int16_t scaling,n,k;
-  int32_t csum32, lys, lcs;
-  int64_t ysum64;
-  const int32_t oneQ8 = 1 << 8;  // 1.00 in Q8
-  const int16_t* x;
-  const int16_t* inptr;
-
-  x = in + PITCH_MAX_LAG / 2 + 2;
-  scaling = WebRtcSpl_GetScalingSquare((int16_t*)in,
-                                       PITCH_CORR_LEN2,
-                                       PITCH_CORR_LEN2);
-  ysum64 = 1;
-  csum32 = 0;
-  x = in + PITCH_MAX_LAG / 2 + 2;
-  for (n = 0; n < PITCH_CORR_LEN2; n++) {
-    ysum64 += in[n] * in[n] >> scaling;  // Q0
-    csum32 += x[n] * in[n] >> scaling;  // Q0
-  }
-  logcorQ8 += PITCH_LAG_SPAN2 - 1;
-  lys = WebRtcIsacfix_Log2Q8((uint32_t)ysum64) >> 1; // Q8, sqrt(ysum)
-  if (csum32 > 0) {
-    lcs = WebRtcIsacfix_Log2Q8((uint32_t)csum32);  // 2log(csum) in Q8
-    if (lcs > (lys + oneQ8)) {          // csum/sqrt(ysum) > 2 in Q8
-      *logcorQ8 = lcs - lys;            // log2(csum/sqrt(ysum))
-    } else {
-      *logcorQ8 = oneQ8;                // 1.00
-    }
-  } else {
-    *logcorQ8 = 0;
-  }
-
-
-  for (k = 1; k < PITCH_LAG_SPAN2; k++) {
-    inptr = &in[k];
-    ysum64 -= in[k - 1] * in[k - 1] >> scaling;
-    ysum64 += (int32_t)(in[PITCH_CORR_LEN2 + k - 1])
-        * in[PITCH_CORR_LEN2 + k - 1] >> scaling;
-
-#ifdef WEBRTC_HAS_NEON
-    {
-      int32_t vbuff[4];
-      int32x4_t int_32x4_sum = vmovq_n_s32(0);
-      // Can't shift a Neon register to right with a non-constant shift value.
-      int32x4_t int_32x4_scale = vdupq_n_s32(-scaling);
-      // Assert a codition used in loop unrolling at compile-time.
-      RTC_COMPILE_ASSERT(PITCH_CORR_LEN2 %4 == 0);
-
-      for (n = 0; n < PITCH_CORR_LEN2; n += 4) {
-        int16x4_t int_16x4_x = vld1_s16(&x[n]);
-        int16x4_t int_16x4_in = vld1_s16(&inptr[n]);
-        int32x4_t int_32x4 = vmull_s16(int_16x4_x, int_16x4_in);
-        int_32x4 = vshlq_s32(int_32x4, int_32x4_scale);
-        int_32x4_sum = vaddq_s32(int_32x4_sum, int_32x4);
-      }
-
-      // Use vector store to avoid long stall from data trasferring
-      // from vector to general register.
-      vst1q_s32(vbuff, int_32x4_sum);
-      csum32 = vbuff[0] + vbuff[1];
-      csum32 += vbuff[2];
-      csum32 += vbuff[3];
-    }
-#else
-    int64_t csum64_tmp = 0;
-    if(scaling == 0) {
-      for (n = 0; n < PITCH_CORR_LEN2; n++) {
-        csum64_tmp += (int32_t)(x[n]) * inptr[n];
-      }
-    } else {
-      for (n = 0; n < PITCH_CORR_LEN2; n++) {
-        csum64_tmp += ((int32_t)(x[n]) * inptr[n]) >> scaling;
-      }
-    }
-    csum32 = csum64_tmp;
-#endif
-
-    logcorQ8--;
-
-    lys = WebRtcIsacfix_Log2Q8((uint32_t)ysum64) >> 1; // Q8, sqrt(ysum)
-
-    if (csum32 > 0) {
-      lcs = WebRtcIsacfix_Log2Q8((uint32_t)csum32);  // 2log(csum) in Q8
-      if (lcs > (lys + oneQ8)) {          // csum/sqrt(ysum) > 2
-        *logcorQ8 = lcs - lys;            // log2(csum/sqrt(ysum))
-      } else {
-        *logcorQ8 = oneQ8;                // 1.00
-      }
-    } else {
-      *logcorQ8 = 0;
-    }
-  }
-}
diff --git a/modules/audio_coding/codecs/isac/fix/source/pitch_estimator_mips.c b/modules/audio_coding/codecs/isac/fix/source/pitch_estimator_mips.c
deleted file mode 100644
index 4ead84c..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/pitch_estimator_mips.c
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "modules/audio_coding/codecs/isac/fix/source/pitch_estimator.h"
-#include "common_audio/signal_processing/include/signal_processing_library.h"
-#include "rtc_base/compile_assert_c.h"
-
-extern int32_t WebRtcIsacfix_Log2Q8(uint32_t x);
-
-void WebRtcIsacfix_PCorr2Q32(const int16_t* in, int32_t* logcorQ8) {
-  int16_t scaling,n,k;
-  int32_t ysum32,csum32, lys, lcs;
-  const int32_t oneQ8 = 1 << 8;  // 1.00 in Q8
-  const int16_t* x;
-  const int16_t* inptr;
-
-  x = in + PITCH_MAX_LAG / 2 + 2;
-  scaling = WebRtcSpl_GetScalingSquare((int16_t*)in,
-                                       PITCH_CORR_LEN2,
-                                       PITCH_CORR_LEN2);
-  ysum32 = 1;
-  csum32 = 0;
-  x = in + PITCH_MAX_LAG / 2 + 2;
-  {
-    const int16_t* tmp_x = x;
-    const int16_t* tmp_in = in;
-    int32_t tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8;
-    n = PITCH_CORR_LEN2;
-    RTC_COMPILE_ASSERT(PITCH_CORR_LEN2 % 4 == 0);
-    __asm __volatile (
-      ".set       push                                          \n\t"
-      ".set       noreorder                                     \n\t"
-     "1:                                                        \n\t"
-      "lh         %[tmp1],       0(%[tmp_in])                   \n\t"
-      "lh         %[tmp2],       2(%[tmp_in])                   \n\t"
-      "lh         %[tmp3],       4(%[tmp_in])                   \n\t"
-      "lh         %[tmp4],       6(%[tmp_in])                   \n\t"
-      "lh         %[tmp5],       0(%[tmp_x])                    \n\t"
-      "lh         %[tmp6],       2(%[tmp_x])                    \n\t"
-      "lh         %[tmp7],       4(%[tmp_x])                    \n\t"
-      "lh         %[tmp8],       6(%[tmp_x])                    \n\t"
-      "mul        %[tmp5],       %[tmp1],        %[tmp5]        \n\t"
-      "mul        %[tmp1],       %[tmp1],        %[tmp1]        \n\t"
-      "mul        %[tmp6],       %[tmp2],        %[tmp6]        \n\t"
-      "mul        %[tmp2],       %[tmp2],        %[tmp2]        \n\t"
-      "mul        %[tmp7],       %[tmp3],        %[tmp7]        \n\t"
-      "mul        %[tmp3],       %[tmp3],        %[tmp3]        \n\t"
-      "mul        %[tmp8],       %[tmp4],        %[tmp8]        \n\t"
-      "mul        %[tmp4],       %[tmp4],        %[tmp4]        \n\t"
-      "addiu      %[n],          %[n],           -4             \n\t"
-      "srav       %[tmp5],       %[tmp5],        %[scaling]     \n\t"
-      "srav       %[tmp1],       %[tmp1],        %[scaling]     \n\t"
-      "srav       %[tmp6],       %[tmp6],        %[scaling]     \n\t"
-      "srav       %[tmp2],       %[tmp2],        %[scaling]     \n\t"
-      "srav       %[tmp7],       %[tmp7],        %[scaling]     \n\t"
-      "srav       %[tmp3],       %[tmp3],        %[scaling]     \n\t"
-      "srav       %[tmp8],       %[tmp8],        %[scaling]     \n\t"
-      "srav       %[tmp4],       %[tmp4],        %[scaling]     \n\t"
-      "addu       %[ysum32],     %[ysum32],      %[tmp1]        \n\t"
-      "addu       %[csum32],     %[csum32],      %[tmp5]        \n\t"
-      "addu       %[ysum32],     %[ysum32],      %[tmp2]        \n\t"
-      "addu       %[csum32],     %[csum32],      %[tmp6]        \n\t"
-      "addu       %[ysum32],     %[ysum32],      %[tmp3]        \n\t"
-      "addu       %[csum32],     %[csum32],      %[tmp7]        \n\t"
-      "addu       %[ysum32],     %[ysum32],      %[tmp4]        \n\t"
-      "addu       %[csum32],     %[csum32],      %[tmp8]        \n\t"
-      "addiu      %[tmp_in],     %[tmp_in],      8              \n\t"
-      "bgtz       %[n],          1b                             \n\t"
-      " addiu     %[tmp_x],      %[tmp_x],       8              \n\t"
-      ".set       pop                                           \n\t"
-      : [tmp1] "=&r" (tmp1), [tmp2] "=&r" (tmp2), [tmp3] "=&r" (tmp3),
-        [tmp4] "=&r" (tmp4), [tmp5] "=&r" (tmp5), [tmp6] "=&r" (tmp6),
-        [tmp7] "=&r" (tmp7), [tmp8] "=&r" (tmp8), [tmp_in] "+r" (tmp_in),
-        [ysum32] "+r" (ysum32), [tmp_x] "+r" (tmp_x), [csum32] "+r" (csum32),
-        [n] "+r" (n)
-      : [scaling] "r" (scaling)
-      : "memory", "hi", "lo"
-    );
-  }
-  logcorQ8 += PITCH_LAG_SPAN2 - 1;
-  lys = WebRtcIsacfix_Log2Q8((uint32_t)ysum32) >> 1; // Q8, sqrt(ysum)
-  if (csum32 > 0) {
-    lcs = WebRtcIsacfix_Log2Q8((uint32_t)csum32);  // 2log(csum) in Q8
-    if (lcs > (lys + oneQ8)) {  // csum/sqrt(ysum) > 2 in Q8
-      *logcorQ8 = lcs - lys;  // log2(csum/sqrt(ysum))
-    } else {
-      *logcorQ8 = oneQ8;  // 1.00
-    }
-  } else {
-    *logcorQ8 = 0;
-  }
-
-  for (k = 1; k < PITCH_LAG_SPAN2; k++) {
-    inptr = &in[k];
-    const int16_t* tmp_in1 = &in[k - 1];
-    const int16_t* tmp_in2 = &in[PITCH_CORR_LEN2 + k - 1];
-    const int16_t* tmp_x = x;
-    int32_t tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8;
-    n = PITCH_CORR_LEN2;
-    csum32 = 0;
-    __asm __volatile (
-      ".set       push                                             \n\t"
-      ".set       noreorder                                        \n\t"
-      "lh         %[tmp1],        0(%[tmp_in1])                    \n\t"
-      "lh         %[tmp2],        0(%[tmp_in2])                    \n\t"
-      "mul        %[tmp1],        %[tmp1],         %[tmp1]         \n\t"
-      "mul        %[tmp2],        %[tmp2],         %[tmp2]         \n\t"
-      "srav       %[tmp1],        %[tmp1],         %[scaling]      \n\t"
-      "srav       %[tmp2],        %[tmp2],         %[scaling]      \n\t"
-      "subu       %[ysum32],      %[ysum32],       %[tmp1]         \n\t"
-      "bnez       %[scaling],     2f                               \n\t"
-      " addu      %[ysum32],      %[ysum32],       %[tmp2]         \n\t"
-     "1:                                                           \n\t"
-      "lh         %[tmp1],        0(%[inptr])                      \n\t"
-      "lh         %[tmp2],        0(%[tmp_x])                      \n\t"
-      "lh         %[tmp3],        2(%[inptr])                      \n\t"
-      "lh         %[tmp4],        2(%[tmp_x])                      \n\t"
-      "lh         %[tmp5],        4(%[inptr])                      \n\t"
-      "lh         %[tmp6],        4(%[tmp_x])                      \n\t"
-      "lh         %[tmp7],        6(%[inptr])                      \n\t"
-      "lh         %[tmp8],        6(%[tmp_x])                      \n\t"
-      "mul        %[tmp1],        %[tmp1],         %[tmp2]         \n\t"
-      "mul        %[tmp2],        %[tmp3],         %[tmp4]         \n\t"
-      "mul        %[tmp3],        %[tmp5],         %[tmp6]         \n\t"
-      "mul        %[tmp4],        %[tmp7],         %[tmp8]         \n\t"
-      "addiu      %[n],           %[n],            -4              \n\t"
-      "addiu      %[inptr],       %[inptr],        8               \n\t"
-      "addiu      %[tmp_x],       %[tmp_x],        8               \n\t"
-      "addu       %[csum32],      %[csum32],       %[tmp1]         \n\t"
-      "addu       %[csum32],      %[csum32],       %[tmp2]         \n\t"
-      "addu       %[csum32],      %[csum32],       %[tmp3]         \n\t"
-      "bgtz       %[n],           1b                               \n\t"
-      " addu      %[csum32],      %[csum32],       %[tmp4]         \n\t"
-      "b          3f                                               \n\t"
-      " nop                                                        \n\t"
-     "2:                                                           \n\t"
-      "lh         %[tmp1],        0(%[inptr])                      \n\t"
-      "lh         %[tmp2],        0(%[tmp_x])                      \n\t"
-      "lh         %[tmp3],        2(%[inptr])                      \n\t"
-      "lh         %[tmp4],        2(%[tmp_x])                      \n\t"
-      "lh         %[tmp5],        4(%[inptr])                      \n\t"
-      "lh         %[tmp6],        4(%[tmp_x])                      \n\t"
-      "lh         %[tmp7],        6(%[inptr])                      \n\t"
-      "lh         %[tmp8],        6(%[tmp_x])                      \n\t"
-      "mul        %[tmp1],        %[tmp1],         %[tmp2]         \n\t"
-      "mul        %[tmp2],        %[tmp3],         %[tmp4]         \n\t"
-      "mul        %[tmp3],        %[tmp5],         %[tmp6]         \n\t"
-      "mul        %[tmp4],        %[tmp7],         %[tmp8]         \n\t"
-      "addiu      %[n],           %[n],            -4              \n\t"
-      "addiu      %[inptr],       %[inptr],        8               \n\t"
-      "addiu      %[tmp_x],       %[tmp_x],        8               \n\t"
-      "srav       %[tmp1],        %[tmp1],         %[scaling]      \n\t"
-      "srav       %[tmp2],        %[tmp2],         %[scaling]      \n\t"
-      "srav       %[tmp3],        %[tmp3],         %[scaling]      \n\t"
-      "srav       %[tmp4],        %[tmp4],         %[scaling]      \n\t"
-      "addu       %[csum32],      %[csum32],       %[tmp1]         \n\t"
-      "addu       %[csum32],      %[csum32],       %[tmp2]         \n\t"
-      "addu       %[csum32],      %[csum32],       %[tmp3]         \n\t"
-      "bgtz       %[n],           2b                               \n\t"
-      " addu      %[csum32],      %[csum32],       %[tmp4]         \n\t"
-     "3:                                                           \n\t"
-      ".set       pop                                              \n\t"
-      : [tmp1] "=&r" (tmp1), [tmp2] "=&r" (tmp2), [tmp3] "=&r" (tmp3),
-        [tmp4] "=&r" (tmp4), [tmp5] "=&r" (tmp5), [tmp6] "=&r" (tmp6),
-        [tmp7] "=&r" (tmp7), [tmp8] "=&r" (tmp8), [inptr] "+r" (inptr),
-        [csum32] "+r" (csum32), [tmp_x] "+r" (tmp_x), [ysum32] "+r" (ysum32),
-        [n] "+r" (n)
-      : [tmp_in1] "r" (tmp_in1), [tmp_in2] "r" (tmp_in2),
-        [scaling] "r" (scaling)
-      : "memory", "hi", "lo"
-    );
-
-    logcorQ8--;
-    lys = WebRtcIsacfix_Log2Q8((uint32_t)ysum32) >> 1; // Q8, sqrt(ysum)
-    if (csum32 > 0) {
-      lcs = WebRtcIsacfix_Log2Q8((uint32_t)csum32); // 2log(csum) in Q8
-      if (lcs > (lys + oneQ8)) { // csum/sqrt(ysum) > 2
-        *logcorQ8 = lcs - lys;  // log2(csum/sqrt(ysum))
-      } else {
-        *logcorQ8 = oneQ8;  // 1.00
-      }
-    } else {
-      *logcorQ8 = 0;
-    }
-  }
-}
diff --git a/modules/audio_coding/codecs/isac/fix/source/pitch_filter.c b/modules/audio_coding/codecs/isac/fix/source/pitch_filter.c
deleted file mode 100644
index 7355330..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/pitch_filter.c
+++ /dev/null
@@ -1,248 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "modules/audio_coding/codecs/isac/fix/source/pitch_estimator.h"
-#include "common_audio/signal_processing/include/signal_processing_library.h"
-#include "modules/audio_coding/codecs/isac/fix/source/settings.h"
-#include "modules/audio_coding/codecs/isac/fix/source/structs.h"
-#include "rtc_base/compile_assert_c.h"
-
-// Number of segments in a pitch subframe.
-static const int kSegments = 5;
-
-// A division factor of 1/5 in Q15.
-static const int16_t kDivFactor = 6553;
-
-// Interpolation coefficients; generated by design_pitch_filter.m.
-// Coefficients are stored in Q14.
-static const int16_t kIntrpCoef[PITCH_FRACS][PITCH_FRACORDER] = {
-  {-367, 1090, -2706,  9945, 10596, -3318,  1626, -781,  287},
-  {-325,  953, -2292,  7301, 12963, -3320,  1570, -743,  271},
-  {-240,  693, -1622,  4634, 14809, -2782,  1262, -587,  212},
-  {-125,  358,  -817,  2144, 15982, -1668,   721, -329,  118},
-  {   0,    0,    -1,     1, 16380,     1,    -1,    0,    0},
-  { 118, -329,   721, -1668, 15982,  2144,  -817,  358, -125},
-  { 212, -587,  1262, -2782, 14809,  4634, -1622,  693, -240},
-  { 271, -743,  1570, -3320, 12963,  7301, -2292,  953, -325}
-};
-
-static __inline size_t CalcLrIntQ(int16_t fixVal,
-                                  int16_t qDomain) {
-  int32_t roundVal = 1 << (qDomain - 1);
-
-  return (fixVal + roundVal) >> qDomain;
-}
-
-void WebRtcIsacfix_PitchFilter(int16_t* indatQQ, // Q10 if type is 1 or 4,
-                                                       // Q0 if type is 2.
-                               int16_t* outdatQQ,
-                               PitchFiltstr* pfp,
-                               int16_t* lagsQ7,
-                               int16_t* gainsQ12,
-                               int16_t type) {
-  int    k, ind, cnt;
-  int16_t sign = 1;
-  int16_t inystateQQ[PITCH_DAMPORDER];
-  int16_t ubufQQ[PITCH_INTBUFFSIZE + QLOOKAHEAD];
-  const int16_t Gain = 21299;     // 1.3 in Q14
-  int16_t oldLagQ7;
-  int16_t oldGainQ12, lagdeltaQ7, curLagQ7, gaindeltaQ12, curGainQ12;
-  size_t frcQQ = 0;
-  int32_t indW32 = 0;
-  const int16_t* fracoeffQQ = NULL;
-
-  // Assumptions in ARM assembly for WebRtcIsacfix_PitchFilterCoreARM().
-  RTC_COMPILE_ASSERT(PITCH_FRACORDER == 9);
-  RTC_COMPILE_ASSERT(PITCH_DAMPORDER == 5);
-
-  // Set up buffer and states.
-  memcpy(ubufQQ, pfp->ubufQQ, sizeof(pfp->ubufQQ));
-  memcpy(inystateQQ, pfp->ystateQQ, sizeof(inystateQQ));
-
-  // Get old lag and gain value from memory.
-  oldLagQ7 = pfp->oldlagQ7;
-  oldGainQ12 = pfp->oldgainQ12;
-
-  if (type == 4) {
-    sign = -1;
-
-    // Make output more periodic.
-    for (k = 0; k < PITCH_SUBFRAMES; k++) {
-      gainsQ12[k] = (int16_t)(gainsQ12[k] * Gain >> 14);
-    }
-  }
-
-  // No interpolation if pitch lag step is big.
-  if (((lagsQ7[0] * 3 >> 1) < oldLagQ7) || (lagsQ7[0] > (oldLagQ7 * 3 >> 1))) {
-    oldLagQ7 = lagsQ7[0];
-    oldGainQ12 = gainsQ12[0];
-  }
-
-  ind = 0;
-
-  for (k = 0; k < PITCH_SUBFRAMES; k++) {
-    // Calculate interpolation steps.
-    lagdeltaQ7 = lagsQ7[k] - oldLagQ7;
-    lagdeltaQ7 = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT_WITH_ROUND(
-                  lagdeltaQ7, kDivFactor, 15);
-    curLagQ7 = oldLagQ7;
-    gaindeltaQ12 = gainsQ12[k] - oldGainQ12;
-    gaindeltaQ12 = (int16_t)(gaindeltaQ12 * kDivFactor >> 15);
-
-    curGainQ12 = oldGainQ12;
-    oldLagQ7 = lagsQ7[k];
-    oldGainQ12 = gainsQ12[k];
-
-    // Each frame has 4 60-sample pitch subframes, and each subframe has 5
-    // 12-sample segments. Each segment need to be processed with
-    // newly-updated parameters, so we break the pitch filtering into
-    // two for-loops (5 x 12) below. It's also why kDivFactor = 0.2 (in Q15).
-    for (cnt = 0; cnt < kSegments; cnt++) {
-      // Update parameters for each segment.
-      curGainQ12 += gaindeltaQ12;
-      curLagQ7 += lagdeltaQ7;
-      indW32 = CalcLrIntQ(curLagQ7, 7);
-      if (indW32 < PITCH_FRACORDER - 2) {
-        // WebRtcIsacfix_PitchFilterCore requires indW32 >= PITCH_FRACORDER -
-        // 2; otherwise, it will read from entries of ubufQQ that haven't been
-        // written yet. (This problem has only been seen in fuzzer tests, not
-        // in real life.) See Chromium bug 581901.
-        indW32 = PITCH_FRACORDER - 2;
-      }
-      frcQQ = ((indW32 << 7) + 64 - curLagQ7) >> 4;
-
-      if (frcQQ >= PITCH_FRACS) {
-        frcQQ = 0;
-      }
-      fracoeffQQ = kIntrpCoef[frcQQ];
-
-      // Pitch filtering.
-      WebRtcIsacfix_PitchFilterCore(PITCH_SUBFRAME_LEN / kSegments, curGainQ12,
-        indW32, sign, inystateQQ, ubufQQ, fracoeffQQ, indatQQ, outdatQQ, &ind);
-    }
-  }
-
-  // Export buffer and states.
-  memcpy(pfp->ubufQQ, ubufQQ + PITCH_FRAME_LEN, sizeof(pfp->ubufQQ));
-  memcpy(pfp->ystateQQ, inystateQQ, sizeof(pfp->ystateQQ));
-
-  pfp->oldlagQ7 = oldLagQ7;
-  pfp->oldgainQ12 = oldGainQ12;
-
-  if (type == 2) {
-    // Filter look-ahead segment.
-    WebRtcIsacfix_PitchFilterCore(QLOOKAHEAD, curGainQ12, indW32, 1, inystateQQ,
-                ubufQQ, fracoeffQQ, indatQQ, outdatQQ, &ind);
-  }
-}
-
-
-void WebRtcIsacfix_PitchFilterGains(const int16_t* indatQ0,
-                                    PitchFiltstr* pfp,
-                                    int16_t* lagsQ7,
-                                    int16_t* gainsQ12) {
-  int  k, n, m;
-  size_t ind, pos, pos3QQ;
-
-  int16_t ubufQQ[PITCH_INTBUFFSIZE];
-  int16_t oldLagQ7, lagdeltaQ7, curLagQ7;
-  const int16_t* fracoeffQQ = NULL;
-  int16_t scale;
-  int16_t cnt = 0, tmpW16;
-  size_t frcQQ, indW16 = 0;
-  int32_t tmpW32, tmp2W32, csum1QQ, esumxQQ;
-
-  // Set up buffer and states.
-  memcpy(ubufQQ, pfp->ubufQQ, sizeof(pfp->ubufQQ));
-  oldLagQ7 = pfp->oldlagQ7;
-
-  // No interpolation if pitch lag step is big.
-  if (((lagsQ7[0] * 3 >> 1) < oldLagQ7) || (lagsQ7[0] > (oldLagQ7 * 3 >> 1))) {
-    oldLagQ7 = lagsQ7[0];
-  }
-
-  ind = 0;
-  pos = ind + PITCH_BUFFSIZE;
-  scale = 0;
-  for (k = 0; k < PITCH_SUBFRAMES; k++) {
-
-    // Calculate interpolation steps.
-    lagdeltaQ7 = lagsQ7[k] - oldLagQ7;
-    lagdeltaQ7 = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT_WITH_ROUND(
-                   lagdeltaQ7, kDivFactor, 15);
-    curLagQ7 = oldLagQ7;
-    oldLagQ7 = lagsQ7[k];
-
-    csum1QQ = 1;
-    esumxQQ = 1;
-
-    // Same as function WebRtcIsacfix_PitchFilter(), we break the pitch
-    // filtering into two for-loops (5 x 12) below.
-    for (cnt = 0; cnt < kSegments; cnt++) {
-      // Update parameters for each segment.
-      curLagQ7 += lagdeltaQ7;
-      indW16 = CalcLrIntQ(curLagQ7, 7);
-      frcQQ = ((indW16 << 7) + 64 - curLagQ7) >> 4;
-
-      if (frcQQ >= PITCH_FRACS) {
-        frcQQ = 0;
-      }
-      fracoeffQQ = kIntrpCoef[frcQQ];
-
-      pos3QQ = pos - (indW16 + 4);
-
-      for (n = 0; n < PITCH_SUBFRAME_LEN / kSegments; n++) {
-        // Filter to get fractional pitch.
-
-        tmpW32 = 0;
-        for (m = 0; m < PITCH_FRACORDER; m++) {
-          tmpW32 += ubufQQ[pos3QQ + m] * fracoeffQQ[m];
-        }
-
-        // Subtract from input and update buffer.
-        ubufQQ[pos] = indatQ0[ind];
-
-        tmp2W32 = WEBRTC_SPL_MUL_16_32_RSFT14(indatQ0[ind], tmpW32);
-        tmpW32 += 8192;
-        tmpW16 = tmpW32 >> 14;
-        tmpW32 = tmpW16 * tmpW16;
-
-        if ((tmp2W32 > 1073700000) || (csum1QQ > 1073700000) ||
-            (tmpW32 > 1073700000) || (esumxQQ > 1073700000)) {  // 2^30
-          scale++;
-          csum1QQ >>= 1;
-          esumxQQ >>= 1;
-        }
-        csum1QQ += tmp2W32 >> scale;
-        esumxQQ += tmpW32 >> scale;
-
-        ind++;
-        pos++;
-        pos3QQ++;
-      }
-    }
-
-    if (csum1QQ < esumxQQ) {
-      tmp2W32 = WebRtcSpl_DivResultInQ31(csum1QQ, esumxQQ);
-
-      // Gain should be half the correlation.
-      tmpW32 = tmp2W32 >> 20;
-    } else {
-      tmpW32 = 4096;
-    }
-    gainsQ12[k] = (int16_t)WEBRTC_SPL_SAT(PITCH_MAX_GAIN_Q12, tmpW32, 0);
-  }
-
-  // Export buffer and states.
-  memcpy(pfp->ubufQQ, ubufQQ + PITCH_FRAME_LEN, sizeof(pfp->ubufQQ));
-  pfp->oldlagQ7 = lagsQ7[PITCH_SUBFRAMES - 1];
-  pfp->oldgainQ12 = gainsQ12[PITCH_SUBFRAMES - 1];
-
-}
diff --git a/modules/audio_coding/codecs/isac/fix/source/pitch_filter_armv6.S b/modules/audio_coding/codecs/isac/fix/source/pitch_filter_armv6.S
deleted file mode 100644
index 0659468..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/pitch_filter_armv6.S
+++ /dev/null
@@ -1,143 +0,0 @@
-@
-@ Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
-@
-@ Use of this source code is governed by a BSD-style license
-@ that can be found in the LICENSE file in the root of the source
-@ tree. An additional intellectual property rights grant can be found
-@ in the file PATENTS.  All contributing project authors may
-@ be found in the AUTHORS file in the root of the source tree.
-@
-
-@ Contains the core loop routine for the pitch filter function in iSAC,
-@ optimized for ARMv7 platforms.
-@
-@ Output is bit-exact with the reference C code in pitch_filter.c.
-
-#include "modules/audio_coding/codecs/isac/fix/source/settings.h"
-#include "rtc_base/system/asm_defines.h"
-
-GLOBAL_FUNCTION WebRtcIsacfix_PitchFilterCore
-.align  2
-
-@ void WebRtcIsacfix_PitchFilterCore(int loopNumber,
-@                                    int16_t gain,
-@                                    size_t index,
-@                                    int16_t sign,
-@                                    int16_t* inputState,
-@                                    int16_t* outputBuf2,
-@                                    const int16_t* coefficient,
-@                                    int16_t* inputBuf,
-@                                    int16_t* outputBuf,
-@                                    int* index2) {
-DEFINE_FUNCTION WebRtcIsacfix_PitchFilterCore
-  push {r4-r11}
-  sub sp, #8
-
-  str r0, [sp]                @ loopNumber
-  str r3, [sp, #4]            @ sign
-  ldr r3, [sp, #44]           @ outputBuf2
-  ldr r6, [sp, #60]           @ index2
-  ldr r7, [r6]                @ *index2
-  ldr r8, [sp, #52]           @ inputBuf
-  ldr r12, [sp, #56]          @ outputBuf
-
-  add r4, r7, r0
-  str r4, [r6]                @ Store return value to index2.
-
-  mov r10, r7, asl #1
-  add r12, r10                @ &outputBuf[*index2]
-  add r8, r10                 @ &inputBuf[*index2]
-
-  add r4, r7, #PITCH_BUFFSIZE @ *index2 + PITCH_BUFFSIZE
-  add r6, r3, r4, lsl #1      @ &outputBuf2[*index2 + PITCH_BUFFSIZE]
-  sub r4, r2                  @ r2: index
-  sub r4, #2                  @ *index2 + PITCH_BUFFSIZE - index - 2
-  add r3, r4, lsl #1          @ &ubufQQpos2[*index2]
-  ldr r9, [sp, #48]           @ coefficient
-
-LOOP:
-@ Usage of registers in the loop:
-@  r0: loop counter
-@  r1: gain
-@  r2: tmpW32
-@  r3: &ubufQQpos2[]
-@  r6: &outputBuf2[]
-@  r8: &inputBuf[]
-@  r9: &coefficient[]
-@  r12: &outputBuf[]
-@  r4, r5, r7, r10, r11: scratch
-
-  @ Filter to get fractional pitch.
-  @ The pitch filter loop here is unrolled with 9 multipications.
-  pld [r3]
-  ldr r10, [r3], #4           @ ubufQQpos2[*index2 + 0, *index2 + 1]
-  ldr r4, [r9], #4            @ coefficient[0, 1]
-  ldr r11, [r3], #4
-  ldr r5, [r9], #4
-  smuad r2, r10, r4
-  smlad r2, r11, r5, r2
-
-  ldr r10, [r3], #4
-  ldr r4, [r9], #4
-  ldr r11, [r3], #4
-  ldr r5, [r9], #4
-  smlad r2, r10, r4, r2
-  ldrh r10, [r3], #-14        @ r3 back to &ubufQQpos2[*index2].
-  ldrh  r4, [r9], #-16        @ r9 back to &coefficient[0].
-  smlad r2, r11, r5, r2
-  smlabb r2, r10, r4, r2
-
-  @ Saturate to avoid overflow in tmpW16.
-  asr r2, #1
-  add r4, r2, #0x1000
-  ssat r7, #16, r4, asr #13
-
-  @ Shift low pass filter state, and excute the low pass filter.
-  @ The memmove() and the low pass filter loop are unrolled and mixed.
-  smulbb r5, r1, r7
-  add r7, r5, #0x800
-  asr r7, #12                 @ Get the value for inputState[0].
-  ldr r11, [sp, #40]          @ inputState
-  pld [r11]
-  adr r10, kDampFilter
-  ldrsh r4, [r10], #2         @ kDampFilter[0]
-  mul r2, r7, r4
-  ldr r4, [r11]               @ inputState[0, 1], before shift.
-  strh r7, [r11]              @ inputState[0], after shift.
-  ldr r5, [r11, #4]           @ inputState[2, 3], before shift.
-  ldr r7, [r10], #4           @ kDampFilter[1, 2]
-  ldr r10, [r10]              @ kDampFilter[3, 4]
-  str r4, [r11, #2]           @ inputState[1, 2], after shift.
-  str r5, [r11, #6]           @ inputState[3, 4], after shift.
-  smlad r2, r4, r7, r2
-  smlad r2, r5, r10, r2
-
-  @ Saturate to avoid overflow.
-  @ First shift the sample to the range of [0xC0000000, 0x3FFFFFFF],
-  @ to avoid overflow in the next saturation step.
-  asr r2, #1
-  add r10, r2, #0x2000
-  ssat r10, #16, r10, asr #14
-
-  @ Subtract from input and update buffer.
-  ldr r11, [sp, #4]           @ sign
-  ldrsh r4, [r8]
-  ldrsh r7, [r8], #2          @ inputBuf[*index2]
-  smulbb r5, r11, r10
-  subs r0, #1
-  sub r4, r5
-  ssat r2, #16, r4
-  strh  r2, [r12], #2         @ outputBuf[*index2]
-
-  add r2, r7
-  ssat r2, #16, r2
-  strh  r2, [r6], #2          @ outputBuff2[*index2 + PITCH_BUFFSIZE]
-  bgt LOOP
-
-  add sp, #8
-  pop {r4-r11}
-  bx  lr
-
-.align  2
-kDampFilter:
-  .short  -2294, 8192, 20972, 8192, -2294
diff --git a/modules/audio_coding/codecs/isac/fix/source/pitch_filter_c.c b/modules/audio_coding/codecs/isac/fix/source/pitch_filter_c.c
deleted file mode 100644
index f23d19d..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/pitch_filter_c.c
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "common_audio/signal_processing/include/signal_processing_library.h"
-#include "modules/audio_coding/codecs/isac/fix/source/pitch_estimator.h"
-
-/* Filter coefficicients in Q15. */
-static const int16_t kDampFilter[PITCH_DAMPORDER] = {
-  -2294, 8192, 20972, 8192, -2294
-};
-
-void WebRtcIsacfix_PitchFilterCore(int loopNumber,
-                                   int16_t gain,
-                                   size_t index,
-                                   int16_t sign,
-                                   int16_t* inputState,
-                                   int16_t* outputBuf2,
-                                   const int16_t* coefficient,
-                                   int16_t* inputBuf,
-                                   int16_t* outputBuf,
-                                   int* index2) {
-  int i = 0, j = 0;  /* Loop counters. */
-  int16_t* ubufQQpos2 = &outputBuf2[PITCH_BUFFSIZE - (index + 2)];
-  int16_t tmpW16 = 0;
-
-  for (i = 0; i < loopNumber; i++) {
-    int32_t tmpW32 = 0;
-
-    /* Filter to get fractional pitch. */
-    for (j = 0; j < PITCH_FRACORDER; j++) {
-      tmpW32 += ubufQQpos2[*index2 + j] * coefficient[j];
-    }
-
-    /* Saturate to avoid overflow in tmpW16. */
-    tmpW32 = WEBRTC_SPL_SAT(536862719, tmpW32, -536879104);
-    tmpW32 += 8192;
-    tmpW16 = (int16_t)(tmpW32 >> 14);
-
-    /* Shift low pass filter state. */
-    memmove(&inputState[1], &inputState[0],
-            (PITCH_DAMPORDER - 1) * sizeof(int16_t));
-    inputState[0] = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT_WITH_ROUND(
-                      gain, tmpW16, 12);
-
-    /* Low pass filter. */
-    tmpW32 = 0;
-    /* TODO(kma): Define a static inline function WebRtcSpl_DotProduct()
-       in spl_inl.h to replace this and other similar loops. */
-    for (j = 0; j < PITCH_DAMPORDER; j++) {
-      tmpW32 += inputState[j] * kDampFilter[j];
-    }
-
-    /* Saturate to avoid overflow in tmpW16. */
-    tmpW32 = WEBRTC_SPL_SAT(1073725439, tmpW32, -1073758208);
-    tmpW32 += 16384;
-    tmpW16 = (int16_t)(tmpW32 >> 15);
-
-    /* Subtract from input and update buffer. */
-    tmpW32 = inputBuf[*index2] - sign * tmpW16;
-    outputBuf[*index2] = WebRtcSpl_SatW32ToW16(tmpW32);
-    tmpW32 = inputBuf[*index2] + outputBuf[*index2];
-    outputBuf2[*index2 + PITCH_BUFFSIZE] = WebRtcSpl_SatW32ToW16(tmpW32);
-
-    (*index2)++;
-  }
-}
diff --git a/modules/audio_coding/codecs/isac/fix/source/pitch_filter_mips.c b/modules/audio_coding/codecs/isac/fix/source/pitch_filter_mips.c
deleted file mode 100644
index 785fd94..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/pitch_filter_mips.c
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- *  Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "modules/audio_coding/codecs/isac/fix/source/pitch_estimator.h"
-
-void WebRtcIsacfix_PitchFilterCore(int loopNumber,
-                                   int16_t gain,
-                                   size_t index,
-                                   int16_t sign,
-                                   int16_t* inputState,
-                                   int16_t* outputBuf2,
-                                   const int16_t* coefficient,
-                                   int16_t* inputBuf,
-                                   int16_t* outputBuf,
-                                   int* index2) {
-  int ind2t = *index2;
-  int i = 0;
-  int16_t* out2_pos2 = &outputBuf2[PITCH_BUFFSIZE - (index + 2)] + ind2t;
-  int32_t w1, w2, w3, w4, w5, gain32, sign32;
-  int32_t coef1, coef2, coef3, coef4, coef5 = 0;
-  // Define damp factors as int32_t (pair of int16_t)
-  int32_t kDampF0 = 0x0000F70A;
-  int32_t kDampF1 = 0x51EC2000;
-  int32_t kDampF2 = 0xF70A2000;
-  int16_t* input1 = inputBuf + ind2t;
-  int16_t* output1 = outputBuf + ind2t;
-  int16_t* output2 = outputBuf2 + ind2t + PITCH_BUFFSIZE;
-
-  // Load coefficients outside the loop and sign-extend gain and sign
-  __asm __volatile (
-    ".set     push                                        \n\t"
-    ".set     noreorder                                   \n\t"
-    "lwl      %[coef1],       3(%[coefficient])           \n\t"
-    "lwl      %[coef2],       7(%[coefficient])           \n\t"
-    "lwl      %[coef3],       11(%[coefficient])          \n\t"
-    "lwl      %[coef4],       15(%[coefficient])          \n\t"
-    "lwr      %[coef1],       0(%[coefficient])           \n\t"
-    "lwr      %[coef2],       4(%[coefficient])           \n\t"
-    "lwr      %[coef3],       8(%[coefficient])           \n\t"
-    "lwr      %[coef4],       12(%[coefficient])          \n\t"
-    "lhu      %[coef5],       16(%[coefficient])          \n\t"
-    "seh      %[gain32],      %[gain]                     \n\t"
-    "seh      %[sign32],      %[sign]                     \n\t"
-    ".set     pop                                         \n\t"
-    : [coef1] "=&r" (coef1), [coef2] "=&r" (coef2), [coef3] "=&r" (coef3),
-      [coef4] "=&r" (coef4), [coef5] "=&r" (coef5), [gain32] "=&r" (gain32),
-      [sign32] "=&r" (sign32)
-    : [coefficient] "r" (coefficient), [gain] "r" (gain),
-      [sign] "r" (sign)
-    : "memory"
-  );
-
-  for (i = 0; i < loopNumber; i++) {
-    __asm __volatile (
-      ".set       push                                            \n\t"
-      ".set       noreorder                                       \n\t"
-      // Filter to get fractional pitch
-      "li         %[w1],          8192                            \n\t"
-      "mtlo       %[w1]                                           \n\t"
-      "mthi       $0                                              \n\t"
-      "lwl        %[w1],          3(%[out2_pos2])                 \n\t"
-      "lwl        %[w2],          7(%[out2_pos2])                 \n\t"
-      "lwl        %[w3],          11(%[out2_pos2])                \n\t"
-      "lwl        %[w4],          15(%[out2_pos2])                \n\t"
-      "lwr        %[w1],          0(%[out2_pos2])                 \n\t"
-      "lwr        %[w2],          4(%[out2_pos2])                 \n\t"
-      "lwr        %[w3],          8(%[out2_pos2])                 \n\t"
-      "lwr        %[w4],          12(%[out2_pos2])                \n\t"
-      "lhu        %[w5],          16(%[out2_pos2])                \n\t"
-      "dpa.w.ph   $ac0,           %[w1],              %[coef1]    \n\t"
-      "dpa.w.ph   $ac0,           %[w2],              %[coef2]    \n\t"
-      "dpa.w.ph   $ac0,           %[w3],              %[coef3]    \n\t"
-      "dpa.w.ph   $ac0,           %[w4],              %[coef4]    \n\t"
-      "dpa.w.ph   $ac0,           %[w5],              %[coef5]    \n\t"
-      "addiu      %[out2_pos2],   %[out2_pos2],       2           \n\t"
-      "mthi       $0,             $ac1                            \n\t"
-      "lwl        %[w2],          3(%[inputState])                \n\t"
-      "lwl        %[w3],          7(%[inputState])                \n\t"
-      // Fractional pitch shift & saturation
-      "extr_s.h   %[w1],          $ac0,               14          \n\t"
-      "li         %[w4],          16384                           \n\t"
-      "lwr        %[w2],          0(%[inputState])                \n\t"
-      "lwr        %[w3],          4(%[inputState])                \n\t"
-      "mtlo       %[w4],          $ac1                            \n\t"
-      // Shift low pass filter state
-      "swl        %[w2],          5(%[inputState])                \n\t"
-      "swl        %[w3],          9(%[inputState])                \n\t"
-      "mul        %[w1],          %[gain32],          %[w1]       \n\t"
-      "swr        %[w2],          2(%[inputState])                \n\t"
-      "swr        %[w3],          6(%[inputState])                \n\t"
-      // Low pass filter accumulation
-      "dpa.w.ph   $ac1,           %[kDampF1],         %[w2]       \n\t"
-      "dpa.w.ph   $ac1,           %[kDampF2],         %[w3]       \n\t"
-      "lh         %[w4],          0(%[input1])                    \n\t"
-      "addiu      %[input1],      %[input1],          2           \n\t"
-      "shra_r.w   %[w1],          %[w1],              12          \n\t"
-      "sh         %[w1],          0(%[inputState])                \n\t"
-      "dpa.w.ph   $ac1,           %[kDampF0],         %[w1]       \n\t"
-      // Low pass filter shift & saturation
-      "extr_s.h   %[w2],          $ac1,               15          \n\t"
-      "mul        %[w2],          %[w2],              %[sign32]   \n\t"
-      // Buffer update
-      "subu       %[w2],          %[w4],              %[w2]       \n\t"
-      "shll_s.w   %[w2],          %[w2],              16          \n\t"
-      "sra        %[w2],          %[w2],              16          \n\t"
-      "sh         %[w2],          0(%[output1])                   \n\t"
-      "addu       %[w2],          %[w2],              %[w4]       \n\t"
-      "shll_s.w   %[w2],          %[w2],              16          \n\t"
-      "addiu      %[output1],     %[output1],         2           \n\t"
-      "sra        %[w2],          %[w2],              16          \n\t"
-      "sh         %[w2],          0(%[output2])                   \n\t"
-      "addiu      %[output2],     %[output2],         2           \n\t"
-      ".set       pop                                             \n\t"
-      : [w1] "=&r" (w1), [w2] "=&r" (w2), [w3] "=&r" (w3), [w4] "=&r" (w4),
-        [w5] "=&r" (w5), [input1] "+r" (input1), [out2_pos2] "+r" (out2_pos2),
-        [output1] "+r" (output1), [output2] "+r" (output2)
-      : [coefficient] "r" (coefficient), [inputState] "r" (inputState),
-        [gain32] "r" (gain32), [sign32] "r" (sign32), [kDampF0] "r" (kDampF0),
-        [kDampF1] "r" (kDampF1), [kDampF2] "r" (kDampF2),
-        [coef1] "r" (coef1), [coef2] "r" (coef2), [coef3] "r" (coef3),
-        [coef4] "r" (coef4), [coef5] "r" (coef5)
-      : "hi", "lo", "$ac1hi", "$ac1lo", "memory"
-    );
-  }
-  (*index2) += loopNumber;
-}
diff --git a/modules/audio_coding/codecs/isac/fix/source/pitch_gain_tables.c b/modules/audio_coding/codecs/isac/fix/source/pitch_gain_tables.c
deleted file mode 100644
index bfbab19..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/pitch_gain_tables.c
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * pitch_gain_tables.c
- *
- * This file contains tables for the pitch filter side-info in the entropy coder.
- *
- */
-
-#include "modules/audio_coding/codecs/isac/fix/source/pitch_gain_tables.h"
-
-
-/********************* Pitch Filter Gain Coefficient Tables ************************/
-
-/* cdf for quantized pitch filter gains */
-const uint16_t WebRtcIsacfix_kPitchGainCdf[255] = {
-  0,  2,  4,  6,  64,  901,  903,  905,  16954,  16956,
-  16961,  17360,  17362,  17364,  17366,  17368,  17370,  17372,  17374,  17411,
-  17514,  17516,  17583,  18790,  18796,  18802,  20760,  20777,  20782,  21722,
-  21724,  21728,  21738,  21740,  21742,  21744,  21746,  21748,  22224,  22227,
-  22230,  23214,  23229,  23239,  25086,  25108,  25120,  26088,  26094,  26098,
-  26175,  26177,  26179,  26181,  26183,  26185,  26484,  26507,  26522,  27705,
-  27731,  27750,  29767,  29799,  29817,  30866,  30883,  30885,  31025,  31029,
-  31031,  31033,  31035,  31037,  31114,  31126,  31134,  32687,  32722,  32767,
-  35718,  35742,  35757,  36943,  36952,  36954,  37115,  37128,  37130,  37132,
-  37134,  37136,  37143,  37145,  37152,  38843,  38863,  38897,  47458,  47467,
-  47474,  49040,  49061,  49063,  49145,  49157,  49159,  49161,  49163,  49165,
-  49167,  49169,  49171,  49757,  49770,  49782,  61333,  61344,  61346,  62860,
-  62883,  62885,  62887,  62889,  62891,  62893,  62895,  62897,  62899,  62901,
-  62903,  62905,  62907,  62909,  65496,  65498,  65500,  65521,  65523,  65525,
-  65527,  65529,  65531,  65533,  65535,  65535,  65535,  65535,  65535,  65535,
-  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,
-  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,
-  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,
-  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,
-  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,
-  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,
-  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,
-  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,
-  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,
-  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,
-  65535,  65535,  65535,  65535,  65535
-};
-
-/* index limits and ranges */
-const int16_t WebRtcIsacfix_kLowerlimiGain[3] = {
-  -7, -2, -1
-};
-
-const int16_t WebRtcIsacfix_kUpperlimitGain[3] = {
-  0,  3,  1
-};
-
-const uint16_t WebRtcIsacfix_kMultsGain[2] = {
-  18,  3
-};
-
-/* size of cdf table */
-const uint16_t WebRtcIsacfix_kCdfTableSizeGain[1] = {
-  256
-};
-
-/* mean values of pitch filter gains in FIXED point Q12 */
-const int16_t WebRtcIsacfix_kPitchGain1[144] = {
-  843, 1092, 1336, 1222, 1405, 1656, 1500, 1815, 1843, 1838, 1839,
-  1843, 1843, 1843, 1843, 1843,   1843, 1843, 814, 846, 1092, 1013,
-  1174, 1383, 1391, 1511, 1584, 1734, 1753, 1843, 1843, 1843,   1843,
-  1843, 1843, 1843, 524, 689, 777, 845, 947, 1069, 1090, 1263,
-  1380, 1447, 1559, 1676,   1645, 1749, 1843, 1843, 1843, 1843, 81,
-  477, 563, 611, 706, 806, 849, 1012, 1192, 1128,   1330, 1489,
-  1425, 1576, 1826, 1741, 1843, 1843, 0,     290, 305, 356, 488,
-  575, 602, 741,    890, 835, 1079, 1196, 1182, 1376, 1519, 1506,
-  1680, 1843, 0,     47,  97,  69,  289, 381,    385, 474, 617,
-  664, 803, 1079, 935, 1160, 1269, 1265, 1506, 1741, 0,      0,
-  0,      0,      112, 120, 190, 283, 442, 343, 526, 809, 684,
-  935, 1134, 1020, 1265, 1506, 0,      0,      0,      0,      0,      0,
-  0,      111,    256, 87,  373, 597, 430, 684, 935, 770, 1020,
-  1265
-};
-
-const int16_t WebRtcIsacfix_kPitchGain2[144] = {
-  1760, 1525, 1285, 1747, 1671, 1393, 1843, 1826, 1555, 1843, 1784,
-  1606, 1843, 1843, 1711, 1843,   1843, 1814, 1389, 1275, 1040, 1564,
-  1414, 1252, 1610, 1495, 1343, 1753, 1592, 1405, 1804, 1720,   1475,
-  1843, 1814, 1581, 1208, 1061, 856, 1349, 1148, 994, 1390, 1253,
-  1111, 1495, 1343, 1178,   1770, 1465, 1234, 1814, 1581, 1342, 1040,
-  793, 713, 1053, 895, 737, 1128, 1003, 861, 1277,   1094, 981,
-  1475, 1192, 1019, 1581, 1342, 1098, 855, 570, 483, 833, 648,
-  540, 948, 744,    572, 1009, 844, 636, 1234, 934, 685, 1342,
-  1217, 984, 537, 318, 124, 603, 423, 350,    687, 479, 322,
-  791, 581, 430, 987, 671, 488, 1098, 849, 597, 283, 27,
-  0,     397,    222, 38,  513, 271, 124, 624, 325, 157, 737,
-  484, 233, 849, 597, 343, 27,  0,      0,   141, 0,     0,
-  256, 69,  0,     370, 87,  0,     484, 229, 0,     597, 343,
-  87
-};
-
-const int16_t WebRtcIsacfix_kPitchGain3[144] = {
-  1843, 1843, 1711, 1843, 1818, 1606, 1843, 1827, 1511, 1814, 1639,
-  1393, 1760, 1525, 1285, 1656,   1419, 1176, 1835, 1718, 1475, 1841,
-  1650, 1387, 1648, 1498, 1287, 1600, 1411, 1176, 1522, 1299,   1040,
-  1419, 1176, 928, 1773, 1461, 1128, 1532, 1355, 1202, 1429, 1260,
-  1115, 1398, 1151, 1025,   1172, 1080, 790, 1176, 928, 677, 1475,
-  1147, 1019, 1276, 1096, 922, 1214, 1010, 901, 1057,   893, 800,
-  1040, 796, 734, 928, 677, 424, 1137, 897, 753, 1120, 830,
-  710, 875, 751,    601, 795, 642, 583, 790, 544, 475, 677,
-  474, 140, 987, 750, 482, 697, 573, 450,    691, 487, 303,
-  661, 394, 332, 537, 303, 220, 424, 168, 0,     737, 484,
-  229, 624,    348, 153, 441, 261, 136, 397, 166, 51,  283,
-  27,  0,     168, 0,     0,     484, 229,    0,   370, 57,  0,
-  256, 43,  0,     141, 0,  0,   27,  0,   0,   0,   0,
-  0
-};
-
-
-const int16_t WebRtcIsacfix_kPitchGain4[144] = {
-  1843, 1843, 1843, 1843, 1841, 1843, 1500, 1821, 1843, 1222, 1434,
-  1656, 843, 1092, 1336, 504,    757, 1007, 1843, 1843, 1843, 1838,
-  1791, 1843, 1265, 1505, 1599, 965, 1219, 1425, 730, 821,    1092,
-  249, 504, 757, 1783, 1819, 1843, 1351, 1567, 1727, 1096, 1268,
-  1409, 805, 961, 1131,   444, 670, 843, 0,  249, 504, 1425,
-  1655, 1743, 1096, 1324, 1448, 822, 1019, 1199, 490,    704, 867,
-  81,  450, 555, 0,     0,  249, 1247, 1428, 1530, 881, 1073,
-  1283, 610, 759,    939, 278, 464, 645, 0,     200, 270, 0,
-  0,   0,  935, 1163, 1410, 528, 790, 1068,   377, 499, 717,
-  173, 240, 274, 0,   43,  62,  0,   0,   0,   684, 935,
-  1182, 343,    551, 735, 161, 262, 423, 0,      55,  27,  0,
-  0,   0,   0,   0,   0,   430, 684,    935, 87,  377, 597,
-  0,   46,  256, 0,   0,   0,   0,   0,   0,   0,   0,
-  0
-};
-
-
-
-/* transform matrix in Q12*/
-const int16_t WebRtcIsacfix_kTransform[4][4] = {
-  { -2048, -2048, -2048, -2048 },
-  {  2748,   916,  -916, -2748 },
-  {  2048, -2048, -2048,  2048 },
-  {   916, -2748,  2748,  -916 }
-};
diff --git a/modules/audio_coding/codecs/isac/fix/source/pitch_gain_tables.h b/modules/audio_coding/codecs/isac/fix/source/pitch_gain_tables.h
deleted file mode 100644
index 59e1738..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/pitch_gain_tables.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * pitch_gain_tables.h
- *
- * This file contains tables for the pitch filter side-info in the entropy
- * coder.
- *
- */
-
-#ifndef MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_PITCH_GAIN_TABLES_H_
-#define MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_PITCH_GAIN_TABLES_H_
-
-#include <stdint.h>
-
-/********************* Pitch Filter Gain Coefficient Tables
- * ************************/
-/* cdf for quantized pitch filter gains */
-extern const uint16_t WebRtcIsacfix_kPitchGainCdf[255];
-
-/* index limits and ranges */
-extern const int16_t WebRtcIsacfix_kLowerlimiGain[3];
-extern const int16_t WebRtcIsacfix_kUpperlimitGain[3];
-extern const uint16_t WebRtcIsacfix_kMultsGain[2];
-
-/* mean values of pitch filter gains in Q12*/
-extern const int16_t WebRtcIsacfix_kPitchGain1[144];
-extern const int16_t WebRtcIsacfix_kPitchGain2[144];
-extern const int16_t WebRtcIsacfix_kPitchGain3[144];
-extern const int16_t WebRtcIsacfix_kPitchGain4[144];
-
-/* size of cdf table */
-extern const uint16_t WebRtcIsacfix_kCdfTableSizeGain[1];
-
-/* transform matrix */
-extern const int16_t WebRtcIsacfix_kTransform[4][4];
-
-#endif /* MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_PITCH_GAIN_TABLES_H_ */
diff --git a/modules/audio_coding/codecs/isac/fix/source/pitch_lag_tables.c b/modules/audio_coding/codecs/isac/fix/source/pitch_lag_tables.c
deleted file mode 100644
index 894716e..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/pitch_lag_tables.c
+++ /dev/null
@@ -1,306 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * pitch_lag_tables.c
- *
- * This file contains tables for the pitch filter side-info in the entropy coder.
- *
- */
-
-#include "modules/audio_coding/codecs/isac/fix/source/settings.h"
-#include "modules/audio_coding/codecs/isac/fix/source/pitch_lag_tables.h"
-
-
-/********************* Pitch Filter Gain Coefficient Tables ************************/
-
-/* tables for use with small pitch gain */
-
-/* cdf for quantized pitch filter lags */
-const uint16_t WebRtcIsacfix_kPitchLagCdf1Lo[127] = {
-  0,  134,  336,  549,  778,  998,  1264,  1512,  1777,  2070,
-  2423,  2794,  3051,  3361,  3708,  3979,  4315,  4610,  4933,  5269,
-  5575,  5896,  6155,  6480,  6816,  7129,  7477,  7764,  8061,  8358,
-  8718,  9020,  9390,  9783,  10177,  10543,  10885,  11342,  11795,  12213,
-  12680,  13096,  13524,  13919,  14436,  14903,  15349,  15795,  16267,  16734,
-  17266,  17697,  18130,  18632,  19080,  19447,  19884,  20315,  20735,  21288,
-  21764,  22264,  22723,  23193,  23680,  24111,  24557,  25022,  25537,  26082,
-  26543,  27090,  27620,  28139,  28652,  29149,  29634,  30175,  30692,  31273,
-  31866,  32506,  33059,  33650,  34296,  34955,  35629,  36295,  36967,  37726,
-  38559,  39458,  40364,  41293,  42256,  43215,  44231,  45253,  46274,  47359,
-  48482,  49678,  50810,  51853,  53016,  54148,  55235,  56263,  57282,  58363,
-  59288,  60179,  61076,  61806,  62474,  63129,  63656,  64160,  64533,  64856,
-  65152,  65535,  65535,  65535,  65535,  65535,  65535
-};
-
-const uint16_t WebRtcIsacfix_kPitchLagCdf2Lo[20] = {
-  0,  429,  3558,  5861,  8558,  11639,  15210,  19502,  24773,  31983,
-  42602,  48567,  52601,  55676,  58160,  60172,  61889,  63235,  65383,  65535
-};
-
-const uint16_t WebRtcIsacfix_kPitchLagCdf3Lo[2] = {
-  0,  65535
-};
-
-const uint16_t WebRtcIsacfix_kPitchLagCdf4Lo[10] = {
-  0,  2966,  6368,  11182,  19431,  37793,  48532,  55353,  60626,  65535
-};
-
-const uint16_t *WebRtcIsacfix_kPitchLagPtrLo[4] = {
-  WebRtcIsacfix_kPitchLagCdf1Lo,
-  WebRtcIsacfix_kPitchLagCdf2Lo,
-  WebRtcIsacfix_kPitchLagCdf3Lo,
-  WebRtcIsacfix_kPitchLagCdf4Lo
-};
-
-/* size of first cdf table */
-const uint16_t WebRtcIsacfix_kPitchLagSizeLo[1] = {
-  128
-};
-
-/* index limits and ranges */
-const int16_t WebRtcIsacfix_kLowerLimitLo[4] = {
-  -140, -9,  0, -4
-};
-
-const int16_t WebRtcIsacfix_kUpperLimitLo[4] = {
-  -20,  9,  0,  4
-};
-
-/* initial index for arithmetic decoder */
-const uint16_t WebRtcIsacfix_kInitIndLo[3] = {
-  10,  1,  5
-};
-
-/* mean values of pitch filter lags in Q10 */
-
-const int16_t WebRtcIsacfix_kMeanLag2Lo[19] = {
-  -17627, -16207, -14409, -12319, -10253, -8200, -6054, -3986, -1948, -19,
-  1937, 3974, 6064, 8155, 10229, 12270, 14296, 16127, 17520
-};
-
-const int16_t WebRtcIsacfix_kMeanLag4Lo[9] = {
-  -7949, -6063, -4036, -1941, 38, 1977, 4060, 6059
-};
-
-
-
-/* tables for use with medium pitch gain */
-
-/* cdf for quantized pitch filter lags */
-const uint16_t WebRtcIsacfix_kPitchLagCdf1Mid[255] = {
-  0,  28,  61,  88,  121,  149,  233,  331,  475,  559,
-  624,  661,  689,  712,  745,  791,  815,  843,  866,  922,
-  959,  1024,  1061,  1117,  1178,  1238,  1280,  1350,  1453,  1513,
-  1564,  1625,  1671,  1741,  1788,  1904,  2072,  2421,  2626,  2770,
-  2840,  2900,  2942,  3012,  3068,  3115,  3147,  3194,  3254,  3319,
-  3366,  3520,  3678,  3780,  3850,  3911,  3957,  4032,  4106,  4185,
-  4292,  4474,  4683,  4842,  5019,  5191,  5321,  5428,  5540,  5675,
-  5763,  5847,  5959,  6127,  6304,  6564,  6839,  7090,  7263,  7421,
-  7556,  7728,  7872,  7984,  8142,  8361,  8580,  8743,  8938,  9227,
-  9409,  9539,  9674,  9795,  9930,  10060,  10177,  10382,  10614,  10861,
-  11038,  11271,  11415,  11629,  11792,  12044,  12193,  12416,  12574,  12821,
-  13007,  13235,  13445,  13654,  13901,  14134,  14488,  15000,  15703,  16285,
-  16504,  16797,  17086,  17328,  17579,  17807,  17998,  18268,  18538,  18836,
-  19087,  19274,  19474,  19716,  19935,  20270,  20833,  21303,  21532,  21741,
-  21978,  22207,  22523,  22770,  23054,  23613,  23943,  24204,  24399,  24651,
-  24832,  25074,  25270,  25549,  25759,  26015,  26150,  26424,  26713,  27048,
-  27342,  27504,  27681,  27854,  28021,  28207,  28412,  28664,  28859,  29064,
-  29278,  29548,  29748,  30107,  30377,  30656,  30856,  31164,  31452,  31755,
-  32011,  32328,  32626,  32919,  33319,  33789,  34329,  34925,  35396,  35973,
-  36443,  36964,  37551,  38156,  38724,  39357,  40023,  40908,  41587,  42602,
-  43924,  45037,  45810,  46597,  47421,  48291,  49092,  50051,  51448,  52719,
-  53440,  54241,  54944,  55977,  56676,  57299,  57872,  58389,  59059,  59688,
-  60237,  60782,  61094,  61573,  61890,  62290,  62658,  63030,  63217,  63454,
-  63622,  63882,  64003,  64273,  64427,  64529,  64581,  64697,  64758,  64902,
-  65414,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,
-  65535,  65535,  65535,  65535,  65535
-};
-
-const uint16_t WebRtcIsacfix_kPitchLagCdf2Mid[36] = {
-  0,  71,  335,  581,  836,  1039,  1323,  1795,  2258,  2608,
-  3005,  3591,  4243,  5344,  7163,  10583,  16848,  28078,  49448,  57007,
-  60357,  61850,  62837,  63437,  63872,  64188,  64377,  64614,  64774,  64949,
-  65039,  65115,  65223,  65360,  65474,  65535
-};
-
-const uint16_t WebRtcIsacfix_kPitchLagCdf3Mid[2] = {
-  0,  65535
-};
-
-const uint16_t WebRtcIsacfix_kPitchLagCdf4Mid[20] = {
-  0,  28,  246,  459,  667,  1045,  1523,  2337,  4337,  11347,
-  44231,  56709,  60781,  62243,  63161,  63969,  64608,  65062,  65502,  65535
-};
-
-const uint16_t *WebRtcIsacfix_kPitchLagPtrMid[4] = {
-  WebRtcIsacfix_kPitchLagCdf1Mid,
-  WebRtcIsacfix_kPitchLagCdf2Mid,
-  WebRtcIsacfix_kPitchLagCdf3Mid,
-  WebRtcIsacfix_kPitchLagCdf4Mid
-};
-
-/* size of first cdf table */
-const uint16_t WebRtcIsacfix_kPitchLagSizeMid[1] = {
-  256
-};
-
-/* index limits and ranges */
-const int16_t WebRtcIsacfix_kLowerLimitMid[4] = {
-  -280, -17,  0, -9
-};
-
-const int16_t WebRtcIsacfix_kUpperLimitMid[4] = {
-  -40,  17,  0,  9
-};
-
-/* initial index for arithmetic decoder */
-const uint16_t WebRtcIsacfix_kInitIndMid[3] = {
-  18,  1,  10
-};
-
-/* mean values of pitch filter lags in Q10 */
-
-const int16_t WebRtcIsacfix_kMeanLag2Mid[35] = {
-  -17297, -16250, -15416, -14343, -13341, -12363, -11270,
-  -10355, -9122, -8217, -7172, -6083, -5102, -4004, -3060,
-  -1982, -952, -18, 935, 1976, 3040, 4032,
-  5082, 6065, 7257, 8202, 9264, 10225, 11242,
-  12234, 13337, 14336, 15374, 16187, 17347
-};
-
-
-const int16_t WebRtcIsacfix_kMeanLag4Mid[19] = {
-  -8811, -8081, -7203, -6003, -5057, -4025, -2983, -1964,
-  -891, 29, 921, 1920, 2988, 4064, 5187, 6079, 7173, 8074, 8849
-};
-
-
-/* tables for use with large pitch gain */
-
-/* cdf for quantized pitch filter lags */
-const uint16_t WebRtcIsacfix_kPitchLagCdf1Hi[511] = {
-  0,  7,  18,  33,  69,  105,  156,  228,  315,  612,
-  680,  691,  709,  724,  735,  738,  742,  746,  749,  753,
-  756,  760,  764,  774,  782,  785,  789,  796,  800,  803,
-  807,  814,  818,  822,  829,  832,  847,  854,  858,  869,
-  876,  883,  898,  908,  934,  977,  1010,  1050,  1060,  1064,
-  1075,  1078,  1086,  1089,  1093,  1104,  1111,  1122,  1133,  1136,
-  1151,  1162,  1183,  1209,  1252,  1281,  1339,  1364,  1386,  1401,
-  1411,  1415,  1426,  1430,  1433,  1440,  1448,  1455,  1462,  1477,
-  1487,  1495,  1502,  1506,  1509,  1516,  1524,  1531,  1535,  1542,
-  1553,  1556,  1578,  1589,  1611,  1625,  1639,  1643,  1654,  1665,
-  1672,  1687,  1694,  1705,  1708,  1719,  1730,  1744,  1752,  1759,
-  1791,  1795,  1820,  1867,  1886,  1915,  1936,  1943,  1965,  1987,
-  2041,  2099,  2161,  2175,  2200,  2211,  2226,  2233,  2244,  2251,
-  2266,  2280,  2287,  2298,  2309,  2316,  2331,  2342,  2356,  2378,
-  2403,  2418,  2447,  2497,  2544,  2602,  2863,  2895,  2903,  2935,
-  2950,  2971,  3004,  3011,  3018,  3029,  3040,  3062,  3087,  3127,
-  3152,  3170,  3199,  3243,  3293,  3322,  3340,  3377,  3402,  3427,
-  3474,  3518,  3543,  3579,  3601,  3637,  3659,  3706,  3731,  3760,
-  3818,  3847,  3869,  3901,  3920,  3952,  4068,  4169,  4220,  4271,
-  4524,  4571,  4604,  4632,  4672,  4730,  4777,  4806,  4857,  4904,
-  4951,  5002,  5031,  5060,  5107,  5150,  5212,  5266,  5331,  5382,
-  5432,  5490,  5544,  5610,  5700,  5762,  5812,  5874,  5972,  6022,
-  6091,  6163,  6232,  6305,  6402,  6540,  6685,  6880,  7090,  7271,
-  7379,  7452,  7542,  7625,  7687,  7770,  7843,  7911,  7966,  8024,
-  8096,  8190,  8252,  8320,  8411,  8501,  8585,  8639,  8751,  8842,
-  8918,  8986,  9066,  9127,  9203,  9269,  9345,  9406,  9464,  9536,
-  9612,  9667,  9735,  9844,  9931,  10036,  10119,  10199,  10260,  10358,
-  10441,  10514,  10666,  10734,  10872,  10951,  11053,  11125,  11223,  11324,
-  11516,  11664,  11737,  11816,  11892,  12008,  12120,  12200,  12280,  12392,
-  12490,  12576,  12685,  12812,  12917,  13003,  13108,  13210,  13300,  13384,
-  13470,  13579,  13673,  13771,  13879,  13999,  14136,  14201,  14368,  14614,
-  14759,  14867,  14958,  15030,  15121,  15189,  15280,  15385,  15461,  15555,
-  15653,  15768,  15884,  15971,  16069,  16145,  16210,  16279,  16380,  16463,
-  16539,  16615,  16688,  16818,  16919,  17017,  18041,  18338,  18523,  18649,
-  18790,  18917,  19047,  19167,  19315,  19460,  19601,  19731,  19858,  20068,
-  20173,  20318,  20466,  20625,  20741,  20911,  21045,  21201,  21396,  21588,
-  21816,  22022,  22305,  22547,  22786,  23072,  23322,  23600,  23879,  24168,
-  24433,  24769,  25120,  25511,  25895,  26289,  26792,  27219,  27683,  28077,
-  28566,  29094,  29546,  29977,  30491,  30991,  31573,  32105,  32594,  33173,
-  33788,  34497,  35181,  35833,  36488,  37255,  37921,  38645,  39275,  39894,
-  40505,  41167,  41790,  42431,  43096,  43723,  44385,  45134,  45858,  46607,
-  47349,  48091,  48768,  49405,  49955,  50555,  51167,  51985,  52611,  53078,
-  53494,  53965,  54435,  54996,  55601,  56125,  56563,  56838,  57244,  57566,
-  57967,  58297,  58771,  59093,  59419,  59647,  59886,  60143,  60461,  60693,
-  60917,  61170,  61416,  61634,  61891,  62122,  62310,  62455,  62632,  62839,
-  63103,  63436,  63639,  63805,  63906,  64015,  64192,  64355,  64475,  64558,
-  64663,  64742,  64811,  64865,  64916,  64956,  64981,  65025,  65068,  65115,
-  65195,  65314,  65419,  65535,  65535,  65535,  65535,  65535,  65535,  65535,
-  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,
-  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,
-  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,
-  65535
-};
-
-const uint16_t WebRtcIsacfix_kPitchLagCdf2Hi[68] = {
-  0,  7,  11,  22,  37,  52,  56,  59,  81,  85,
-  89,  96,  115,  130,  137,  152,  170,  181,  193,  200,
-  207,  233,  237,  259,  289,  318,  363,  433,  592,  992,
-  1607,  3062,  6149,  12206,  25522,  48368,  58223,  61918,  63640,  64584,
-  64943,  65098,  65206,  65268,  65294,  65335,  65350,  65372,  65387,  65402,
-  65413,  65420,  65428,  65435,  65439,  65450,  65454,  65468,  65472,  65476,
-  65483,  65491,  65498,  65505,  65516,  65520,  65528,  65535
-};
-
-const uint16_t WebRtcIsacfix_kPitchLagCdf3Hi[2] = {
-  0,  65535
-};
-
-const uint16_t WebRtcIsacfix_kPitchLagCdf4Hi[35] = {
-  0,  7,  19,  30,  41,  48,  63,  74,  82,  96,
-  122,  152,  215,  330,  701,  2611,  10931,  48106,  61177,  64341,
-  65112,  65238,  65309,  65338,  65364,  65379,  65401,  65427,  65453,
-  65465,  65476,  65490,  65509,  65528,  65535
-};
-
-const uint16_t *WebRtcIsacfix_kPitchLagPtrHi[4] = {
-  WebRtcIsacfix_kPitchLagCdf1Hi,
-  WebRtcIsacfix_kPitchLagCdf2Hi,
-  WebRtcIsacfix_kPitchLagCdf3Hi,
-  WebRtcIsacfix_kPitchLagCdf4Hi
-};
-
-/* size of first cdf table */
-const uint16_t WebRtcIsacfix_kPitchLagSizeHi[1] = {
-  512
-};
-
-/* index limits and ranges */
-const int16_t WebRtcIsacfix_kLowerLimitHi[4] = {
-  -552, -34,  0, -16
-};
-
-const int16_t WebRtcIsacfix_kUpperLimitHi[4] = {
-  -80,  32,  0,  17
-};
-
-/* initial index for arithmetic decoder */
-const uint16_t WebRtcIsacfix_kInitIndHi[3] = {
-  34,  1,  18
-};
-
-/* mean values of pitch filter lags */
-
-const int16_t WebRtcIsacfix_kMeanLag2Hi[67] = {
-  -17482, -16896, -16220, -15929, -15329, -14848, -14336, -13807, -13312, -12800, -12218, -11720,
-  -11307, -10649, -10396, -9742, -9148, -8668, -8297, -7718, -7155, -6656, -6231, -5600, -5129,
-  -4610, -4110, -3521, -3040, -2525, -2016, -1506, -995, -477, -5, 469, 991, 1510, 2025, 2526, 3079,
-  3555, 4124, 4601, 5131, 5613, 6194, 6671, 7140, 7645, 8207, 8601, 9132, 9728, 10359, 10752, 11302,
-  11776, 12288, 12687, 13204, 13759, 14295, 14810, 15360, 15764, 16350
-};
-
-
-const int16_t WebRtcIsacfix_kMeanLag4Hi[34] = {
-  -8175, -7659, -7205, -6684, -6215, -5651, -5180, -4566, -4087, -3536, -3096,
-  -2532, -1990, -1482, -959, -440, 11, 451, 954, 1492, 2020, 2562, 3059,
-  3577, 4113, 4618, 5134, 5724, 6060, 6758, 7015, 7716, 8066, 8741
-};
diff --git a/modules/audio_coding/codecs/isac/fix/source/pitch_lag_tables.h b/modules/audio_coding/codecs/isac/fix/source/pitch_lag_tables.h
deleted file mode 100644
index 228da26..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/pitch_lag_tables.h
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * pitch_lag_tables.h
- *
- * This file contains tables for the pitch filter side-info in the entropy
- * coder.
- *
- */
-
-#ifndef MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_PITCH_LAG_TABLES_H_
-#define MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_PITCH_LAG_TABLES_H_
-
-#include <stdint.h>
-
-/********************* Pitch Filter Lag Coefficient Tables
- * ************************/
-
-/* tables for use with small pitch gain */
-
-/* cdfs for quantized pitch lags */
-extern const uint16_t WebRtcIsacfix_kPitchLagCdf1Lo[127];
-extern const uint16_t WebRtcIsacfix_kPitchLagCdf2Lo[20];
-extern const uint16_t WebRtcIsacfix_kPitchLagCdf3Lo[2];
-extern const uint16_t WebRtcIsacfix_kPitchLagCdf4Lo[10];
-
-extern const uint16_t* WebRtcIsacfix_kPitchLagPtrLo[4];
-
-/* size of first cdf table */
-extern const uint16_t WebRtcIsacfix_kPitchLagSizeLo[1];
-
-/* index limits and ranges */
-extern const int16_t WebRtcIsacfix_kLowerLimitLo[4];
-extern const int16_t WebRtcIsacfix_kUpperLimitLo[4];
-
-/* initial index for arithmetic decoder */
-extern const uint16_t WebRtcIsacfix_kInitIndLo[3];
-
-/* mean values of pitch filter lags */
-extern const int16_t WebRtcIsacfix_kMeanLag2Lo[19];
-extern const int16_t WebRtcIsacfix_kMeanLag4Lo[9];
-
-/* tables for use with medium pitch gain */
-
-/* cdfs for quantized pitch lags */
-extern const uint16_t WebRtcIsacfix_kPitchLagCdf1Mid[255];
-extern const uint16_t WebRtcIsacfix_kPitchLagCdf2Mid[36];
-extern const uint16_t WebRtcIsacfix_kPitchLagCdf3Mid[2];
-extern const uint16_t WebRtcIsacfix_kPitchLagCdf4Mid[20];
-
-extern const uint16_t* WebRtcIsacfix_kPitchLagPtrMid[4];
-
-/* size of first cdf table */
-extern const uint16_t WebRtcIsacfix_kPitchLagSizeMid[1];
-
-/* index limits and ranges */
-extern const int16_t WebRtcIsacfix_kLowerLimitMid[4];
-extern const int16_t WebRtcIsacfix_kUpperLimitMid[4];
-
-/* initial index for arithmetic decoder */
-extern const uint16_t WebRtcIsacfix_kInitIndMid[3];
-
-/* mean values of pitch filter lags */
-extern const int16_t WebRtcIsacfix_kMeanLag2Mid[35];
-extern const int16_t WebRtcIsacfix_kMeanLag4Mid[19];
-
-/* tables for use with large pitch gain */
-
-/* cdfs for quantized pitch lags */
-extern const uint16_t WebRtcIsacfix_kPitchLagCdf1Hi[511];
-extern const uint16_t WebRtcIsacfix_kPitchLagCdf2Hi[68];
-extern const uint16_t WebRtcIsacfix_kPitchLagCdf3Hi[2];
-extern const uint16_t WebRtcIsacfix_kPitchLagCdf4Hi[35];
-
-extern const uint16_t* WebRtcIsacfix_kPitchLagPtrHi[4];
-
-/* size of first cdf table */
-extern const uint16_t WebRtcIsacfix_kPitchLagSizeHi[1];
-
-/* index limits and ranges */
-extern const int16_t WebRtcIsacfix_kLowerLimitHi[4];
-extern const int16_t WebRtcIsacfix_kUpperLimitHi[4];
-
-/* initial index for arithmetic decoder */
-extern const uint16_t WebRtcIsacfix_kInitIndHi[3];
-
-/* mean values of pitch filter lags */
-extern const int16_t WebRtcIsacfix_kMeanLag2Hi[67];
-extern const int16_t WebRtcIsacfix_kMeanLag4Hi[34];
-
-#endif /* MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_PITCH_LAG_TABLES_H_ */
diff --git a/modules/audio_coding/codecs/isac/fix/source/settings.h b/modules/audio_coding/codecs/isac/fix/source/settings.h
deleted file mode 100644
index 03a2d05..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/settings.h
+++ /dev/null
@@ -1,211 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * settings.h
- *
- * Declaration of #defines used in the iSAC codec
- *
- */
-
-#ifndef MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_SETTINGS_H_
-#define MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_SETTINGS_H_
-
-/* sampling frequency (Hz) */
-#define FS 16000
-/* 1.5 times Sampling frequency */
-#define FS_1_HALF (uint32_t)24000
-/* Three times Sampling frequency */
-#define FS3 (uint32_t)48000
-/* Eight times Sampling frequency */
-#define FS8 (uint32_t)128000
-
-/* number of samples per frame (either 480 (30ms) or 960 (60ms)) */
-#define INITIAL_FRAMESAMPLES 960
-
-/* miliseconds */
-#define FRAMESIZE 30
-/* number of samples per frame processed in the encoder (30ms) */
-#define FRAMESAMPLES 480 /* ((FRAMESIZE*FS)/1000) */
-#define FRAMESAMPLES_HALF 240
-/* max number of samples per frame (= 60 ms frame) */
-#define MAX_FRAMESAMPLES 960
-/* number of samples per 10ms frame */
-#define FRAMESAMPLES_10ms 160 /* ((10*FS)/1000) */
-/* Number of samples per 1 ms */
-#define SAMPLES_PER_MSEC 16
-/* number of subframes */
-#define SUBFRAMES 6
-/* length of a subframe */
-#define UPDATE 80
-/* length of half a subframe (low/high band) */
-#define HALF_SUBFRAMELEN 40 /* (UPDATE/2) */
-/* samples of look ahead (in a half-band, so actually half the samples of look
- * ahead @ FS) */
-#define QLOOKAHEAD 24 /* 3 ms */
-
-/* order of AR model in spectral entropy coder */
-#define AR_ORDER 6
-#define MAX_ORDER 13
-#define LEVINSON_MAX_ORDER 12
-
-/* window length (masking analysis) */
-#define WINLEN 256
-/* order of low-band pole filter used to approximate masking curve */
-#define ORDERLO 12
-/* order of hi-band pole filter used to approximate masking curve */
-#define ORDERHI 6
-
-#define KLT_NUM_AVG_GAIN 0
-#define KLT_NUM_AVG_SHAPE 0
-#define KLT_NUM_MODELS 3
-#define LPC_SHAPE_ORDER 18 /* (ORDERLO + ORDERHI) */
-
-#define KLT_ORDER_GAIN 12   /* (2 * SUBFRAMES) */
-#define KLT_ORDER_SHAPE 108 /*  (LPC_SHAPE_ORDER * SUBFRAMES) */
-
-/* order for post_filter_bank */
-#define POSTQORDER 3
-/* order for pre-filterbank */
-#define QORDER 3
-/* for decimator */
-#define ALLPASSSECTIONS 2
-/* The number of composite all-pass filter factors */
-#define NUMBEROFCOMPOSITEAPSECTIONS 4
-
-/* The number of all-pass filter factors in an upper or lower channel*/
-#define NUMBEROFCHANNELAPSECTIONS 2
-
-#define DPMIN_Q10 -10240  /* -10.00 in Q10 */
-#define DPMAX_Q10 10240   /* 10.00 in Q10 */
-#define MINBITS_Q10 10240 /* 10.0 in Q10 */
-
-/* array size for byte stream in number of Word16. */
-#define STREAM_MAXW16 \
-  300 /* The old maximum size still needed for the decoding */
-#define STREAM_MAXW16_30MS \
-  100 /* 100 Word16 = 200 bytes = 53.4 kbit/s @ 30 ms.framelength */
-#define STREAM_MAXW16_60MS \
-  200 /* 200 Word16 = 400 bytes = 53.4 kbit/s @ 60 ms.framelength */
-/* This is used only at the decoder bit-stream struct.
- * - The encoder and decoder bitstream containers are of different size because
- *   old iSAC limited the encoded bitstream to 600 bytes. But newer versions
- *   restrict to shorter bitstream.
- * - We add 10 bytes of guards to the internal bitstream container. The reason
- *   is that entropy decoder might read few bytes (3 according to our
- *   observations) more than the actual size of the bitstream. To avoid reading
- *   outside memory, in rare occasion of full-size bitstream we add 10 bytes
- *   of guard. */
-#define INTERNAL_STREAM_SIZE_W16 (STREAM_MAXW16 + 5)
-
-/* storage size for bit counts */
-//#define BIT_COUNTER_SIZE                        30
-/* maximum order of any AR model or filter */
-#define MAX_AR_MODEL_ORDER 12
-
-/* Maximum number of iterations allowed to limit payload size */
-#define MAX_PAYLOAD_LIMIT_ITERATION 1
-
-/* Bandwidth estimator */
-
-#define MIN_ISAC_BW 10000 /* Minimum bandwidth in bits per sec */
-#define MAX_ISAC_BW 32000 /* Maxmum bandwidth in bits per sec */
-#define MIN_ISAC_MD 5     /* Minimum Max Delay in ?? */
-#define MAX_ISAC_MD 25    /* Maxmum Max Delay in ?? */
-#define DELAY_CORRECTION_MAX 717
-#define DELAY_CORRECTION_MED 819
-#define Thld_30_60 18000
-#define Thld_60_30 27000
-
-/* assumed header size; we don't know the exact number (header compression may
- * be used) */
-#define HEADER_SIZE 35 /* bytes */
-#define INIT_FRAME_LEN 60
-#define INIT_BN_EST 20000
-#define INIT_BN_EST_Q7 2560000    /* 20 kbps in Q7 */
-#define INIT_REC_BN_EST_Q5 789312 /* INIT_BN_EST + INIT_HDR_RATE in Q5 */
-
-/* 8738 in Q18 is ~ 1/30 */
-/* #define INIT_HDR_RATE (((HEADER_SIZE * 8 * 1000) * 8738) >> NUM_BITS_TO_SHIFT
- * (INIT_FRAME_LEN)) */
-#define INIT_HDR_RATE 4666
-/* number of packets in a row for a high rate burst */
-#define BURST_LEN 3
-/* ms, max time between two full bursts */
-#define BURST_INTERVAL 800
-/* number of packets in a row for initial high rate burst */
-#define INIT_BURST_LEN 5
-/* bits/s, rate for the first BURST_LEN packets */
-#define INIT_RATE 10240000 /* INIT_BN_EST in Q9 */
-
-/* For pitch analysis */
-#define PITCH_FRAME_LEN 240   /* (FRAMESAMPLES/2) 30 ms  */
-#define PITCH_MAX_LAG 140     /* 57 Hz  */
-#define PITCH_MIN_LAG 20      /* 400 Hz */
-#define PITCH_MIN_LAG_Q8 5120 /* 256 * PITCH_MIN_LAG */
-#define OFFSET_Q8 768         /* 256 * 3 */
-
-#define PITCH_MAX_GAIN_Q12 1843 /* 0.45 */
-#define PITCH_LAG_SPAN2 65      /* (PITCH_MAX_LAG/2-PITCH_MIN_LAG/2+5) */
-#define PITCH_CORR_LEN2 60      /* 15 ms  */
-#define PITCH_CORR_STEP2 60     /* (PITCH_FRAME_LEN/4) */
-#define PITCH_SUBFRAMES 4
-#define PITCH_SUBFRAME_LEN 60 /* (PITCH_FRAME_LEN/PITCH_SUBFRAMES) */
-
-/* For pitch filter */
-#define PITCH_BUFFSIZE \
-  190 /* (PITCH_MAX_LAG + 50) Extra 50 for fraction and LP filters */
-#define PITCH_INTBUFFSIZE 430 /* (PITCH_FRAME_LEN+PITCH_BUFFSIZE) */
-#define PITCH_FRACS 8
-#define PITCH_FRACORDER 9
-#define PITCH_DAMPORDER 5
-
-/* Order of high pass filter */
-#define HPORDER 2
-
-/* PLC */
-#define DECAY_RATE \
-  10 /* Q15, 20% of decay every lost frame apllied linearly sample by sample*/
-#define PLC_WAS_USED 1
-#define PLC_NOT_USED 3
-#define RECOVERY_OVERLAP 80
-#define RESAMP_RES 256
-#define RESAMP_RES_BIT 8
-
-/* Define Error codes */
-/* 6000 General */
-#define ISAC_MEMORY_ALLOCATION_FAILED 6010
-#define ISAC_MODE_MISMATCH 6020
-#define ISAC_DISALLOWED_BOTTLENECK 6030
-#define ISAC_DISALLOWED_FRAME_LENGTH 6040
-/* 6200 Bandwidth estimator */
-#define ISAC_RANGE_ERROR_BW_ESTIMATOR 6240
-/* 6400 Encoder */
-#define ISAC_ENCODER_NOT_INITIATED 6410
-#define ISAC_DISALLOWED_CODING_MODE 6420
-#define ISAC_DISALLOWED_FRAME_MODE_ENCODER 6430
-#define ISAC_DISALLOWED_BITSTREAM_LENGTH 6440
-#define ISAC_PAYLOAD_LARGER_THAN_LIMIT 6450
-/* 6600 Decoder */
-#define ISAC_DECODER_NOT_INITIATED 6610
-#define ISAC_EMPTY_PACKET 6620
-#define ISAC_PACKET_TOO_SHORT 6625
-#define ISAC_DISALLOWED_FRAME_MODE_DECODER 6630
-#define ISAC_RANGE_ERROR_DECODE_FRAME_LENGTH 6640
-#define ISAC_RANGE_ERROR_DECODE_BANDWIDTH 6650
-#define ISAC_RANGE_ERROR_DECODE_PITCH_GAIN 6660
-#define ISAC_RANGE_ERROR_DECODE_PITCH_LAG 6670
-#define ISAC_RANGE_ERROR_DECODE_LPC 6680
-#define ISAC_RANGE_ERROR_DECODE_SPECTRUM 6690
-#define ISAC_LENGTH_MISMATCH 6730
-/* 6800 Call setup formats */
-#define ISAC_INCOMPATIBLE_FORMATS 6810
-
-#endif /* MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_SETTINGS_H_ */
diff --git a/modules/audio_coding/codecs/isac/fix/source/spectrum_ar_model_tables.c b/modules/audio_coding/codecs/isac/fix/source/spectrum_ar_model_tables.c
deleted file mode 100644
index 4ef9a33..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/spectrum_ar_model_tables.c
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * spectrum_ar_model_tables.c
- *
- * This file contains tables with AR coefficients, Gain coefficients
- * and cosine tables.
- *
- */
-
-#include "modules/audio_coding/codecs/isac/fix/source/spectrum_ar_model_tables.h"
-#include "modules/audio_coding/codecs/isac/fix/source/settings.h"
-
-/********************* AR Coefficient Tables ************************/
-
-/* cdf for quantized reflection coefficient 1 */
-const uint16_t WebRtcIsacfix_kRc1Cdf[12] = {
-  0,  2,  4,  129,  7707,  57485,  65495,  65527,  65529,  65531,
-  65533,  65535
-};
-
-/* cdf for quantized reflection coefficient 2 */
-const uint16_t WebRtcIsacfix_kRc2Cdf[12] = {
-  0,  2,  4,  7,  531,  25298,  64525,  65526,  65529,  65531,
-  65533,  65535
-};
-
-/* cdf for quantized reflection coefficient 3 */
-const uint16_t WebRtcIsacfix_kRc3Cdf[12] = {
-  0,  2,  4,  6,  620,  22898,  64843,  65527,  65529,  65531,
-  65533,  65535
-};
-
-/* cdf for quantized reflection coefficient 4 */
-const uint16_t WebRtcIsacfix_kRc4Cdf[12] = {
-  0,  2,  4,  6,  35,  10034,  60733,  65506,  65529,  65531,
-  65533,  65535
-};
-
-/* cdf for quantized reflection coefficient 5 */
-const uint16_t WebRtcIsacfix_kRc5Cdf[12] = {
-  0,  2,  4,  6,  36,  7567,  56727,  65385,  65529,  65531,
-  65533,  65535
-};
-
-/* cdf for quantized reflection coefficient 6 */
-const uint16_t WebRtcIsacfix_kRc6Cdf[12] = {
-  0,  2,  4,  6,  14,  6579,  57360,  65409,  65529,  65531,
-  65533,  65535
-};
-
-/* representation levels for quantized reflection coefficient 1 */
-const int16_t WebRtcIsacfix_kRc1Levels[11] = {
-  -32104, -29007, -23202, -15496, -9279, -2577, 5934, 17535, 24512, 29503, 32104
-};
-
-/* representation levels for quantized reflection coefficient 2 */
-const int16_t WebRtcIsacfix_kRc2Levels[11] = {
-  -32104, -29503, -23494, -15261, -7309, -1399, 6158, 16381, 24512, 29503, 32104
-};
-
-/* representation levels for quantized reflection coefficient 3 */
-const int16_t WebRtcIsacfix_kRc3Levels[11] = {
-  -32104, -29503, -23157, -15186, -7347, -1359, 5829, 17535, 24512, 29503, 32104
-};
-
-/* representation levels for quantized reflection coefficient 4 */
-const int16_t WebRtcIsacfix_kRc4Levels[11] = {
-  -32104, -29503, -24512, -15362, -6665, -342, 6596, 14585, 24512, 29503, 32104
-};
-
-/* representation levels for quantized reflection coefficient 5 */
-const int16_t WebRtcIsacfix_kRc5Levels[11] = {
-  -32104, -29503, -24512, -15005, -6564, -106, 7123, 14920, 24512, 29503, 32104
-};
-
-/* representation levels for quantized reflection coefficient 6 */
-const int16_t WebRtcIsacfix_kRc6Levels[11] = {
-  -32104, -29503, -24512, -15096, -6656, -37, 7036, 14847, 24512, 29503, 32104
-};
-
-/* quantization boundary levels for reflection coefficients */
-const int16_t WebRtcIsacfix_kRcBound[12] = {
-  -32768, -31441, -27566, -21458, -13612, -4663,
-  4663, 13612, 21458, 27566, 31441, 32767
-};
-
-/* initial index for AR reflection coefficient quantizer and cdf table search */
-const uint16_t WebRtcIsacfix_kRcInitInd[6] = {
-  5,  5,  5,  5,  5,  5
-};
-
-/* pointers to AR cdf tables */
-const uint16_t *WebRtcIsacfix_kRcCdfPtr[AR_ORDER] = {
-  WebRtcIsacfix_kRc1Cdf,
-  WebRtcIsacfix_kRc2Cdf,
-  WebRtcIsacfix_kRc3Cdf,
-  WebRtcIsacfix_kRc4Cdf,
-  WebRtcIsacfix_kRc5Cdf,
-  WebRtcIsacfix_kRc6Cdf
-};
-
-/* pointers to AR representation levels tables */
-const int16_t *WebRtcIsacfix_kRcLevPtr[AR_ORDER] = {
-  WebRtcIsacfix_kRc1Levels,
-  WebRtcIsacfix_kRc2Levels,
-  WebRtcIsacfix_kRc3Levels,
-  WebRtcIsacfix_kRc4Levels,
-  WebRtcIsacfix_kRc5Levels,
-  WebRtcIsacfix_kRc6Levels
-};
-
-
-/******************** GAIN Coefficient Tables ***********************/
-
-/* cdf for Gain coefficient */
-const uint16_t WebRtcIsacfix_kGainCdf[19] = {
-  0,  2,  4,  6,  8,  10,  12,  14,  16,  1172,
-  11119,  29411,  51699,  64445,  65527,  65529,  65531,  65533,  65535
-};
-
-/* representation levels for quantized squared Gain coefficient */
-const int32_t WebRtcIsacfix_kGain2Lev[18] = {
-  128, 128, 128, 128, 128, 215, 364, 709, 1268,
-  1960, 3405, 6078, 11286, 17827, 51918, 134498, 487432, 2048000
-};
-
-/* quantization boundary levels for squared Gain coefficient */
-const int32_t WebRtcIsacfix_kGain2Bound[19] = {
-  0, 21, 35, 59, 99, 166, 280, 475, 815, 1414,
-  2495, 4505, 8397, 16405, 34431, 81359, 240497, 921600, 0x7FFFFFFF
-};
-
-/* pointers to Gain cdf table */
-const uint16_t *WebRtcIsacfix_kGainPtr[1] = {
-  WebRtcIsacfix_kGainCdf
-};
-
-/* gain initial index for gain quantizer and cdf table search */
-const uint16_t WebRtcIsacfix_kGainInitInd[1] = {
-  11
-};
-
-
-/************************* Cosine Tables ****************************/
-
-/* cosine table */
-const int16_t WebRtcIsacfix_kCos[6][60] = {
-  { 512,   512,   511,   510,   508,   507,   505,   502,   499,   496,
-        493,   489,   485,   480,   476,   470,   465,   459,   453,   447,
- 440,   433,   426,   418,   410,   402,   394,   385,   376,   367,
-        357,   348,   338,   327,   317,   306,   295,   284,   273,   262,
- 250,   238,   226,   214,   202,   190,   177,   165,   152,   139,
-        126,   113,   100,   87,   73,   60,   47,   33,   20,   7       },
-  { 512,   510,   508,   503,   498,   491,   483,   473,   462,   450,
-        437,   422,   406,   389,   371,   352,   333,   312,   290,   268,
- 244,   220,   196,   171,   145,   120,   93,   67,   40,   13,
-        -13,   -40,   -67,   -93,   -120,   -145,   -171,   -196,   -220,   -244,
- -268,   -290,   -312,   -333,   -352,   -371,   -389,   -406,   -422,   -437,
-        -450,   -462,   -473,   -483,   -491,   -498,   -503,   -508,   -510,   -512    },
-  { 512,   508,   502,   493,   480,   465,   447,   426,   402,   376,
-        348,   317,   284,   250,   214,   177,   139,   100,   60,   20,
- -20,   -60,   -100,   -139,   -177,   -214,   -250,   -284,   -317,   -348,
-        -376,   -402,   -426,   -447,   -465,   -480,   -493,   -502,   -508,   -512,
- -512,   -508,   -502,   -493,   -480,   -465,   -447,   -426,   -402,   -376,
-        -348,   -317,   -284,   -250,   -214,   -177,   -139,   -100,   -60,   -20     },
-  { 511,   506,   495,   478,   456,   429,   398,   362,   322,   279,
-        232,   183,   133,   80,   27,   -27,   -80,   -133,   -183,   -232,
- -279,   -322,   -362,   -398,   -429,   -456,   -478,   -495,   -506,   -511,
-        -511,   -506,   -495,   -478,   -456,   -429,   -398,   -362,   -322,   -279,
- -232,   -183,   -133,   -80,   -27,   27,   80,   133,   183,   232,
-        279,   322,   362,   398,   429,   456,   478,   495,   506,   511     },
-  { 511,   502,   485,   459,   426,   385,   338,   284,   226,   165,
-        100,   33,   -33,   -100,   -165,   -226,   -284,   -338,   -385,   -426,
- -459,   -485,   -502,   -511,   -511,   -502,   -485,   -459,   -426,   -385,
-        -338,   -284,   -226,   -165,   -100,   -33,   33,   100,   165,   226,
- 284,   338,   385,   426,   459,   485,   502,   511,   511,   502,
-        485,   459,   426,   385,   338,   284,   226,   165,   100,   33      },
-  { 510,   498,   473,   437,   389,   333,   268,   196,   120,   40,
-        -40,   -120,   -196,   -268,   -333,   -389,   -437,   -473,   -498,   -510,
- -510,   -498,   -473,   -437,   -389,   -333,   -268,   -196,   -120,   -40,
-        40,   120,   196,   268,   333,   389,   437,   473,   498,   510,
- 510,   498,   473,   437,   389,   333,   268,   196,   120,   40,
-        -40,   -120,   -196,   -268,   -333,   -389,   -437,   -473,   -498,   -510    }
-};
diff --git a/modules/audio_coding/codecs/isac/fix/source/spectrum_ar_model_tables.h b/modules/audio_coding/codecs/isac/fix/source/spectrum_ar_model_tables.h
deleted file mode 100644
index 2282a36..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/spectrum_ar_model_tables.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * spectrum_ar_model_tables.h
- *
- * This file contains definitions of tables with AR coefficients,
- * Gain coefficients and cosine tables.
- *
- */
-
-#ifndef MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_SPECTRUM_AR_MODEL_TABLES_H_
-#define MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_SPECTRUM_AR_MODEL_TABLES_H_
-
-#include <stdint.h>
-
-#include "modules/audio_coding/codecs/isac/fix/source/settings.h"
-
-/********************* AR Coefficient Tables ************************/
-/* cdf for quantized reflection coefficient 1 */
-extern const uint16_t WebRtcIsacfix_kRc1Cdf[12];
-
-/* cdf for quantized reflection coefficient 2 */
-extern const uint16_t WebRtcIsacfix_kRc2Cdf[12];
-
-/* cdf for quantized reflection coefficient 3 */
-extern const uint16_t WebRtcIsacfix_kRc3Cdf[12];
-
-/* cdf for quantized reflection coefficient 4 */
-extern const uint16_t WebRtcIsacfix_kRc4Cdf[12];
-
-/* cdf for quantized reflection coefficient 5 */
-extern const uint16_t WebRtcIsacfix_kRc5Cdf[12];
-
-/* cdf for quantized reflection coefficient 6 */
-extern const uint16_t WebRtcIsacfix_kRc6Cdf[12];
-
-/* representation levels for quantized reflection coefficient 1 */
-extern const int16_t WebRtcIsacfix_kRc1Levels[11];
-
-/* representation levels for quantized reflection coefficient 2 */
-extern const int16_t WebRtcIsacfix_kRc2Levels[11];
-
-/* representation levels for quantized reflection coefficient 3 */
-extern const int16_t WebRtcIsacfix_kRc3Levels[11];
-
-/* representation levels for quantized reflection coefficient 4 */
-extern const int16_t WebRtcIsacfix_kRc4Levels[11];
-
-/* representation levels for quantized reflection coefficient 5 */
-extern const int16_t WebRtcIsacfix_kRc5Levels[11];
-
-/* representation levels for quantized reflection coefficient 6 */
-extern const int16_t WebRtcIsacfix_kRc6Levels[11];
-
-/* quantization boundary levels for reflection coefficients */
-extern const int16_t WebRtcIsacfix_kRcBound[12];
-
-/* initial indices for AR reflection coefficient quantizer and cdf table search
- */
-extern const uint16_t WebRtcIsacfix_kRcInitInd[AR_ORDER];
-
-/* pointers to AR cdf tables */
-extern const uint16_t* WebRtcIsacfix_kRcCdfPtr[AR_ORDER];
-
-/* pointers to AR representation levels tables */
-extern const int16_t* WebRtcIsacfix_kRcLevPtr[AR_ORDER];
-
-/******************** GAIN Coefficient Tables ***********************/
-/* cdf for Gain coefficient */
-extern const uint16_t WebRtcIsacfix_kGainCdf[19];
-
-/* representation levels for quantized Gain coefficient */
-extern const int32_t WebRtcIsacfix_kGain2Lev[18];
-
-/* squared quantization boundary levels for Gain coefficient */
-extern const int32_t WebRtcIsacfix_kGain2Bound[19];
-
-/* pointer to Gain cdf table */
-extern const uint16_t* WebRtcIsacfix_kGainPtr[1];
-
-/* Gain initial index for gain quantizer and cdf table search */
-extern const uint16_t WebRtcIsacfix_kGainInitInd[1];
-
-/************************* Cosine Tables ****************************/
-/* Cosine table */
-extern const int16_t WebRtcIsacfix_kCos[6][60];
-
-#endif /* MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_SPECTRUM_AR_MODEL_TABLES_H_ \
-        */
diff --git a/modules/audio_coding/codecs/isac/fix/source/structs.h b/modules/audio_coding/codecs/isac/fix/source/structs.h
deleted file mode 100644
index 3044d51..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/structs.h
+++ /dev/null
@@ -1,345 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * structs.h
- *
- * This header file contains all the structs used in the ISAC codec
- *
- */
-
-#ifndef MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_STRUCTS_H_
-#define MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_STRUCTS_H_
-
-#include "common_audio/signal_processing/include/signal_processing_library.h"
-#include "modules/audio_coding/codecs/isac/bandwidth_info.h"
-#include "modules/audio_coding/codecs/isac/fix/source/settings.h"
-
-/* Bitstream struct for decoder */
-typedef struct Bitstreamstruct_dec {
-  uint16_t stream[INTERNAL_STREAM_SIZE_W16]; /* Array bytestream to decode */
-  uint32_t W_upper;                          /* Upper boundary of interval W */
-  uint32_t streamval;
-  uint16_t stream_index; /* Index to the current position in bytestream */
-  int16_t full;          /* 0 - first byte in memory filled, second empty*/
-  /* 1 - both bytes are empty (we just filled the previous memory */
-
-  size_t stream_size; /* The size of stream in bytes. */
-} Bitstr_dec;
-
-/* Bitstream struct for encoder */
-typedef struct Bitstreamstruct_enc {
-  uint16_t
-      stream[STREAM_MAXW16_60MS]; /* Vector for adding encoded bytestream */
-  uint32_t W_upper;               /* Upper boundary of interval W */
-  uint32_t streamval;
-  uint16_t stream_index; /* Index to the current position in bytestream */
-  int16_t full;          /* 0 - first byte in memory filled, second empty*/
-  /* 1 - both bytes are empty (we just filled the previous memory */
-
-} Bitstr_enc;
-
-typedef struct {
-  int16_t DataBufferLoQ0[WINLEN];
-  int16_t DataBufferHiQ0[WINLEN];
-
-  int32_t CorrBufLoQQ[ORDERLO + 1];
-  int32_t CorrBufHiQQ[ORDERHI + 1];
-
-  int16_t CorrBufLoQdom[ORDERLO + 1];
-  int16_t CorrBufHiQdom[ORDERHI + 1];
-
-  int32_t PreStateLoGQ15[ORDERLO + 1];
-  int32_t PreStateHiGQ15[ORDERHI + 1];
-
-  uint32_t OldEnergy;
-
-} MaskFiltstr_enc;
-
-typedef struct {
-  int16_t PostStateLoGQ0[ORDERLO + 1];
-  int16_t PostStateHiGQ0[ORDERHI + 1];
-
-  uint32_t OldEnergy;
-
-} MaskFiltstr_dec;
-
-typedef struct {
-  // state vectors for each of the two analysis filters
-
-  int32_t INSTAT1_fix[2 * (QORDER - 1)];
-  int32_t INSTAT2_fix[2 * (QORDER - 1)];
-  int16_t INLABUF1_fix[QLOOKAHEAD];
-  int16_t INLABUF2_fix[QLOOKAHEAD];
-
-  /* High pass filter */
-  int32_t HPstates_fix[HPORDER];
-
-} PreFiltBankstr;
-
-typedef struct {
-  // state vectors for each of the two analysis filters
-  int32_t STATE_0_LOWER_fix[2 * POSTQORDER];
-  int32_t STATE_0_UPPER_fix[2 * POSTQORDER];
-
-  /* High pass filter */
-
-  int32_t HPstates1_fix[HPORDER];
-  int32_t HPstates2_fix[HPORDER];
-
-} PostFiltBankstr;
-
-typedef struct {
-  /* data buffer for pitch filter */
-  int16_t ubufQQ[PITCH_BUFFSIZE];
-
-  /* low pass state vector */
-  int16_t ystateQQ[PITCH_DAMPORDER];
-
-  /* old lag and gain */
-  int16_t oldlagQ7;
-  int16_t oldgainQ12;
-
-} PitchFiltstr;
-
-typedef struct {
-  // for inital estimator
-  int16_t dec_buffer16[PITCH_CORR_LEN2 + PITCH_CORR_STEP2 + PITCH_MAX_LAG / 2 -
-                       PITCH_FRAME_LEN / 2 + 2];
-  int32_t decimator_state32[2 * ALLPASSSECTIONS + 1];
-  int16_t inbuf[QLOOKAHEAD];
-
-  PitchFiltstr PFstr_wght;
-  PitchFiltstr PFstr;
-
-} PitchAnalysisStruct;
-
-typedef struct {
-  /* Parameters used in PLC to avoid re-computation       */
-
-  /* --- residual signals --- */
-  int16_t prevPitchInvIn[FRAMESAMPLES / 2];
-  int16_t prevPitchInvOut[PITCH_MAX_LAG + 10];  // [FRAMESAMPLES/2]; save 90
-  int32_t prevHP[PITCH_MAX_LAG + 10];           // [FRAMESAMPLES/2]; save 90
-
-  int16_t decayCoeffPriodic; /* how much to supress a sample */
-  int16_t decayCoeffNoise;
-  int16_t used; /* if PLC is used */
-
-  int16_t* lastPitchLP;  // [FRAMESAMPLES/2]; saved 240;
-
-  /* --- LPC side info --- */
-  int16_t lofilt_coefQ15[ORDERLO];
-  int16_t hifilt_coefQ15[ORDERHI];
-  int32_t gain_lo_hiQ17[2];
-
-  /* --- LTP side info --- */
-  int16_t AvgPitchGain_Q12;
-  int16_t lastPitchGain_Q12;
-  int16_t lastPitchLag_Q7;
-
-  /* --- Add-overlap in recovery packet --- */
-  int16_t overlapLP[RECOVERY_OVERLAP];  // [FRAMESAMPLES/2]; saved 160
-
-  int16_t pitchCycles;
-  int16_t A;
-  int16_t B;
-  size_t pitchIndex;
-  size_t stretchLag;
-  int16_t* prevPitchLP;  // [ FRAMESAMPLES/2 ]; saved 240
-  int16_t seed;
-
-  int16_t std;
-} PLCstr;
-
-/* Have instance of struct together with other iSAC structs */
-typedef struct {
-  int16_t prevFrameSizeMs; /* Previous frame size (in ms) */
-  uint16_t prevRtpNumber;  /* Previous RTP timestamp from received packet */
-  /* (in samples relative beginning)  */
-  uint32_t prevSendTime;    /* Send time for previous packet, from RTP header */
-  uint32_t prevArrivalTime; /* Arrival time for previous packet (in ms using
-                               timeGetTime()) */
-  uint16_t prevRtpRate; /* rate of previous packet, derived from RTP timestamps
-                           (in bits/s) */
-  uint32_t lastUpdate; /* Time since the last update of the Bottle Neck estimate
-                          (in samples) */
-  uint32_t lastReduction; /* Time sinse the last reduction (in samples) */
-  int32_t countUpdates;   /* How many times the estimate was update in the
-                             beginning */
-
-  /* The estimated bottle neck rate from there to here (in bits/s) */
-  uint32_t recBw;
-  uint32_t recBwInv;
-  uint32_t recBwAvg;
-  uint32_t recBwAvgQ;
-
-  uint32_t minBwInv;
-  uint32_t maxBwInv;
-
-  /* The estimated mean absolute jitter value, as seen on this side (in ms) */
-  int32_t recJitter;
-  int32_t recJitterShortTerm;
-  int32_t recJitterShortTermAbs;
-  int32_t recMaxDelay;
-  int32_t recMaxDelayAvgQ;
-
-  int16_t recHeaderRate; /* (assumed) bitrate for headers (bps) */
-
-  uint32_t sendBwAvg; /* The estimated bottle neck rate from here to there (in
-                         bits/s) */
-  int32_t sendMaxDelayAvg; /* The estimated mean absolute jitter value, as seen
-                              on the other siee (in ms)  */
-
-  int16_t countRecPkts; /* number of packets received since last update */
-  int16_t highSpeedRec; /* flag for marking that a high speed network has been
-                           detected downstream */
-
-  /* number of consecutive pkts sent during which the bwe estimate has
-     remained at a value greater than the downstream threshold for determining
-     highspeed network */
-  int16_t countHighSpeedRec;
-
-  /* flag indicating bwe should not adjust down immediately for very late pckts
-   */
-  int16_t inWaitPeriod;
-
-  /* variable holding the time of the start of a window of time when
-     bwe should not adjust down immediately for very late pckts */
-  uint32_t startWaitPeriod;
-
-  /* number of consecutive pkts sent during which the bwe estimate has
-     remained at a value greater than the upstream threshold for determining
-     highspeed network */
-  int16_t countHighSpeedSent;
-
-  /* flag indicated the desired number of packets over threshold rate have been
-     sent and bwe will assume the connection is over broadband network */
-  int16_t highSpeedSend;
-
-  IsacBandwidthInfo external_bw_info;
-} BwEstimatorstr;
-
-typedef struct {
-  /* boolean, flags if previous packet exceeded B.N. */
-  int16_t PrevExceed;
-  /* ms */
-  int16_t ExceedAgo;
-  /* packets left to send in current burst */
-  int16_t BurstCounter;
-  /* packets */
-  int16_t InitCounter;
-  /* ms remaining in buffer when next packet will be sent */
-  int16_t StillBuffered;
-
-} RateModel;
-
-/* 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
-   handle 60 ms of data.
-*/
-typedef struct {
-  /* Used to keep track of if it is first or second part of 60 msec packet */
-  int startIdx;
-
-  /* Frame length in samples */
-  int16_t framelength;
-
-  /* Pitch Gain */
-  int16_t pitchGain_index[2];
-
-  /* Pitch Lag */
-  int32_t meanGain[2];
-  int16_t pitchIndex[PITCH_SUBFRAMES * 2];
-
-  /* LPC */
-  int32_t LPCcoeffs_g[12 * 2]; /* KLT_ORDER_GAIN = 12 */
-  int16_t LPCindex_s[108 * 2]; /* KLT_ORDER_SHAPE = 108 */
-  int16_t LPCindex_g[12 * 2];  /* KLT_ORDER_GAIN = 12 */
-
-  /* Encode Spec */
-  int16_t fre[FRAMESAMPLES];
-  int16_t fim[FRAMESAMPLES];
-  int16_t AvgPitchGain[2];
-
-  /* Used in adaptive mode only */
-  int minBytes;
-
-} IsacSaveEncoderData;
-
-typedef struct {
-  Bitstr_enc bitstr_obj;
-  MaskFiltstr_enc maskfiltstr_obj;
-  PreFiltBankstr prefiltbankstr_obj;
-  PitchFiltstr pitchfiltstr_obj;
-  PitchAnalysisStruct pitchanalysisstr_obj;
-  RateModel rate_data_obj;
-
-  int16_t buffer_index;
-  int16_t current_framesamples;
-
-  int16_t data_buffer_fix[FRAMESAMPLES];  // the size was MAX_FRAMESAMPLES
-
-  int16_t frame_nb;
-  int16_t BottleNeck;
-  int16_t MaxDelay;
-  int16_t new_framelength;
-  int16_t s2nr;
-  uint16_t MaxBits;
-
-  int16_t bitstr_seed;
-
-  IsacSaveEncoderData* SaveEnc_ptr;
-  int16_t payloadLimitBytes30; /* Maximum allowed number of bits for a 30 msec
-                                  packet */
-  int16_t payloadLimitBytes60; /* Maximum allowed number of bits for a 30 msec
-                                  packet */
-  int16_t maxPayloadBytes; /* Maximum allowed number of bits for both 30 and 60
-                              msec packet */
-  int16_t maxRateInBytes; /* Maximum allowed rate in bytes per 30 msec packet */
-  int16_t enforceFrameSize; /* If set iSAC will never change packet size */
-
-} IsacFixEncoderInstance;
-
-typedef struct {
-  Bitstr_dec bitstr_obj;
-  MaskFiltstr_dec maskfiltstr_obj;
-  PostFiltBankstr postfiltbankstr_obj;
-  PitchFiltstr pitchfiltstr_obj;
-  PLCstr plcstr_obj; /* TS; for packet loss concealment */
-} IsacFixDecoderInstance;
-
-typedef struct {
-  IsacFixEncoderInstance ISACenc_obj;
-  IsacFixDecoderInstance ISACdec_obj;
-  BwEstimatorstr bwestimator_obj;
-  int16_t CodingMode; /* 0 = adaptive; 1 = instantaneous */
-  int16_t errorcode;
-  int16_t initflag; /* 0 = nothing initiated; 1 = encoder or decoder */
-  /* not initiated; 2 = all initiated */
-} ISACFIX_SubStruct;
-
-typedef struct {
-  int32_t lpcGains[12]; /* 6 lower-band & 6 upper-band we may need to double it
-                           for 60*/
-  /* */
-  uint32_t W_upper; /* Upper boundary of interval W */
-  uint32_t streamval;
-  uint16_t stream_index; /* Index to the current position in bytestream */
-  int16_t full;          /* 0 - first byte in memory filled, second empty*/
-  /* 1 - both bytes are empty (we just filled the previous memory */
-  uint16_t beforeLastWord;
-  uint16_t lastWord;
-} transcode_obj;
-
-// Bitstr_enc myBitStr;
-
-#endif /* MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_STRUCTS_H_ */
diff --git a/modules/audio_coding/codecs/isac/fix/source/transform.c b/modules/audio_coding/codecs/isac/fix/source/transform.c
deleted file mode 100644
index 80b244b..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/transform.c
+++ /dev/null
@@ -1,214 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * WebRtcIsacfix_kTransform.c
- *
- * Transform functions
- *
- */
-
-#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 */
-extern const int16_t WebRtcIsacfix_kCosTab1[FRAMESAMPLES/2];
-/* Sine table 1 in Q14 */
-extern const int16_t WebRtcIsacfix_kSinTab1[FRAMESAMPLES/2];
-/* Sine table 2 in Q14 */
-extern const int16_t WebRtcIsacfix_kSinTab2[FRAMESAMPLES/4];
-
-void WebRtcIsacfix_Time2SpecC(int16_t *inre1Q9,
-                              int16_t *inre2Q9,
-                              int16_t *outreQ7,
-                              int16_t *outimQ7)
-{
-
-  int k;
-  int32_t tmpreQ16[FRAMESAMPLES/2], tmpimQ16[FRAMESAMPLES/2];
-  int16_t tmp1rQ14, tmp1iQ14;
-  int32_t xrQ16, xiQ16, yrQ16, yiQ16;
-  int32_t v1Q16, v2Q16;
-  int16_t factQ19, sh;
-
-  /* Multiply with complex exponentials and combine into one complex vector */
-  factQ19 = 16921; // 0.5/sqrt(240) in Q19 is round(.5/sqrt(240)*(2^19)) = 16921
-  for (k = 0; k < FRAMESAMPLES/2; k++) {
-    tmp1rQ14 = WebRtcIsacfix_kCosTab1[k];
-    tmp1iQ14 = WebRtcIsacfix_kSinTab1[k];
-    xrQ16 = (tmp1rQ14 * inre1Q9[k] + tmp1iQ14 * inre2Q9[k]) >> 7;
-    xiQ16 = (tmp1rQ14 * inre2Q9[k] - tmp1iQ14 * inre1Q9[k]) >> 7;
-    // Q-domains below: (Q16*Q19>>16)>>3 = Q16
-    tmpreQ16[k] = (WEBRTC_SPL_MUL_16_32_RSFT16(factQ19, xrQ16) + 4) >> 3;
-    tmpimQ16[k] = (WEBRTC_SPL_MUL_16_32_RSFT16(factQ19, xiQ16) + 4) >> 3;
-  }
-
-
-  xrQ16  = WebRtcSpl_MaxAbsValueW32(tmpreQ16, FRAMESAMPLES/2);
-  yrQ16 = WebRtcSpl_MaxAbsValueW32(tmpimQ16, FRAMESAMPLES/2);
-  if (yrQ16>xrQ16) {
-    xrQ16 = yrQ16;
-  }
-
-  sh = WebRtcSpl_NormW32(xrQ16);
-  sh = sh-24; //if sh becomes >=0, then we should shift sh steps to the left, and the domain will become Q(16+sh)
-  //if sh becomes <0, then we should shift -sh steps to the right, and the domain will become Q(16+sh)
-
-  //"Fastest" vectors
-  if (sh>=0) {
-    for (k=0; k<FRAMESAMPLES/2; k++) {
-      inre1Q9[k] = (int16_t)(tmpreQ16[k] << sh);  // Q(16+sh)
-      inre2Q9[k] = (int16_t)(tmpimQ16[k] << sh);  // Q(16+sh)
-    }
-  } else {
-    int32_t round = 1 << (-sh - 1);
-    for (k=0; k<FRAMESAMPLES/2; k++) {
-      inre1Q9[k] = (int16_t)((tmpreQ16[k] + round) >> -sh);  // Q(16+sh)
-      inre2Q9[k] = (int16_t)((tmpimQ16[k] + round) >> -sh);  // Q(16+sh)
-    }
-  }
-
-  /* Get DFT */
-  WebRtcIsacfix_FftRadix16Fastest(inre1Q9, inre2Q9, -1); // real call
-
-  //"Fastest" vectors
-  if (sh>=0) {
-    for (k=0; k<FRAMESAMPLES/2; k++) {
-      tmpreQ16[k] = inre1Q9[k] >> sh;  // Q(16+sh) -> Q16
-      tmpimQ16[k] = inre2Q9[k] >> sh;  // Q(16+sh) -> Q16
-    }
-  } else {
-    for (k=0; k<FRAMESAMPLES/2; k++) {
-      tmpreQ16[k] = inre1Q9[k] << -sh;  // Q(16+sh) -> Q16
-      tmpimQ16[k] = inre2Q9[k] << -sh;  // Q(16+sh) -> Q16
-    }
-  }
-
-
-  /* Use symmetry to separate into two complex vectors and center frames in time around zero */
-  for (k = 0; k < FRAMESAMPLES/4; k++) {
-    xrQ16 = tmpreQ16[k] + tmpreQ16[FRAMESAMPLES/2 - 1 - k];
-    yiQ16 = -tmpreQ16[k] + tmpreQ16[FRAMESAMPLES/2 - 1 - k];
-    xiQ16 = tmpimQ16[k] - tmpimQ16[FRAMESAMPLES/2 - 1 - k];
-    yrQ16 = tmpimQ16[k] + tmpimQ16[FRAMESAMPLES/2 - 1 - k];
-    tmp1rQ14 = -WebRtcIsacfix_kSinTab2[FRAMESAMPLES/4 - 1 - k];
-    tmp1iQ14 = WebRtcIsacfix_kSinTab2[k];
-    v1Q16 = WEBRTC_SPL_MUL_16_32_RSFT14(tmp1rQ14, xrQ16) - WEBRTC_SPL_MUL_16_32_RSFT14(tmp1iQ14, xiQ16);
-    v2Q16 = WEBRTC_SPL_MUL_16_32_RSFT14(tmp1iQ14, xrQ16) + WEBRTC_SPL_MUL_16_32_RSFT14(tmp1rQ14, xiQ16);
-    outreQ7[k] = (int16_t)(v1Q16 >> 9);
-    outimQ7[k] = (int16_t)(v2Q16 >> 9);
-    v1Q16 = -WEBRTC_SPL_MUL_16_32_RSFT14(tmp1iQ14, yrQ16) - WEBRTC_SPL_MUL_16_32_RSFT14(tmp1rQ14, yiQ16);
-    v2Q16 = -WEBRTC_SPL_MUL_16_32_RSFT14(tmp1rQ14, yrQ16) + WEBRTC_SPL_MUL_16_32_RSFT14(tmp1iQ14, yiQ16);
-    // CalcLrIntQ(v1Q16, 9);
-    outreQ7[FRAMESAMPLES / 2 - 1 - k] = (int16_t)(v1Q16 >> 9);
-    // CalcLrIntQ(v2Q16, 9);
-    outimQ7[FRAMESAMPLES / 2 - 1 - k] = (int16_t)(v2Q16 >> 9);
-
-  }
-}
-
-
-void WebRtcIsacfix_Spec2TimeC(int16_t *inreQ7, int16_t *inimQ7, int32_t *outre1Q16, int32_t *outre2Q16)
-{
-
-  int k;
-  int16_t tmp1rQ14, tmp1iQ14;
-  int32_t xrQ16, xiQ16, yrQ16, yiQ16;
-  int32_t tmpInRe, tmpInIm, tmpInRe2, tmpInIm2;
-  int16_t factQ11;
-  int16_t sh;
-
-  for (k = 0; k < FRAMESAMPLES/4; k++) {
-    /* Move zero in time to beginning of frames */
-    tmp1rQ14 = -WebRtcIsacfix_kSinTab2[FRAMESAMPLES/4 - 1 - k];
-    tmp1iQ14 = WebRtcIsacfix_kSinTab2[k];
-
-    tmpInRe = inreQ7[k] * (1 << 9);  // Q7 -> Q16
-    tmpInIm = inimQ7[k] * (1 << 9);  // Q7 -> Q16
-    tmpInRe2 = inreQ7[FRAMESAMPLES / 2 - 1 - k] * (1 << 9);  // Q7 -> Q16
-    tmpInIm2 = inimQ7[FRAMESAMPLES / 2 - 1 - k] * (1 << 9);  // Q7 -> Q16
-
-    xrQ16 = WEBRTC_SPL_MUL_16_32_RSFT14(tmp1rQ14, tmpInRe) + WEBRTC_SPL_MUL_16_32_RSFT14(tmp1iQ14, tmpInIm);
-    xiQ16 = WEBRTC_SPL_MUL_16_32_RSFT14(tmp1rQ14, tmpInIm) - WEBRTC_SPL_MUL_16_32_RSFT14(tmp1iQ14, tmpInRe);
-    yrQ16 = -WEBRTC_SPL_MUL_16_32_RSFT14(tmp1rQ14, tmpInIm2) - WEBRTC_SPL_MUL_16_32_RSFT14(tmp1iQ14, tmpInRe2);
-    yiQ16 = -WEBRTC_SPL_MUL_16_32_RSFT14(tmp1rQ14, tmpInRe2) + WEBRTC_SPL_MUL_16_32_RSFT14(tmp1iQ14, tmpInIm2);
-
-    /* Combine into one vector,  z = x + j * y */
-    outre1Q16[k] = xrQ16 - yiQ16;
-    outre1Q16[FRAMESAMPLES/2 - 1 - k] = xrQ16 + yiQ16;
-    outre2Q16[k] = xiQ16 + yrQ16;
-    outre2Q16[FRAMESAMPLES/2 - 1 - k] = -xiQ16 + yrQ16;
-  }
-
-  /* Get IDFT */
-  tmpInRe  = WebRtcSpl_MaxAbsValueW32(outre1Q16, 240);
-  tmpInIm = WebRtcSpl_MaxAbsValueW32(outre2Q16, 240);
-  if (tmpInIm>tmpInRe) {
-    tmpInRe = tmpInIm;
-  }
-
-  sh = WebRtcSpl_NormW32(tmpInRe);
-  sh = sh-24; //if sh becomes >=0, then we should shift sh steps to the left, and the domain will become Q(16+sh)
-  //if sh becomes <0, then we should shift -sh steps to the right, and the domain will become Q(16+sh)
-
-  //"Fastest" vectors
-  if (sh>=0) {
-    for (k=0; k<240; k++) {
-      inreQ7[k] = (int16_t)(outre1Q16[k] << sh);  // Q(16+sh)
-      inimQ7[k] = (int16_t)(outre2Q16[k] << sh);  // Q(16+sh)
-    }
-  } else {
-    int32_t round = 1 << (-sh - 1);
-    for (k=0; k<240; k++) {
-      inreQ7[k] = (int16_t)((outre1Q16[k] + round) >> -sh);  // Q(16+sh)
-      inimQ7[k] = (int16_t)((outre2Q16[k] + round) >> -sh);  // Q(16+sh)
-    }
-  }
-
-  WebRtcIsacfix_FftRadix16Fastest(inreQ7, inimQ7, 1); // real call
-
-  //"Fastest" vectors
-  if (sh>=0) {
-    for (k=0; k<240; k++) {
-      outre1Q16[k] = inreQ7[k] >> sh;  // Q(16+sh) -> Q16
-      outre2Q16[k] = inimQ7[k] >> sh;  // Q(16+sh) -> Q16
-    }
-  } else {
-    for (k=0; k<240; k++) {
-      outre1Q16[k] = inreQ7[k] * (1 << -sh);  // Q(16+sh) -> Q16
-      outre2Q16[k] = inimQ7[k] * (1 << -sh);  // Q(16+sh) -> Q16
-    }
-  }
-
-  /* Divide through by the normalizing constant: */
-  /* scale all values with 1/240, i.e. with 273 in Q16 */
-  /* 273/65536 ~= 0.0041656                            */
-  /*     1/240 ~= 0.0041666                            */
-  for (k=0; k<240; k++) {
-    outre1Q16[k] = WEBRTC_SPL_MUL_16_32_RSFT16(273, outre1Q16[k]);
-    outre2Q16[k] = WEBRTC_SPL_MUL_16_32_RSFT16(273, outre2Q16[k]);
-  }
-
-  /* Demodulate and separate */
-  factQ11 = 31727; // sqrt(240) in Q11 is round(15.49193338482967*2048) = 31727
-  for (k = 0; k < FRAMESAMPLES/2; k++) {
-    tmp1rQ14 = WebRtcIsacfix_kCosTab1[k];
-    tmp1iQ14 = WebRtcIsacfix_kSinTab1[k];
-    xrQ16 = WEBRTC_SPL_MUL_16_32_RSFT14(tmp1rQ14, outre1Q16[k]) - WEBRTC_SPL_MUL_16_32_RSFT14(tmp1iQ14, outre2Q16[k]);
-    xiQ16 = WEBRTC_SPL_MUL_16_32_RSFT14(tmp1rQ14, outre2Q16[k]) + WEBRTC_SPL_MUL_16_32_RSFT14(tmp1iQ14, outre1Q16[k]);
-    xrQ16 = WEBRTC_SPL_MUL_16_32_RSFT11(factQ11, xrQ16);
-    xiQ16 = WEBRTC_SPL_MUL_16_32_RSFT11(factQ11, xiQ16);
-    outre2Q16[k] = xiQ16;
-    outre1Q16[k] = xrQ16;
-  }
-}
diff --git a/modules/audio_coding/codecs/isac/fix/source/transform_mips.c b/modules/audio_coding/codecs/isac/fix/source/transform_mips.c
deleted file mode 100644
index a87b3b5..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/transform_mips.c
+++ /dev/null
@@ -1,1294 +0,0 @@
-/*
- *  Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#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"
-
-// The tables are defined in transform_tables.c file.
-extern const int16_t WebRtcIsacfix_kCosTab1[FRAMESAMPLES/2];
-extern const int16_t WebRtcIsacfix_kSinTab1[FRAMESAMPLES/2];
-extern const int16_t WebRtcIsacfix_kCosTab2[FRAMESAMPLES/4];
-extern const int16_t WebRtcIsacfix_kSinTab2[FRAMESAMPLES/4];
-
-// MIPS DSPr2 version of the WebRtcIsacfix_Time2Spec function
-// is not bit-exact with the C version.
-// The accuracy of the MIPS DSPr2 version is same or better.
-void WebRtcIsacfix_Time2SpecMIPS(int16_t* inre1Q9,
-                                 int16_t* inre2Q9,
-                                 int16_t* outreQ7,
-                                 int16_t* outimQ7) {
-  int k = FRAMESAMPLES / 2;
-  int32_t tmpreQ16[FRAMESAMPLES / 2], tmpimQ16[FRAMESAMPLES / 2];
-  int32_t r0, r1, r2, r3, r4, r5, r6, r7, r8, r9;
-  int32_t inre1, inre2, tmpre, tmpim, factor, max, max1;
-  int16_t* cosptr;
-  int16_t* sinptr;
-
-  cosptr = (int16_t*)WebRtcIsacfix_kCosTab1;
-  sinptr = (int16_t*)WebRtcIsacfix_kSinTab1;
-
-  __asm __volatile (
-    ".set           push                                      \n\t"
-    ".set           noreorder                                 \n\t"
-    "addiu          %[inre1],     %[inre1Q9],   0             \n\t"
-    "addiu          %[inre2],     %[inre2Q9],   0             \n\t"
-    "addiu          %[tmpre],     %[tmpreQ16],  0             \n\t"
-    "addiu          %[tmpim],     %[tmpimQ16],  0             \n\t"
-    "addiu          %[factor],    $zero,        16921         \n\t"
-    "mul            %[max],       $zero,        $zero         \n\t"
-    // Multiply with complex exponentials and combine into one complex vector.
-    // Also, calculate the maximal absolute value in the same loop.
-   "1:                                                        \n\t"
-#if defined(MIPS_DSP_R2_LE)
-    "lwl            %[r0],        0(%[inre1])                 \n\t"
-    "lwl            %[r2],        0(%[cosptr])                \n\t"
-    "lwl            %[r3],        0(%[sinptr])                \n\t"
-    "lwl            %[r1],        0(%[inre2])                 \n\t"
-    "lwr            %[r0],        0(%[inre1])                 \n\t"
-    "lwr            %[r2],        0(%[cosptr])                \n\t"
-    "lwr            %[r3],        0(%[sinptr])                \n\t"
-    "lwr            %[r1],        0(%[inre2])                 \n\t"
-    "muleq_s.w.phr  %[r4],        %[r2],        %[r0]         \n\t"
-    "muleq_s.w.phr  %[r5],        %[r3],        %[r0]         \n\t"
-    "muleq_s.w.phr  %[r6],        %[r3],        %[r1]         \n\t"
-    "muleq_s.w.phr  %[r7],        %[r2],        %[r1]         \n\t"
-    "muleq_s.w.phl  %[r8],        %[r2],        %[r0]         \n\t"
-    "muleq_s.w.phl  %[r0],        %[r3],        %[r0]         \n\t"
-    "muleq_s.w.phl  %[r3],        %[r3],        %[r1]         \n\t"
-    "muleq_s.w.phl  %[r1],        %[r2],        %[r1]         \n\t"
-    "addiu          %[k],         %[k],         -2            \n\t"
-    "addu           %[r4],        %[r4],        %[r6]         \n\t"
-    "subu           %[r5],        %[r7],        %[r5]         \n\t"
-    "sra            %[r4],        %[r4],        8             \n\t"
-    "sra            %[r5],        %[r5],        8             \n\t"
-    "mult           $ac0,         %[factor],    %[r4]         \n\t"
-    "mult           $ac1,         %[factor],    %[r5]         \n\t"
-    "addu           %[r3],        %[r8],        %[r3]         \n\t"
-    "subu           %[r0],        %[r1],        %[r0]         \n\t"
-    "sra            %[r3],        %[r3],        8             \n\t"
-    "sra            %[r0],        %[r0],        8             \n\t"
-    "mult           $ac2,         %[factor],    %[r3]         \n\t"
-    "mult           $ac3,         %[factor],    %[r0]         \n\t"
-    "extr_r.w       %[r4],        $ac0,         16            \n\t"
-    "extr_r.w       %[r5],        $ac1,         16            \n\t"
-    "addiu          %[inre1],     %[inre1],     4             \n\t"
-    "addiu          %[inre2],     %[inre2],     4             \n\t"
-    "extr_r.w       %[r6],        $ac2,         16            \n\t"
-    "extr_r.w       %[r7],        $ac3,         16            \n\t"
-    "addiu          %[cosptr],    %[cosptr],    4             \n\t"
-    "addiu          %[sinptr],    %[sinptr],    4             \n\t"
-    "shra_r.w       %[r4],        %[r4],        3             \n\t"
-    "shra_r.w       %[r5],        %[r5],        3             \n\t"
-    "sw             %[r4],        0(%[tmpre])                 \n\t"
-    "absq_s.w       %[r4],        %[r4]                       \n\t"
-    "sw             %[r5],        0(%[tmpim])                 \n\t"
-    "absq_s.w       %[r5],        %[r5]                       \n\t"
-    "shra_r.w       %[r6],        %[r6],        3             \n\t"
-    "shra_r.w       %[r7],        %[r7],        3             \n\t"
-    "sw             %[r6],        4(%[tmpre])                 \n\t"
-    "absq_s.w       %[r6],        %[r6]                       \n\t"
-    "sw             %[r7],        4(%[tmpim])                 \n\t"
-    "absq_s.w       %[r7],        %[r7]                       \n\t"
-    "slt            %[r0],        %[r4],        %[r5]         \n\t"
-    "movn           %[r4],        %[r5],        %[r0]         \n\t"
-    "slt            %[r1],        %[r6],        %[r7]         \n\t"
-    "movn           %[r6],        %[r7],        %[r1]         \n\t"
-    "slt            %[r0],        %[max],       %[r4]         \n\t"
-    "movn           %[max],       %[r4],        %[r0]         \n\t"
-    "slt            %[r1],        %[max],       %[r6]         \n\t"
-    "movn           %[max],       %[r6],        %[r1]         \n\t"
-    "addiu          %[tmpre],     %[tmpre],     8             \n\t"
-    "bgtz           %[k],         1b                          \n\t"
-    " addiu         %[tmpim],     %[tmpim],     8             \n\t"
-#else  // #if defined(MIPS_DSP_R2_LE)
-    "lh             %[r0],        0(%[inre1])                 \n\t"
-    "lh             %[r1],        0(%[inre2])                 \n\t"
-    "lh             %[r2],        0(%[cosptr])                \n\t"
-    "lh             %[r3],        0(%[sinptr])                \n\t"
-    "addiu          %[k],         %[k],         -1            \n\t"
-    "mul            %[r4],        %[r0],        %[r2]         \n\t"
-    "mul            %[r5],        %[r1],        %[r3]         \n\t"
-    "mul            %[r0],        %[r0],        %[r3]         \n\t"
-    "mul            %[r2],        %[r1],        %[r2]         \n\t"
-    "addiu          %[inre1],     %[inre1],     2             \n\t"
-    "addiu          %[inre2],     %[inre2],     2             \n\t"
-    "addiu          %[cosptr],    %[cosptr],    2             \n\t"
-    "addiu          %[sinptr],    %[sinptr],    2             \n\t"
-    "addu           %[r1],        %[r4],        %[r5]         \n\t"
-    "sra            %[r1],        %[r1],        7             \n\t"
-    "sra            %[r3],        %[r1],        16            \n\t"
-    "andi           %[r1],        %[r1],        0xFFFF        \n\t"
-    "sra            %[r1],        %[r1],        1             \n\t"
-    "mul            %[r1],        %[factor],    %[r1]         \n\t"
-    "mul            %[r3],        %[factor],    %[r3]         \n\t"
-    "subu           %[r0],        %[r2],        %[r0]         \n\t"
-    "sra            %[r0],        %[r0],        7             \n\t"
-    "sra            %[r2],        %[r0],        16            \n\t"
-    "andi           %[r0],        %[r0],        0xFFFF        \n\t"
-    "sra            %[r0],        %[r0],        1             \n\t"
-    "mul            %[r0],        %[factor],    %[r0]         \n\t"
-    "mul            %[r2],        %[factor],    %[r2]         \n\t"
-#if defined(MIPS_DSP_R1_LE)
-    "shra_r.w       %[r1],        %[r1],        15            \n\t"
-#else  // #if defined(MIPS_DSP_R1_LE)
-    "addiu          %[r1],        %[r1],        0x4000        \n\t"
-    "sra            %[r1],        %[r1],        15            \n\t"
-#endif  // #if defined(MIPS_DSP_R1_LE)
-    "addu           %[r1],        %[r3],        %[r1]         \n\t"
-#if defined(MIPS_DSP_R1_LE)
-    "shra_r.w       %[r1],        %[r1],        3             \n\t"
-#else  // #if defined(MIPS_DSP_R1_LE)
-    "addiu          %[r1],        %[r1],        4             \n\t"
-    "sra            %[r1],        %[r1],        3             \n\t"
-#endif  // #if defined(MIPS_DSP_R1_LE)
-    "sw             %[r1],        0(%[tmpre])                 \n\t"
-    "addiu          %[tmpre],     %[tmpre],     4             \n\t"
-#if defined(MIPS_DSP_R1_LE)
-    "absq_s.w       %[r1],        %[r1]                       \n\t"
-    "shra_r.w       %[r0],        %[r0],        15            \n\t"
-#else  // #if defined(MIPS_DSP_R1_LE)
-    "negu           %[r4],        %[r1]                       \n\t"
-    "slt            %[r3],        %[r1],        $zero         \n\t"
-    "movn           %[r1],        %[r4],        %[r3]         \n\t"
-    "addiu          %[r0],        %[r0],        0x4000        \n\t"
-    "sra            %[r0],        %[r0],        15            \n\t"
-#endif  // #if defined(MIPS_DSP_R1_LE)
-    "addu           %[r0],        %[r0],        %[r2]         \n\t"
-#if defined(MIPS_DSP_R1_LE)
-    "shra_r.w       %[r0],        %[r0],        3             \n\t"
-    "sw             %[r0],        0(%[tmpim])                 \n\t"
-    "absq_s.w       %[r0],        %[r0]                       \n\t"
-#else  // #if defined(MIPS_DSP_R1_LE)
-    "addiu          %[r0],        %[r0],        4             \n\t"
-    "sra            %[r0],        %[r0],        3             \n\t"
-    "sw             %[r0],        0(%[tmpim])                 \n\t"
-    "negu           %[r2],        %[r0]                       \n\t"
-    "slt            %[r3],        %[r0],        $zero         \n\t"
-    "movn           %[r0],        %[r2],        %[r3]         \n\t"
-#endif  // #if defined(MIPS_DSP_R1_LE)
-    "slt            %[r2],        %[max],       %[r1]         \n\t"
-    "movn           %[max],       %[r1],        %[r2]         \n\t"
-    "slt            %[r2],        %[max],       %[r0]         \n\t"
-    "movn           %[max],       %[r0],        %[r2]         \n\t"
-    "bgtz           %[k],         1b                          \n\t"
-    " addiu         %[tmpim],     %[tmpim],     4             \n\t"
-#endif  // #if defined(MIPS_DSP_R2_LE)
-    // Calculate WebRtcSpl_NormW32(max).
-    // If max gets value >=0, we should shift max steps to the left, and the
-    // domain will be Q(16+shift). If max gets value <0, we should shift -max
-    // steps to the right, and the domain will be Q(16+max)
-    "clz            %[max],       %[max]                      \n\t"
-    "addiu          %[max],       %[max],       -25           \n\t"
-    ".set           pop                                       \n\t"
-    : [k] "+r" (k), [inre1] "=&r" (inre1), [inre2] "=&r" (inre2),
-      [r0] "=&r" (r0), [r1] "=&r" (r1), [r2] "=&r" (r2),
-      [r3] "=&r" (r3), [r4] "=&r" (r4), [tmpre] "=&r" (tmpre),
-      [tmpim] "=&r" (tmpim), [max] "=&r" (max), [factor] "=&r" (factor),
-#if defined(MIPS_DSP_R2_LE)
-      [r6] "=&r" (r6), [r7] "=&r" (r7), [r8] "=&r" (r8),
-#endif  // #if defined(MIPS_DSP_R2_LE)
-      [r5] "=&r" (r5)
-    : [inre1Q9] "r" (inre1Q9), [inre2Q9] "r" (inre2Q9),
-      [tmpreQ16] "r" (tmpreQ16), [tmpimQ16] "r" (tmpimQ16),
-      [cosptr] "r" (cosptr), [sinptr] "r" (sinptr)
-    : "hi", "lo", "memory"
-#if defined(MIPS_DSP_R2_LE)
-    , "$ac1hi", "$ac1lo", "$ac2hi", "$ac2lo", "$ac3hi", "$ac3lo"
-#endif  // #if defined(MIPS_DSP_R2_LE)
-  );
-
-  // "Fastest" vectors
-  k = FRAMESAMPLES / 4;
-  __asm __volatile (
-    ".set           push                                      \n\t"
-    ".set           noreorder                                 \n\t"
-    "addiu          %[tmpre],     %[tmpreQ16],  0             \n\t"
-    "addiu          %[tmpim],     %[tmpimQ16],  0             \n\t"
-    "addiu          %[inre1],     %[inre1Q9],   0             \n\t"
-    "addiu          %[inre2],     %[inre2Q9],   0             \n\t"
-    "blez           %[max],       2f                          \n\t"
-    " subu          %[max1],      $zero,        %[max]        \n\t"
-   "1:                                                        \n\t"
-    "lw             %[r0],        0(%[tmpre])                 \n\t"
-    "lw             %[r1],        0(%[tmpim])                 \n\t"
-    "lw             %[r2],        4(%[tmpre])                 \n\t"
-    "lw             %[r3],        4(%[tmpim])                 \n\t"
-    "addiu          %[k],         %[k],         -1            \n\t"
-    "sllv           %[r0],        %[r0],        %[max]        \n\t"
-    "sllv           %[r1],        %[r1],        %[max]        \n\t"
-    "sllv           %[r2],        %[r2],        %[max]        \n\t"
-    "sllv           %[r3],        %[r3],        %[max]        \n\t"
-    "addiu          %[tmpre],     %[tmpre],     8             \n\t"
-    "addiu          %[tmpim],     %[tmpim],     8             \n\t"
-    "sh             %[r0],        0(%[inre1])                 \n\t"
-    "sh             %[r1],        0(%[inre2])                 \n\t"
-    "sh             %[r2],        2(%[inre1])                 \n\t"
-    "sh             %[r3],        2(%[inre2])                 \n\t"
-    "addiu          %[inre1],     %[inre1],     4             \n\t"
-    "bgtz           %[k],         1b                          \n\t"
-    " addiu         %[inre2],     %[inre2],     4             \n\t"
-    "b              4f                                        \n\t"
-    " nop                                                     \n\t"
-   "2:                                                        \n\t"
-#if !defined(MIPS_DSP_R1_LE)
-    "addiu          %[r4],        %[max1],      -1            \n\t"
-    "addiu          %[r5],        $zero,        1             \n\t"
-    "sllv           %[r4],        %[r5],        %[r4]         \n\t"
-#endif // #if !defined(MIPS_DSP_R1_LE)
-   "3:                                                        \n\t"
-    "lw             %[r0],        0(%[tmpre])                 \n\t"
-    "lw             %[r1],        0(%[tmpim])                 \n\t"
-    "lw             %[r2],        4(%[tmpre])                 \n\t"
-    "lw             %[r3],        4(%[tmpim])                 \n\t"
-    "addiu          %[k],         %[k],         -1            \n\t"
-#if defined(MIPS_DSP_R1_LE)
-    "shrav_r.w      %[r0],        %[r0],        %[max1]       \n\t"
-    "shrav_r.w      %[r1],        %[r1],        %[max1]       \n\t"
-    "shrav_r.w      %[r2],        %[r2],        %[max1]       \n\t"
-    "shrav_r.w      %[r3],        %[r3],        %[max1]       \n\t"
-#else // #if !defined(MIPS_DSP_R1_LE)
-    "addu           %[r0],        %[r0],        %[r4]         \n\t"
-    "addu           %[r1],        %[r1],        %[r4]         \n\t"
-    "addu           %[r2],        %[r2],        %[r4]         \n\t"
-    "addu           %[r3],        %[r3],        %[r4]         \n\t"
-    "srav           %[r0],        %[r0],        %[max1]       \n\t"
-    "srav           %[r1],        %[r1],        %[max1]       \n\t"
-    "srav           %[r2],        %[r2],        %[max1]       \n\t"
-    "srav           %[r3],        %[r3],        %[max1]       \n\t"
-#endif // #if !defined(MIPS_DSP_R1_LE)
-    "addiu          %[tmpre],     %[tmpre],     8             \n\t"
-    "addiu          %[tmpim],     %[tmpim],     8             \n\t"
-    "sh             %[r0],        0(%[inre1])                 \n\t"
-    "sh             %[r1],        0(%[inre2])                 \n\t"
-    "sh             %[r2],        2(%[inre1])                 \n\t"
-    "sh             %[r3],        2(%[inre2])                 \n\t"
-    "addiu          %[inre1],     %[inre1],     4             \n\t"
-    "bgtz           %[k],         3b                          \n\t"
-    " addiu         %[inre2],     %[inre2],     4             \n\t"
-   "4:                                                        \n\t"
-    ".set           pop                                       \n\t"
-    : [tmpre] "=&r" (tmpre), [tmpim] "=&r" (tmpim), [inre1] "=&r" (inre1),
-      [inre2] "=&r" (inre2), [k] "+r" (k), [max1] "=&r" (max1),
-#if !defined(MIPS_DSP_R1_LE)
-      [r4] "=&r" (r4), [r5] "=&r" (r5),
-#endif // #if !defined(MIPS_DSP_R1_LE)
-      [r0] "=&r" (r0), [r1] "=&r" (r1), [r2] "=&r" (r2), [r3] "=&r" (r3)
-    : [tmpreQ16] "r" (tmpreQ16), [tmpimQ16] "r" (tmpimQ16),
-      [inre1Q9] "r" (inre1Q9), [inre2Q9] "r" (inre2Q9), [max] "r" (max)
-    : "memory"
-  );
-
-  // Get DFT
-  WebRtcIsacfix_FftRadix16Fastest(inre1Q9, inre2Q9, -1); // real call
-
-  // "Fastest" vectors and
-  // Use symmetry to separate into two complex vectors
-  // and center frames in time around zero
-  // merged into one loop
-  cosptr = (int16_t*)WebRtcIsacfix_kCosTab2;
-  sinptr = (int16_t*)WebRtcIsacfix_kSinTab2;
-  k = FRAMESAMPLES / 4;
-  factor = FRAMESAMPLES - 2;  // offset for FRAMESAMPLES / 2 - 1 array member
-
-  __asm __volatile (
-    ".set           push                                      \n\t"
-    ".set           noreorder                                 \n\t"
-    "addiu          %[inre1],     %[inre1Q9],   0             \n\t"
-    "addiu          %[inre2],     %[inre2Q9],   0             \n\t"
-    "addiu          %[tmpre],     %[outreQ7],   0             \n\t"
-    "addiu          %[tmpim],     %[outimQ7],   0             \n\t"
-    "bltz           %[max],       2f                          \n\t"
-    " subu          %[max1],      $zero,        %[max]        \n\t"
-   "1:                                                        \n\t"
-#if !defined(MIPS_DSP_R1_LE)
-    "addu           %[r4],        %[inre1],     %[offset]     \n\t"
-    "addu           %[r5],        %[inre2],     %[offset]     \n\t"
-#endif  // #if !defined(MIPS_DSP_R1_LE)
-    "lh             %[r0],        0(%[inre1])                 \n\t"
-    "lh             %[r1],        0(%[inre2])                 \n\t"
-#if defined(MIPS_DSP_R1_LE)
-    "lhx            %[r2],        %[offset](%[inre1])         \n\t"
-    "lhx            %[r3],        %[offset](%[inre2])         \n\t"
-#else  // #if defined(MIPS_DSP_R1_LE)
-    "lh             %[r2],        0(%[r4])                    \n\t"
-    "lh             %[r3],        0(%[r5])                    \n\t"
-#endif  // #if defined(MIPS_DSP_R1_LE)
-    "srav           %[r0],        %[r0],        %[max]        \n\t"
-    "srav           %[r1],        %[r1],        %[max]        \n\t"
-    "srav           %[r2],        %[r2],        %[max]        \n\t"
-    "srav           %[r3],        %[r3],        %[max]        \n\t"
-    "addu           %[r4],        %[r0],        %[r2]         \n\t"
-    "subu           %[r0],        %[r2],        %[r0]         \n\t"
-    "subu           %[r2],        %[r1],        %[r3]         \n\t"
-    "addu           %[r1],        %[r1],        %[r3]         \n\t"
-    "lh             %[r3],        0(%[cosptr])                \n\t"
-    "lh             %[r5],        0(%[sinptr])                \n\t"
-    "andi           %[r6],        %[r4],        0xFFFF        \n\t"
-    "sra            %[r4],        %[r4],        16            \n\t"
-    "mul            %[r7],        %[r3],        %[r6]         \n\t"
-    "mul            %[r8],        %[r3],        %[r4]         \n\t"
-    "mul            %[r6],        %[r5],        %[r6]         \n\t"
-    "mul            %[r4],        %[r5],        %[r4]         \n\t"
-    "addiu          %[k],         %[k],         -1            \n\t"
-    "addiu          %[inre1],     %[inre1],     2             \n\t"
-    "addiu          %[inre2],     %[inre2],     2             \n\t"
-#if defined(MIPS_DSP_R1_LE)
-    "shra_r.w       %[r7],        %[r7],        14            \n\t"
-#else  // #if defined(MIPS_DSP_R1_LE)
-    "addiu          %[r7],        %[r7],        0x2000        \n\t"
-    "sra            %[r7],        %[r7],        14            \n\t"
-#endif  // #if defined(MIPS_DSP_R1_LE)
-    "sll            %[r8],        %[r8],        2             \n\t"
-    "addu           %[r8],        %[r8],        %[r7]         \n\t"
-#if defined(MIPS_DSP_R1_LE)
-    "shra_r.w       %[r6],        %[r6],        14            \n\t"
-#else  // #if defined(MIPS_DSP_R1_LE)
-    "addiu          %[r6],        %[r6],        0x2000        \n\t"
-    "sra            %[r6],        %[r6],        14            \n\t"
-#endif  // #if defined(MIPS_DSP_R1_LE)
-    "sll            %[r4],        %[r4],        2             \n\t"
-    "addu           %[r4],        %[r4],        %[r6]         \n\t"
-    "andi           %[r6],        %[r2],        0xFFFF        \n\t"
-    "sra            %[r2],        %[r2],        16            \n\t"
-    "mul            %[r7],        %[r5],        %[r6]         \n\t"
-    "mul            %[r9],        %[r5],        %[r2]         \n\t"
-    "mul            %[r6],        %[r3],        %[r6]         \n\t"
-    "mul            %[r2],        %[r3],        %[r2]         \n\t"
-    "addiu          %[cosptr],    %[cosptr],    2             \n\t"
-    "addiu          %[sinptr],    %[sinptr],    2             \n\t"
-#if defined(MIPS_DSP_R1_LE)
-    "shra_r.w       %[r7],        %[r7],        14            \n\t"
-#else  // #if defined(MIPS_DSP_R1_LE)
-    "addiu          %[r7],        %[r7],        0x2000        \n\t"
-    "sra            %[r7],        %[r7],        14            \n\t"
-#endif  // #if defined(MIPS_DSP_R1_LE)
-    "sll            %[r9],        %[r9],        2             \n\t"
-    "addu           %[r9],        %[r7],        %[r9]         \n\t"
-#if defined(MIPS_DSP_R1_LE)
-    "shra_r.w       %[r6],        %[r6],        14            \n\t"
-#else  // #if defined(MIPS_DSP_R1_LE)
-    "addiu          %[r6],        %[r6],        0x2000        \n\t"
-    "sra            %[r6],        %[r6],        14            \n\t"
-#endif  // #if defined(MIPS_DSP_R1_LE)
-    "sll            %[r2],        %[r2],        2             \n\t"
-    "addu           %[r2],        %[r6],        %[r2]         \n\t"
-    "subu           %[r8],        %[r8],        %[r9]         \n\t"
-    "sra            %[r8],        %[r8],        9             \n\t"
-    "addu           %[r2],        %[r4],        %[r2]         \n\t"
-    "sra            %[r2],        %[r2],        9             \n\t"
-    "sh             %[r8],        0(%[tmpre])                 \n\t"
-    "sh             %[r2],        0(%[tmpim])                 \n\t"
-
-    "andi           %[r4],        %[r1],        0xFFFF        \n\t"
-    "sra            %[r1],        %[r1],        16            \n\t"
-    "andi           %[r6],        %[r0],        0xFFFF        \n\t"
-    "sra            %[r0],        %[r0],        16            \n\t"
-    "mul            %[r7],        %[r5],        %[r4]         \n\t"
-    "mul            %[r9],        %[r5],        %[r1]         \n\t"
-    "mul            %[r4],        %[r3],        %[r4]         \n\t"
-    "mul            %[r1],        %[r3],        %[r1]         \n\t"
-    "mul            %[r8],        %[r3],        %[r0]         \n\t"
-    "mul            %[r3],        %[r3],        %[r6]         \n\t"
-    "mul            %[r6],        %[r5],        %[r6]         \n\t"
-    "mul            %[r0],        %[r5],        %[r0]         \n\t"
-#if defined(MIPS_DSP_R1_LE)
-    "shra_r.w       %[r7],        %[r7],        14            \n\t"
-#else  // #if defined(MIPS_DSP_R1_LE)
-    "addiu          %[r7],        %[r7],        0x2000        \n\t"
-    "sra            %[r7],        %[r7],        14            \n\t"
-#endif  // #if defined(MIPS_DSP_R1_LE)
-    "sll            %[r9],        %[r9],        2             \n\t"
-    "addu           %[r9],        %[r9],        %[r7]         \n\t"
-#if defined(MIPS_DSP_R1_LE)
-    "shra_r.w       %[r4],        %[r4],        14            \n\t"
-#else  // #if defined(MIPS_DSP_R1_LE)
-    "addiu          %[r4],        %[r4],        0x2000        \n\t"
-    "sra            %[r4],        %[r4],        14            \n\t"
-#endif  // #if defined(MIPS_DSP_R1_LE)
-    "sll            %[r1],        %[r1],        2             \n\t"
-    "addu           %[r1],        %[r1],        %[r4]         \n\t"
-#if defined(MIPS_DSP_R1_LE)
-    "shra_r.w       %[r3],        %[r3],        14            \n\t"
-#else  // #if defined(MIPS_DSP_R1_LE)
-    "addiu          %[r3],        %[r3],        0x2000        \n\t"
-    "sra            %[r3],        %[r3],        14            \n\t"
-#endif  // #if defined(MIPS_DSP_R1_LE)
-    "sll            %[r8],        %[r8],        2             \n\t"
-    "addu           %[r8],        %[r8],        %[r3]         \n\t"
-#if defined(MIPS_DSP_R1_LE)
-    "shra_r.w       %[r6],        %[r6],        14            \n\t"
-#else  // #if defined(MIPS_DSP_R1_LE)
-    "addiu          %[r6],        %[r6],        0x2000        \n\t"
-    "sra            %[r6],        %[r6],        14            \n\t"
-#endif  // #if defined(MIPS_DSP_R1_LE)
-    "sll            %[r0],        %[r0],        2             \n\t"
-    "addu           %[r0],        %[r0],        %[r6]         \n\t"
-    "addu           %[r3],        %[tmpre],     %[offset]     \n\t"
-    "addu           %[r2],        %[tmpim],     %[offset]     \n\t"
-    "addu           %[r9],        %[r9],        %[r8]         \n\t"
-    "negu           %[r9],        %[r9]                       \n\t"
-    "sra            %[r9],        %[r9],        9             \n\t"
-    "subu           %[r0],        %[r0],        %[r1]         \n\t"
-    "addiu          %[offset],    %[offset],    -4            \n\t"
-    "sh             %[r9],        0(%[r3])                    \n\t"
-    "sh             %[r0],        0(%[r2])                    \n\t"
-    "addiu          %[tmpre],     %[tmpre],     2             \n\t"
-    "bgtz           %[k],         1b                          \n\t"
-    " addiu         %[tmpim],     %[tmpim],     2             \n\t"
-    "b              3f                                        \n\t"
-    " nop                                                     \n\t"
-   "2:                                                        \n\t"
-#if !defined(MIPS_DSP_R1_LE)
-    "addu           %[r4],        %[inre1],     %[offset]     \n\t"
-    "addu           %[r5],        %[inre2],     %[offset]     \n\t"
-#endif  // #if !defined(MIPS_DSP_R1_LE)
-    "lh             %[r0],        0(%[inre1])                 \n\t"
-    "lh             %[r1],        0(%[inre2])                 \n\t"
-#if defined(MIPS_DSP_R1_LE)
-    "lhx            %[r2],        %[offset](%[inre1])         \n\t"
-    "lhx            %[r3],        %[offset](%[inre2])         \n\t"
-#else  // #if defined(MIPS_DSP_R1_LE)
-    "lh             %[r2],        0(%[r4])                    \n\t"
-    "lh             %[r3],        0(%[r5])                    \n\t"
-#endif  // #if defined(MIPS_DSP_R1_LE)
-    "sllv           %[r0],        %[r0],        %[max1]       \n\t"
-    "sllv           %[r1],        %[r1],        %[max1]       \n\t"
-    "sllv           %[r2],        %[r2],        %[max1]       \n\t"
-    "sllv           %[r3],        %[r3],        %[max1]       \n\t"
-    "addu           %[r4],        %[r0],        %[r2]         \n\t"
-    "subu           %[r0],        %[r2],        %[r0]         \n\t"
-    "subu           %[r2],        %[r1],        %[r3]         \n\t"
-    "addu           %[r1],        %[r1],        %[r3]         \n\t"
-    "lh             %[r3],        0(%[cosptr])                \n\t"
-    "lh             %[r5],        0(%[sinptr])                \n\t"
-    "andi           %[r6],        %[r4],        0xFFFF        \n\t"
-    "sra            %[r4],        %[r4],        16            \n\t"
-    "mul            %[r7],        %[r3],        %[r6]         \n\t"
-    "mul            %[r8],        %[r3],        %[r4]         \n\t"
-    "mul            %[r6],        %[r5],        %[r6]         \n\t"
-    "mul            %[r4],        %[r5],        %[r4]         \n\t"
-    "addiu          %[k],         %[k],         -1            \n\t"
-    "addiu          %[inre1],     %[inre1],     2             \n\t"
-    "addiu          %[inre2],     %[inre2],     2             \n\t"
-#if defined(MIPS_DSP_R1_LE)
-    "shra_r.w       %[r7],        %[r7],        14            \n\t"
-#else  // #if defined(MIPS_DSP_R1_LE)
-    "addiu          %[r7],        %[r7],        0x2000        \n\t"
-    "sra            %[r7],        %[r7],        14            \n\t"
-#endif  // #if defined(MIPS_DSP_R1_LE)
-    "sll            %[r8],        %[r8],        2             \n\t"
-    "addu           %[r8],        %[r8],        %[r7]         \n\t"
-#if defined(MIPS_DSP_R1_LE)
-    "shra_r.w       %[r6],        %[r6],        14            \n\t"
-#else  // #if defined(MIPS_DSP_R1_LE)
-    "addiu          %[r6],        %[r6],        0x2000        \n\t"
-    "sra            %[r6],        %[r6],        14            \n\t"
-#endif  // #if defined(MIPS_DSP_R1_LE)
-    "sll            %[r4],        %[r4],        2             \n\t"
-    "addu           %[r4],        %[r4],        %[r6]         \n\t"
-    "andi           %[r6],        %[r2],        0xFFFF        \n\t"
-    "sra            %[r2],        %[r2],        16            \n\t"
-    "mul            %[r7],        %[r5],        %[r6]         \n\t"
-    "mul            %[r9],        %[r5],        %[r2]         \n\t"
-    "mul            %[r6],        %[r3],        %[r6]         \n\t"
-    "mul            %[r2],        %[r3],        %[r2]         \n\t"
-    "addiu          %[cosptr],    %[cosptr],    2             \n\t"
-    "addiu          %[sinptr],    %[sinptr],    2             \n\t"
-#if defined(MIPS_DSP_R1_LE)
-    "shra_r.w       %[r7],        %[r7],        14            \n\t"
-#else  // #if defined(MIPS_DSP_R1_LE)
-    "addiu          %[r7],        %[r7],        0x2000        \n\t"
-    "sra            %[r7],        %[r7],        14            \n\t"
-#endif  // #if defined(MIPS_DSP_R1_LE)
-    "sll            %[r9],        %[r9],        2             \n\t"
-    "addu           %[r9],        %[r7],        %[r9]         \n\t"
-#if defined(MIPS_DSP_R1_LE)
-    "shra_r.w       %[r6],        %[r6],        14            \n\t"
-#else  // #if defined(MIPS_DSP_R1_LE)
-    "addiu          %[r6],        %[r6],        0x2000        \n\t"
-    "sra            %[r6],        %[r6],        14            \n\t"
-#endif  // #if defined(MIPS_DSP_R1_LE)
-    "sll            %[r2],        %[r2],        2             \n\t"
-    "addu           %[r2],        %[r6],        %[r2]         \n\t"
-    "subu           %[r8],        %[r8],        %[r9]         \n\t"
-    "sra            %[r8],        %[r8],        9             \n\t"
-    "addu           %[r2],        %[r4],        %[r2]         \n\t"
-    "sra            %[r2],        %[r2],        9             \n\t"
-    "sh             %[r8],        0(%[tmpre])                 \n\t"
-    "sh             %[r2],        0(%[tmpim])                 \n\t"
-    "andi           %[r4],        %[r1],        0xFFFF        \n\t"
-    "sra            %[r1],        %[r1],        16            \n\t"
-    "andi           %[r6],        %[r0],        0xFFFF        \n\t"
-    "sra            %[r0],        %[r0],        16            \n\t"
-    "mul            %[r7],        %[r5],        %[r4]         \n\t"
-    "mul            %[r9],        %[r5],        %[r1]         \n\t"
-    "mul            %[r4],        %[r3],        %[r4]         \n\t"
-    "mul            %[r1],        %[r3],        %[r1]         \n\t"
-    "mul            %[r8],        %[r3],        %[r0]         \n\t"
-    "mul            %[r3],        %[r3],        %[r6]         \n\t"
-    "mul            %[r6],        %[r5],        %[r6]         \n\t"
-    "mul            %[r0],        %[r5],        %[r0]         \n\t"
-#if defined(MIPS_DSP_R1_LE)
-    "shra_r.w       %[r7],        %[r7],        14            \n\t"
-#else  // #if defined(MIPS_DSP_R1_LE)
-    "addiu          %[r7],        %[r7],        0x2000        \n\t"
-    "sra            %[r7],        %[r7],        14            \n\t"
-#endif  // #if defined(MIPS_DSP_R1_LE)
-    "sll            %[r9],        %[r9],        2             \n\t"
-    "addu           %[r9],        %[r9],        %[r7]         \n\t"
-#if defined(MIPS_DSP_R1_LE)
-    "shra_r.w       %[r4],        %[r4],        14            \n\t"
-#else  // #if defined(MIPS_DSP_R1_LE)
-    "addiu          %[r4],        %[r4],        0x2000        \n\t"
-    "sra            %[r4],        %[r4],        14            \n\t"
-#endif
-    "sll            %[r1],        %[r1],        2             \n\t"
-    "addu           %[r1],        %[r1],        %[r4]         \n\t"
-#if defined(MIPS_DSP_R1_LE)
-    "shra_r.w       %[r3],        %[r3],        14            \n\t"
-#else  // #if defined(MIPS_DSP_R1_LE)
-    "addiu          %[r3],        %[r3],        0x2000        \n\t"
-    "sra            %[r3],        %[r3],        14            \n\t"
-#endif  // #if defined(MIPS_DSP_R1_LE)
-    "sll            %[r8],        %[r8],        2             \n\t"
-    "addu           %[r8],        %[r8],        %[r3]         \n\t"
-#if defined(MIPS_DSP_R1_LE)
-    "shra_r.w       %[r6],        %[r6],        14            \n\t"
-#else  // #if defined(MIPS_DSP_R1_LE)
-    "addiu          %[r6],        %[r6],        0x2000        \n\t"
-    "sra            %[r6],        %[r6],        14            \n\t"
-#endif  // #if defined(MIPS_DSP_R1_LE)
-    "sll            %[r0],        %[r0],        2             \n\t"
-    "addu           %[r0],        %[r0],        %[r6]         \n\t"
-    "addu           %[r3],        %[tmpre],     %[offset]     \n\t"
-    "addu           %[r2],        %[tmpim],     %[offset]     \n\t"
-    "addu           %[r9],        %[r9],        %[r8]         \n\t"
-    "negu           %[r9],        %[r9]                       \n\t"
-    "sra            %[r9],        %[r9],        9             \n\t"
-    "subu           %[r0],        %[r0],        %[r1]         \n\t"
-    "sra            %[r0],        %[r0],        9             \n\t"
-    "addiu          %[offset],    %[offset],    -4            \n\t"
-    "sh             %[r9],        0(%[r3])                    \n\t"
-    "sh             %[r0],        0(%[r2])                    \n\t"
-    "addiu          %[tmpre],     %[tmpre],     2             \n\t"
-    "bgtz           %[k],         2b                          \n\t"
-    " addiu         %[tmpim],     %[tmpim],     2             \n\t"
-   "3:                                                        \n\t"
-    ".set           pop                                       \n\t"
-    : [inre1] "=&r" (inre1), [inre2] "=&r" (inre2), [tmpre] "=&r" (tmpre),
-      [tmpim] "=&r" (tmpim), [offset] "+r" (factor), [k] "+r" (k),
-      [r0] "=&r" (r0), [r1] "=&r" (r1), [r2] "=&r" (r2), [r3] "=&r" (r3),
-      [r4] "=&r" (r4), [r5] "=&r" (r5), [r6] "=&r" (r6), [r7] "=&r" (r7),
-      [r8] "=&r" (r8), [r9] "=&r" (r9), [max1] "=&r" (max1)
-    : [inre1Q9] "r" (inre1Q9), [inre2Q9] "r" (inre2Q9),
-      [outreQ7] "r" (outreQ7), [outimQ7] "r" (outimQ7),
-      [max] "r" (max), [cosptr] "r" (cosptr), [sinptr] "r" (sinptr)
-    : "hi", "lo", "memory"
-  );
-}
-
-void WebRtcIsacfix_Spec2TimeMIPS(int16_t *inreQ7,
-                                 int16_t *inimQ7,
-                                 int32_t *outre1Q16,
-                                 int32_t *outre2Q16) {
-  int k = FRAMESAMPLES / 4;
-  int16_t* inre;
-  int16_t* inim;
-  int32_t* outre1;
-  int32_t* outre2;
-  int16_t* cosptr = (int16_t*)WebRtcIsacfix_kCosTab2;
-  int16_t* sinptr = (int16_t*)WebRtcIsacfix_kSinTab2;
-  int32_t r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, max, max1;
-#if defined(MIPS_DSP_R1_LE)
-  int32_t offset = FRAMESAMPLES - 4;
-#else  // #if defined(MIPS_DSP_R1_LE)
-  int32_t offset = FRAMESAMPLES - 2;
-#endif  // #if defined(MIPS_DSP_R1_LE)
-
-  __asm __volatile (
-    ".set           push                                      \n\t"
-    ".set           noreorder                                 \n\t"
-    "addiu          %[inre],      %[inreQ7],    0             \n\t"
-    "addiu          %[inim] ,     %[inimQ7],    0             \n\t"
-    "addiu          %[outre1],    %[outre1Q16], 0             \n\t"
-    "addiu          %[outre2],    %[outre2Q16], 0             \n\t"
-    "mul            %[max],       $zero,        $zero         \n\t"
-   "1:                                                        \n\t"
-#if defined(MIPS_DSP_R1_LE)
-    // Process two samples in one iteration avoiding left shift before
-    // multiplication. MaxAbsValueW32 function inlined into the loop.
-    "addu           %[r8],        %[inre],      %[offset]     \n\t"
-    "addu           %[r9],        %[inim],      %[offset]     \n\t"
-    "lwl            %[r4],        0(%[r8])                    \n\t"
-    "lwl            %[r5],        0(%[r9])                    \n\t"
-    "lwl            %[r0],        0(%[inre])                  \n\t"
-    "lwl            %[r1],        0(%[inim])                  \n\t"
-    "lwl            %[r2],        0(%[cosptr])                \n\t"
-    "lwl            %[r3],        0(%[sinptr])                \n\t"
-    "lwr            %[r4],        0(%[r8])                    \n\t"
-    "lwr            %[r5],        0(%[r9])                    \n\t"
-    "lwr            %[r0],        0(%[inre])                  \n\t"
-    "lwr            %[r1],        0(%[inim])                  \n\t"
-    "lwr            %[r2],        0(%[cosptr])                \n\t"
-    "lwr            %[r3],        0(%[sinptr])                \n\t"
-    "packrl.ph      %[r4],        %[r4],        %[r4]         \n\t"
-    "packrl.ph      %[r5],        %[r5],        %[r5]         \n\t"
-    "muleq_s.w.phr  %[r6],        %[r0],        %[r2]         \n\t"
-    "muleq_s.w.phr  %[r7],        %[r1],        %[r3]         \n\t"
-    "muleq_s.w.phr  %[r8],        %[r4],        %[r2]         \n\t"
-    "muleq_s.w.phr  %[r9],        %[r5],        %[r3]         \n\t"
-    "addiu          %[k],         %[k],         -2            \n\t"
-    "addiu          %[cosptr],    %[cosptr],    4             \n\t"
-    "addiu          %[sinptr],    %[sinptr],    4             \n\t"
-    "addiu          %[inre],      %[inre],      4             \n\t"
-    "addiu          %[inim],      %[inim],      4             \n\t"
-    "shra_r.w       %[r6],        %[r6],        6             \n\t"
-    "shra_r.w       %[r7],        %[r7],        6             \n\t"
-    "shra_r.w       %[r8],        %[r8],        6             \n\t"
-    "shra_r.w       %[r9],        %[r9],        6             \n\t"
-    "addu           %[r6],        %[r6],        %[r7]         \n\t"
-    "subu           %[r9],        %[r9],        %[r8]         \n\t"
-    "subu           %[r7],        %[r6],        %[r9]         \n\t"
-    "addu           %[r6],        %[r6],        %[r9]         \n\t"
-    "sw             %[r7],        0(%[outre1])                \n\t"
-    "absq_s.w       %[r7],        %[r7]                       \n\t"
-    "slt            %[r8],        %[max],       %[r7]         \n\t"
-    "movn           %[max],       %[r7],        %[r8]         \n\t"
-    "sll            %[r7],        %[offset],    1             \n\t"
-    "addu           %[r7],        %[outre1],    %[r7]         \n\t"
-    "sw             %[r6],        4(%[r7])                    \n\t"
-    "absq_s.w       %[r6],        %[r6]                       \n\t"
-    "slt            %[r8],        %[max],       %[r6]         \n\t"
-    "movn           %[max],       %[r6],        %[r8]         \n\t"
-    "muleq_s.w.phl  %[r6],        %[r0],        %[r2]         \n\t"
-    "muleq_s.w.phl  %[r7],        %[r1],        %[r3]         \n\t"
-    "muleq_s.w.phl  %[r8],        %[r4],        %[r2]         \n\t"
-    "muleq_s.w.phl  %[r9],        %[r5],        %[r3]         \n\t"
-    "shra_r.w       %[r6],        %[r6],        6             \n\t"
-    "shra_r.w       %[r7],        %[r7],        6             \n\t"
-    "shra_r.w       %[r8],        %[r8],        6             \n\t"
-    "shra_r.w       %[r9],        %[r9],        6             \n\t"
-    "addu           %[r6],        %[r6],        %[r7]         \n\t"
-    "subu           %[r9],        %[r9],        %[r8]         \n\t"
-    "subu           %[r7],        %[r6],        %[r9]         \n\t"
-    "addu           %[r6],        %[r6],        %[r9]         \n\t"
-    "sw             %[r7],        4(%[outre1])                \n\t"
-    "absq_s.w       %[r7],        %[r7]                       \n\t"
-    "slt            %[r8],        %[max],       %[r7]         \n\t"
-    "movn           %[max],       %[r7],        %[r8]         \n\t"
-    "sll            %[r7],        %[offset],    1             \n\t"
-    "addu           %[r7],        %[outre1],    %[r7]         \n\t"
-    "sw             %[r6],        0(%[r7])                    \n\t"
-    "absq_s.w       %[r6],        %[r6]                       \n\t"
-    "slt            %[r8],        %[max],       %[r6]         \n\t"
-    "movn           %[max],       %[r6],        %[r8]         \n\t"
-    "muleq_s.w.phr  %[r6],        %[r1],        %[r2]         \n\t"
-    "muleq_s.w.phr  %[r7],        %[r0],        %[r3]         \n\t"
-    "muleq_s.w.phr  %[r8],        %[r5],        %[r2]         \n\t"
-    "muleq_s.w.phr  %[r9],        %[r4],        %[r3]         \n\t"
-    "addiu          %[outre1],    %[outre1],    8             \n\t"
-    "shra_r.w       %[r6],        %[r6],        6             \n\t"
-    "shra_r.w       %[r7],        %[r7],        6             \n\t"
-    "shra_r.w       %[r8],        %[r8],        6             \n\t"
-    "shra_r.w       %[r9],        %[r9],        6             \n\t"
-    "subu           %[r6],        %[r6],        %[r7]         \n\t"
-    "addu           %[r9],        %[r9],        %[r8]         \n\t"
-    "subu           %[r7],        %[r6],        %[r9]         \n\t"
-    "addu           %[r6],        %[r9],        %[r6]         \n\t"
-    "negu           %[r6],        %[r6]                       \n\t"
-    "sw             %[r7],        0(%[outre2])                \n\t"
-    "absq_s.w       %[r7],        %[r7]                       \n\t"
-    "slt            %[r8],        %[max],       %[r7]         \n\t"
-    "movn           %[max],       %[r7],        %[r8]         \n\t"
-    "sll            %[r7],        %[offset],    1             \n\t"
-    "addu           %[r7],        %[outre2],    %[r7]         \n\t"
-    "sw             %[r6],        4(%[r7])                    \n\t"
-    "absq_s.w       %[r6],        %[r6]                       \n\t"
-    "slt            %[r8],        %[max],       %[r6]         \n\t"
-    "movn           %[max],       %[r6],        %[r8]         \n\t"
-    "muleq_s.w.phl  %[r6],       %[r1],         %[r2]         \n\t"
-    "muleq_s.w.phl  %[r7],       %[r0],         %[r3]         \n\t"
-    "muleq_s.w.phl  %[r8],       %[r5],         %[r2]         \n\t"
-    "muleq_s.w.phl  %[r9],       %[r4],         %[r3]         \n\t"
-    "addiu          %[offset],   %[offset],     -8            \n\t"
-    "shra_r.w       %[r6],       %[r6],         6             \n\t"
-    "shra_r.w       %[r7],       %[r7],         6             \n\t"
-    "shra_r.w       %[r8],       %[r8],         6             \n\t"
-    "shra_r.w       %[r9],       %[r9],         6             \n\t"
-    "subu           %[r6],       %[r6],         %[r7]         \n\t"
-    "addu           %[r9],       %[r9],         %[r8]         \n\t"
-    "subu           %[r7],       %[r6],         %[r9]         \n\t"
-    "addu           %[r6],       %[r9],         %[r6]         \n\t"
-    "negu           %[r6],       %[r6]                        \n\t"
-    "sw             %[r7],       4(%[outre2])                 \n\t"
-    "absq_s.w       %[r7],       %[r7]                        \n\t"
-    "slt            %[r8],       %[max],        %[r7]         \n\t"
-    "movn           %[max],      %[r7],         %[r8]         \n\t"
-    "sll            %[r7],       %[offset],     1             \n\t"
-    "addu           %[r7],       %[outre2],     %[r7]         \n\t"
-    "sw             %[r6],       0(%[r7])                     \n\t"
-    "absq_s.w       %[r6],       %[r6]                        \n\t"
-    "slt            %[r8],       %[max],        %[r6]         \n\t"
-    "movn           %[max],      %[r6],         %[r8]         \n\t"
-    "bgtz           %[k],        1b                           \n\t"
-    " addiu         %[outre2],   %[outre2],     8             \n\t"
-#else  // #if defined(MIPS_DSP_R1_LE)
-    "lh             %[r0],       0(%[inre])                   \n\t"
-    "lh             %[r1],       0(%[inim])                   \n\t"
-    "lh             %[r4],       0(%[cosptr])                 \n\t"
-    "lh             %[r5],       0(%[sinptr])                 \n\t"
-    "addiu          %[k],        %[k],          -1            \n\t"
-    "mul            %[r2],       %[r0],         %[r4]         \n\t"
-    "mul            %[r0],       %[r0],         %[r5]         \n\t"
-    "mul            %[r3],       %[r1],         %[r5]         \n\t"
-    "mul            %[r1],       %[r1],         %[r4]         \n\t"
-    "addiu          %[cosptr],   %[cosptr],     2             \n\t"
-    "addiu          %[sinptr],   %[sinptr],     2             \n\t"
-    "addu           %[r8],       %[inre],       %[offset]     \n\t"
-    "addu           %[r9],       %[inim],       %[offset]     \n\t"
-    "addiu          %[r2],       %[r2],         16            \n\t"
-    "sra            %[r2],       %[r2],         5             \n\t"
-    "addiu          %[r0],       %[r0],         16            \n\t"
-    "sra            %[r0],       %[r0],         5             \n\t"
-    "addiu          %[r3],       %[r3],         16            \n\t"
-    "sra            %[r3],       %[r3],         5             \n\t"
-    "lh             %[r6],       0(%[r8])                     \n\t"
-    "lh             %[r7],       0(%[r9])                     \n\t"
-    "addiu          %[r1],       %[r1],         16            \n\t"
-    "sra            %[r1],       %[r1],         5             \n\t"
-    "mul            %[r8],       %[r7],         %[r4]         \n\t"
-    "mul            %[r7],       %[r7],         %[r5]         \n\t"
-    "mul            %[r9],       %[r6],         %[r4]         \n\t"
-    "mul            %[r6],       %[r6],         %[r5]         \n\t"
-    "addu           %[r2],       %[r2],         %[r3]         \n\t"
-    "subu           %[r1],       %[r1],         %[r0]         \n\t"
-    "sll            %[r0],       %[offset],     1             \n\t"
-    "addu           %[r4],       %[outre1],     %[r0]         \n\t"
-    "addu           %[r5],       %[outre2],     %[r0]         \n\t"
-    "addiu          %[r8],       %[r8],         16            \n\t"
-    "sra            %[r8],       %[r8],         5             \n\t"
-    "addiu          %[r7],       %[r7],         16            \n\t"
-    "sra            %[r7],       %[r7],         5             \n\t"
-    "addiu          %[r6],       %[r6],         16            \n\t"
-    "sra            %[r6],       %[r6],         5             \n\t"
-    "addiu          %[r9],       %[r9],         16            \n\t"
-    "sra            %[r9],       %[r9],         5             \n\t"
-    "addu           %[r8],       %[r8],         %[r6]         \n\t"
-    "negu           %[r8],       %[r8]                        \n\t"
-    "subu           %[r7],       %[r7],         %[r9]         \n\t"
-    "subu           %[r6],       %[r2],         %[r7]         \n\t"
-    "addu           %[r0],       %[r2],         %[r7]         \n\t"
-    "addu           %[r3],       %[r1],         %[r8]         \n\t"
-    "subu           %[r1],       %[r8],         %[r1]         \n\t"
-    "sw             %[r6],       0(%[outre1])                 \n\t"
-    "sw             %[r0],       0(%[r4])                     \n\t"
-    "sw             %[r3],       0(%[outre2])                 \n\t"
-    "sw             %[r1],       0(%[r5])                     \n\t"
-    "addiu          %[outre1],   %[outre1],     4             \n\t"
-    "addiu          %[offset],   %[offset],     -4            \n\t"
-    "addiu          %[inre],     %[inre],       2             \n\t"
-    "addiu          %[inim],     %[inim],       2             \n\t"
-    // Inlined WebRtcSpl_MaxAbsValueW32
-    "negu           %[r5],       %[r6]                        \n\t"
-    "slt            %[r2],       %[r6],         $zero         \n\t"
-    "movn           %[r6],       %[r5],         %[r2]         \n\t"
-    "negu           %[r5],       %[r0]                        \n\t"
-    "slt            %[r2],       %[r0],         $zero         \n\t"
-    "movn           %[r0],       %[r5],         %[r2]         \n\t"
-    "negu           %[r5],       %[r3]                        \n\t"
-    "slt            %[r2],       %[r3],         $zero         \n\t"
-    "movn           %[r3],       %[r5],         %[r2]         \n\t"
-    "negu           %[r5],       %[r1]                        \n\t"
-    "slt            %[r2],       %[r1],         $zero         \n\t"
-    "movn           %[r1],       %[r5],         %[r2]         \n\t"
-    "slt            %[r2],       %[r6],         %[r0]         \n\t"
-    "slt            %[r5],       %[r3],         %[r1]         \n\t"
-    "movn           %[r6],       %[r0],         %[r2]         \n\t"
-    "movn           %[r3],       %[r1],         %[r5]         \n\t"
-    "slt            %[r2],       %[r6],         %[r3]         \n\t"
-    "movn           %[r6],       %[r3],         %[r2]         \n\t"
-    "slt            %[r2],       %[max],        %[r6]         \n\t"
-    "movn           %[max],      %[r6],         %[r2]         \n\t"
-    "bgtz           %[k],        1b                           \n\t"
-    " addiu         %[outre2],   %[outre2],     4             \n\t"
-#endif  // #if defined(MIPS_DSP_R1_LE)
-    "clz            %[max],      %[max]                       \n\t"
-    "addiu          %[max],      %[max],        -25           \n\t"
-    ".set           pop                                       \n\t"
-    : [inre] "=&r" (inre), [inim] "=&r" (inim),
-      [outre1] "=&r" (outre1), [outre2] "=&r" (outre2),
-      [offset] "+r" (offset), [k] "+r" (k), [r0] "=&r" (r0),
-      [r1] "=&r" (r1), [r2] "=&r" (r2), [r3] "=&r" (r3),
-      [r4] "=&r" (r4), [r5] "=&r" (r5), [r6] "=&r" (r6),
-      [r7] "=&r" (r7), [r8] "=&r" (r8), [r9] "=&r" (r9),
-      [max] "=&r" (max)
-    : [inreQ7] "r" (inreQ7), [inimQ7] "r" (inimQ7),
-      [cosptr] "r" (cosptr), [sinptr] "r" (sinptr),
-      [outre1Q16] "r" (outre1Q16), [outre2Q16] "r" (outre2Q16)
-    : "hi", "lo", "memory"
-  );
-
-  // "Fastest" vectors
-  k = FRAMESAMPLES / 4;
-  __asm __volatile (
-    ".set           push                                      \n\t"
-    ".set           noreorder                                 \n\t"
-    "addiu          %[inre],      %[inreQ7],    0             \n\t"
-    "addiu          %[inim],      %[inimQ7],    0             \n\t"
-    "addiu          %[outre1],    %[outre1Q16], 0             \n\t"
-    "addiu          %[outre2],    %[outre2Q16], 0             \n\t"
-    "bltz           %[max],       2f                          \n\t"
-    " subu          %[max1],      $zero,        %[max]        \n\t"
-   "1:                                                        \n\t"
-    "lw             %[r0],        0(%[outre1])                \n\t"
-    "lw             %[r1],        0(%[outre2])                \n\t"
-    "lw             %[r2],        4(%[outre1])                \n\t"
-    "lw             %[r3],        4(%[outre2])                \n\t"
-    "sllv           %[r0],        %[r0],        %[max]        \n\t"
-    "sllv           %[r1],        %[r1],        %[max]        \n\t"
-    "sllv           %[r2],        %[r2],        %[max]        \n\t"
-    "sllv           %[r3],        %[r3],        %[max]        \n\t"
-    "addiu          %[k],         %[k],         -1            \n\t"
-    "addiu          %[outre1],    %[outre1],    8             \n\t"
-    "addiu          %[outre2],    %[outre2],    8             \n\t"
-    "sh             %[r0],        0(%[inre])                  \n\t"
-    "sh             %[r1],        0(%[inim])                  \n\t"
-    "sh             %[r2],        2(%[inre])                  \n\t"
-    "sh             %[r3],        2(%[inim])                  \n\t"
-    "addiu          %[inre],      %[inre],      4             \n\t"
-    "bgtz           %[k],         1b                          \n\t"
-    " addiu         %[inim],      %[inim],      4             \n\t"
-    "b              4f                                        \n\t"
-    " nop                                                     \n\t"
-   "2:                                                        \n\t"
-#if !defined(MIPS_DSP_R1_LE)
-    "addiu          %[r4],        $zero,        1             \n\t"
-    "addiu          %[r5],        %[max1],      -1            \n\t"
-    "sllv           %[r4],        %[r4],        %[r5]         \n\t"
-#endif  // #if !defined(MIPS_DSP_R1_LE)
-   "3:                                                        \n\t"
-    "lw             %[r0],        0(%[outre1])                \n\t"
-    "lw             %[r1],        0(%[outre2])                \n\t"
-    "lw             %[r2],        4(%[outre1])                \n\t"
-    "lw             %[r3],        4(%[outre2])                \n\t"
-#if defined(MIPS_DSP_R1_LE)
-    "shrav_r.w      %[r0],        %[r0],        %[max1]       \n\t"
-    "shrav_r.w      %[r1],        %[r1],        %[max1]       \n\t"
-    "shrav_r.w      %[r2],        %[r2],        %[max1]       \n\t"
-    "shrav_r.w      %[r3],        %[r3],        %[max1]       \n\t"
-#else  // #if defined(MIPS_DSP_R1_LE)
-    "addu           %[r0],        %[r0],        %[r4]         \n\t"
-    "addu           %[r1],        %[r1],        %[r4]         \n\t"
-    "addu           %[r2],        %[r2],        %[r4]         \n\t"
-    "addu           %[r3],        %[r3],        %[r4]         \n\t"
-    "srav           %[r0],        %[r0],        %[max1]       \n\t"
-    "srav           %[r1],        %[r1],        %[max1]       \n\t"
-    "srav           %[r2],        %[r2],        %[max1]       \n\t"
-    "srav           %[r3],        %[r3],        %[max1]       \n\t"
-#endif  // #if defined(MIPS_DSP_R1_LE)
-    "addiu          %[outre1],    %[outre1],    8             \n\t"
-    "addiu          %[outre2],    %[outre2],    8             \n\t"
-    "sh             %[r0],        0(%[inre])                  \n\t"
-    "sh             %[r1],        0(%[inim])                  \n\t"
-    "sh             %[r2],        2(%[inre])                  \n\t"
-    "sh             %[r3],        2(%[inim])                  \n\t"
-    "addiu          %[k],         %[k],         -1            \n\t"
-    "addiu          %[inre],      %[inre],      4             \n\t"
-    "bgtz           %[k],         3b                          \n\t"
-    " addiu         %[inim],      %[inim],      4             \n\t"
-   "4:                                                        \n\t"
-    ".set           pop                                       \n\t"
-    : [k] "+r" (k), [max1] "=&r" (max1), [r0] "=&r" (r0),
-      [inre] "=&r" (inre), [inim] "=&r" (inim),
-      [outre1] "=&r" (outre1), [outre2] "=&r" (outre2),
-#if !defined(MIPS_DSP_R1_LE)
-      [r4] "=&r" (r4), [r5] "=&r" (r5),
-#endif  // #if !defined(MIPS_DSP_R1_LE)
-      [r1] "=&r" (r1), [r2] "=&r" (r2), [r3] "=&r" (r3)
-    : [max] "r" (max), [inreQ7] "r" (inreQ7),
-      [inimQ7] "r" (inimQ7), [outre1Q16] "r" (outre1Q16),
-      [outre2Q16] "r" (outre2Q16)
-    : "memory"
-  );
-
-  WebRtcIsacfix_FftRadix16Fastest(inreQ7, inimQ7, 1); // real call
-
-  // All the remaining processing is done inside a single loop to avoid
-  // unnecessary memory accesses. MIPS DSPr2 version processes two samples
-  // at a time.
-  cosptr = (int16_t*)WebRtcIsacfix_kCosTab1;
-  sinptr = (int16_t*)WebRtcIsacfix_kSinTab1;
-  k = FRAMESAMPLES / 2;
-  __asm __volatile (
-    ".set           push                                      \n\t"
-    ".set           noreorder                                 \n\t"
-    "addiu          %[inre],      %[inreQ7],    0             \n\t"
-    "addiu          %[inim],      %[inimQ7],    0             \n\t"
-    "addiu          %[outre1],    %[outre1Q16], 0             \n\t"
-    "addiu          %[outre2],    %[outre2Q16], 0             \n\t"
-    "addiu          %[r4],        $zero,        273           \n\t"
-    "addiu          %[r5],        $zero,        31727         \n\t"
-#if defined(MIPS_DSP_R2_LE)
-    "addiu          %[max],       %[max],       16            \n\t"
-    "replv.ph       %[r4],        %[r4]                       \n\t"
-#endif  // #if defined(MIPS_DSP_R2_LE)
-    "bltz           %[max],       2f                          \n\t"
-    " subu          %[max1],      $zero,        %[max]        \n\t"
-#if defined(MIPS_DSP_R2_LE)
-    "addiu          %[max],       %[max],       1             \n\t"
-#endif  // #if defined(MIPS_DSP_R2_LE)
-   "1:                                                        \n\t"
-#if defined(MIPS_DSP_R2_LE)
-    "lwl            %[r0],        0(%[inre])                  \n\t"
-    "lwl            %[r1],        0(%[inim])                  \n\t"
-    "lh             %[r2],        0(%[cosptr])                \n\t"
-    "lwr            %[r0],        0(%[inre])                  \n\t"
-    "lwr            %[r1],        0(%[inim])                  \n\t"
-    "lh             %[r3],        0(%[sinptr])                \n\t"
-    "muleq_s.w.phr  %[r6],        %[r0],        %[r4]         \n\t"
-    "muleq_s.w.phr  %[r7],        %[r1],        %[r4]         \n\t"
-    "muleq_s.w.phl  %[r0],        %[r0],        %[r4]         \n\t"
-    "muleq_s.w.phl  %[r1],        %[r1],        %[r4]         \n\t"
-    "addiu          %[k],         %[k],         -2            \n\t"
-    "addiu          %[inre],      %[inre],      4             \n\t"
-    "addiu          %[inim],      %[inim],      4             \n\t"
-    "shrav_r.w      %[r6],        %[r6],        %[max]        \n\t"
-    "shrav_r.w      %[r7],        %[r7],        %[max]        \n\t"
-    "mult           $ac0,         %[r2],        %[r6]         \n\t"
-    "mult           $ac1,         %[r3],        %[r7]         \n\t"
-    "mult           $ac2,         %[r2],        %[r7]         \n\t"
-    "mult           $ac3,         %[r3],        %[r6]         \n\t"
-    "lh             %[r2],        2(%[cosptr])                \n\t"
-    "lh             %[r3],        2(%[sinptr])                \n\t"
-    "extr_r.w       %[r6],        $ac0,         14            \n\t"
-    "extr_r.w       %[r7],        $ac1,         14            \n\t"
-    "extr_r.w       %[r8],        $ac2,         14            \n\t"
-    "extr_r.w       %[r9],        $ac3,         14            \n\t"
-    "shrav_r.w      %[r0],        %[r0],        %[max]        \n\t"
-    "shrav_r.w      %[r1],        %[r1],        %[max]        \n\t"
-    "mult           $ac0,         %[r2],        %[r0]         \n\t"
-    "mult           $ac1,         %[r3],        %[r1]         \n\t"
-    "mult           $ac2,         %[r2],        %[r1]         \n\t"
-    "mult           $ac3,         %[r3],        %[r0]         \n\t"
-    "addiu          %[cosptr],    %[cosptr],    4             \n\t"
-    "extr_r.w       %[r0],        $ac0,         14            \n\t"
-    "extr_r.w       %[r1],        $ac1,         14            \n\t"
-    "extr_r.w       %[r2],        $ac2,         14            \n\t"
-    "extr_r.w       %[r3],        $ac3,         14            \n\t"
-    "subu           %[r6],        %[r6],        %[r7]         \n\t"
-    "addu           %[r8],        %[r8],        %[r9]         \n\t"
-    "mult           $ac0,         %[r5],        %[r6]         \n\t"
-    "mult           $ac1,         %[r5],        %[r8]         \n\t"
-    "addiu          %[sinptr],    %[sinptr],    4             \n\t"
-    "subu           %[r0],        %[r0],        %[r1]         \n\t"
-    "addu           %[r2],        %[r2],        %[r3]         \n\t"
-    "extr_r.w       %[r1],        $ac0,         11            \n\t"
-    "extr_r.w       %[r3],        $ac1,         11            \n\t"
-    "mult           $ac2,         %[r5],        %[r0]         \n\t"
-    "mult           $ac3,         %[r5],        %[r2]         \n\t"
-    "sw             %[r1],        0(%[outre1])                \n\t"
-    "sw             %[r3],        0(%[outre2])                \n\t"
-    "addiu          %[outre1],    %[outre1],    8             \n\t"
-    "extr_r.w       %[r0],        $ac2,         11            \n\t"
-    "extr_r.w       %[r2],        $ac3,         11            \n\t"
-    "sw             %[r0],        -4(%[outre1])               \n\t"
-    "sw             %[r2],        4(%[outre2])                \n\t"
-    "bgtz           %[k],         1b                          \n\t"
-    " addiu         %[outre2],    %[outre2],    8             \n\t"
-    "b              3f                                        \n\t"
-#else  // #if defined(MIPS_DSP_R2_LE)
-    "lh             %[r0],        0(%[inre])                  \n\t"
-    "lh             %[r1],        0(%[inim])                  \n\t"
-    "addiu          %[k],         %[k],         -1            \n\t"
-    "srav           %[r0],        %[r0],        %[max]        \n\t"
-    "srav           %[r1],        %[r1],        %[max]        \n\t"
-    "sra            %[r2],        %[r0],        16            \n\t"
-    "andi           %[r0],        %[r0],        0xFFFF        \n\t"
-    "sra            %[r0],        %[r0],        1             \n\t"
-    "sra            %[r3],        %[r1],        16            \n\t"
-    "andi           %[r1],        %[r1],        0xFFFF        \n\t"
-    "sra            %[r1],        %[r1],        1             \n\t"
-    "mul            %[r2],        %[r2],        %[r4]         \n\t"
-    "mul            %[r0],        %[r0],        %[r4]         \n\t"
-    "mul            %[r3],        %[r3],        %[r4]         \n\t"
-    "mul            %[r1],        %[r1],        %[r4]         \n\t"
-    "addiu          %[inre],      %[inre],      2             \n\t"
-    "addiu          %[inim],      %[inim],      2             \n\t"
-    "lh             %[r6],        0(%[cosptr])                \n\t"
-    "lh             %[r7],        0(%[sinptr])                \n\t"
-#if defined(MIPS_DSP_R1_LE)
-    "shra_r.w       %[r0],        %[r0],        15            \n\t"
-    "shra_r.w       %[r1],        %[r1],        15            \n\t"
-#else  // #if defined(MIPS_DSP_R1_LE)
-    "addiu          %[r0],        %[r0],        0x4000        \n\t"
-    "addiu          %[r1],        %[r1],        0x4000        \n\t"
-    "sra            %[r0],        %[r0],        15            \n\t"
-    "sra            %[r1],        %[r1],        15            \n\t"
-#endif  // #if defined(MIPS_DSP_R1_LE)
-    "addu           %[r0],        %[r2],        %[r0]         \n\t"
-    "addu           %[r1],        %[r3],        %[r1]         \n\t"
-    "sra            %[r2],        %[r0],        16            \n\t"
-    "andi           %[r0],        %[r0],        0xFFFF        \n\t"
-    "mul            %[r9],        %[r2],        %[r6]         \n\t"
-    "mul            %[r2],        %[r2],        %[r7]         \n\t"
-    "mul            %[r8],        %[r0],        %[r6]         \n\t"
-    "mul            %[r0],        %[r0],        %[r7]         \n\t"
-    "sra            %[r3],        %[r3],        16            \n\t"
-    "andi           %[r1],        %[r1],        0xFFFF        \n\t"
-    "sll            %[r9],        %[r9],        2             \n\t"
-    "sll            %[r2],        %[r2],        2             \n\t"
-#if defined(MIPS_DSP_R1_LE)
-    "shra_r.w       %[r8],        %[r8],        14            \n\t"
-    "shra_r.w       %[r0],        %[r0],        14            \n\t"
-#else  // #if defined(MIPS_DSP_R1_LE)
-    "addiu          %[r8],        %[r8],        0x2000        \n\t"
-    "addiu          %[r0],        %[r0],        0x2000        \n\t"
-    "sra            %[r8],        %[r8],        14            \n\t"
-    "sra            %[r0],        %[r0],        14            \n\t"
-#endif  // #if defined(MIPS_DSP_R1_LE)
-    "addu           %[r9],        %[r9],        %[r8]         \n\t"
-    "addu           %[r2],        %[r2],        %[r0]         \n\t"
-    "mul            %[r0],        %[r3],        %[r6]         \n\t"
-    "mul            %[r3],        %[r3],        %[r7]         \n\t"
-    "mul            %[r8],        %[r1],        %[r6]         \n\t"
-    "mul            %[r1],        %[r1],        %[r8]         \n\t"
-    "addiu          %[cosptr],    %[cosptr],    2             \n\t"
-    "addiu          %[sinptr],    %[sinptr],    2             \n\t"
-    "sll            %[r0],        %[r0],        2             \n\t"
-    "sll            %[r3],        %[r3],        2             \n\t"
-#if defined(MIPS_DSP_R1_LE)
-    "shra_r.w       %[r8],        %[r8],        14            \n\t"
-    "shra_r.w       %[r1],        %[r1],        14            \n\t"
-#else  // #if defined(MIPS_DSP_R1_LE)
-    "addiu          %[r8],        %[r8],        0x2000        \n\t"
-    "addiu          %[r1],        %[r1],        0x2000        \n\t"
-    "sra            %[r8],        %[r8],        14            \n\t"
-    "sra            %[r1],        %[r1],        14            \n\t"
-#endif  // #if defined(MIPS_DSP_R1_LE)
-    "addu           %[r0],        %[r0],        %[r8]         \n\t"
-    "addu           %[r3],        %[r3],        %[r1]         \n\t"
-    "subu           %[r9],        %[r9],        %[r3]         \n\t"
-    "addu           %[r0],        %[r0],        %[r2]         \n\t"
-    "sra            %[r1],        %[r9],        16            \n\t"
-    "andi           %[r9],        %[r9],        0xFFFF        \n\t"
-    "mul            %[r1],        %[r1],        %[r5]         \n\t"
-    "mul            %[r9],        %[r9],        %[r5]         \n\t"
-    "sra            %[r2],        %[r0],        16            \n\t"
-    "andi           %[r0],        %[r0],        0xFFFF        \n\t"
-    "mul            %[r2],        %[r2],        %[r5]         \n\t"
-    "mul            %[r0],        %[r0],        %[r5]         \n\t"
-    "sll            %[r1],        %[r1],        5             \n\t"
-#if defined(MIPS_DSP_R1_LE)
-    "shra_r.w       %[r9],        %[r9],        11            \n\t"
-#else  // #if defined(MIPS_DSP_R1_LE)
-    "addiu          %[r9],        %[r9],        0x400         \n\t"
-    "sra            %[r9],        %[r9],        11            \n\t"
-#endif  // #if defined(MIPS_DSP_R1_LE)
-    "addu           %[r1],        %[r1],        %[r9]         \n\t"
-    "sll            %[r2],        %[r2],        5             \n\t"
-#if defined(MIPS_DSP_R1_LE)
-    "shra_r.w       %[r0],        %[r0],        11            \n\t"
-#else  // #if defined(MIPS_DSP_R1_LE)
-    "addiu          %[r0],        %[r0],        0x400         \n\t"
-    "sra            %[r0],        %[r0],        11            \n\t"
-#endif  // #if defined(MIPS_DSP_R1_LE)
-    "addu           %[r0],        %[r0],        %[r2]         \n\t"
-    "sw             %[r1],        0(%[outre1])                \n\t"
-    "addiu          %[outre1],    %[outre1],    4             \n\t"
-    "sw             %[r0],        0(%[outre2])                \n\t"
-    "bgtz           %[k],         1b                          \n\t"
-    " addiu         %[outre2],    %[outre2],    4             \n\t"
-    "b              3f                                        \n\t"
-    " nop                                                     \n\t"
-#endif  // #if defined(MIPS_DSP_R2_LE)
-   "2:                                                        \n\t"
-#if defined(MIPS_DSP_R2_LE)
-    "addiu          %[max1],      %[max1],      -1            \n\t"
-   "21:                                                       \n\t"
-    "lwl            %[r0],        0(%[inre])                  \n\t"
-    "lwl            %[r1],        0(%[inim])                  \n\t"
-    "lh             %[r2],        0(%[cosptr])                \n\t"
-    "lwr            %[r0],        0(%[inre])                  \n\t"
-    "lwr            %[r1],        0(%[inim])                  \n\t"
-    "lh             %[r3],        0(%[sinptr])                \n\t"
-    "muleq_s.w.phr  %[r6],        %[r0],        %[r4]         \n\t"
-    "muleq_s.w.phr  %[r7],        %[r1],        %[r4]         \n\t"
-    "muleq_s.w.phl  %[r0],        %[r0],        %[r4]         \n\t"
-    "muleq_s.w.phl  %[r1],        %[r1],        %[r4]         \n\t"
-    "addiu          %[k],         %[k],         -2            \n\t"
-    "addiu          %[inre],      %[inre],      4             \n\t"
-    "addiu          %[inim],      %[inim],      4             \n\t"
-    "sllv           %[r6],        %[r6],        %[max1]       \n\t"
-    "sllv           %[r7],        %[r7],        %[max1]       \n\t"
-    "mult           $ac0,         %[r2],        %[r6]         \n\t"
-    "mult           $ac1,         %[r3],        %[r7]         \n\t"
-    "mult           $ac2,         %[r2],        %[r7]         \n\t"
-    "mult           $ac3,         %[r3],        %[r6]         \n\t"
-    "lh             %[r2],        2(%[cosptr])                \n\t"
-    "lh             %[r3],        2(%[sinptr])                \n\t"
-    "extr_r.w       %[r6],        $ac0,         14            \n\t"
-    "extr_r.w       %[r7],        $ac1,         14            \n\t"
-    "extr_r.w       %[r8],        $ac2,         14            \n\t"
-    "extr_r.w       %[r9],        $ac3,         14            \n\t"
-    "sllv           %[r0],        %[r0],        %[max1]       \n\t"
-    "sllv           %[r1],        %[r1],        %[max1]       \n\t"
-    "mult           $ac0,         %[r2],        %[r0]         \n\t"
-    "mult           $ac1,         %[r3],        %[r1]         \n\t"
-    "mult           $ac2,         %[r2],        %[r1]         \n\t"
-    "mult           $ac3,         %[r3],        %[r0]         \n\t"
-    "addiu          %[cosptr],    %[cosptr],    4             \n\t"
-    "extr_r.w       %[r0],        $ac0,         14            \n\t"
-    "extr_r.w       %[r1],        $ac1,         14            \n\t"
-    "extr_r.w       %[r2],        $ac2,         14            \n\t"
-    "extr_r.w       %[r3],        $ac3,         14            \n\t"
-    "subu           %[r6],        %[r6],        %[r7]         \n\t"
-    "addu           %[r8],        %[r8],        %[r9]         \n\t"
-    "mult           $ac0,         %[r5],        %[r6]         \n\t"
-    "mult           $ac1,         %[r5],        %[r8]         \n\t"
-    "addiu          %[sinptr],    %[sinptr],    4             \n\t"
-    "subu           %[r0],        %[r0],        %[r1]         \n\t"
-    "addu           %[r2],        %[r2],        %[r3]         \n\t"
-    "extr_r.w       %[r1],        $ac0,         11            \n\t"
-    "extr_r.w       %[r3],        $ac1,         11            \n\t"
-    "mult           $ac2,         %[r5],        %[r0]         \n\t"
-    "mult           $ac3,         %[r5],        %[r2]         \n\t"
-    "sw             %[r1],        0(%[outre1])                \n\t"
-    "sw             %[r3],        0(%[outre2])                \n\t"
-    "addiu          %[outre1],    %[outre1],    8             \n\t"
-    "extr_r.w       %[r0],        $ac2,         11            \n\t"
-    "extr_r.w       %[r2],        $ac3,         11            \n\t"
-    "sw             %[r0],        -4(%[outre1])               \n\t"
-    "sw             %[r2],        4(%[outre2])                \n\t"
-    "bgtz           %[k],         21b                         \n\t"
-    " addiu         %[outre2],    %[outre2],    8             \n\t"
-    "b              3f                                        \n\t"
-    " nop                                                     \n\t"
-#else  // #if defined(MIPS_DSP_R2_LE)
-    "lh             %[r0],        0(%[inre])                  \n\t"
-    "lh             %[r1],        0(%[inim])                  \n\t"
-    "addiu          %[k],         %[k],         -1            \n\t"
-    "sllv           %[r0],        %[r0],        %[max1]       \n\t"
-    "sllv           %[r1],        %[r1],        %[max1]       \n\t"
-    "sra            %[r2],        %[r0],        16            \n\t"
-    "andi           %[r0],        %[r0],        0xFFFF        \n\t"
-    "sra            %[r0],        %[r0],        1             \n\t"
-    "sra            %[r3],        %[r1],        16            \n\t"
-    "andi           %[r1],        %[r1],        0xFFFF        \n\t"
-    "sra            %[r1],        %[r1],        1             \n\t"
-    "mul            %[r2],        %[r2],        %[r4]         \n\t"
-    "mul            %[r0],        %[r0],        %[r4]         \n\t"
-    "mul            %[r3],        %[r3],        %[r4]         \n\t"
-    "mul            %[r1],        %[r1],        %[r4]         \n\t"
-    "addiu          %[inre],      %[inre],      2             \n\t"
-    "addiu          %[inim],      %[inim],      2             \n\t"
-    "lh             %[r6],        0(%[cosptr])                \n\t"
-    "lh             %[r7],        0(%[sinptr])                \n\t"
-#if defined(MIPS_DSP_R1_LE)
-    "shra_r.w       %[r0],        %[r0],        15            \n\t"
-    "shra_r.w       %[r1],        %[r1],        15            \n\t"
-#else  // #if defined(MIPS_DSP_R1_LE)
-    "addiu          %[r0],        %[r0],        0x4000        \n\t"
-    "addiu          %[r1],        %[r1],        0x4000        \n\t"
-    "sra            %[r0],        %[r0],        15            \n\t"
-    "sra            %[r1],        %[r1],        15            \n\t"
-#endif  // #if defined(MIPS_DSP_R1_LE)
-    "addu           %[r0],        %[r2],        %[r0]         \n\t"
-    "addu           %[r1],        %[r3],        %[r1]         \n\t"
-    "sra            %[r2],        %[r0],        16            \n\t"
-    "andi           %[r0],        %[r0],        0xFFFF        \n\t"
-    "mul            %[r9],        %[r2],        %[r6]         \n\t"
-    "mul            %[r2],        %[r2],        %[r7]         \n\t"
-    "mul            %[r8],        %[r0],        %[r6]         \n\t"
-    "mul            %[r0],        %[r0],        %[r7]         \n\t"
-    "sra            %[r3],        %[r1],        16            \n\t"
-    "andi           %[r1],        %[r1],        0xFFFF        \n\t"
-    "sll            %[r9],        %[r9],        2             \n\t"
-    "sll            %[r2],        %[r2],        2             \n\t"
-#if defined(MIPS_DSP_R1_LE)
-    "shra_r.w       %[r8],        %[r8],        14            \n\t"
-    "shra_r.w       %[r0],        %[r0],        14            \n\t"
-#else  // #if defined(MIPS_DSP_R1_LE)
-    "addiu          %[r8],        %[r8],        0x2000        \n\t"
-    "addiu          %[r0],        %[r0],        0x2000        \n\t"
-    "sra            %[r8],        %[r8],        14            \n\t"
-    "sra            %[r0],        %[r0],        14            \n\t"
-#endif  // #if defined(MIPS_DSP_R1_LE)
-    "addu           %[r9],        %[r9],        %[r8]         \n\t"
-    "addu           %[r2],        %[r2],        %[r0]         \n\t"
-    "mul            %[r0],        %[r3],        %[r6]         \n\t"
-    "mul            %[r3],        %[r3],        %[r7]         \n\t"
-    "mul            %[r8],        %[r1],        %[r6]         \n\t"
-    "mul            %[r1],        %[r1],        %[r7]         \n\t"
-    "addiu          %[cosptr],    %[cosptr],    2             \n\t"
-    "addiu          %[sinptr],    %[sinptr],    2             \n\t"
-    "sll            %[r0],        %[r0],        2             \n\t"
-    "sll            %[r3],        %[r3],        2             \n\t"
-#if defined(MIPS_DSP_R1_LE)
-    "shra_r.w       %[r8],        %[r8],        14            \n\t"
-    "shra_r.w       %[r1],        %[r1],        14            \n\t"
-#else  // #if defined(MIPS_DSP_R1_LE)
-    "addiu          %[r8],        %[r8],        0x2000        \n\t"
-    "addiu          %[r1],        %[r1],        0x2000        \n\t"
-    "sra            %[r8],        %[r8],        14            \n\t"
-    "sra            %[r1],        %[r1],        14            \n\t"
-#endif  // #if defined(MIPS_DSP_R1_LE)
-    "addu           %[r0],        %[r0],        %[r8]         \n\t"
-    "addu           %[r3],        %[r3],        %[r1]         \n\t"
-    "subu           %[r9],        %[r9],        %[r3]         \n\t"
-    "addu           %[r0],        %[r0],        %[r2]         \n\t"
-    "sra            %[r1],        %[r9],        16            \n\t"
-    "andi           %[r9],        %[r9],        0xFFFF        \n\t"
-    "mul            %[r1],        %[r1],        %[r5]         \n\t"
-    "mul            %[r9],        %[r9],        %[r5]         \n\t"
-    "sra            %[r2],        %[r0],        16            \n\t"
-    "andi           %[r0],        %[r0],        0xFFFF        \n\t"
-    "mul            %[r2],        %[r2],        %[r5]         \n\t"
-    "mul            %[r0],        %[r0],        %[r5]         \n\t"
-    "sll            %[r1],        %[r1],        5             \n\t"
-#if defined(MIPS_DSP_R1_LE)
-    "shra_r.w       %[r9],        %[r9],        11            \n\t"
-#else  // #if defined(MIPS_DSP_R1_LE)
-    "addiu          %[r9],        %[r9],        0x400         \n\t"
-    "sra            %[r9],        %[r9],        11            \n\t"
-#endif  // #if defined(MIPS_DSP_R1_LE)
-    "addu           %[r1],        %[r1],        %[r9]         \n\t"
-    "sll            %[r2],        %[r2],        5             \n\t"
-#if defined(MIPS_DSP_R1_LE)
-    "shra_r.w       %[r0],        %[r0],        11            \n\t"
-#else  // #if defined(MIPS_DSP_R1_LE)
-    "addiu          %[r0],        %[r0],        0x400         \n\t"
-    "sra            %[r0],        %[r0],        11            \n\t"
-#endif  // #if defined(MIPS_DSP_R1_LE)
-    "addu           %[r0],        %[r0],        %[r2]         \n\t"
-    "sw             %[r1],        0(%[outre1])                \n\t"
-    "addiu          %[outre1],    %[outre1],    4             \n\t"
-    "sw             %[r0],        0(%[outre2])                \n\t"
-    "bgtz           %[k],         2b                          \n\t"
-    " addiu         %[outre2],    %[outre2],    4             \n\t"
-#endif  // #if defined(MIPS_DSP_R2_LE)
-   "3:                                                        \n\t"
-    ".set           pop                                       \n\t"
-    : [k] "+r" (k), [r0] "=&r" (r0), [r1] "=&r" (r1),
-      [r2] "=&r" (r2), [r3] "=&r" (r3), [r4] "=&r" (r4),
-      [r5] "=&r" (r5), [r6] "=&r" (r6), [r7] "=&r" (r7),
-      [r8] "=&r" (r8), [r9] "=&r" (r9), [max1] "=&r" (max1),
-      [inre] "=&r" (inre), [inim] "=&r" (inim),
-      [outre1] "=&r" (outre1), [outre2] "=&r" (outre2)
-    : [max] "r" (max), [inreQ7] "r" (inreQ7),
-      [inimQ7] "r" (inimQ7), [cosptr] "r" (cosptr),
-      [sinptr] "r" (sinptr), [outre1Q16] "r" (outre1Q16),
-      [outre2Q16] "r" (outre2Q16)
-    : "hi", "lo", "memory"
-#if defined(MIPS_DSP_R2_LE)
-    , "$ac1hi", "$ac1lo", "$ac2hi", "$ac2lo", "$ac3hi", "$ac3lo"
-#endif  // #if defined(MIPS_DSP_R2_LE)
-  );
-}
diff --git a/modules/audio_coding/codecs/isac/fix/source/transform_neon.c b/modules/audio_coding/codecs/isac/fix/source/transform_neon.c
deleted file mode 100644
index 79dadc4..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/transform_neon.c
+++ /dev/null
@@ -1,479 +0,0 @@
-/*
- *  Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <arm_neon.h>
-
-#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"
-
-// Tables are defined in transform_tables.c file.
-// Cosine table 1 in Q14.
-extern const int16_t WebRtcIsacfix_kCosTab1[FRAMESAMPLES/2];
-// Sine table 1 in Q14.
-extern const int16_t WebRtcIsacfix_kSinTab1[FRAMESAMPLES/2];
-// Sine table 2 in Q14.
-extern const int16_t WebRtcIsacfix_kSinTab2[FRAMESAMPLES/4];
-
-static inline int32_t ComplexMulAndFindMaxNeon(int16_t* inre1Q9,
-                                               int16_t* inre2Q9,
-                                               int32_t* outreQ16,
-                                               int32_t* outimQ16) {
-  int k;
-  const int16_t* kCosTab = &WebRtcIsacfix_kCosTab1[0];
-  const int16_t* kSinTab = &WebRtcIsacfix_kSinTab1[0];
-  // 0.5 / sqrt(240) in Q19 is round((.5 / sqrt(240)) * (2^19)) = 16921.
-  // Use "16921 << 5" and vqdmulh, instead of ">> 26" as in the C code.
-  int32_t fact  = 16921 << 5;
-  int32x4_t factq = vdupq_n_s32(fact);
-  uint32x4_t max_r = vdupq_n_u32(0);
-  uint32x4_t max_i = vdupq_n_u32(0);
-
-  for (k = 0; k < FRAMESAMPLES/2; k += 8) {
-    int16x8_t tmpr = vld1q_s16(kCosTab);
-    int16x8_t tmpi = vld1q_s16(kSinTab);
-    int16x8_t inre1 = vld1q_s16(inre1Q9);
-    int16x8_t inre2 = vld1q_s16(inre2Q9);
-    kCosTab += 8;
-    kSinTab += 8;
-    inre1Q9 += 8;
-    inre2Q9 += 8;
-
-    // Use ">> 26", instead of ">> 7", ">> 16" and then ">> 3" as in the C code.
-    int32x4_t tmp0 = vmull_s16(vget_low_s16(tmpr), vget_low_s16(inre1));
-    int32x4_t tmp1 = vmull_s16(vget_low_s16(tmpr), vget_low_s16(inre2));
-    tmp0 = vmlal_s16(tmp0, vget_low_s16(tmpi), vget_low_s16(inre2));
-    tmp1 = vmlsl_s16(tmp1, vget_low_s16(tmpi), vget_low_s16(inre1));
-#if defined(WEBRTC_ARCH_ARM64)
-    int32x4_t tmp2 = vmull_high_s16(tmpr, inre1);
-    int32x4_t tmp3 = vmull_high_s16(tmpr, inre2);
-    tmp2 = vmlal_high_s16(tmp2, tmpi, inre2);
-    tmp3 = vmlsl_high_s16(tmp3, tmpi, inre1);
-#else
-    int32x4_t tmp2 = vmull_s16(vget_high_s16(tmpr), vget_high_s16(inre1));
-    int32x4_t tmp3 = vmull_s16(vget_high_s16(tmpr), vget_high_s16(inre2));
-    tmp2 = vmlal_s16(tmp2, vget_high_s16(tmpi), vget_high_s16(inre2));
-    tmp3 = vmlsl_s16(tmp3, vget_high_s16(tmpi), vget_high_s16(inre1));
-#endif
-
-    int32x4_t outr_0 = vqdmulhq_s32(tmp0, factq);
-    int32x4_t outr_1 = vqdmulhq_s32(tmp2, factq);
-    int32x4_t outi_0 = vqdmulhq_s32(tmp1, factq);
-    int32x4_t outi_1 = vqdmulhq_s32(tmp3, factq);
-    vst1q_s32(outreQ16, outr_0);
-    outreQ16 += 4;
-    vst1q_s32(outreQ16, outr_1);
-    outreQ16 += 4;
-    vst1q_s32(outimQ16, outi_0);
-    outimQ16 += 4;
-    vst1q_s32(outimQ16, outi_1);
-    outimQ16 += 4;
-
-    // Find the absolute maximum in the vectors.
-    tmp0 = vabsq_s32(outr_0);
-    tmp1 = vabsq_s32(outr_1);
-    tmp2 = vabsq_s32(outi_0);
-    tmp3 = vabsq_s32(outi_1);
-    // vabs doesn't change the value of 0x80000000.
-    // Use u32 so we don't lose the value 0x80000000.
-    max_r = vmaxq_u32(max_r, vreinterpretq_u32_s32(tmp0));
-    max_i = vmaxq_u32(max_i, vreinterpretq_u32_s32(tmp2));
-    max_r = vmaxq_u32(max_r, vreinterpretq_u32_s32(tmp1));
-    max_i = vmaxq_u32(max_i, vreinterpretq_u32_s32(tmp3));
-  }
-
-  max_r = vmaxq_u32(max_r, max_i);
-#if defined(WEBRTC_ARCH_ARM64)
-  uint32_t maximum = vmaxvq_u32(max_r);
-#else
-  uint32x2_t max32x2_r = vmax_u32(vget_low_u32(max_r), vget_high_u32(max_r));
-  max32x2_r = vpmax_u32(max32x2_r, max32x2_r);
-  uint32_t maximum = vget_lane_u32(max32x2_r, 0);
-#endif
-
-  return (int32_t)maximum;
-}
-
-static inline void PreShiftW32toW16Neon(int32_t* inre,
-                                        int32_t* inim,
-                                        int16_t* outre,
-                                        int16_t* outim,
-                                        int32_t sh) {
-  int k;
-  int32x4_t sh32x4 = vdupq_n_s32(sh);
-  for (k = 0; k < FRAMESAMPLES/2; k += 16) {
-    int32x4x4_t inre32x4x4 = vld4q_s32(inre);
-    int32x4x4_t inim32x4x4 = vld4q_s32(inim);
-    inre += 16;
-    inim += 16;
-    inre32x4x4.val[0] = vrshlq_s32(inre32x4x4.val[0], sh32x4);
-    inre32x4x4.val[1] = vrshlq_s32(inre32x4x4.val[1], sh32x4);
-    inre32x4x4.val[2] = vrshlq_s32(inre32x4x4.val[2], sh32x4);
-    inre32x4x4.val[3] = vrshlq_s32(inre32x4x4.val[3], sh32x4);
-    inim32x4x4.val[0] = vrshlq_s32(inim32x4x4.val[0], sh32x4);
-    inim32x4x4.val[1] = vrshlq_s32(inim32x4x4.val[1], sh32x4);
-    inim32x4x4.val[2] = vrshlq_s32(inim32x4x4.val[2], sh32x4);
-    inim32x4x4.val[3] = vrshlq_s32(inim32x4x4.val[3], sh32x4);
-    int16x4x4_t outre16x4x4;
-    int16x4x4_t outim16x4x4;
-    outre16x4x4.val[0]  = vmovn_s32(inre32x4x4.val[0]);
-    outre16x4x4.val[1]  = vmovn_s32(inre32x4x4.val[1]);
-    outre16x4x4.val[2]  = vmovn_s32(inre32x4x4.val[2]);
-    outre16x4x4.val[3]  = vmovn_s32(inre32x4x4.val[3]);
-    outim16x4x4.val[0]  = vmovn_s32(inim32x4x4.val[0]);
-    outim16x4x4.val[1]  = vmovn_s32(inim32x4x4.val[1]);
-    outim16x4x4.val[2]  = vmovn_s32(inim32x4x4.val[2]);
-    outim16x4x4.val[3]  = vmovn_s32(inim32x4x4.val[3]);
-    vst4_s16(outre, outre16x4x4);
-    vst4_s16(outim, outim16x4x4);
-    outre += 16;
-    outim += 16;
-  }
-}
-
-static inline void PostShiftAndSeparateNeon(int16_t* inre,
-                                            int16_t* inim,
-                                            int16_t* outre,
-                                            int16_t* outim,
-                                            int32_t sh) {
-  int k;
-  int16_t* inre1 = inre;
-  int16_t* inre2 = &inre[FRAMESAMPLES/2 - 4];
-  int16_t* inim1 = inim;
-  int16_t* inim2 = &inim[FRAMESAMPLES/2 - 4];
-  int16_t* outre1 = outre;
-  int16_t* outre2 = &outre[FRAMESAMPLES/2 - 4];
-  int16_t* outim1 = outim;
-  int16_t* outim2 = &outim[FRAMESAMPLES/2 - 4];
-  const int16_t* kSinTab1 = &WebRtcIsacfix_kSinTab2[0];
-  const int16_t* kSinTab2 = &WebRtcIsacfix_kSinTab2[FRAMESAMPLES/4 -4];
-  // By vshl, we effectively did "<< (-sh - 23)", instead of "<< (-sh)",
-  // ">> 14" and then ">> 9" as in the C code.
-  int32x4_t shift = vdupq_n_s32(-sh - 23);
-
-  for (k = 0; k < FRAMESAMPLES/4; k += 4) {
-    int16x4_t tmpi = vld1_s16(kSinTab1);
-    kSinTab1 += 4;
-    int16x4_t tmpr = vld1_s16(kSinTab2);
-    kSinTab2 -= 4;
-    int16x4_t inre_0 = vld1_s16(inre1);
-    inre1 += 4;
-    int16x4_t inre_1 = vld1_s16(inre2);
-    inre2 -= 4;
-    int16x4_t inim_0 = vld1_s16(inim1);
-    inim1 += 4;
-    int16x4_t inim_1 = vld1_s16(inim2);
-    inim2 -= 4;
-    tmpr = vneg_s16(tmpr);
-    inre_1 = vrev64_s16(inre_1);
-    inim_1 = vrev64_s16(inim_1);
-    tmpr = vrev64_s16(tmpr);
-
-    int16x4_t xr = vqadd_s16(inre_0, inre_1);
-    int16x4_t xi = vqsub_s16(inim_0, inim_1);
-    int16x4_t yr = vqadd_s16(inim_0, inim_1);
-    int16x4_t yi = vqsub_s16(inre_1, inre_0);
-
-    int32x4_t outr0 = vmull_s16(tmpr, xr);
-    int32x4_t outi0 = vmull_s16(tmpi, xr);
-    int32x4_t outr1 = vmull_s16(tmpi, yr);
-    int32x4_t outi1 = vmull_s16(tmpi, yi);
-    outr0 = vmlsl_s16(outr0, tmpi, xi);
-    outi0 = vmlal_s16(outi0, tmpr, xi);
-    outr1 = vmlal_s16(outr1, tmpr, yi);
-    outi1 = vmlsl_s16(outi1, tmpr, yr);
-
-    outr0 = vshlq_s32(outr0, shift);
-    outi0 = vshlq_s32(outi0, shift);
-    outr1 = vshlq_s32(outr1, shift);
-    outi1 = vshlq_s32(outi1, shift);
-    outr1 = vnegq_s32(outr1);
-
-    int16x4_t outre_0  = vmovn_s32(outr0);
-    int16x4_t outim_0  = vmovn_s32(outi0);
-    int16x4_t outre_1  = vmovn_s32(outr1);
-    int16x4_t outim_1  = vmovn_s32(outi1);
-    outre_1 = vrev64_s16(outre_1);
-    outim_1 = vrev64_s16(outim_1);
-
-    vst1_s16(outre1, outre_0);
-    outre1 += 4;
-    vst1_s16(outim1, outim_0);
-    outim1 += 4;
-    vst1_s16(outre2, outre_1);
-    outre2 -= 4;
-    vst1_s16(outim2, outim_1);
-    outim2 -= 4;
-  }
-}
-
-void WebRtcIsacfix_Time2SpecNeon(int16_t* inre1Q9,
-                                 int16_t* inre2Q9,
-                                 int16_t* outreQ7,
-                                 int16_t* outimQ7) {
-  int32_t tmpreQ16[FRAMESAMPLES/2], tmpimQ16[FRAMESAMPLES/2];
-  int32_t max;
-  int32_t sh;
-
-  // Multiply with complex exponentials and combine into one complex vector.
-  // And find the maximum.
-  max = ComplexMulAndFindMaxNeon(inre1Q9, inre2Q9, tmpreQ16, tmpimQ16);
-
-  sh = (int32_t)WebRtcSpl_NormW32(max);
-  sh = sh - 24;
-
-  // If sh becomes >= 0, then we should shift sh steps to the left,
-  // and the domain will become Q(16 + sh).
-  // If sh becomes < 0, then we should shift -sh steps to the right,
-  // and the domain will become Q(16 + sh).
-  PreShiftW32toW16Neon(tmpreQ16, tmpimQ16, inre1Q9, inre2Q9, sh);
-
-  // Get DFT.
-  WebRtcIsacfix_FftRadix16Fastest(inre1Q9, inre2Q9, -1);
-
-  // If sh >= 0, shift sh steps to the right,
-  // If sh < 0, shift -sh steps to the left.
-  // Use symmetry to separate into two complex vectors
-  // and center frames in time around zero.
-  PostShiftAndSeparateNeon(inre1Q9, inre2Q9, outreQ7, outimQ7, sh);
-}
-
-static inline int32_t TransformAndFindMaxNeon(int16_t* inre,
-                                              int16_t* inim,
-                                              int32_t* outre,
-                                              int32_t* outim) {
-  int k;
-  int16_t* inre1 = inre;
-  int16_t* inre2 = &inre[FRAMESAMPLES/2 - 4];
-  int16_t* inim1 = inim;
-  int16_t* inim2 = &inim[FRAMESAMPLES/2 - 4];
-  int32_t* outre1 = outre;
-  int32_t* outre2 = &outre[FRAMESAMPLES/2 - 4];
-  int32_t* outim1 = outim;
-  int32_t* outim2 = &outim[FRAMESAMPLES/2 - 4];
-  const int16_t* kSinTab1 = &WebRtcIsacfix_kSinTab2[0];
-  const int16_t* kSinTab2 = &WebRtcIsacfix_kSinTab2[FRAMESAMPLES/4 - 4];
-  uint32x4_t max_r = vdupq_n_u32(0);
-  uint32x4_t max_i = vdupq_n_u32(0);
-
-  // Use ">> 5", instead of "<< 9" and then ">> 14" as in the C code.
-  for (k = 0; k < FRAMESAMPLES/4; k += 4) {
-    int16x4_t tmpi = vld1_s16(kSinTab1);
-    kSinTab1 += 4;
-    int16x4_t tmpr = vld1_s16(kSinTab2);
-    kSinTab2 -= 4;
-    int16x4_t inre_0 = vld1_s16(inre1);
-    inre1 += 4;
-    int16x4_t inre_1 = vld1_s16(inre2);
-    inre2 -= 4;
-    int16x4_t inim_0 = vld1_s16(inim1);
-    inim1 += 4;
-    int16x4_t inim_1 = vld1_s16(inim2);
-    inim2 -= 4;
-    tmpr = vneg_s16(tmpr);
-    inre_1 = vrev64_s16(inre_1);
-    inim_1 = vrev64_s16(inim_1);
-    tmpr = vrev64_s16(tmpr);
-
-    int32x4_t xr = vmull_s16(tmpr, inre_0);
-    int32x4_t xi = vmull_s16(tmpr, inim_0);
-    int32x4_t yr = vmull_s16(tmpr, inim_1);
-    int32x4_t yi = vmull_s16(tmpi, inim_1);
-    xr = vmlal_s16(xr, tmpi, inim_0);
-    xi = vmlsl_s16(xi, tmpi, inre_0);
-    yr = vmlal_s16(yr, tmpi, inre_1);
-    yi = vmlsl_s16(yi, tmpr, inre_1);
-    yr = vnegq_s32(yr);
-
-    xr = vshrq_n_s32(xr, 5);
-    xi = vshrq_n_s32(xi, 5);
-    yr = vshrq_n_s32(yr, 5);
-    yi = vshrq_n_s32(yi, 5);
-
-    int32x4_t outr0 = vsubq_s32(xr, yi);
-    int32x4_t outr1 = vaddq_s32(xr, yi);
-    int32x4_t outi0 = vaddq_s32(xi, yr);
-    int32x4_t outi1 = vsubq_s32(yr, xi);
-
-    // Find the absolute maximum in the vectors.
-    int32x4_t tmp0 = vabsq_s32(outr0);
-    int32x4_t tmp1 = vabsq_s32(outr1);
-    int32x4_t tmp2 = vabsq_s32(outi0);
-    int32x4_t tmp3 = vabsq_s32(outi1);
-    // vabs doesn't change the value of 0x80000000.
-    // Use u32 so we don't lose the value 0x80000000.
-    max_r = vmaxq_u32(max_r, vreinterpretq_u32_s32(tmp0));
-    max_i = vmaxq_u32(max_i, vreinterpretq_u32_s32(tmp2));
-    max_r = vmaxq_u32(max_r, vreinterpretq_u32_s32(tmp1));
-    max_i = vmaxq_u32(max_i, vreinterpretq_u32_s32(tmp3));
-
-    // Store the vectors.
-    outr1 = vrev64q_s32(outr1);
-    outi1 = vrev64q_s32(outi1);
-    int32x4_t outr_1 = vcombine_s32(vget_high_s32(outr1), vget_low_s32(outr1));
-    int32x4_t outi_1 = vcombine_s32(vget_high_s32(outi1), vget_low_s32(outi1));
-
-    vst1q_s32(outre1, outr0);
-    outre1 += 4;
-    vst1q_s32(outim1, outi0);
-    outim1 += 4;
-    vst1q_s32(outre2, outr_1);
-    outre2 -= 4;
-    vst1q_s32(outim2, outi_1);
-    outim2 -= 4;
-  }
-
-  max_r = vmaxq_u32(max_r, max_i);
-#if defined(WEBRTC_ARCH_ARM64)
-  uint32_t maximum = vmaxvq_u32(max_r);
-#else
-  uint32x2_t max32x2_r = vmax_u32(vget_low_u32(max_r), vget_high_u32(max_r));
-  max32x2_r = vpmax_u32(max32x2_r, max32x2_r);
-  uint32_t maximum = vget_lane_u32(max32x2_r, 0);
-#endif
-
-  return (int32_t)maximum;
-}
-
-static inline void PostShiftAndDivideAndDemodulateNeon(int16_t* inre,
-                                                       int16_t* inim,
-                                                       int32_t* outre1,
-                                                       int32_t* outre2,
-                                                       int32_t sh) {
-  int k;
-  int16_t* p_inre = inre;
-  int16_t* p_inim = inim;
-  int32_t* p_outre1 = outre1;
-  int32_t* p_outre2 = outre2;
-  const int16_t* kCosTab = &WebRtcIsacfix_kCosTab1[0];
-  const int16_t* kSinTab = &WebRtcIsacfix_kSinTab1[0];
-  int32x4_t shift = vdupq_n_s32(-sh - 16);
-  // Divide through by the normalizing constant:
-  // scale all values with 1/240, i.e. with 273 in Q16.
-  // 273/65536 ~= 0.0041656
-  // 1/240 ~= 0.0041666
-  int16x8_t scale = vdupq_n_s16(273);
-  // Sqrt(240) in Q11 is round(15.49193338482967 * 2048) = 31727.
-  int factQ19 = 31727 << 16;
-  int32x4_t fact = vdupq_n_s32(factQ19);
-
-  for (k = 0; k < FRAMESAMPLES/2; k += 8) {
-    int16x8_t inre16x8 = vld1q_s16(p_inre);
-    int16x8_t inim16x8 = vld1q_s16(p_inim);
-    p_inre += 8;
-    p_inim += 8;
-    int16x8_t tmpr = vld1q_s16(kCosTab);
-    int16x8_t tmpi = vld1q_s16(kSinTab);
-    kCosTab += 8;
-    kSinTab += 8;
-    // By vshl and vmull, we effectively did "<< (-sh - 16)",
-    // instead of "<< (-sh)" and ">> 16" as in the C code.
-    int32x4_t outre1_0 = vmull_s16(vget_low_s16(inre16x8), vget_low_s16(scale));
-    int32x4_t outre2_0 = vmull_s16(vget_low_s16(inim16x8), vget_low_s16(scale));
-#if defined(WEBRTC_ARCH_ARM64)
-    int32x4_t outre1_1 = vmull_high_s16(inre16x8, scale);
-    int32x4_t outre2_1 = vmull_high_s16(inim16x8, scale);
-#else
-    int32x4_t outre1_1 = vmull_s16(vget_high_s16(inre16x8),
-                                   vget_high_s16(scale));
-    int32x4_t outre2_1 = vmull_s16(vget_high_s16(inim16x8),
-                                   vget_high_s16(scale));
-#endif
-
-    outre1_0 = vshlq_s32(outre1_0, shift);
-    outre1_1 = vshlq_s32(outre1_1, shift);
-    outre2_0 = vshlq_s32(outre2_0, shift);
-    outre2_1 = vshlq_s32(outre2_1, shift);
-
-    // Demodulate and separate.
-    int32x4_t tmpr_0 = vmovl_s16(vget_low_s16(tmpr));
-    int32x4_t tmpi_0 = vmovl_s16(vget_low_s16(tmpi));
-#if defined(WEBRTC_ARCH_ARM64)
-    int32x4_t tmpr_1 = vmovl_high_s16(tmpr);
-    int32x4_t tmpi_1 = vmovl_high_s16(tmpi);
-#else
-    int32x4_t tmpr_1 = vmovl_s16(vget_high_s16(tmpr));
-    int32x4_t tmpi_1 = vmovl_s16(vget_high_s16(tmpi));
-#endif
-
-    int64x2_t xr0 = vmull_s32(vget_low_s32(tmpr_0), vget_low_s32(outre1_0));
-    int64x2_t xi0 = vmull_s32(vget_low_s32(tmpr_0), vget_low_s32(outre2_0));
-    int64x2_t xr2 = vmull_s32(vget_low_s32(tmpr_1), vget_low_s32(outre1_1));
-    int64x2_t xi2 = vmull_s32(vget_low_s32(tmpr_1), vget_low_s32(outre2_1));
-    xr0 = vmlsl_s32(xr0, vget_low_s32(tmpi_0), vget_low_s32(outre2_0));
-    xi0 = vmlal_s32(xi0, vget_low_s32(tmpi_0), vget_low_s32(outre1_0));
-    xr2 = vmlsl_s32(xr2, vget_low_s32(tmpi_1), vget_low_s32(outre2_1));
-    xi2 = vmlal_s32(xi2, vget_low_s32(tmpi_1), vget_low_s32(outre1_1));
-
-#if defined(WEBRTC_ARCH_ARM64)
-    int64x2_t xr1 = vmull_high_s32(tmpr_0, outre1_0);
-    int64x2_t xi1 = vmull_high_s32(tmpr_0, outre2_0);
-    int64x2_t xr3 = vmull_high_s32(tmpr_1, outre1_1);
-    int64x2_t xi3 = vmull_high_s32(tmpr_1, outre2_1);
-    xr1 = vmlsl_high_s32(xr1, tmpi_0, outre2_0);
-    xi1 = vmlal_high_s32(xi1, tmpi_0, outre1_0);
-    xr3 = vmlsl_high_s32(xr3, tmpi_1, outre2_1);
-    xi3 = vmlal_high_s32(xi3, tmpi_1, outre1_1);
-#else
-    int64x2_t xr1 = vmull_s32(vget_high_s32(tmpr_0), vget_high_s32(outre1_0));
-    int64x2_t xi1 = vmull_s32(vget_high_s32(tmpr_0), vget_high_s32(outre2_0));
-    int64x2_t xr3 = vmull_s32(vget_high_s32(tmpr_1), vget_high_s32(outre1_1));
-    int64x2_t xi3 = vmull_s32(vget_high_s32(tmpr_1), vget_high_s32(outre2_1));
-    xr1 = vmlsl_s32(xr1, vget_high_s32(tmpi_0), vget_high_s32(outre2_0));
-    xi1 = vmlal_s32(xi1, vget_high_s32(tmpi_0), vget_high_s32(outre1_0));
-    xr3 = vmlsl_s32(xr3, vget_high_s32(tmpi_1), vget_high_s32(outre2_1));
-    xi3 = vmlal_s32(xi3, vget_high_s32(tmpi_1), vget_high_s32(outre1_1));
-#endif
-
-    outre1_0 = vcombine_s32(vrshrn_n_s64(xr0, 10), vrshrn_n_s64(xr1, 10));
-    outre2_0 = vcombine_s32(vrshrn_n_s64(xi0, 10), vrshrn_n_s64(xi1, 10));
-    outre1_1 = vcombine_s32(vrshrn_n_s64(xr2, 10), vrshrn_n_s64(xr3, 10));
-    outre2_1 = vcombine_s32(vrshrn_n_s64(xi2, 10), vrshrn_n_s64(xi3, 10));
-    outre1_0 = vqdmulhq_s32(outre1_0, fact);
-    outre2_0 = vqdmulhq_s32(outre2_0, fact);
-    outre1_1 = vqdmulhq_s32(outre1_1, fact);
-    outre2_1 = vqdmulhq_s32(outre2_1, fact);
-
-    vst1q_s32(p_outre1, outre1_0);
-    p_outre1 += 4;
-    vst1q_s32(p_outre1, outre1_1);
-    p_outre1 += 4;
-    vst1q_s32(p_outre2, outre2_0);
-    p_outre2 += 4;
-    vst1q_s32(p_outre2, outre2_1);
-    p_outre2 += 4;
-  }
-}
-
-void WebRtcIsacfix_Spec2TimeNeon(int16_t* inreQ7,
-                                 int16_t* inimQ7,
-                                 int32_t* outre1Q16,
-                                 int32_t* outre2Q16) {
-  int32_t max;
-  int32_t sh;
-
-  max = TransformAndFindMaxNeon(inreQ7, inimQ7, outre1Q16, outre2Q16);
-
-
-  sh = (int32_t)WebRtcSpl_NormW32(max);
-  sh = sh - 24;
-  // If sh becomes >= 0, then we should shift sh steps to the left,
-  // and the domain will become Q(16 + sh).
-  // If sh becomes < 0, then we should shift -sh steps to the right,
-  // and the domain will become Q(16 + sh).
-
-  // "Fastest" vectors.
-  PreShiftW32toW16Neon(outre1Q16, outre2Q16, inreQ7, inimQ7, sh);
-
-  // Get IDFT.
-  WebRtcIsacfix_FftRadix16Fastest(inreQ7, inimQ7, 1);
-
-  PostShiftAndDivideAndDemodulateNeon(inreQ7, inimQ7, outre1Q16, outre2Q16, sh);
-}
diff --git a/modules/audio_coding/codecs/isac/fix/source/transform_tables.c b/modules/audio_coding/codecs/isac/fix/source/transform_tables.c
deleted file mode 100644
index e661eff..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/transform_tables.c
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- *  Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * This file contains trigonometric functions look-up tables used in
- * transform functions WebRtcIsacfix_Time2Spec and WebRtcIsacfix_Spec2Time.
- */
-
-#include <stdint.h>
-
-#include "modules/audio_coding/codecs/isac/fix/source/settings.h"
-
-/* Cosine table 1 in Q14. */
-const int16_t WebRtcIsacfix_kCosTab1[FRAMESAMPLES/2] = {
-  16384,  16383,  16378,  16371,  16362,  16349,  16333,  16315,  16294,  16270,
-  16244,  16214,  16182,  16147,  16110,  16069,  16026,  15980,  15931,  15880,
-  15826,  15769,  15709,  15647,  15582,  15515,  15444,  15371,  15296,  15218,
-  15137,  15053,  14968,  14879,  14788,  14694,  14598,  14500,  14399,  14295,
-  14189,  14081,  13970,  13856,  13741,  13623,  13502,  13380,  13255,  13128,
-  12998,  12867,  12733,  12597,  12458,  12318,  12176,  12031,  11885,  11736,
-  11585,  11433,  11278,  11121,  10963,  10803,  10641,  10477,  10311,  10143,
-  9974,   9803,   9630,   9456,   9280,   9102,   8923,   8743,   8561,   8377,
-  8192,   8006,   7818,   7629,   7438,   7246,   7053,   6859,   6664,   6467,
-  6270,   6071,   5872,   5671,   5469,   5266,   5063,   4859,   4653,   4447,
-  4240,   4033,   3825,   3616,   3406,   3196,   2986,   2775,   2563,   2351,
-  2139,   1926,   1713,   1499,   1285,   1072,    857,    643,    429,    214,
-  0,   -214,   -429,   -643,   -857,  -1072,  -1285,  -1499,  -1713,  -1926,
-  -2139,  -2351,  -2563,  -2775,  -2986,  -3196,  -3406,  -3616,  -3825,  -4033,
-  -4240,  -4447,  -4653,  -4859,  -5063,  -5266,  -5469,  -5671,  -5872,  -6071,
-  -6270,  -6467,  -6664,  -6859,  -7053,  -7246,  -7438,  -7629,  -7818,  -8006,
-  -8192,  -8377,  -8561,  -8743,  -8923,  -9102,  -9280,  -9456,  -9630,  -9803,
-  -9974, -10143, -10311, -10477, -10641, -10803, -10963, -11121, -11278, -11433,
-  -11585, -11736, -11885, -12031, -12176, -12318, -12458, -12597, -12733,
-  -12867, -12998, -13128, -13255, -13380, -13502, -13623, -13741, -13856,
-  -13970, -14081, -14189, -14295, -14399, -14500, -14598, -14694, -14788,
-  -14879, -14968, -15053, -15137, -15218, -15296, -15371, -15444, -15515,
-  -15582, -15647, -15709, -15769, -15826, -15880, -15931, -15980, -16026,
-  -16069, -16110, -16147, -16182, -16214, -16244, -16270, -16294, -16315,
-  -16333, -16349, -16362, -16371, -16378, -16383
-};
-
-/* Sine table 1 in Q14. */
-const int16_t WebRtcIsacfix_kSinTab1[FRAMESAMPLES/2] = {
-  0,   214,   429,   643,   857,  1072,  1285,  1499,  1713,  1926,
-  2139,  2351,  2563,  2775,  2986,  3196,  3406,  3616,  3825,  4033,
-  4240,  4447,  4653,  4859,  5063,  5266,  5469,  5671,  5872,  6071,
-  6270,  6467,  6664,  6859,  7053,  7246,  7438,  7629,  7818,  8006,
-  8192,  8377,  8561,  8743,  8923,  9102,  9280,  9456,  9630,  9803,
-  9974, 10143, 10311, 10477, 10641, 10803, 10963, 11121, 11278, 11433,
-  11585, 11736, 11885, 12031, 12176, 12318, 12458, 12597, 12733, 12867,
-  12998, 13128, 13255, 13380, 13502, 13623, 13741, 13856, 13970, 14081,
-  14189, 14295, 14399, 14500, 14598, 14694, 14788, 14879, 14968, 15053,
-  15137, 15218, 15296, 15371, 15444, 15515, 15582, 15647, 15709, 15769,
-  15826, 15880, 15931, 15980, 16026, 16069, 16110, 16147, 16182, 16214,
-  16244, 16270, 16294, 16315, 16333, 16349, 16362, 16371, 16378, 16383,
-  16384, 16383, 16378, 16371, 16362, 16349, 16333, 16315, 16294, 16270,
-  16244, 16214, 16182, 16147, 16110, 16069, 16026, 15980, 15931, 15880,
-  15826, 15769, 15709, 15647, 15582, 15515, 15444, 15371, 15296, 15218,
-  15137, 15053, 14968, 14879, 14788, 14694, 14598, 14500, 14399, 14295,
-  14189, 14081, 13970, 13856, 13741, 13623, 13502, 13380, 13255, 13128,
-  12998, 12867, 12733, 12597, 12458, 12318, 12176, 12031, 11885, 11736,
-  11585, 11433, 11278, 11121, 10963, 10803, 10641, 10477, 10311, 10143,
-  9974,  9803,  9630,  9456,  9280,  9102,  8923,  8743,  8561,  8377,
-  8192,  8006,  7818,  7629,  7438,  7246,  7053,  6859,  6664,  6467,
-  6270,  6071,  5872,  5671,  5469,  5266,  5063,  4859,  4653,  4447,
-  4240,  4033,  3825,  3616,  3406,  3196,  2986,  2775,  2563,  2351,
-  2139,  1926,  1713,  1499,  1285,  1072,   857,   643,   429,   214
-};
-
-
-/* Sine table 2 in Q14. */
-const int16_t WebRtcIsacfix_kSinTab2[FRAMESAMPLES/4] = {
-  16384, -16381, 16375, -16367, 16356, -16342, 16325, -16305, 16283, -16257,
-  16229, -16199, 16165, -16129, 16090, -16048, 16003, -15956, 15906, -15853,
-  15798, -15739, 15679, -15615, 15549, -15480, 15408, -15334, 15257, -15178,
-  15095, -15011, 14924, -14834, 14741, -14647, 14549, -14449, 14347, -14242,
-  14135, -14025, 13913, -13799, 13682, -13563, 13441, -13318, 13192, -13063,
-  12933, -12800, 12665, -12528, 12389, -12247, 12104, -11958, 11810, -11661,
-  11509, -11356, 11200, -11042, 10883, -10722, 10559, -10394, 10227, -10059,
-  9889,  -9717,  9543,  -9368,  9191,  -9013,  8833,  -8652,  8469,  -8285,
-  8099,  -7912,  7723,  -7534,  7342,  -7150,  6957,  -6762,  6566,  -6369,
-  6171,  -5971,  5771,  -5570,  5368,  -5165,  4961,  -4756,  4550,  -4344,
-  4137,  -3929,  3720,  -3511,  3301,  -3091,  2880,  -2669,  2457,  -2245,
-  2032,  -1819,  1606,  -1392,  1179,   -965,   750,   -536,   322,   -107
-};
-
-#if defined(MIPS32_LE)
-/* Cosine table 2 in Q14. Used only on MIPS platforms. */
-const int16_t WebRtcIsacfix_kCosTab2[FRAMESAMPLES/4] = {
-  107,   -322,   536,   -750,   965,  -1179,  1392,  -1606,  1819,  -2032,
-  2245,  -2457,  2669,  -2880,  3091,  -3301,  3511,  -3720,  3929,  -4137,
-  4344,  -4550,  4756,  -4961,  5165,  -5368,  5570,  -5771,  5971,  -6171,
-  6369,  -6566,  6762,  -6957,  7150,  -7342,  7534,  -7723,  7912,  -8099,
-  8285,  -8469,  8652,  -8833,  9013,  -9191,  9368,  -9543,  9717,  -9889,
-  10059, -10227, 10394, -10559, 10722, -10883, 11042, -11200, 11356, -11509,
-  11661, -11810, 11958, -12104, 12247, -12389, 12528, -12665, 12800, -12933,
-  13063, -13192, 13318, -13441, 13563, -13682, 13799, -13913, 14025, -14135,
-  14242, -14347, 14449, -14549, 14647, -14741, 14834, -14924, 15011, -15095,
-  15178, -15257, 15334, -15408, 15480, -15549, 15615, -15679, 15739, -15798,
-  15853, -15906, 15956, -16003, 16048, -16090, 16129, -16165, 16199, -16229,
-  16257, -16283, 16305, -16325, 16342, -16356, 16367, -16375, 16381, -16384
-};
-#endif
diff --git a/modules/audio_coding/codecs/isac/fix/source/transform_unittest.cc b/modules/audio_coding/codecs/isac/fix/source/transform_unittest.cc
deleted file mode 100644
index 433ec53..0000000
--- a/modules/audio_coding/codecs/isac/fix/source/transform_unittest.cc
+++ /dev/null
@@ -1,199 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "modules/audio_coding/codecs/isac/fix/source/codec.h"
-#include "system_wrappers/include/cpu_features_wrapper.h"
-#include "test/gtest.h"
-
-static const int kSamples = FRAMESAMPLES / 2;
-static const int32_t spec2time_out_expected_1[kSamples] = {
-    -3366470, -2285227, -3415765,  -2310215, -3118030,  -2222470, -3030254,
-    -2192091, -3423170, -2216041,  -3305541, -2171936,  -3195767, -2095779,
-    -3153304, -2157560, -3071167,  -2032108, -3101190,  -1972016, -3103824,
-    -2089118, -3139811, -1898337,  -3102801, -2055082,  -3029665, -1854140,
-    -2962586, -1966454, -3071167,  -1894588, -2851743,  -1917315, -2848087,
-    -1594932, -2799242, -1462184,  -2845887, -1437599,  -2691776, -1329637,
-    -2770659, -1268491, -2625161,  -1578991, -2460299,  -1186385, -2365613,
-    -1039354, -2322608, -958518,   -2271749, -789860,   -2254538, -850308,
-    -2384436, -850959,  -2133734,  -587678,  -2093316,  -495115,  -1973364,
-    -475177,  -1801282, -173507,   -1848516, -158015,   -1792018, -62648,
-    -1643313, 214746,   -1500758,  267077,   -1450193,  560521,   -1521579,
-    675283,   -1345408, 857559,    -1300822, 1116332,   -1294533, 1241117,
-    -1070027, 1263503,  -983816,   1529821,  -1019586,  1910421,  -955420,
-    2073688,  -836459,  2401105,   -653905,  2690474,   -731425,  2930131,
-    -935234,  3299500,  -875978,   3523432,  -878906,   3924822,  -1081630,
-    4561267,  -1203023, 5105274,   -1510983, 6052762,   -2294646, 7021597,
-    -3108053, 8826736,  -4935222,  11678789, -8442713,  18725700, -21526692,
-    25420577, 19589811, -28108666, 12634054, -14483066, 6263217,  -9979706,
-    3665661,  -7909736, 2531530,   -6434896, 1700772,   -5525393, 1479473,
-    -4894262, 1231760,  -4353044,  1032940,  -3786590,  941152,   -3331614,
-    665090,   -2851619, 830696,    -2762201, 958007,    -2483118, 788233,
-    -2184965, 804825,   -1967306,  1007255,  -1862474,  920889,   -1457506,
-    755406,   -1405841, 890230,    -1302124, 1161599,   -701867,  1154163,
-    -1083366, 1204743,  -513581,   1547264,  -650636,   1493384,  -285543,
-    1771863,  -277906,  1841343,   -9078,    1751863,   230222,   1819578,
-    207170,   1978972,  398137,    2106468,  552155,    1997624,  685213,
-    2129520,  601078,   2238736,   944591,   2441879,   1194178,  2355280,
-    986124,   2393328,  1049005,   2417944,  1208368,   2489516,  1352023,
-    2572118,  1445283,  2856081,   1532997,  2742279,   1615877,  2915274,
-    1808036,  2856871,  1806936,   3241747,  1622461,   2978558,  1841297,
-    3010378,  1923666,  3271367,   2126700,  3070935,   1956958,  3107588,
-    2128405,  3288872,  2114911,   3315952,  2406651,   3344038,  2370199,
-    3368980,  2144361,  3305030,   2183803,  3401450,   2523102,  3405463,
-    2452475,  3463355,  2421678,   3551968,  2431949,   3477251,  2148125,
-    3244489,  2174090};
-static const int32_t spec2time_out_expected_2[kSamples] = {
-    1691694,   -2499988, -2035547,  1060469,   988634,    -2044502, -306271,
-    2041000,   201454,   -2289456,  93694,     2129427,   -369152,  -1887834,
-    860796,    2089102,  -929424,   -1673956,  1395291,   1785651,  -1619673,
-    -1380109,  1963449,  1093311,   -2111007,  -840456,   2372786,  578119,
-    -2242702,  89774,    2463304,   -132717,   -2121480,  643634,   2277636,
-    -1125999,  -1995858, 1543748,   2227861,   -1483779,  -1495491, 2102642,
-    1833876,   -1920568, -958378,   2485101,   772261,    -2454257, -24942,
-    2918714,   136838,   -2500453,  816118,    3039735,   -746560,  -2365815,
-    1586396,   2714951,  -1511696,  -1942334,  2571792,   2182827,  -2325335,
-    -1311543,  3055970,  1367220,   -2737182,  -110626,   3889222,  631008,
-    -3280879,  853066,   4122279,   -706638,   -3334449,  2148311,  3993512,
-    -1846301,  -3004894, 3426779,   3329522,   -3165264,  -2242423, 4756866,
-    2557711,   -4131280, -805259,   5702711,   1120592,   -4852821, 743664,
-    6476444,   -621186,  -5465828,  2815787,   6768835,   -3017442, -5338409,
-    5658126,   6838454,  -5492288,  -4682382,  8874947,   6153814,  -8832561,
-    -2649251,  12817398, 4237692,   -13000247, 1190661,   18986363, -115738,
-    -19693978, 9908367,  30660381,  -10632635, -37962068, 47022884, 89744622,
-    -42087632, 40279224, -88869341, -47542383, 38572364,  10441576, -30339718,
-    -9926740,  19896578, 28009,     -18886612, -1124047,  13232498, -4150304,
-    -12770551, 2637074,  9051831,   -6162211,  -8713972,  4557937,  5489716,
-    -6862312,  -5532349, 5415449,   2791310,   -6999367,  -2790102, 5375806,
-    546222,    -6486452, -821261,   4994973,   -1278840,  -5645501, 1060484,
-    3996285,   -2503954, -4653629,  2220549,   3036977,   -3282133, -3318585,
-    2780636,   1789880,  -4004589,  -2041031,  3105373,   574819,   -3992722,
-    -971004,   3001703,  -676739,   -3841508,  417284,    2897970,  -1427018,
-    -3058480,  1189948,  2210960,   -2268992,  -2603272,  1949785,  1576172,
-    -2720404,  -1891738, 2309456,   769178,    -2975646,  -707150,  2424652,
-    -88039,    -2966660, -65452,    2320780,   -957557,   -2798978, 744640,
-    1879794,   -1672081, -2365319,  1253309,   1366383,   -2204082, -1544367,
-    1801452,   613828,   -2531994,  -983847,   2064842,   118326,   -2613790,
-    -203220,   2219635,  -730341,   -2641861,  563557,    1765434,  -1329916,
-    -2272927,  1037138,  1266725,   -1939220,  -1588643,  1754528,  816552,
-    -2376303,  -1099167, 1864999,   122477,    -2422762,  -400027,  1889228,
-    -579916,   -2490353, 287139,    2011318,   -1176657,  -2502978, 812896,
-    1116502,   -1940211};
-static const int16_t time2spec_out_expected_1[kSamples] = {
-    20342, 23889, -10063, -9419, 3242,  7280,  -2012, -5029, 332,   4478,
-    -97,   -3244, -891,   3117,  773,   -2204, -1335, 2009,  1236,  -1469,
-    -1562, 1277,  1366,   -815,  -1619, 599,   1449,  -177,  -1507, 116,
-    1294,  263,   -1338,  -244,  1059,  553,   -1045, -549,  829,   826,
-    -731,  -755,  516,    909,   -427,  -853,  189,   1004,  -184,  -828,
-    -108,  888,   72,     -700,  -280,  717,   342,   -611,  -534,  601,
-    534,   -374,  -646,   399,   567,   -171,  -720,  234,   645,   -11,
-    -712,  -26,   593,    215,   -643,  -172,  536,   361,   -527,  -403,
-    388,   550,   -361,   -480,  208,   623,   -206,  -585,  41,    578,
-    12,    -504,  -182,   583,   218,   -437,  -339,  499,   263,   -354,
-    -450,  347,   456,    -193,  -524,  212,   475,   -74,   -566,  94,
-    511,   112,   -577,   -201,  408,   217,   -546,  -295,  338,   387,
-    -13,   4,     -46,    2,     -76,   103,   -83,   108,   -55,   100,
-    -150,  131,   -156,   141,   -171,  179,   -190,  128,   -227,  172,
-    -214,  215,   -189,   265,   -244,  322,   -335,  337,   -352,  358,
-    -368,  362,   -355,   366,   -381,  403,   -395,  411,   -392,  446,
-    -458,  504,   -449,   507,   -464,  452,   -491,  481,   -534,  486,
-    -516,  560,   -535,   525,   -537,  559,   -554,  570,   -616,  591,
-    -585,  627,   -509,   588,   -584,  547,   -610,  580,   -614,  635,
-    -620,  655,   -554,   546,   -591,  642,   -590,  660,   -656,  629,
-    -604,  620,   -580,   617,   -645,  648,   -573,  612,   -604,  584,
-    -571,  597,   -562,   627,   -550,  560,   -606,  529,   -584,  568,
-    -503,  532,   -463,   512,   -440,  399,   -457,  437,   -349,  278,
-    -317,  257,   -220,   163,   -8,    -61,   18,    -161,  367,   -1306};
-static const int16_t time2spec_out_expected_2[kSamples] = {
-    14283, -11552, -15335, 6626,  7554,  -2150, -6309, 1307,  4523,  -4,
-    -3908, -314,   3001,   914,   -2715, -1042, 2094,  1272,  -1715, -1399,
-    1263,  1508,   -1021,  -1534, 735,   1595,  -439,  -1447, 155,   1433,
-    22,    -1325,  -268,   1205,  424,   -1030, -608,  950,   643,   -733,
-    -787,  661,    861,    -502,  -888,  331,   852,   -144,  -849,  19,
-    833,   99,     -826,   -154,  771,   368,   -735,  -459,  645,   513,
-    -491,  -604,   431,    630,   -314,  -598,  183,   622,   -78,   -612,
-    -48,   641,    154,    -645,  -257,  610,   281,   -529,  -444,  450,
-    441,   -327,   -506,   274,   476,   -232,  -570,  117,   554,   -86,
-    -531,  -21,    572,    151,   -606,  -221,  496,   322,   -407,  -388,
-    407,   394,    -268,   -428,  280,   505,   -115,  -588,  19,    513,
-    -29,   -539,   -109,   468,   173,   -501,  -242,  442,   278,   -478,
-    -680,  656,    -659,   656,   -669,  602,   -688,  612,   -667,  612,
-    -642,  627,    -648,   653,   -676,  596,   -680,  655,   -649,  678,
-    -672,  587,    -608,   637,   -645,  637,   -620,  556,   -580,  553,
-    -635,  518,    -599,   583,   -501,  536,   -544,  473,   -552,  583,
-    -511,  541,    -532,   563,   -486,  461,   -453,  486,   -388,  424,
-    -416,  432,    -374,   399,   -462,  364,   -346,  293,   -329,  331,
-    -313,  281,    -247,   309,   -337,  241,   -190,  207,   -194,  179,
-    -163,  155,    -156,   117,   -135,  107,   -126,  29,    -22,   81,
-    -8,    17,     -61,    -10,   8,     -37,   80,    -44,   72,    -88,
-    65,    -89,    130,    -114,  181,   -215,  189,   -245,  260,   -288,
-    294,   -339,   344,    -396,  407,   -429,  438,   -439,  485,   -556,
-    629,   -612,   637,    -645,  661,   -737,  829,   -830,  831,   -1041};
-
-class TransformTest : public ::testing::Test {
- protected:
-  // Pass a function pointer to the Tester function.
-  void Time2SpecTester(Time2Spec Time2SpecFunction) {
-    // WebRtcIsacfix_Time2Spec functions hard coded the buffer lengths. It's a
-    // large buffer but we have to test it here.
-    int16_t data_in_1[kSamples] = {0};
-    int16_t data_in_2[kSamples] = {0};
-    int16_t data_out_1[kSamples] = {0};
-    int16_t data_out_2[kSamples] = {0};
-
-    for (int i = 0; i < kSamples; i++) {
-      data_in_1[i] = i * i + 1777;
-      data_in_2[i] = WEBRTC_SPL_WORD16_MAX / (i + 1) + 17;
-    }
-
-    Time2SpecFunction(data_in_1, data_in_2, data_out_1, data_out_2);
-
-    for (int i = 0; i < kSamples; i++) {
-      // We don't require bit-exact for ARM assembly code.
-      EXPECT_LE(abs(time2spec_out_expected_1[i] - data_out_1[i]), 1);
-      EXPECT_LE(abs(time2spec_out_expected_2[i] - data_out_2[i]), 1);
-    }
-  }
-
-  // Pass a function pointer to the Tester function.
-  void Spec2TimeTester(Spec2Time Spec2TimeFunction) {
-    // WebRtcIsacfix_Spec2Time functions hard coded the buffer lengths. It's a
-    // large buffer but we have to test it here.
-    int16_t data_in_1[kSamples] = {0};
-    int16_t data_in_2[kSamples] = {0};
-    int32_t data_out_1[kSamples] = {0};
-    int32_t data_out_2[kSamples] = {0};
-    for (int i = 0; i < kSamples; i++) {
-      data_in_1[i] = i * i + 1777;
-      data_in_2[i] = WEBRTC_SPL_WORD16_MAX / (i + 1) + 17;
-    }
-
-    Spec2TimeFunction(data_in_1, data_in_2, data_out_1, data_out_2);
-
-    for (int i = 0; i < kSamples; i++) {
-      // We don't require bit-exact for ARM assembly code.
-      EXPECT_LE(abs(spec2time_out_expected_1[i] - data_out_1[i]), 16);
-      EXPECT_LE(abs(spec2time_out_expected_2[i] - data_out_2[i]), 16);
-    }
-  }
-};
-
-TEST_F(TransformTest, Time2SpecTest) {
-  Time2SpecTester(WebRtcIsacfix_Time2SpecC);
-#if defined(WEBRTC_HAS_NEON)
-  Time2SpecTester(WebRtcIsacfix_Time2SpecNeon);
-#endif
-}
-
-TEST_F(TransformTest, Spec2TimeTest) {
-  Spec2TimeTester(WebRtcIsacfix_Spec2TimeC);
-#if defined(WEBRTC_HAS_NEON)
-  Spec2TimeTester(WebRtcIsacfix_Spec2TimeNeon);
-#endif
-}
diff --git a/modules/audio_coding/codecs/isac/fix/test/isac_speed_test.cc b/modules/audio_coding/codecs/isac/fix/test/isac_speed_test.cc
deleted file mode 100644
index 903ac64..0000000
--- a/modules/audio_coding/codecs/isac/fix/test/isac_speed_test.cc
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- *  Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "modules/audio_coding/codecs/isac/fix/include/isacfix.h"
-#include "modules/audio_coding/codecs/isac/fix/source/settings.h"
-#include "modules/audio_coding/codecs/tools/audio_codec_speed_test.h"
-#include "rtc_base/checks.h"
-
-using std::string;
-
-namespace webrtc {
-
-static const int kIsacBlockDurationMs = 30;
-static const int kIsacInputSamplingKhz = 16;
-static const int kIsacOutputSamplingKhz = 16;
-
-class IsacSpeedTest : public AudioCodecSpeedTest {
- protected:
-  IsacSpeedTest();
-  void SetUp() override;
-  void TearDown() override;
-  float EncodeABlock(int16_t* in_data,
-                     uint8_t* bit_stream,
-                     size_t max_bytes,
-                     size_t* encoded_bytes) override;
-  float DecodeABlock(const uint8_t* bit_stream,
-                     size_t encoded_bytes,
-                     int16_t* out_data) override;
-  ISACFIX_MainStruct* ISACFIX_main_inst_;
-};
-
-IsacSpeedTest::IsacSpeedTest()
-    : AudioCodecSpeedTest(kIsacBlockDurationMs,
-                          kIsacInputSamplingKhz,
-                          kIsacOutputSamplingKhz),
-      ISACFIX_main_inst_(NULL) {}
-
-void IsacSpeedTest::SetUp() {
-  AudioCodecSpeedTest::SetUp();
-
-  // Check whether the allocated buffer for the bit stream is large enough.
-  EXPECT_GE(max_bytes_, static_cast<size_t>(STREAM_MAXW16_60MS));
-
-  // Create encoder memory.
-  EXPECT_EQ(0, WebRtcIsacfix_Create(&ISACFIX_main_inst_));
-  EXPECT_EQ(0, WebRtcIsacfix_EncoderInit(ISACFIX_main_inst_, 1));
-  WebRtcIsacfix_DecoderInit(ISACFIX_main_inst_);
-  // Set bitrate and block length.
-  EXPECT_EQ(0, WebRtcIsacfix_Control(ISACFIX_main_inst_, bit_rate_,
-                                     block_duration_ms_));
-}
-
-void IsacSpeedTest::TearDown() {
-  AudioCodecSpeedTest::TearDown();
-  // Free memory.
-  EXPECT_EQ(0, WebRtcIsacfix_Free(ISACFIX_main_inst_));
-}
-
-float IsacSpeedTest::EncodeABlock(int16_t* in_data,
-                                  uint8_t* bit_stream,
-                                  size_t max_bytes,
-                                  size_t* encoded_bytes) {
-  // ISAC takes 10 ms everycall
-  const int subblocks = block_duration_ms_ / 10;
-  const int subblock_length = 10 * input_sampling_khz_;
-  int value = 0;
-
-  clock_t clocks = clock();
-  size_t pointer = 0;
-  for (int idx = 0; idx < subblocks; idx++, pointer += subblock_length) {
-    value =
-        WebRtcIsacfix_Encode(ISACFIX_main_inst_, &in_data[pointer], bit_stream);
-    if (idx == subblocks - 1)
-      EXPECT_GT(value, 0);
-    else
-      EXPECT_EQ(0, value);
-  }
-  clocks = clock() - clocks;
-  *encoded_bytes = static_cast<size_t>(value);
-  RTC_DCHECK_LE(*encoded_bytes, max_bytes);
-  return 1000.0 * clocks / CLOCKS_PER_SEC;
-}
-
-float IsacSpeedTest::DecodeABlock(const uint8_t* bit_stream,
-                                  size_t encoded_bytes,
-                                  int16_t* out_data) {
-  int value;
-  int16_t audio_type;
-  clock_t clocks = clock();
-  value = WebRtcIsacfix_Decode(ISACFIX_main_inst_, bit_stream, encoded_bytes,
-                               out_data, &audio_type);
-  clocks = clock() - clocks;
-  EXPECT_EQ(output_length_sample_, static_cast<size_t>(value));
-  return 1000.0 * clocks / CLOCKS_PER_SEC;
-}
-
-TEST_P(IsacSpeedTest, IsacEncodeDecodeTest) {
-  size_t kDurationSec = 400;  // Test audio length in second.
-  EncodeDecode(kDurationSec);
-}
-
-const coding_param param_set[] = {
-    std::make_tuple(1,
-                    32000,
-                    string("audio_coding/speech_mono_16kHz"),
-                    string("pcm"),
-                    true)};
-
-INSTANTIATE_TEST_SUITE_P(AllTest,
-                         IsacSpeedTest,
-                         ::testing::ValuesIn(param_set));
-
-}  // namespace webrtc
diff --git a/modules/audio_coding/codecs/isac/isac_webrtc_api_test.cc b/modules/audio_coding/codecs/isac/isac_webrtc_api_test.cc
deleted file mode 100644
index cafca75..0000000
--- a/modules/audio_coding/codecs/isac/isac_webrtc_api_test.cc
+++ /dev/null
@@ -1,346 +0,0 @@
-/*
- *  Copyright (c) 2020 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <array>
-#include <map>
-#include <memory>
-#include <vector>
-
-#include "absl/strings/string_view.h"
-#include "api/array_view.h"
-#include "api/audio_codecs/isac/audio_decoder_isac_fix.h"
-#include "api/audio_codecs/isac/audio_decoder_isac_float.h"
-#include "api/audio_codecs/isac/audio_encoder_isac_fix.h"
-#include "api/audio_codecs/isac/audio_encoder_isac_float.h"
-#include "modules/audio_coding/test/PCMFile.h"
-#include "rtc_base/checks.h"
-#include "rtc_base/strings/string_builder.h"
-#include "test/gtest.h"
-#include "test/testsupport/file_utils.h"
-
-namespace webrtc {
-namespace {
-
-constexpr int kPayloadType = 42;
-
-enum class IsacImpl { kFixed, kFloat };
-
-absl::string_view IsacImplToString(IsacImpl impl) {
-  switch (impl) {
-    case IsacImpl::kFixed:
-      return "fixed";
-    case IsacImpl::kFloat:
-      return "float";
-  }
-}
-
-std::unique_ptr<PCMFile> GetPcmTestFileReader(int sample_rate_hz) {
-  std::string filename;
-  switch (sample_rate_hz) {
-    case 16000:
-      filename = test::ResourcePath("audio_coding/testfile16kHz", "pcm");
-      break;
-    case 32000:
-      filename = test::ResourcePath("audio_coding/testfile32kHz", "pcm");
-      break;
-    default:
-      RTC_DCHECK_NOTREACHED()
-          << "No test file available for " << sample_rate_hz << " Hz.";
-  }
-  auto pcm_file = std::make_unique<PCMFile>();
-  pcm_file->ReadStereo(false);
-  pcm_file->Open(filename, sample_rate_hz, "rb", /*auto_rewind=*/true);
-  pcm_file->FastForward(/*num_10ms_blocks=*/100);  // Skip initial silence.
-  RTC_CHECK(!pcm_file->EndOfFile());
-  return pcm_file;
-}
-
-// Returns a view to the interleaved samples of an AudioFrame object.
-rtc::ArrayView<const int16_t> AudioFrameToView(const AudioFrame& audio_frame) {
-  return {audio_frame.data(),
-          audio_frame.samples_per_channel() * audio_frame.num_channels()};
-}
-
-std::unique_ptr<AudioEncoder> CreateEncoder(IsacImpl impl,
-                                            int sample_rate_hz,
-                                            int frame_size_ms,
-                                            int bitrate_bps) {
-  RTC_CHECK(sample_rate_hz == 16000 || sample_rate_hz == 32000);
-  RTC_CHECK(frame_size_ms == 30 || frame_size_ms == 60);
-  RTC_CHECK_GT(bitrate_bps, 0);
-  switch (impl) {
-    case IsacImpl::kFixed: {
-      AudioEncoderIsacFix::Config config;
-      config.bit_rate = bitrate_bps;
-      config.frame_size_ms = frame_size_ms;
-      RTC_CHECK_EQ(16000, sample_rate_hz);
-      return AudioEncoderIsacFix::MakeAudioEncoder(config, kPayloadType);
-    }
-    case IsacImpl::kFloat: {
-      AudioEncoderIsacFloat::Config config;
-      config.bit_rate = bitrate_bps;
-      config.frame_size_ms = frame_size_ms;
-      config.sample_rate_hz = sample_rate_hz;
-      return AudioEncoderIsacFloat::MakeAudioEncoder(config, kPayloadType);
-    }
-  }
-}
-
-std::unique_ptr<AudioDecoder> CreateDecoder(IsacImpl impl, int sample_rate_hz) {
-  RTC_CHECK(sample_rate_hz == 16000 || sample_rate_hz == 32000);
-  switch (impl) {
-    case IsacImpl::kFixed: {
-      webrtc::AudioDecoderIsacFix::Config config;
-      RTC_CHECK_EQ(16000, sample_rate_hz);
-      return webrtc::AudioDecoderIsacFix::MakeAudioDecoder(config);
-    }
-    case IsacImpl::kFloat: {
-      webrtc::AudioDecoderIsacFloat::Config config;
-      config.sample_rate_hz = sample_rate_hz;
-      return webrtc::AudioDecoderIsacFloat::MakeAudioDecoder(config);
-    }
-  }
-}
-
-struct EncoderTestParams {
-  IsacImpl impl;
-  int sample_rate_hz;
-  int frame_size_ms;
-};
-
-class EncoderTest : public testing::TestWithParam<EncoderTestParams> {
- protected:
-  EncoderTest() = default;
-  IsacImpl GetIsacImpl() const { return GetParam().impl; }
-  int GetSampleRateHz() const { return GetParam().sample_rate_hz; }
-  int GetFrameSizeMs() const { return GetParam().frame_size_ms; }
-};
-
-TEST_P(EncoderTest, TestConfig) {
-  for (int bitrate_bps : {10000, 21000, 32000}) {
-    SCOPED_TRACE(bitrate_bps);
-    auto encoder = CreateEncoder(GetIsacImpl(), GetSampleRateHz(),
-                                 GetFrameSizeMs(), bitrate_bps);
-    EXPECT_EQ(GetSampleRateHz(), encoder->SampleRateHz());
-    EXPECT_EQ(size_t{1}, encoder->NumChannels());
-    EXPECT_EQ(bitrate_bps, encoder->GetTargetBitrate());
-  }
-}
-
-// Encodes an input audio sequence with a low and a high target bitrate and
-// checks that the number of produces bytes in the first case is less than that
-// of the second case.
-TEST_P(EncoderTest, TestDifferentBitrates) {
-  auto pcm_file = GetPcmTestFileReader(GetSampleRateHz());
-  constexpr int kLowBps = 20000;
-  constexpr int kHighBps = 25000;
-  auto encoder_low = CreateEncoder(GetIsacImpl(), GetSampleRateHz(),
-                                   GetFrameSizeMs(), kLowBps);
-  auto encoder_high = CreateEncoder(GetIsacImpl(), GetSampleRateHz(),
-                                    GetFrameSizeMs(), kHighBps);
-  int num_bytes_low = 0;
-  int num_bytes_high = 0;
-  constexpr int kNumFrames = 12;
-  for (int i = 0; i < kNumFrames; ++i) {
-    AudioFrame in;
-    pcm_file->Read10MsData(in);
-    rtc::Buffer low, high;
-    encoder_low->Encode(/*rtp_timestamp=*/0, AudioFrameToView(in), &low);
-    encoder_high->Encode(/*rtp_timestamp=*/0, AudioFrameToView(in), &high);
-    num_bytes_low += low.size();
-    num_bytes_high += high.size();
-  }
-  EXPECT_LT(num_bytes_low, num_bytes_high);
-}
-
-// Encodes an input audio sequence first with a low, then with a high target
-// bitrate *using the same encoder* and checks that the number of emitted bytes
-// in the first case is less than in the second case.
-TEST_P(EncoderTest, TestDynamicBitrateChange) {
-  constexpr int kLowBps = 20000;
-  constexpr int kHighBps = 25000;
-  constexpr int kStartBps = 30000;
-  auto encoder = CreateEncoder(GetIsacImpl(), GetSampleRateHz(),
-                               GetFrameSizeMs(), kStartBps);
-  std::map<int, int> num_bytes;
-  constexpr int kNumFrames = 200;  // 2 seconds.
-  for (int bitrate_bps : {kLowBps, kHighBps}) {
-    auto pcm_file = GetPcmTestFileReader(GetSampleRateHz());
-    encoder->OnReceivedTargetAudioBitrate(bitrate_bps);
-    for (int i = 0; i < kNumFrames; ++i) {
-      AudioFrame in;
-      pcm_file->Read10MsData(in);
-      rtc::Buffer buf;
-      encoder->Encode(/*rtp_timestamp=*/0, AudioFrameToView(in), &buf);
-      num_bytes[bitrate_bps] += buf.size();
-    }
-  }
-  // kHighBps / kLowBps == 1.25, so require the high-bitrate run to produce at
-  // least 1.195 times the number of bytes.
-  EXPECT_LT(1.195 * num_bytes[kLowBps], num_bytes[kHighBps]);
-}
-
-// Checks that, given a target bitrate, the encoder does not overshoot too much.
-TEST_P(EncoderTest, DoNotOvershootTargetBitrate) {
-  for (int bitrate_bps : {10000, 15000, 20000, 26000, 32000}) {
-    SCOPED_TRACE(bitrate_bps);
-    auto pcm_file = GetPcmTestFileReader(GetSampleRateHz());
-    auto e = CreateEncoder(GetIsacImpl(), GetSampleRateHz(), GetFrameSizeMs(),
-                           bitrate_bps);
-    int num_bytes = 0;
-    constexpr int kNumFrames = 200;  // 2 seconds.
-    for (int i = 0; i < kNumFrames; ++i) {
-      AudioFrame in;
-      pcm_file->Read10MsData(in);
-      rtc::Buffer encoded;
-      e->Encode(/*rtp_timestamp=*/0, AudioFrameToView(in), &encoded);
-      num_bytes += encoded.size();
-    }
-    // Inverse of the duration of `kNumFrames` 10 ms frames (unit: seconds^-1).
-    constexpr float kAudioDurationInv = 100.f / kNumFrames;
-    const int measured_bitrate_bps = 8 * num_bytes * kAudioDurationInv;
-    EXPECT_LT(measured_bitrate_bps, bitrate_bps + 2250);  // Max 2250 bps extra.
-  }
-}
-
-// Creates tests for different encoder configurations and implementations.
-INSTANTIATE_TEST_SUITE_P(
-    IsacApiTest,
-    EncoderTest,
-    ::testing::ValuesIn([] {
-      std::vector<EncoderTestParams> cases;
-      for (IsacImpl impl : {IsacImpl::kFloat, IsacImpl::kFixed}) {
-        for (int frame_size_ms : {30, 60}) {
-          cases.push_back({impl, 16000, frame_size_ms});
-        }
-      }
-      cases.push_back({IsacImpl::kFloat, 32000, 30});
-      return cases;
-    }()),
-    [](const ::testing::TestParamInfo<EncoderTestParams>& info) {
-      rtc::StringBuilder b;
-      const auto& p = info.param;
-      b << IsacImplToString(p.impl) << "_" << p.sample_rate_hz << "_"
-        << p.frame_size_ms;
-      return b.Release();
-    });
-
-struct DecoderTestParams {
-  IsacImpl impl;
-  int sample_rate_hz;
-};
-
-class DecoderTest : public testing::TestWithParam<DecoderTestParams> {
- protected:
-  DecoderTest() = default;
-  IsacImpl GetIsacImpl() const { return GetParam().impl; }
-  int GetSampleRateHz() const { return GetParam().sample_rate_hz; }
-};
-
-TEST_P(DecoderTest, TestConfig) {
-  auto decoder = CreateDecoder(GetIsacImpl(), GetSampleRateHz());
-  EXPECT_EQ(GetSampleRateHz(), decoder->SampleRateHz());
-  EXPECT_EQ(size_t{1}, decoder->Channels());
-}
-
-// Creates tests for different decoder configurations and implementations.
-INSTANTIATE_TEST_SUITE_P(
-    IsacApiTest,
-    DecoderTest,
-    ::testing::ValuesIn({DecoderTestParams{IsacImpl::kFixed, 16000},
-                         DecoderTestParams{IsacImpl::kFloat, 16000},
-                         DecoderTestParams{IsacImpl::kFloat, 32000}}),
-    [](const ::testing::TestParamInfo<DecoderTestParams>& info) {
-      const auto& p = info.param;
-      return (rtc::StringBuilder()
-              << IsacImplToString(p.impl) << "_" << p.sample_rate_hz)
-          .Release();
-    });
-
-struct EncoderDecoderPairTestParams {
-  int sample_rate_hz;
-  int frame_size_ms;
-  IsacImpl encoder_impl;
-  IsacImpl decoder_impl;
-};
-
-class EncoderDecoderPairTest
-    : public testing::TestWithParam<EncoderDecoderPairTestParams> {
- protected:
-  EncoderDecoderPairTest() = default;
-  int GetSampleRateHz() const { return GetParam().sample_rate_hz; }
-  int GetEncoderFrameSizeMs() const { return GetParam().frame_size_ms; }
-  IsacImpl GetEncoderIsacImpl() const { return GetParam().encoder_impl; }
-  IsacImpl GetDecoderIsacImpl() const { return GetParam().decoder_impl; }
-  int GetEncoderFrameSize() const {
-    return GetEncoderFrameSizeMs() * GetSampleRateHz() / 1000;
-  }
-};
-
-// Checks that the number of encoded and decoded samples match.
-TEST_P(EncoderDecoderPairTest, EncodeDecode) {
-  auto pcm_file = GetPcmTestFileReader(GetSampleRateHz());
-  auto encoder = CreateEncoder(GetEncoderIsacImpl(), GetSampleRateHz(),
-                               GetEncoderFrameSizeMs(), /*bitrate_bps=*/20000);
-  auto decoder = CreateDecoder(GetDecoderIsacImpl(), GetSampleRateHz());
-  const int encoder_frame_size = GetEncoderFrameSize();
-  std::vector<int16_t> out(encoder_frame_size);
-  size_t num_encoded_samples = 0;
-  size_t num_decoded_samples = 0;
-  constexpr int kNumFrames = 12;
-  for (int i = 0; i < kNumFrames; ++i) {
-    AudioFrame in;
-    pcm_file->Read10MsData(in);
-    rtc::Buffer encoded;
-    encoder->Encode(/*rtp_timestamp=*/0, AudioFrameToView(in), &encoded);
-    num_encoded_samples += in.samples_per_channel();
-    if (encoded.empty()) {
-      continue;
-    }
-    // Decode.
-    const std::vector<AudioDecoder::ParseResult> parse_result =
-        decoder->ParsePayload(std::move(encoded), /*timestamp=*/0);
-    EXPECT_EQ(parse_result.size(), size_t{1});
-    auto decode_result = parse_result[0].frame->Decode(out);
-    EXPECT_TRUE(decode_result.has_value());
-    EXPECT_EQ(out.size(), decode_result->num_decoded_samples);
-    num_decoded_samples += decode_result->num_decoded_samples;
-  }
-  EXPECT_EQ(num_encoded_samples, num_decoded_samples);
-}
-
-// Creates tests for different encoder frame sizes and different
-// encoder/decoder implementations.
-INSTANTIATE_TEST_SUITE_P(
-    IsacApiTest,
-    EncoderDecoderPairTest,
-    ::testing::ValuesIn([] {
-      std::vector<EncoderDecoderPairTestParams> cases;
-      for (int frame_size_ms : {30, 60}) {
-        for (IsacImpl enc : {IsacImpl::kFloat, IsacImpl::kFixed}) {
-          for (IsacImpl dec : {IsacImpl::kFloat, IsacImpl::kFixed}) {
-            cases.push_back({16000, frame_size_ms, enc, dec});
-          }
-        }
-      }
-      cases.push_back({32000, 30, IsacImpl::kFloat, IsacImpl::kFloat});
-      return cases;
-    }()),
-    [](const ::testing::TestParamInfo<EncoderDecoderPairTestParams>& info) {
-      rtc::StringBuilder b;
-      const auto& p = info.param;
-      b << p.sample_rate_hz << "_" << p.frame_size_ms << "_"
-        << IsacImplToString(p.encoder_impl) << "_"
-        << IsacImplToString(p.decoder_impl);
-      return b.Release();
-    });
-
-}  // namespace
-}  // namespace webrtc
diff --git a/modules/audio_coding/codecs/isac/main/include/audio_decoder_isac.h b/modules/audio_coding/codecs/isac/main/include/audio_decoder_isac.h
deleted file mode 100644
index fae2f3d..0000000
--- a/modules/audio_coding/codecs/isac/main/include/audio_decoder_isac.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- *  Copyright (c) 2015 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_INCLUDE_AUDIO_DECODER_ISAC_H_
-#define MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_INCLUDE_AUDIO_DECODER_ISAC_H_
-
-#include "modules/audio_coding/codecs/isac/audio_decoder_isac_t.h"
-#include "modules/audio_coding/codecs/isac/main/source/isac_float_type.h"
-
-namespace webrtc {
-
-using AudioDecoderIsacFloatImpl = AudioDecoderIsacT<IsacFloat>;
-
-}  // namespace webrtc
-#endif  // MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_INCLUDE_AUDIO_ENCODER_ISAC_H_
diff --git a/modules/audio_coding/codecs/isac/main/include/audio_encoder_isac.h b/modules/audio_coding/codecs/isac/main/include/audio_encoder_isac.h
deleted file mode 100644
index dc32bcd..0000000
--- a/modules/audio_coding/codecs/isac/main/include/audio_encoder_isac.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- *  Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_INCLUDE_AUDIO_ENCODER_ISAC_H_
-#define MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_INCLUDE_AUDIO_ENCODER_ISAC_H_
-
-#include "modules/audio_coding/codecs/isac/audio_encoder_isac_t.h"
-#include "modules/audio_coding/codecs/isac/main/source/isac_float_type.h"
-
-namespace webrtc {
-
-using AudioEncoderIsacFloatImpl = AudioEncoderIsacT<IsacFloat>;
-
-}  // namespace webrtc
-#endif  // MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_INCLUDE_AUDIO_ENCODER_ISAC_H_
diff --git a/modules/audio_coding/codecs/isac/main/include/isac.h b/modules/audio_coding/codecs/isac/main/include/isac.h
deleted file mode 100644
index 3b05a8b..0000000
--- a/modules/audio_coding/codecs/isac/main/include/isac.h
+++ /dev/null
@@ -1,617 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_INCLUDE_ISAC_H_
-#define MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_INCLUDE_ISAC_H_
-
-#include <stddef.h>
-
-#include "modules/audio_coding/codecs/isac/bandwidth_info.h"
-
-typedef struct WebRtcISACStruct ISACStruct;
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-/******************************************************************************
- * WebRtcIsac_Create(...)
- *
- * This function creates an ISAC instance, which will contain the state
- * information for one coding/decoding channel.
- *
- * Input:
- *        - *ISAC_main_inst   : a pointer to the coder instance.
- *
- * Return value               : 0 - Ok
- *                             -1 - Error
- */
-
-int16_t WebRtcIsac_Create(ISACStruct** ISAC_main_inst);
-
-/******************************************************************************
- * WebRtcIsac_Free(...)
- *
- * This function frees the ISAC instance created at the beginning.
- *
- * Input:
- *        - ISAC_main_inst    : an ISAC instance.
- *
- * Return value               : 0 - Ok
- *                             -1 - Error
- */
-
-int16_t WebRtcIsac_Free(ISACStruct* ISAC_main_inst);
-
-/******************************************************************************
- * WebRtcIsac_EncoderInit(...)
- *
- * This function initializes an ISAC instance prior to the encoder calls.
- *
- * Input:
- *        - ISAC_main_inst    : ISAC instance.
- *        - CodingMode        : 0 -> Bit rate and frame length are
- *                                automatically adjusted to available bandwidth
- *                                on transmission channel, just valid if codec
- *                                is created to work in wideband mode.
- *                              1 -> User sets a frame length and a target bit
- *                                rate which is taken as the maximum
- *                                short-term average bit rate.
- *
- * Return value               : 0 - Ok
- *                             -1 - Error
- */
-
-int16_t WebRtcIsac_EncoderInit(ISACStruct* ISAC_main_inst, int16_t CodingMode);
-
-/******************************************************************************
- * WebRtcIsac_Encode(...)
- *
- * This function encodes 10ms audio blocks and inserts it into a package.
- * Input speech length has 160 samples if operating at 16 kHz sampling
- * rate, or 320 if operating at 32 kHz sampling rate. The encoder buffers the
- * input audio until the whole frame is buffered then proceeds with encoding.
- *
- *
- * Input:
- *        - ISAC_main_inst    : ISAC instance.
- *        - speechIn          : input speech vector.
- *
- * Output:
- *        - encoded           : the encoded data vector
- *
- * Return value:
- *                            : >0 - Length (in bytes) of coded data
- *                            :  0 - The buffer didn't reach the chosen
- *                               frame-size so it keeps buffering speech
- *                               samples.
- *                            : -1 - Error
- */
-
-int WebRtcIsac_Encode(ISACStruct* ISAC_main_inst,
-                      const int16_t* speechIn,
-                      uint8_t* encoded);
-
-/******************************************************************************
- * WebRtcIsac_DecoderInit(...)
- *
- * This function initializes an ISAC instance prior to the decoder calls.
- *
- * Input:
- *        - ISAC_main_inst    : ISAC instance.
- */
-
-void WebRtcIsac_DecoderInit(ISACStruct* ISAC_main_inst);
-
-/******************************************************************************
- * WebRtcIsac_UpdateBwEstimate(...)
- *
- * This function updates the estimate of the bandwidth.
- *
- * Input:
- *        - ISAC_main_inst    : ISAC instance.
- *        - encoded           : encoded ISAC frame(s).
- *        - packet_size       : size of the packet.
- *        - rtp_seq_number    : the RTP number of the packet.
- *        - send_ts           : the RTP send timestamp, given in samples
- *        - arr_ts            : the arrival time of the packet (from NetEq)
- *                              in samples.
- *
- * Return value               : 0 - Ok
- *                             -1 - Error
- */
-
-int16_t WebRtcIsac_UpdateBwEstimate(ISACStruct* ISAC_main_inst,
-                                    const uint8_t* encoded,
-                                    size_t packet_size,
-                                    uint16_t rtp_seq_number,
-                                    uint32_t send_ts,
-                                    uint32_t arr_ts);
-
-/******************************************************************************
- * WebRtcIsac_Decode(...)
- *
- * This function decodes an ISAC frame. At 16 kHz sampling rate, the length
- * of the output audio could be either 480 or 960 samples, equivalent to
- * 30 or 60 ms respectively. At 32 kHz sampling rate, the length of the
- * output audio is 960 samples, which is 30 ms.
- *
- * Input:
- *        - ISAC_main_inst    : ISAC instance.
- *        - encoded           : encoded ISAC frame(s).
- *        - len               : bytes in encoded vector.
- *
- * Output:
- *        - decoded           : The decoded vector.
- *
- * Return value               : >0 - number of samples in decoded vector.
- *                              -1 - Error.
- */
-
-int WebRtcIsac_Decode(ISACStruct* ISAC_main_inst,
-                      const uint8_t* encoded,
-                      size_t len,
-                      int16_t* decoded,
-                      int16_t* speechType);
-
-/******************************************************************************
- * WebRtcIsac_DecodePlc(...)
- *
- * This function conducts PLC for ISAC frame(s). Output speech length
- * will be a multiple of frames, i.e. multiples of 30 ms audio. Therefore,
- * the output is multiple of 480 samples if operating at 16 kHz and multiple
- * of 960 if operating at 32 kHz.
- *
- * Input:
- *        - ISAC_main_inst    : ISAC instance.
- *        - noOfLostFrames    : Number of PLC frames to produce.
- *
- * Output:
- *        - decoded           : The decoded vector.
- *
- * Return value               : Number of samples in decoded PLC vector
- */
-
-size_t WebRtcIsac_DecodePlc(ISACStruct* ISAC_main_inst,
-                            int16_t* decoded,
-                            size_t noOfLostFrames);
-
-/******************************************************************************
- * WebRtcIsac_Control(...)
- *
- * This function sets the limit on the short-term average bit-rate and the
- * frame length. Should be used only in Instantaneous mode. At 16 kHz sampling
- * rate, an average bit-rate between 10000 to 32000 bps is valid and a
- * frame-size of 30 or 60 ms is acceptable. At 32 kHz, an average bit-rate
- * between 10000 to 56000 is acceptable, and the valid frame-size is 30 ms.
- *
- * Input:
- *        - ISAC_main_inst    : ISAC instance.
- *        - rate              : limit on the short-term average bit rate,
- *                              in bits/second.
- *        - framesize         : frame-size in millisecond.
- *
- * Return value               : 0  - ok
- *                             -1 - Error
- */
-
-int16_t WebRtcIsac_Control(ISACStruct* ISAC_main_inst,
-                           int32_t rate,
-                           int framesize);
-
-void WebRtcIsac_SetInitialBweBottleneck(ISACStruct* ISAC_main_inst,
-                                        int bottleneck_bits_per_second);
-
-/******************************************************************************
- * WebRtcIsac_ControlBwe(...)
- *
- * This function sets the initial values of bottleneck and frame-size if
- * iSAC is used in channel-adaptive mode. Therefore, this API is not
- * applicable if the codec is created to operate in super-wideband mode.
- *
- * Through this API, users can enforce a frame-size for all values of
- * bottleneck. Then iSAC will not automatically change the frame-size.
- *
- *
- * Input:
- *        - ISAC_main_inst    : ISAC instance.
- *        - rateBPS           : initial value of bottleneck in bits/second
- *                              10000 <= rateBPS <= 56000 is accepted
- *                              For default bottleneck set rateBPS = 0
- *        - frameSizeMs       : number of milliseconds per frame (30 or 60)
- *        - enforceFrameSize  : 1 to enforce the given frame-size through
- *                              out the adaptation process, 0 to let iSAC
- *                              change the frame-size if required.
- *
- * Return value               : 0  - ok
- *                             -1 - Error
- */
-
-int16_t WebRtcIsac_ControlBwe(ISACStruct* ISAC_main_inst,
-                              int32_t rateBPS,
-                              int frameSizeMs,
-                              int16_t enforceFrameSize);
-
-/******************************************************************************
- * WebRtcIsac_ReadFrameLen(...)
- *
- * This function returns the length of the frame represented in the packet.
- *
- * Input:
- *        - encoded           : Encoded bit-stream
- *
- * Output:
- *        - frameLength       : Length of frame in packet (in samples)
- *
- */
-
-int16_t WebRtcIsac_ReadFrameLen(const ISACStruct* ISAC_main_inst,
-                                const uint8_t* encoded,
-                                int16_t* frameLength);
-
-/******************************************************************************
- * WebRtcIsac_version(...)
- *
- * This function returns the version number.
- *
- * Output:
- *        - version      : Pointer to character string
- *
- */
-
-void WebRtcIsac_version(char* version);
-
-/******************************************************************************
- * WebRtcIsac_GetErrorCode(...)
- *
- * This function can be used to check the error code of an iSAC instance. When
- * a function returns -1 a error code will be set for that instance. The
- * function below extract the code of the last error that occurred in the
- * specified instance.
- *
- * Input:
- *        - ISAC_main_inst    : ISAC instance
- *
- * Return value               : Error code
- */
-
-int16_t WebRtcIsac_GetErrorCode(ISACStruct* ISAC_main_inst);
-
-/****************************************************************************
- * WebRtcIsac_GetUplinkBw(...)
- *
- * This function outputs the target bottleneck of the codec. In
- * channel-adaptive mode, the target bottleneck is specified through in-band
- * signalling retreived by bandwidth estimator.
- * In channel-independent, also called instantaneous mode, the target
- * bottleneck is provided to the encoder by calling xxx_control(...). If
- * xxx_control is never called the default values is returned. The default
- * value for bottleneck at 16 kHz encoder sampling rate is 32000 bits/sec,
- * and it is 56000 bits/sec for 32 kHz sampling rate.
- * Note that the output is the iSAC internal operating bottleneck which might
- * differ slightly from the one provided through xxx_control().
- *
- * Input:
- *        - ISAC_main_inst    : iSAC instance
- *
- * Output:
- *        - *bottleneck       : bottleneck in bits/sec
- *
- * Return value               : -1 if error happens
- *                               0 bit-rates computed correctly.
- */
-
-int16_t WebRtcIsac_GetUplinkBw(ISACStruct* ISAC_main_inst, int32_t* bottleneck);
-
-/******************************************************************************
- * WebRtcIsac_SetMaxPayloadSize(...)
- *
- * This function sets a limit for the maximum payload size of iSAC. The same
- * value is used both for 30 and 60 ms packets. If the encoder sampling rate
- * is 16 kHz the maximum payload size is between 120 and 400 bytes. If the
- * encoder sampling rate is 32 kHz the maximum payload size is between 120
- * and 600 bytes.
- *
- * If an out of range limit is used, the function returns -1, but the closest
- * valid value will be applied.
- *
- * ---------------
- * IMPORTANT NOTES
- * ---------------
- * The size of a packet is limited to the minimum of 'max-payload-size' and
- * 'max-rate.' For instance, let's assume the max-payload-size is set to
- * 170 bytes, and max-rate is set to 40 kbps. Note that a limit of 40 kbps
- * translates to 150 bytes for 30ms frame-size & 300 bytes for 60ms
- * frame-size. Then a packet with a frame-size of 30 ms is limited to 150,
- * i.e. min(170, 150), and a packet with 60 ms frame-size is limited to
- * 170 bytes, i.e. min(170, 300).
- *
- * Input:
- *        - ISAC_main_inst    : iSAC instance
- *        - maxPayloadBytes   : maximum size of the payload in bytes
- *                              valid values are between 120 and 400 bytes
- *                              if encoder sampling rate is 16 kHz. For
- *                              32 kHz encoder sampling rate valid values
- *                              are between 120 and 600 bytes.
- *
- * Return value               : 0 if successful
- *                             -1 if error happens
- */
-
-int16_t WebRtcIsac_SetMaxPayloadSize(ISACStruct* ISAC_main_inst,
-                                     int16_t maxPayloadBytes);
-
-/******************************************************************************
- * WebRtcIsac_SetMaxRate(...)
- *
- * This function sets the maximum rate which the codec may not exceed for
- * any signal packet. The maximum rate is defined and payload-size per
- * frame-size in bits per second.
- *
- * The codec has a maximum rate of 53400 bits per second (200 bytes per 30
- * ms) if the encoder sampling rate is 16kHz, and 160 kbps (600 bytes/30 ms)
- * if the encoder sampling rate is 32 kHz.
- *
- * It is possible to set a maximum rate between 32000 and 53400 bits/sec
- * in wideband mode, and 32000 to 160000 bits/sec in super-wideband mode.
- *
- * If an out of range limit is used, the function returns -1, but the closest
- * valid value will be applied.
- *
- * ---------------
- * IMPORTANT NOTES
- * ---------------
- * The size of a packet is limited to the minimum of 'max-payload-size' and
- * 'max-rate.' For instance, let's assume the max-payload-size is set to
- * 170 bytes, and max-rate is set to 40 kbps. Note that a limit of 40 kbps
- * translates to 150 bytes for 30ms frame-size & 300 bytes for 60ms
- * frame-size. Then a packet with a frame-size of 30 ms is limited to 150,
- * i.e. min(170, 150), and a packet with 60 ms frame-size is limited to
- * 170 bytes, min(170, 300).
- *
- * Input:
- *        - ISAC_main_inst    : iSAC instance
- *        - maxRate           : maximum rate in bits per second,
- *                              valid values are 32000 to 53400 bits/sec in
- *                              wideband mode, and 32000 to 160000 bits/sec in
- *                              super-wideband mode.
- *
- * Return value               : 0 if successful
- *                             -1 if error happens
- */
-
-int16_t WebRtcIsac_SetMaxRate(ISACStruct* ISAC_main_inst, int32_t maxRate);
-
-/******************************************************************************
- * WebRtcIsac_DecSampRate()
- * Return the sampling rate of the decoded audio.
- *
- * Input:
- *        - ISAC_main_inst    : iSAC instance
- *
- * Return value               : sampling frequency in Hertz.
- *
- */
-
-uint16_t WebRtcIsac_DecSampRate(ISACStruct* ISAC_main_inst);
-
-/******************************************************************************
- * WebRtcIsac_EncSampRate()
- *
- * Input:
- *        - ISAC_main_inst    : iSAC instance
- *
- * Return value               : sampling rate in Hertz.
- *
- */
-
-uint16_t WebRtcIsac_EncSampRate(ISACStruct* ISAC_main_inst);
-
-/******************************************************************************
- * WebRtcIsac_SetDecSampRate()
- * Set the sampling rate of the decoder.  Initialization of the decoder WILL
- * NOT overwrite the sampling rate of the encoder. The default value is 16 kHz
- * which is set when the instance is created.
- *
- * Input:
- *        - ISAC_main_inst    : iSAC instance
- *        - sampRate          : sampling rate in Hertz.
- *
- * Return value               : 0 if successful
- *                             -1 if failed.
- */
-
-int16_t WebRtcIsac_SetDecSampRate(ISACStruct* ISAC_main_inst,
-                                  uint16_t samp_rate_hz);
-
-/******************************************************************************
- * WebRtcIsac_SetEncSampRate()
- * Set the sampling rate of the encoder. Initialization of the encoder WILL
- * NOT overwrite the sampling rate of the encoder. The default value is 16 kHz
- * which is set when the instance is created. The encoding-mode and the
- * bottleneck remain unchanged by this call, however, the maximum rate and
- * maximum payload-size will reset to their default value.
- *
- * Input:
- *        - ISAC_main_inst    : iSAC instance
- *        - sampRate          : sampling rate in Hertz.
- *
- * Return value               : 0 if successful
- *                             -1 if failed.
- */
-
-int16_t WebRtcIsac_SetEncSampRate(ISACStruct* ISAC_main_inst,
-                                  uint16_t sample_rate_hz);
-
-/******************************************************************************
- * WebRtcIsac_GetNewBitStream(...)
- *
- * This function returns encoded data, with the received bwe-index in the
- * stream. If the rate is set to a value less than bottleneck of codec
- * the new bistream will be re-encoded with the given target rate.
- * It should always return a complete packet, i.e. only called once
- * even for 60 msec frames.
- *
- * NOTE 1! This function does not write in the ISACStruct, it is not allowed.
- * NOTE 2! Currently not implemented for SWB mode.
- * NOTE 3! Rates larger than the bottleneck of the codec will be limited
- *         to the current bottleneck.
- *
- * Input:
- *        - ISAC_main_inst    : ISAC instance.
- *        - bweIndex          : Index of bandwidth estimate to put in new
- *                              bitstream
- *        - rate              : target rate of the transcoder is bits/sec.
- *                              Valid values are the accepted rate in iSAC,
- *                              i.e. 10000 to 56000.
- *        - isRCU                       : if the new bit-stream is an RCU
- * stream. Note that the rate parameter always indicates the target rate of the
- * main payload, regardless of 'isRCU' value.
- *
- * Output:
- *        - encoded           : The encoded data vector
- *
- * Return value               : >0 - Length (in bytes) of coded data
- *                              -1 - Error  or called in SWB mode
- *                                 NOTE! No error code is written to
- *                                 the struct since it is only allowed to read
- *                                 the struct.
- */
-int16_t WebRtcIsac_GetNewBitStream(ISACStruct* ISAC_main_inst,
-                                   int16_t bweIndex,
-                                   int16_t jitterInfo,
-                                   int32_t rate,
-                                   uint8_t* encoded,
-                                   int16_t isRCU);
-
-/****************************************************************************
- * WebRtcIsac_GetDownLinkBwIndex(...)
- *
- * This function returns index representing the Bandwidth estimate from
- * other side to this side.
- *
- * Input:
- *        - ISAC_main_inst    : iSAC struct
- *
- * Output:
- *        - bweIndex          : Bandwidth estimate to transmit to other side.
- *
- */
-
-int16_t WebRtcIsac_GetDownLinkBwIndex(ISACStruct* ISAC_main_inst,
-                                      int16_t* bweIndex,
-                                      int16_t* jitterInfo);
-
-/****************************************************************************
- * WebRtcIsac_UpdateUplinkBw(...)
- *
- * This function takes an index representing the Bandwidth estimate from
- * this side to other side and updates BWE.
- *
- * Input:
- *        - ISAC_main_inst    : iSAC struct
- *        - bweIndex          : Bandwidth estimate from other side.
- *
- */
-
-int16_t WebRtcIsac_UpdateUplinkBw(ISACStruct* ISAC_main_inst, int16_t bweIndex);
-
-/****************************************************************************
- * WebRtcIsac_ReadBwIndex(...)
- *
- * This function returns the index of the Bandwidth estimate from the bitstream.
- *
- * Input:
- *        - encoded           : Encoded bitstream
- *
- * Output:
- *        - frameLength       : Length of frame in packet (in samples)
- *        - bweIndex         : Bandwidth estimate in bitstream
- *
- */
-
-int16_t WebRtcIsac_ReadBwIndex(const uint8_t* encoded, int16_t* bweIndex);
-
-/*******************************************************************************
- * WebRtcIsac_GetNewFrameLen(...)
- *
- * returns the frame lenght (in samples) of the next packet. In the case of
- * channel-adaptive mode, iSAC decides on its frame lenght based on the
- * estimated bottleneck this allows a user to prepare for the next packet (at
- * the encoder)
- *
- * The primary usage is in CE to make the iSAC works in channel-adaptive mode
- *
- * Input:
- *        - ISAC_main_inst     : iSAC struct
- *
- * Return Value                : frame lenght in samples
- *
- */
-
-int16_t WebRtcIsac_GetNewFrameLen(ISACStruct* ISAC_main_inst);
-
-/****************************************************************************
- *  WebRtcIsac_GetRedPayload(...)
- *
- *  Populates "encoded" with the redundant payload of the recently encoded
- *  frame. This function has to be called once that WebRtcIsac_Encode(...)
- *  returns a positive value. Regardless of the frame-size this function will
- *  be called only once after encoding is completed.
- *
- * Input:
- *      - ISAC_main_inst    : iSAC struct
- *
- * Output:
- *        - encoded            : the encoded data vector
- *
- *
- * Return value:
- *                              : >0 - Length (in bytes) of coded data
- *                              : -1 - Error
- *
- *
- */
-int16_t WebRtcIsac_GetRedPayload(ISACStruct* ISAC_main_inst, uint8_t* encoded);
-
-/****************************************************************************
- * WebRtcIsac_DecodeRcu(...)
- *
- * This function decodes a redundant (RCU) iSAC frame. Function is called in
- * NetEq with a stored RCU payload i case of packet loss. Output speech length
- * will be a multiple of 480 samples: 480 or 960 samples,
- * depending on the framesize (30 or 60 ms).
- *
- * Input:
- *      - ISAC_main_inst     : ISAC instance.
- *      - encoded            : encoded ISAC RCU frame(s)
- *      - len                : bytes in encoded vector
- *
- * Output:
- *      - decoded            : The decoded vector
- *
- * Return value              : >0 - number of samples in decoded vector
- *                             -1 - Error
- */
-int WebRtcIsac_DecodeRcu(ISACStruct* ISAC_main_inst,
-                         const uint8_t* encoded,
-                         size_t len,
-                         int16_t* decoded,
-                         int16_t* speechType);
-
-/* If `inst` is a decoder but not an encoder: tell it what sample rate the
-   encoder is using, for bandwidth estimation purposes. */
-void WebRtcIsac_SetEncSampRateInDecoder(ISACStruct* inst, int sample_rate_hz);
-
-#if defined(__cplusplus)
-}
-#endif
-
-#endif /* MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_INCLUDE_ISAC_H_ */
diff --git a/modules/audio_coding/codecs/isac/main/source/arith_routines.c b/modules/audio_coding/codecs/isac/main/source/arith_routines.c
deleted file mode 100644
index 9d5c693..0000000
--- a/modules/audio_coding/codecs/isac/main/source/arith_routines.c
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "modules/audio_coding/codecs/isac/main/source/arith_routines.h"
-#include "modules/audio_coding/codecs/isac/main/source/settings.h"
-
-
-/*
- * terminate and return byte stream;
- * returns the number of bytes in the stream
- */
-int WebRtcIsac_EncTerminate(Bitstr *streamdata) /* in-/output struct containing bitstream */
-{
-  uint8_t *stream_ptr;
-
-
-  /* point to the right place in the stream buffer */
-  stream_ptr = streamdata->stream + streamdata->stream_index;
-
-  /* find minimum length (determined by current interval width) */
-  if ( streamdata->W_upper > 0x01FFFFFF )
-  {
-    streamdata->streamval += 0x01000000;
-    /* add carry to buffer */
-    if (streamdata->streamval < 0x01000000)
-    {
-      /* propagate carry */
-      while ( !(++(*--stream_ptr)) );
-      /* put pointer back to the old value */
-      stream_ptr = streamdata->stream + streamdata->stream_index;
-    }
-    /* write remaining data to bitstream */
-    *stream_ptr++ = (uint8_t) (streamdata->streamval >> 24);
-  }
-  else
-  {
-    streamdata->streamval += 0x00010000;
-    /* add carry to buffer */
-    if (streamdata->streamval < 0x00010000)
-    {
-      /* propagate carry */
-      while ( !(++(*--stream_ptr)) );
-      /* put pointer back to the old value */
-      stream_ptr = streamdata->stream + streamdata->stream_index;
-    }
-    /* write remaining data to bitstream */
-    *stream_ptr++ = (uint8_t) (streamdata->streamval >> 24);
-    *stream_ptr++ = (uint8_t) ((streamdata->streamval >> 16) & 0x00FF);
-  }
-
-  /* calculate stream length */
-  return (int)(stream_ptr - streamdata->stream);
-}
diff --git a/modules/audio_coding/codecs/isac/main/source/arith_routines.h b/modules/audio_coding/codecs/isac/main/source/arith_routines.h
deleted file mode 100644
index 3f9f6de..0000000
--- a/modules/audio_coding/codecs/isac/main/source/arith_routines.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * arith_routines.h
- *
- * Functions for arithmetic coding.
- *
- */
-
-#ifndef MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_SOURCE_ARITH_ROUTINES_H_
-#define MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_SOURCE_ARITH_ROUTINES_H_
-
-#include "modules/audio_coding/codecs/isac/main/source/structs.h"
-
-int WebRtcIsac_EncLogisticMulti2(
-    Bitstr* streamdata, /* in-/output struct containing bitstream */
-    int16_t* dataQ7,    /* input: data vector */
-    const uint16_t*
-        env, /* input: side info vector defining the width of the pdf */
-    int N,   /* input: data vector length */
-    int16_t isSWB12kHz); /* if the codec is working in 12kHz bandwidth */
-
-/* returns the number of bytes in the stream */
-int WebRtcIsac_EncTerminate(
-    Bitstr* streamdata); /* in-/output struct containing bitstream */
-
-/* returns the number of bytes in the stream so far */
-int WebRtcIsac_DecLogisticMulti2(
-    int16_t* data,      /* output: data vector */
-    Bitstr* streamdata, /* in-/output struct containing bitstream */
-    const uint16_t*
-        env, /* input: side info vector defining the width of the pdf */
-    const int16_t* dither, /* input: dither vector */
-    int N,                 /* input: data vector length */
-    int16_t isSWB12kHz);   /* if the codec is working in 12kHz bandwidth */
-
-void WebRtcIsac_EncHistMulti(
-    Bitstr* streamdata,         /* in-/output struct containing bitstream */
-    const int* data,            /* input: data vector */
-    const uint16_t* const* cdf, /* input: array of cdf arrays */
-    int N);                     /* input: data vector length */
-
-int WebRtcIsac_DecHistBisectMulti(
-    int* data,                  /* output: data vector */
-    Bitstr* streamdata,         /* in-/output struct containing bitstream */
-    const uint16_t* const* cdf, /* input: array of cdf arrays */
-    const uint16_t*
-        cdf_size, /* input: array of cdf table sizes+1 (power of two: 2^k) */
-    int N);       /* input: data vector length */
-
-int WebRtcIsac_DecHistOneStepMulti(
-    int* data,                  /* output: data vector */
-    Bitstr* streamdata,         /* in-/output struct containing bitstream */
-    const uint16_t* const* cdf, /* input: array of cdf arrays */
-    const uint16_t*
-        init_index, /* input: vector of initial cdf table search entries */
-    int N);         /* input: data vector length */
-
-#endif /* MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_SOURCE_ARITH_ROUTINES_H_ */
diff --git a/modules/audio_coding/codecs/isac/main/source/arith_routines_hist.c b/modules/audio_coding/codecs/isac/main/source/arith_routines_hist.c
deleted file mode 100644
index e948979..0000000
--- a/modules/audio_coding/codecs/isac/main/source/arith_routines_hist.c
+++ /dev/null
@@ -1,291 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "modules/audio_coding/codecs/isac/main/source/settings.h"
-#include "modules/audio_coding/codecs/isac/main/source/arith_routines.h"
-
-
-/*
- * code symbols into arithmetic bytestream
- */
-void WebRtcIsac_EncHistMulti(Bitstr *streamdata, /* in-/output struct containing bitstream */
-                             const int *data,  /* input: data vector */
-                             const uint16_t *const *cdf, /* input: array of cdf arrays */
-                             const int N)   /* input: data vector length */
-{
-  uint32_t W_lower, W_upper;
-  uint32_t W_upper_LSB, W_upper_MSB;
-  uint8_t *stream_ptr;
-  uint8_t *stream_ptr_carry;
-  uint32_t cdf_lo, cdf_hi;
-  int k;
-
-
-  /* point to beginning of stream buffer */
-  stream_ptr = streamdata->stream + streamdata->stream_index;
-  W_upper = streamdata->W_upper;
-
-  for (k=N; k>0; k--)
-  {
-    /* fetch cdf_lower and cdf_upper from cdf tables */
-    cdf_lo = (uint32_t) *(*cdf + *data);
-    cdf_hi = (uint32_t) *(*cdf++ + *data++ + 1);
-
-    /* update interval */
-    W_upper_LSB = W_upper & 0x0000FFFF;
-    W_upper_MSB = W_upper >> 16;
-    W_lower = W_upper_MSB * cdf_lo;
-    W_lower += (W_upper_LSB * cdf_lo) >> 16;
-    W_upper = W_upper_MSB * cdf_hi;
-    W_upper += (W_upper_LSB * cdf_hi) >> 16;
-
-    /* shift interval such that it begins at zero */
-    W_upper -= ++W_lower;
-
-    /* add integer to bitstream */
-    streamdata->streamval += W_lower;
-
-    /* handle carry */
-    if (streamdata->streamval < W_lower)
-    {
-      /* propagate carry */
-      stream_ptr_carry = stream_ptr;
-      while (!(++(*--stream_ptr_carry)));
-    }
-
-    /* renormalize interval, store most significant byte of streamval and update streamval */
-    while ( !(W_upper & 0xFF000000) )      /* W_upper < 2^24 */
-    {
-      W_upper <<= 8;
-      *stream_ptr++ = (uint8_t) (streamdata->streamval >> 24);
-      streamdata->streamval <<= 8;
-    }
-  }
-
-  /* calculate new stream_index */
-  streamdata->stream_index = (int)(stream_ptr - streamdata->stream);
-  streamdata->W_upper = W_upper;
-
-  return;
-}
-
-
-
-/*
- * function to decode more symbols from the arithmetic bytestream, using method of bisection
- * cdf tables should be of size 2^k-1 (which corresponds to an alphabet size of 2^k-2)
- */
-int WebRtcIsac_DecHistBisectMulti(int *data,     /* output: data vector */
-                                  Bitstr *streamdata,   /* in-/output struct containing bitstream */
-                                  const uint16_t *const *cdf,  /* input: array of cdf arrays */
-                                  const uint16_t *cdf_size, /* input: array of cdf table sizes+1 (power of two: 2^k) */
-                                  const int N)    /* input: data vector length */
-{
-  uint32_t    W_lower, W_upper;
-  uint32_t    W_tmp;
-  uint32_t    W_upper_LSB, W_upper_MSB;
-  uint32_t    streamval;
-  const   uint8_t *stream_ptr;
-  const   uint16_t *cdf_ptr;
-  int     size_tmp;
-  int     k;
-
-  W_lower = 0; //to remove warning -DH
-  stream_ptr = streamdata->stream + streamdata->stream_index;
-  W_upper = streamdata->W_upper;
-  if (W_upper == 0)
-    /* Should not be possible in normal operation */
-    return -2;
-
-  if (streamdata->stream_index == 0)   /* first time decoder is called for this stream */
-  {
-    /* read first word from bytestream */
-    streamval = *stream_ptr << 24;
-    streamval |= *++stream_ptr << 16;
-    streamval |= *++stream_ptr << 8;
-    streamval |= *++stream_ptr;
-  } else {
-    streamval = streamdata->streamval;
-  }
-
-  for (k=N; k>0; k--)
-  {
-    /* find the integer *data for which streamval lies in [W_lower+1, W_upper] */
-    W_upper_LSB = W_upper & 0x0000FFFF;
-    W_upper_MSB = W_upper >> 16;
-
-    /* start halfway the cdf range */
-    size_tmp = *cdf_size++ >> 1;
-    cdf_ptr = *cdf + (size_tmp - 1);
-
-    /* method of bisection */
-    for ( ;; )
-    {
-      W_tmp = W_upper_MSB * *cdf_ptr;
-      W_tmp += (W_upper_LSB * *cdf_ptr) >> 16;
-      size_tmp >>= 1;
-      if (size_tmp == 0) break;
-      if (streamval > W_tmp)
-      {
-        W_lower = W_tmp;
-        cdf_ptr += size_tmp;
-      } else {
-        W_upper = W_tmp;
-        cdf_ptr -= size_tmp;
-      }
-    }
-    if (streamval > W_tmp)
-    {
-      W_lower = W_tmp;
-      *data++ = (int)(cdf_ptr - *cdf++);
-    } else {
-      W_upper = W_tmp;
-      *data++ = (int)(cdf_ptr - *cdf++ - 1);
-    }
-
-    /* shift interval to start at zero */
-    W_upper -= ++W_lower;
-
-    /* add integer to bitstream */
-    streamval -= W_lower;
-
-    /* renormalize interval and update streamval */
-    while ( !(W_upper & 0xFF000000) )    /* W_upper < 2^24 */
-    {
-      /* read next byte from stream */
-      streamval = (streamval << 8) | *++stream_ptr;
-      W_upper <<= 8;
-    }
-
-    if (W_upper == 0)
-      /* Should not be possible in normal operation */
-      return -2;
-
-
-  }
-
-  streamdata->stream_index = (int)(stream_ptr - streamdata->stream);
-  streamdata->W_upper = W_upper;
-  streamdata->streamval = streamval;
-
-
-  /* find number of bytes in original stream (determined by current interval width) */
-  if ( W_upper > 0x01FFFFFF )
-    return streamdata->stream_index - 2;
-  else
-    return streamdata->stream_index - 1;
-}
-
-
-
-/*
- * function to decode more symbols from the arithmetic bytestream, taking single step up or
- * down at a time
- * cdf tables can be of arbitrary size, but large tables may take a lot of iterations
- */
-int WebRtcIsac_DecHistOneStepMulti(int *data,        /* output: data vector */
-                                   Bitstr *streamdata,      /* in-/output struct containing bitstream */
-                                   const uint16_t *const *cdf,   /* input: array of cdf arrays */
-                                   const uint16_t *init_index, /* input: vector of initial cdf table search entries */
-                                   const int N)     /* input: data vector length */
-{
-  uint32_t    W_lower, W_upper;
-  uint32_t    W_tmp;
-  uint32_t    W_upper_LSB, W_upper_MSB;
-  uint32_t    streamval;
-  const   uint8_t *stream_ptr;
-  const   uint16_t *cdf_ptr;
-  int     k;
-
-
-  stream_ptr = streamdata->stream + streamdata->stream_index;
-  W_upper = streamdata->W_upper;
-  if (W_upper == 0)
-    /* Should not be possible in normal operation */
-    return -2;
-
-  if (streamdata->stream_index == 0)   /* first time decoder is called for this stream */
-  {
-    /* read first word from bytestream */
-    streamval = (uint32_t)(*stream_ptr) << 24;
-    streamval |= (uint32_t)(*++stream_ptr) << 16;
-    streamval |= (uint32_t)(*++stream_ptr) << 8;
-    streamval |= (uint32_t)(*++stream_ptr);
-  } else {
-    streamval = streamdata->streamval;
-  }
-
-
-  for (k=N; k>0; k--)
-  {
-    /* find the integer *data for which streamval lies in [W_lower+1, W_upper] */
-    W_upper_LSB = W_upper & 0x0000FFFF;
-    W_upper_MSB = W_upper >> 16;
-
-    /* start at the specified table entry */
-    cdf_ptr = *cdf + (*init_index++);
-    W_tmp = W_upper_MSB * *cdf_ptr;
-    W_tmp += (W_upper_LSB * *cdf_ptr) >> 16;
-    if (streamval > W_tmp)
-    {
-      for ( ;; )
-      {
-        W_lower = W_tmp;
-        if (cdf_ptr[0]==65535)
-          /* range check */
-          return -3;
-        W_tmp = W_upper_MSB * *++cdf_ptr;
-        W_tmp += (W_upper_LSB * *cdf_ptr) >> 16;
-        if (streamval <= W_tmp) break;
-      }
-      W_upper = W_tmp;
-      *data++ = (int)(cdf_ptr - *cdf++ - 1);
-    } else {
-      for ( ;; )
-      {
-        W_upper = W_tmp;
-        --cdf_ptr;
-        if (cdf_ptr<*cdf) {
-          /* range check */
-          return -3;
-        }
-        W_tmp = W_upper_MSB * *cdf_ptr;
-        W_tmp += (W_upper_LSB * *cdf_ptr) >> 16;
-        if (streamval > W_tmp) break;
-      }
-      W_lower = W_tmp;
-      *data++ = (int)(cdf_ptr - *cdf++);
-    }
-
-    /* shift interval to start at zero */
-    W_upper -= ++W_lower;
-    /* add integer to bitstream */
-    streamval -= W_lower;
-
-    /* renormalize interval and update streamval */
-    while ( !(W_upper & 0xFF000000) )    /* W_upper < 2^24 */
-    {
-      /* read next byte from stream */
-      streamval = (streamval << 8) | *++stream_ptr;
-      W_upper <<= 8;
-    }
-  }
-
-  streamdata->stream_index = (int)(stream_ptr - streamdata->stream);
-  streamdata->W_upper = W_upper;
-  streamdata->streamval = streamval;
-
-
-  /* find number of bytes in original stream (determined by current interval width) */
-  if ( W_upper > 0x01FFFFFF )
-    return streamdata->stream_index - 2;
-  else
-    return streamdata->stream_index - 1;
-}
diff --git a/modules/audio_coding/codecs/isac/main/source/arith_routines_logist.c b/modules/audio_coding/codecs/isac/main/source/arith_routines_logist.c
deleted file mode 100644
index 777780f..0000000
--- a/modules/audio_coding/codecs/isac/main/source/arith_routines_logist.c
+++ /dev/null
@@ -1,303 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * arith_routines.h
- *
- * This file contains functions for arithmatically encoding and
- * decoding DFT coefficients.
- *
- */
-
-
-#include "modules/audio_coding/codecs/isac/main/source/arith_routines.h"
-
-
-
-static const int32_t kHistEdgesQ15[51] = {
-  -327680, -314573, -301466, -288359, -275252, -262144, -249037, -235930, -222823, -209716,
-  -196608, -183501, -170394, -157287, -144180, -131072, -117965, -104858, -91751, -78644,
-  -65536, -52429, -39322, -26215, -13108,  0,  13107,  26214,  39321,  52428,
-  65536,  78643,  91750,  104857,  117964,  131072,  144179,  157286,  170393,  183500,
-  196608,  209715,  222822,  235929,  249036,  262144,  275251,  288358,  301465,  314572,
-  327680};
-
-
-static const int kCdfSlopeQ0[51] = {  /* Q0 */
-  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
-  5,  5,  13,  23,  47,  87,  154,  315,  700,  1088,
-  2471,  6064,  14221,  21463,  36634,  36924,  19750,  13270,  5806,  2312,
-  1095,  660,  316,  145,  86,  41,  32,  5,  5,  5,
-  5,  5,  5,  5,  5,  5,  5,  5,  5,  2, 0};
-
-
-static const int kCdfQ16[51] = {  /* Q16 */
-  0,  2,  4,  6,  8,  10,  12,  14,  16,  18,
-  20,  22,  24,  29,  38,  57,  92,  153,  279,  559,
-  994,  1983,  4408,  10097,  18682,  33336,  48105,  56005,  61313,  63636,
-  64560,  64998,  65262,  65389,  65447,  65481,  65497,  65510,  65512,  65514,
-  65516,  65518,  65520,  65522,  65524,  65526,  65528,  65530,  65532,  65534,
-  65535};
-
-
-
-/* function to be converted to fixed point */
-static __inline uint32_t piecewise(int32_t xinQ15) {
-
-  int32_t ind, qtmp1, qtmp2, qtmp3;
-  uint32_t tmpUW32;
-
-
-  qtmp2 = xinQ15;
-
-  if (qtmp2 < kHistEdgesQ15[0]) {
-    qtmp2 = kHistEdgesQ15[0];
-  }
-  if (qtmp2 > kHistEdgesQ15[50]) {
-    qtmp2 = kHistEdgesQ15[50];
-  }
-
-  qtmp1 = qtmp2 - kHistEdgesQ15[0];       /* Q15 - Q15 = Q15        */
-  ind = (qtmp1 * 5) >> 16;              /* 2^16 / 5 = 0.4 in Q15  */
-  /* Q15 -> Q0              */
-  qtmp1 = qtmp2 - kHistEdgesQ15[ind];     /* Q15 - Q15 = Q15        */
-  qtmp2 = kCdfSlopeQ0[ind] * qtmp1;      /* Q0 * Q15 = Q15         */
-  qtmp3 = qtmp2>>15;                    /* Q15 -> Q0              */
-
-  tmpUW32 = kCdfQ16[ind] + qtmp3;    /* Q0 + Q0 = Q0           */
-  return tmpUW32;
-}
-
-
-
-int WebRtcIsac_EncLogisticMulti2(
-    Bitstr *streamdata,      /* in-/output struct containing bitstream */
-    int16_t *dataQ7,    /* input: data vector */
-    const uint16_t *envQ8, /* input: side info vector defining the width of the pdf */
-    const int N,       /* input: data vector length / 2 */
-    const int16_t isSWB12kHz)
-{
-  uint32_t W_lower, W_upper;
-  uint32_t W_upper_LSB, W_upper_MSB;
-  uint8_t *stream_ptr;
-  uint8_t *maxStreamPtr;
-  uint8_t *stream_ptr_carry;
-  uint32_t cdf_lo, cdf_hi;
-  int k;
-
-  /* point to beginning of stream buffer */
-  stream_ptr = streamdata->stream + streamdata->stream_index;
-  W_upper = streamdata->W_upper;
-
-  maxStreamPtr = streamdata->stream + STREAM_SIZE_MAX_60 - 1;
-  for (k = 0; k < N; k++)
-  {
-    /* compute cdf_lower and cdf_upper by evaluating the piecewise linear cdf */
-    cdf_lo = piecewise((*dataQ7 - 64) * *envQ8);
-    cdf_hi = piecewise((*dataQ7 + 64) * *envQ8);
-
-    /* test and clip if probability gets too small */
-    while (cdf_lo+1 >= cdf_hi) {
-      /* clip */
-      if (*dataQ7 > 0) {
-        *dataQ7 -= 128;
-        cdf_hi = cdf_lo;
-        cdf_lo = piecewise((*dataQ7 - 64) * *envQ8);
-      } else {
-        *dataQ7 += 128;
-        cdf_lo = cdf_hi;
-        cdf_hi = piecewise((*dataQ7 + 64) * *envQ8);
-      }
-    }
-
-    dataQ7++;
-    // increment only once per 4 iterations for SWB-16kHz or WB
-    // increment only once per 2 iterations for SWB-12kHz
-    envQ8 += (isSWB12kHz)? (k & 1):((k & 1) & (k >> 1));
-
-
-    /* update interval */
-    W_upper_LSB = W_upper & 0x0000FFFF;
-    W_upper_MSB = W_upper >> 16;
-    W_lower = W_upper_MSB * cdf_lo;
-    W_lower += (W_upper_LSB * cdf_lo) >> 16;
-    W_upper = W_upper_MSB * cdf_hi;
-    W_upper += (W_upper_LSB * cdf_hi) >> 16;
-
-    /* shift interval such that it begins at zero */
-    W_upper -= ++W_lower;
-
-    /* add integer to bitstream */
-    streamdata->streamval += W_lower;
-
-    /* handle carry */
-    if (streamdata->streamval < W_lower)
-    {
-      /* propagate carry */
-      stream_ptr_carry = stream_ptr;
-      while (!(++(*--stream_ptr_carry)));
-    }
-
-    /* renormalize interval, store most significant byte of streamval and update streamval */
-    while ( !(W_upper & 0xFF000000) )      /* W_upper < 2^24 */
-    {
-      W_upper <<= 8;
-      *stream_ptr++ = (uint8_t) (streamdata->streamval >> 24);
-
-      if(stream_ptr > maxStreamPtr)
-      {
-        return -ISAC_DISALLOWED_BITSTREAM_LENGTH;
-      }
-      streamdata->streamval <<= 8;
-    }
-  }
-
-  /* calculate new stream_index */
-  streamdata->stream_index = (int)(stream_ptr - streamdata->stream);
-  streamdata->W_upper = W_upper;
-
-  return 0;
-}
-
-
-
-int WebRtcIsac_DecLogisticMulti2(
-    int16_t *dataQ7,       /* output: data vector */
-    Bitstr *streamdata,      /* in-/output struct containing bitstream */
-    const uint16_t *envQ8, /* input: side info vector defining the width of the pdf */
-    const int16_t *ditherQ7,/* input: dither vector */
-    const int N,         /* input: data vector length */
-    const int16_t isSWB12kHz)
-{
-  uint32_t    W_lower, W_upper;
-  uint32_t    W_tmp;
-  uint32_t    W_upper_LSB, W_upper_MSB;
-  uint32_t    streamval;
-  const uint8_t *stream_ptr;
-  uint32_t    cdf_tmp;
-  int16_t     candQ7;
-  int             k;
-
-  // Position just past the end of the stream. STREAM_SIZE_MAX_60 instead of
-  // STREAM_SIZE_MAX (which is the size of the allocated buffer) because that's
-  // the limit to how much data is filled in.
-  const uint8_t* const stream_end = streamdata->stream + STREAM_SIZE_MAX_60;
-
-  stream_ptr = streamdata->stream + streamdata->stream_index;
-  W_upper = streamdata->W_upper;
-  if (streamdata->stream_index == 0)   /* first time decoder is called for this stream */
-  {
-    /* read first word from bytestream */
-    if (stream_ptr + 3 >= stream_end)
-      return -1;  // Would read out of bounds. Malformed input?
-    streamval = *stream_ptr << 24;
-    streamval |= *++stream_ptr << 16;
-    streamval |= *++stream_ptr << 8;
-    streamval |= *++stream_ptr;
-  } else {
-    streamval = streamdata->streamval;
-  }
-
-
-  for (k = 0; k < N; k++)
-  {
-    /* find the integer *data for which streamval lies in [W_lower+1, W_upper] */
-    W_upper_LSB = W_upper & 0x0000FFFF;
-    W_upper_MSB = W_upper >> 16;
-
-    /* find first candidate by inverting the logistic cdf */
-    candQ7 = - *ditherQ7 + 64;
-    cdf_tmp = piecewise(candQ7 * *envQ8);
-
-    W_tmp = W_upper_MSB * cdf_tmp;
-    W_tmp += (W_upper_LSB * cdf_tmp) >> 16;
-    if (streamval > W_tmp)
-    {
-      W_lower = W_tmp;
-      candQ7 += 128;
-      cdf_tmp = piecewise(candQ7 * *envQ8);
-
-      W_tmp = W_upper_MSB * cdf_tmp;
-      W_tmp += (W_upper_LSB * cdf_tmp) >> 16;
-      while (streamval > W_tmp)
-      {
-        W_lower = W_tmp;
-        candQ7 += 128;
-        cdf_tmp = piecewise(candQ7 * *envQ8);
-
-        W_tmp = W_upper_MSB * cdf_tmp;
-        W_tmp += (W_upper_LSB * cdf_tmp) >> 16;
-
-        /* error check */
-        if (W_lower == W_tmp) return -1;
-      }
-      W_upper = W_tmp;
-
-      /* another sample decoded */
-      *dataQ7 = candQ7 - 64;
-    }
-    else
-    {
-      W_upper = W_tmp;
-      candQ7 -= 128;
-      cdf_tmp = piecewise(candQ7 * *envQ8);
-
-      W_tmp = W_upper_MSB * cdf_tmp;
-      W_tmp += (W_upper_LSB * cdf_tmp) >> 16;
-      while ( !(streamval > W_tmp) )
-      {
-        W_upper = W_tmp;
-        candQ7 -= 128;
-        cdf_tmp = piecewise(candQ7 * *envQ8);
-
-        W_tmp = W_upper_MSB * cdf_tmp;
-        W_tmp += (W_upper_LSB * cdf_tmp) >> 16;
-
-        /* error check */
-        if (W_upper == W_tmp) return -1;
-      }
-      W_lower = W_tmp;
-
-      /* another sample decoded */
-      *dataQ7 = candQ7 + 64;
-    }
-    ditherQ7++;
-    dataQ7++;
-    // increment only once per 4 iterations for SWB-16kHz or WB
-    // increment only once per 2 iterations for SWB-12kHz
-    envQ8 += (isSWB12kHz)? (k & 1):((k & 1) & (k >> 1));
-
-    /* shift interval to start at zero */
-    W_upper -= ++W_lower;
-
-    /* add integer to bitstream */
-    streamval -= W_lower;
-
-    /* renormalize interval and update streamval */
-    while ( !(W_upper & 0xFF000000) )    /* W_upper < 2^24 */
-    {
-      /* read next byte from stream */
-      if (stream_ptr + 1 >= stream_end)
-        return -1;  // Would read out of bounds. Malformed input?
-      streamval = (streamval << 8) | *++stream_ptr;
-      W_upper <<= 8;
-    }
-  }
-
-  streamdata->stream_index = (int)(stream_ptr - streamdata->stream);
-  streamdata->W_upper = W_upper;
-  streamdata->streamval = streamval;
-
-  /* find number of bytes in original stream (determined by current interval width) */
-  if ( W_upper > 0x01FFFFFF )
-    return streamdata->stream_index - 2;
-  else
-    return streamdata->stream_index - 1;
-}
diff --git a/modules/audio_coding/codecs/isac/main/source/audio_decoder_isac.cc b/modules/audio_coding/codecs/isac/main/source/audio_decoder_isac.cc
deleted file mode 100644
index b671002..0000000
--- a/modules/audio_coding/codecs/isac/main/source/audio_decoder_isac.cc
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- *  Copyright (c) 2015 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "modules/audio_coding/codecs/isac/main/include/audio_decoder_isac.h"
-
-#include "modules/audio_coding/codecs/isac/audio_decoder_isac_t_impl.h"
-
-namespace webrtc {
-
-// Explicit instantiation:
-template class AudioDecoderIsacT<IsacFloat>;
-
-}  // namespace webrtc
diff --git a/modules/audio_coding/codecs/isac/main/source/audio_encoder_isac.cc b/modules/audio_coding/codecs/isac/main/source/audio_encoder_isac.cc
deleted file mode 100644
index b7f2c0b..0000000
--- a/modules/audio_coding/codecs/isac/main/source/audio_encoder_isac.cc
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- *  Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "modules/audio_coding/codecs/isac/main/include/audio_encoder_isac.h"
-
-#include "modules/audio_coding/codecs/isac/audio_encoder_isac_t_impl.h"
-
-namespace webrtc {
-
-// Explicit instantiation:
-template class AudioEncoderIsacT<IsacFloat>;
-
-}  // namespace webrtc
diff --git a/modules/audio_coding/codecs/isac/main/source/audio_encoder_isac_unittest.cc b/modules/audio_coding/codecs/isac/main/source/audio_encoder_isac_unittest.cc
deleted file mode 100644
index 07bab05..0000000
--- a/modules/audio_coding/codecs/isac/main/source/audio_encoder_isac_unittest.cc
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- *  Copyright (c) 2015 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "modules/audio_coding/codecs/isac/main/include/audio_encoder_isac.h"
-
-#include <limits>
-
-#include "test/gtest.h"
-
-namespace webrtc {
-
-namespace {
-
-void TestBadConfig(const AudioEncoderIsacFloatImpl::Config& config) {
-  EXPECT_FALSE(config.IsOk());
-}
-
-void TestGoodConfig(const AudioEncoderIsacFloatImpl::Config& config) {
-  EXPECT_TRUE(config.IsOk());
-  AudioEncoderIsacFloatImpl aei(config);
-}
-
-// Wrap subroutine calls that test things in this, so that the error messages
-// will be accompanied by stack traces that make it possible to tell which
-// subroutine invocation caused the failure.
-#define S(x)          \
-  do {                \
-    SCOPED_TRACE(#x); \
-    x;                \
-  } while (0)
-
-}  // namespace
-
-TEST(AudioEncoderIsacTest, TestConfigBitrate) {
-  AudioEncoderIsacFloatImpl::Config config;
-
-  // The default value is some real, positive value.
-  EXPECT_GT(config.bit_rate, 1);
-  S(TestGoodConfig(config));
-
-  // 0 is another way to ask for the default value.
-  config.bit_rate = 0;
-  S(TestGoodConfig(config));
-
-  // Try some unreasonable values and watch them fail.
-  config.bit_rate = -1;
-  S(TestBadConfig(config));
-  config.bit_rate = 1;
-  S(TestBadConfig(config));
-  config.bit_rate = std::numeric_limits<int>::max();
-  S(TestBadConfig(config));
-}
-
-}  // namespace webrtc
diff --git a/modules/audio_coding/codecs/isac/main/source/bandwidth_estimator.c b/modules/audio_coding/codecs/isac/main/source/bandwidth_estimator.c
deleted file mode 100644
index 486cd95..0000000
--- a/modules/audio_coding/codecs/isac/main/source/bandwidth_estimator.c
+++ /dev/null
@@ -1,1013 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * BwEstimator.c
- *
- * This file contains the code for the Bandwidth Estimator designed
- * for iSAC.
- *
- */
-
-#include <math.h>
-#include <string.h>
-
-#include "modules/audio_coding/codecs/isac/main/source/bandwidth_estimator.h"
-#include "modules/audio_coding/codecs/isac/main/source/settings.h"
-#include "modules/audio_coding/codecs/isac/main/include/isac.h"
-#include "rtc_base/checks.h"
-
-/* array of quantization levels for bottle neck info; Matlab code: */
-/* sprintf('%4.1ff, ', logspace(log10(5000), log10(40000), 12)) */
-static const float kQRateTableWb[12] =
-{
-  10000.0f, 11115.3f, 12355.1f, 13733.1f, 15264.8f, 16967.3f,
-  18859.8f, 20963.3f, 23301.4f, 25900.3f, 28789.0f, 32000.0f};
-
-
-static const float kQRateTableSwb[24] =
-{
-  10000.0f, 11115.3f, 12355.1f, 13733.1f, 15264.8f, 16967.3f,
-  18859.8f, 20963.3f, 23153.1f, 25342.9f, 27532.7f, 29722.5f,
-  31912.3f, 34102.1f, 36291.9f, 38481.7f, 40671.4f, 42861.2f,
-  45051.0f, 47240.8f, 49430.6f, 51620.4f, 53810.2f, 56000.0f,
-};
-
-
-
-
-int32_t WebRtcIsac_InitBandwidthEstimator(
-    BwEstimatorstr*              bwest_str,
-    enum IsacSamplingRate encoderSampRate,
-    enum IsacSamplingRate decoderSampRate)
-{
-  switch(encoderSampRate)
-  {
-    case kIsacWideband:
-      {
-        bwest_str->send_bw_avg       = INIT_BN_EST_WB;
-        break;
-      }
-    case kIsacSuperWideband:
-      {
-        bwest_str->send_bw_avg       = INIT_BN_EST_SWB;
-        break;
-      }
-  }
-
-  switch(decoderSampRate)
-  {
-    case kIsacWideband:
-      {
-        bwest_str->prev_frame_length = INIT_FRAME_LEN_WB;
-        bwest_str->rec_bw_inv        = 1.0f /
-            (INIT_BN_EST_WB + INIT_HDR_RATE_WB);
-        bwest_str->rec_bw            = (int32_t)INIT_BN_EST_WB;
-        bwest_str->rec_bw_avg_Q      = INIT_BN_EST_WB;
-        bwest_str->rec_bw_avg        = INIT_BN_EST_WB + INIT_HDR_RATE_WB;
-        bwest_str->rec_header_rate   = INIT_HDR_RATE_WB;
-        break;
-      }
-    case kIsacSuperWideband:
-      {
-        bwest_str->prev_frame_length = INIT_FRAME_LEN_SWB;
-        bwest_str->rec_bw_inv        = 1.0f /
-            (INIT_BN_EST_SWB + INIT_HDR_RATE_SWB);
-        bwest_str->rec_bw            = (int32_t)INIT_BN_EST_SWB;
-        bwest_str->rec_bw_avg_Q      = INIT_BN_EST_SWB;
-        bwest_str->rec_bw_avg        = INIT_BN_EST_SWB + INIT_HDR_RATE_SWB;
-        bwest_str->rec_header_rate   = INIT_HDR_RATE_SWB;
-        break;
-      }
-  }
-
-  bwest_str->prev_rec_rtp_number       = 0;
-  bwest_str->prev_rec_arr_ts           = 0;
-  bwest_str->prev_rec_send_ts          = 0;
-  bwest_str->prev_rec_rtp_rate         = 1.0f;
-  bwest_str->last_update_ts            = 0;
-  bwest_str->last_reduction_ts         = 0;
-  bwest_str->count_tot_updates_rec     = -9;
-  bwest_str->rec_jitter                = 10.0f;
-  bwest_str->rec_jitter_short_term     = 0.0f;
-  bwest_str->rec_jitter_short_term_abs = 5.0f;
-  bwest_str->rec_max_delay             = 10.0f;
-  bwest_str->rec_max_delay_avg_Q       = 10.0f;
-  bwest_str->num_pkts_rec              = 0;
-
-  bwest_str->send_max_delay_avg        = 10.0f;
-
-  bwest_str->hsn_detect_rec = 0;
-
-  bwest_str->num_consec_rec_pkts_over_30k = 0;
-
-  bwest_str->hsn_detect_snd = 0;
-
-  bwest_str->num_consec_snt_pkts_over_30k = 0;
-
-  bwest_str->in_wait_period = 0;
-
-  bwest_str->change_to_WB = 0;
-
-  bwest_str->numConsecLatePkts = 0;
-  bwest_str->consecLatency = 0;
-  bwest_str->inWaitLatePkts = 0;
-  bwest_str->senderTimestamp = 0;
-  bwest_str->receiverTimestamp = 0;
-
-  bwest_str->external_bw_info.in_use = 0;
-
-  return 0;
-}
-
-/* This function updates both bottle neck rates                                                      */
-/* Parameters:                                                                                       */
-/* rtp_number    - value from RTP packet, from NetEq                                                 */
-/* frame length  - length of signal frame in ms, from iSAC decoder                                   */
-/* send_ts       - value in RTP header giving send time in samples                                     */
-/* arr_ts        - value given by timeGetTime() time of arrival in samples of packet from NetEq      */
-/* pksize        - size of packet in bytes, from NetEq                                               */
-/* Index         - integer (range 0...23) indicating bottle neck & jitter as estimated by other side */
-/* returns 0 if everything went fine, -1 otherwise                                                   */
-int16_t WebRtcIsac_UpdateBandwidthEstimator(
-    BwEstimatorstr* bwest_str,
-    const uint16_t rtp_number,
-    const int32_t frame_length,
-    const uint32_t send_ts,
-    const uint32_t arr_ts,
-    const size_t pksize
-    /*,    const uint16_t Index*/)
-{
-  float weight = 0.0f;
-  float curr_bw_inv = 0.0f;
-  float rec_rtp_rate;
-  float t_diff_proj;
-  float arr_ts_diff;
-  float send_ts_diff;
-  float arr_time_noise;
-  float arr_time_noise_abs;
-
-  float delay_correction_factor = 1;
-  float late_diff = 0.0f;
-  int immediate_set = 0;
-  int num_pkts_expected;
-
-  RTC_DCHECK(!bwest_str->external_bw_info.in_use);
-
-  // We have to adjust the header-rate if the first packet has a
-  // frame-size different than the initialized value.
-  if ( frame_length != bwest_str->prev_frame_length )
-  {
-    bwest_str->rec_header_rate = (float)HEADER_SIZE * 8.0f *
-        1000.0f / (float)frame_length;     /* bits/s */
-  }
-
-  /* UPDATE ESTIMATES ON THIS SIDE */
-  /* compute far-side transmission rate */
-  rec_rtp_rate = ((float)pksize * 8.0f * 1000.0f / (float)frame_length) +
-      bwest_str->rec_header_rate;
-  // rec_rtp_rate packet bits/s + header bits/s
-
-  /* check for timer wrap-around */
-  if (arr_ts < bwest_str->prev_rec_arr_ts)
-  {
-    bwest_str->prev_rec_arr_ts   = arr_ts;
-    bwest_str->last_update_ts    = arr_ts;
-    bwest_str->last_reduction_ts = arr_ts + 3*FS;
-    bwest_str->num_pkts_rec      = 0;
-
-    /* store frame length */
-    bwest_str->prev_frame_length = frame_length;
-
-    /* store far-side transmission rate */
-    bwest_str->prev_rec_rtp_rate = rec_rtp_rate;
-
-    /* store far-side RTP time stamp */
-    bwest_str->prev_rec_rtp_number = rtp_number;
-
-    return 0;
-  }
-
-  bwest_str->num_pkts_rec++;
-
-  /* check that it's not one of the first 9 packets */
-  if ( bwest_str->count_tot_updates_rec > 0 )
-  {
-    if(bwest_str->in_wait_period > 0 )
-    {
-      bwest_str->in_wait_period--;
-    }
-
-    bwest_str->inWaitLatePkts -= ((bwest_str->inWaitLatePkts > 0)? 1:0);
-    send_ts_diff = (float)(send_ts - bwest_str->prev_rec_send_ts);
-
-    if (send_ts_diff <= (16 * frame_length)*2)
-      //doesn't allow for a dropped packet, not sure necessary to be
-      // that strict -DH
-    {
-      /* if not been updated for a long time, reduce the BN estimate */
-      if((uint32_t)(arr_ts - bwest_str->last_update_ts) *
-         1000.0f / FS > 3000)
-      {
-        //how many frames should have been received since the last
-        // update if too many have been dropped or there have been
-        // big delays won't allow this reduction may no longer need
-        // the send_ts_diff here
-        num_pkts_expected = (int)(((float)(arr_ts -
-                                           bwest_str->last_update_ts) * 1000.0f /(float) FS) /
-                                  (float)frame_length);
-
-        if(((float)bwest_str->num_pkts_rec/(float)num_pkts_expected) >
-           0.9)
-        {
-          float inv_bitrate = (float) pow( 0.99995,
-                                           (double)((uint32_t)(arr_ts -
-                                                                     bwest_str->last_reduction_ts)*1000.0f/FS) );
-
-          if ( inv_bitrate )
-          {
-            bwest_str->rec_bw_inv /= inv_bitrate;
-
-            //precautionary, likely never necessary
-            if (bwest_str->hsn_detect_snd &&
-                bwest_str->hsn_detect_rec)
-            {
-              if (bwest_str->rec_bw_inv > 0.000066f)
-              {
-                bwest_str->rec_bw_inv = 0.000066f;
-              }
-            }
-          }
-          else
-          {
-            bwest_str->rec_bw_inv = 1.0f /
-                (INIT_BN_EST_WB + INIT_HDR_RATE_WB);
-          }
-          /* reset time-since-update counter */
-          bwest_str->last_reduction_ts = arr_ts;
-        }
-        else
-          //reset here?
-        {
-          bwest_str->last_reduction_ts = arr_ts + 3*FS;
-          bwest_str->last_update_ts = arr_ts;
-          bwest_str->num_pkts_rec = 0;
-        }
-      }
-    }
-    else
-    {
-      bwest_str->last_reduction_ts = arr_ts + 3*FS;
-      bwest_str->last_update_ts = arr_ts;
-      bwest_str->num_pkts_rec = 0;
-    }
-
-
-    /* temporarily speed up adaptation if frame length has changed */
-    if ( frame_length != bwest_str->prev_frame_length )
-    {
-      bwest_str->count_tot_updates_rec = 10;
-      bwest_str->rec_header_rate = (float)HEADER_SIZE * 8.0f *
-          1000.0f / (float)frame_length;     /* bits/s */
-
-      bwest_str->rec_bw_inv = 1.0f /((float)bwest_str->rec_bw +
-                                     bwest_str->rec_header_rate);
-    }
-
-    ////////////////////////
-    arr_ts_diff = (float)(arr_ts - bwest_str->prev_rec_arr_ts);
-
-    if (send_ts_diff > 0 )
-    {
-      late_diff = arr_ts_diff - send_ts_diff;
-    }
-    else
-    {
-      late_diff = arr_ts_diff - (float)(16 * frame_length);
-    }
-
-    if((late_diff > 0) && !bwest_str->inWaitLatePkts)
-    {
-      bwest_str->numConsecLatePkts++;
-      bwest_str->consecLatency += late_diff;
-    }
-    else
-    {
-      bwest_str->numConsecLatePkts = 0;
-      bwest_str->consecLatency = 0;
-    }
-    if(bwest_str->numConsecLatePkts > 50)
-    {
-      float latencyMs = bwest_str->consecLatency/(FS/1000);
-      float averageLatencyMs = latencyMs / bwest_str->numConsecLatePkts;
-      delay_correction_factor = frame_length / (frame_length + averageLatencyMs);
-      immediate_set = 1;
-      bwest_str->inWaitLatePkts = (int16_t)((bwest_str->consecLatency/(FS/1000)) / 30);// + 150;
-      bwest_str->start_wait_period = arr_ts;
-    }
-    ///////////////////////////////////////////////
-
-
-
-    /*   update only if previous packet was not lost */
-    if ( rtp_number == bwest_str->prev_rec_rtp_number + 1 )
-    {
-
-
-      if (!(bwest_str->hsn_detect_snd && bwest_str->hsn_detect_rec))
-      {
-        if ((arr_ts_diff > (float)(16 * frame_length)))
-        {
-          //1/2 second
-          if ((late_diff > 8000.0f) && !bwest_str->in_wait_period)
-          {
-            delay_correction_factor = 0.7f;
-            bwest_str->in_wait_period = 55;
-            bwest_str->start_wait_period = arr_ts;
-            immediate_set = 1;
-          }
-          //320 ms
-          else if (late_diff > 5120.0f && !bwest_str->in_wait_period)
-          {
-            delay_correction_factor = 0.8f;
-            immediate_set = 1;
-            bwest_str->in_wait_period = 44;
-            bwest_str->start_wait_period = arr_ts;
-          }
-        }
-      }
-
-
-      if ((bwest_str->prev_rec_rtp_rate > bwest_str->rec_bw_avg) &&
-          (rec_rtp_rate > bwest_str->rec_bw_avg)                 &&
-          !bwest_str->in_wait_period)
-      {
-        /* test if still in initiation period and increment counter */
-        if (bwest_str->count_tot_updates_rec++ > 99)
-        {
-          /* constant weight after initiation part */
-          weight = 0.01f;
-        }
-        else
-        {
-          /* weight decreases with number of updates */
-          weight = 1.0f / (float) bwest_str->count_tot_updates_rec;
-        }
-        /* Bottle Neck Estimation */
-
-        /* limit outliers */
-        /* if more than 25 ms too much */
-        if (arr_ts_diff > frame_length * FS/1000 + 400.0f)
-        {
-          // in samples,  why 25ms??
-          arr_ts_diff = frame_length * FS/1000 + 400.0f;
-        }
-        if(arr_ts_diff < (frame_length * FS/1000) - 160.0f)
-        {
-          /* don't allow it to be less than frame rate - 10 ms */
-          arr_ts_diff = (float)frame_length * FS/1000 - 160.0f;
-        }
-
-        /* compute inverse receiving rate for last packet */
-        curr_bw_inv = arr_ts_diff / ((float)(pksize + HEADER_SIZE) *
-                                     8.0f * FS); // (180+35)*8*16000 = 27.5 Mbit....
-
-
-        if(curr_bw_inv <
-           (1.0f / (MAX_ISAC_BW + bwest_str->rec_header_rate)))
-        {
-          // don't allow inv rate to be larger than MAX
-          curr_bw_inv = (1.0f /
-                         (MAX_ISAC_BW + bwest_str->rec_header_rate));
-        }
-
-        /* update bottle neck rate estimate */
-        bwest_str->rec_bw_inv = weight * curr_bw_inv +
-            (1.0f - weight) * bwest_str->rec_bw_inv;
-
-        /* reset time-since-update counter */
-        bwest_str->last_update_ts    = arr_ts;
-        bwest_str->last_reduction_ts = arr_ts + 3 * FS;
-        bwest_str->num_pkts_rec = 0;
-
-        /* Jitter Estimation */
-        /* projected difference between arrival times */
-        t_diff_proj = ((float)(pksize + HEADER_SIZE) * 8.0f *
-                       1000.0f) / bwest_str->rec_bw_avg;
-
-
-        // difference between projected and actual
-        //   arrival time differences
-        arr_time_noise = (float)(arr_ts_diff*1000.0f/FS) -
-            t_diff_proj;
-        arr_time_noise_abs = (float) fabs( arr_time_noise );
-
-        /* long term averaged absolute jitter */
-        bwest_str->rec_jitter = weight * arr_time_noise_abs +
-            (1.0f - weight) * bwest_str->rec_jitter;
-        if (bwest_str->rec_jitter > 10.0f)
-        {
-          bwest_str->rec_jitter = 10.0f;
-        }
-        /* short term averaged absolute jitter */
-        bwest_str->rec_jitter_short_term_abs = 0.05f *
-            arr_time_noise_abs + 0.95f *
-            bwest_str->rec_jitter_short_term_abs;
-
-        /* short term averaged jitter */
-        bwest_str->rec_jitter_short_term = 0.05f * arr_time_noise +
-            0.95f * bwest_str->rec_jitter_short_term;
-      }
-    }
-  }
-  else
-  {
-    // reset time-since-update counter when
-    // receiving the first 9 packets
-    bwest_str->last_update_ts    = arr_ts;
-    bwest_str->last_reduction_ts = arr_ts + 3*FS;
-    bwest_str->num_pkts_rec = 0;
-
-    bwest_str->count_tot_updates_rec++;
-  }
-
-  /* limit minimum bottle neck rate */
-  if (bwest_str->rec_bw_inv > 1.0f / ((float)MIN_ISAC_BW +
-                                      bwest_str->rec_header_rate))
-  {
-    bwest_str->rec_bw_inv = 1.0f / ((float)MIN_ISAC_BW +
-                                    bwest_str->rec_header_rate);
-  }
-
-  // limit maximum bitrate
-  if (bwest_str->rec_bw_inv < 1.0f / ((float)MAX_ISAC_BW +
-                                      bwest_str->rec_header_rate))
-  {
-    bwest_str->rec_bw_inv = 1.0f / ((float)MAX_ISAC_BW +
-                                    bwest_str->rec_header_rate);
-  }
-
-  /* store frame length */
-  bwest_str->prev_frame_length = frame_length;
-
-  /* store far-side transmission rate */
-  bwest_str->prev_rec_rtp_rate = rec_rtp_rate;
-
-  /* store far-side RTP time stamp */
-  bwest_str->prev_rec_rtp_number = rtp_number;
-
-  // Replace bwest_str->rec_max_delay by the new
-  // value (atomic operation)
-  bwest_str->rec_max_delay = 3.0f * bwest_str->rec_jitter;
-
-  /* store send and arrival time stamp */
-  bwest_str->prev_rec_arr_ts = arr_ts ;
-  bwest_str->prev_rec_send_ts = send_ts;
-
-  /* Replace bwest_str->rec_bw by the new value (atomic operation) */
-  bwest_str->rec_bw = (int32_t)(1.0f / bwest_str->rec_bw_inv -
-                                      bwest_str->rec_header_rate);
-
-  if (immediate_set)
-  {
-    bwest_str->rec_bw = (int32_t) (delay_correction_factor *
-                                         (float) bwest_str->rec_bw);
-
-    if (bwest_str->rec_bw < (int32_t) MIN_ISAC_BW)
-    {
-      bwest_str->rec_bw = (int32_t) MIN_ISAC_BW;
-    }
-
-    bwest_str->rec_bw_avg = bwest_str->rec_bw +
-        bwest_str->rec_header_rate;
-
-    bwest_str->rec_bw_avg_Q = (float) bwest_str->rec_bw;
-
-    bwest_str->rec_jitter_short_term = 0.0f;
-
-    bwest_str->rec_bw_inv = 1.0f / (bwest_str->rec_bw +
-                                    bwest_str->rec_header_rate);
-
-    bwest_str->count_tot_updates_rec = 1;
-
-    immediate_set = 0;
-    bwest_str->consecLatency = 0;
-    bwest_str->numConsecLatePkts = 0;
-  }
-
-  return 0;
-}
-
-
-/* This function updates the send bottle neck rate                                                   */
-/* Index         - integer (range 0...23) indicating bottle neck & jitter as estimated by other side */
-/* returns 0 if everything went fine, -1 otherwise                                                   */
-int16_t WebRtcIsac_UpdateUplinkBwImpl(
-    BwEstimatorstr*           bwest_str,
-    int16_t               index,
-    enum IsacSamplingRate encoderSamplingFreq)
-{
-  RTC_DCHECK(!bwest_str->external_bw_info.in_use);
-
-  if((index < 0) || (index > 23))
-  {
-    return -ISAC_RANGE_ERROR_BW_ESTIMATOR;
-  }
-
-  /* UPDATE ESTIMATES FROM OTHER SIDE */
-  if(encoderSamplingFreq == kIsacWideband)
-  {
-    if(index > 11)
-    {
-      index -= 12;   
-      /* compute the jitter estimate as decoded on the other side */
-      bwest_str->send_max_delay_avg = 0.9f * bwest_str->send_max_delay_avg +
-          0.1f * (float)MAX_ISAC_MD;
-    }
-    else
-    {
-      /* compute the jitter estimate as decoded on the other side */
-      bwest_str->send_max_delay_avg = 0.9f * bwest_str->send_max_delay_avg +
-          0.1f * (float)MIN_ISAC_MD;
-    }
-
-    /* compute the BN estimate as decoded on the other side */
-    bwest_str->send_bw_avg = 0.9f * bwest_str->send_bw_avg +
-        0.1f * kQRateTableWb[index];
-  }
-  else
-  {
-    /* compute the BN estimate as decoded on the other side */
-    bwest_str->send_bw_avg = 0.9f * bwest_str->send_bw_avg +
-        0.1f * kQRateTableSwb[index];
-  }
-
-  if (bwest_str->send_bw_avg > (float) 28000 && !bwest_str->hsn_detect_snd)
-  {
-    bwest_str->num_consec_snt_pkts_over_30k++;
-
-    if (bwest_str->num_consec_snt_pkts_over_30k >= 66)
-    {
-      //approx 2 seconds with 30ms frames
-      bwest_str->hsn_detect_snd = 1;
-    }
-  }
-  else if (!bwest_str->hsn_detect_snd)
-  {
-    bwest_str->num_consec_snt_pkts_over_30k = 0;
-  }
-  return 0;
-}
-
-// called when there is upper-band bit-stream to update jitter
-// statistics.
-int16_t WebRtcIsac_UpdateUplinkJitter(
-    BwEstimatorstr*              bwest_str,
-    int32_t                  index)
-{
-  RTC_DCHECK(!bwest_str->external_bw_info.in_use);
-
-  if((index < 0) || (index > 23))
-  {
-    return -ISAC_RANGE_ERROR_BW_ESTIMATOR;
-  }
-
-  if(index > 0)
-  {
-    /* compute the jitter estimate as decoded on the other side */
-    bwest_str->send_max_delay_avg = 0.9f * bwest_str->send_max_delay_avg +
-        0.1f * (float)MAX_ISAC_MD;
-  }
-  else
-  {
-    /* compute the jitter estimate as decoded on the other side */
-    bwest_str->send_max_delay_avg = 0.9f * bwest_str->send_max_delay_avg +
-        0.1f * (float)MIN_ISAC_MD;
-  }
-
-  return 0;
-}
-
-
-
-// Returns the bandwidth/jitter estimation code (integer 0...23)
-// to put in the sending iSAC payload
-void
-WebRtcIsac_GetDownlinkBwJitIndexImpl(
-    BwEstimatorstr*           bwest_str,
-    int16_t*              bottleneckIndex,
-    int16_t*              jitterInfo,
-    enum IsacSamplingRate decoderSamplingFreq)
-{
-  float MaxDelay;
-  //uint16_t MaxDelayBit;
-
-  float rate;
-  float r;
-  float e1, e2;
-  const float weight = 0.1f;
-  const float* ptrQuantizationTable;
-  int16_t addJitterInfo;
-  int16_t minInd;
-  int16_t maxInd;
-  int16_t midInd;
-
-  if (bwest_str->external_bw_info.in_use) {
-    *bottleneckIndex = bwest_str->external_bw_info.bottleneck_idx;
-    *jitterInfo = bwest_str->external_bw_info.jitter_info;
-    return;
-  }
-
-  /* Get Max Delay Bit */
-  /* get unquantized max delay */
-  MaxDelay = (float)WebRtcIsac_GetDownlinkMaxDelay(bwest_str);
-
-  if ( ((1.f - weight) * bwest_str->rec_max_delay_avg_Q + weight *
-        MAX_ISAC_MD - MaxDelay) > (MaxDelay - (1.f-weight) *
-                                   bwest_str->rec_max_delay_avg_Q - weight * MIN_ISAC_MD) )
-  {
-    jitterInfo[0] = 0;
-    /* update quantized average */
-    bwest_str->rec_max_delay_avg_Q =
-        (1.f - weight) * bwest_str->rec_max_delay_avg_Q + weight *
-        (float)MIN_ISAC_MD;
-  }
-  else
-  {
-    jitterInfo[0] = 1;
-    /* update quantized average */
-    bwest_str->rec_max_delay_avg_Q =
-        (1.f-weight) * bwest_str->rec_max_delay_avg_Q + weight *
-        (float)MAX_ISAC_MD;
-  }
-
-  // Get unquantized rate.
-  rate = (float)WebRtcIsac_GetDownlinkBandwidth(bwest_str);
-
-  /* Get Rate Index */
-  if(decoderSamplingFreq == kIsacWideband)
-  {
-    ptrQuantizationTable = kQRateTableWb;
-    addJitterInfo = 1;
-    maxInd = 11;
-  }
-  else
-  {
-    ptrQuantizationTable = kQRateTableSwb;
-    addJitterInfo = 0;
-    maxInd = 23;
-  }
-
-  minInd = 0;
-  while(maxInd > minInd + 1)
-  {
-    midInd = (maxInd + minInd) >> 1;
-    if(rate > ptrQuantizationTable[midInd])
-    {
-      minInd = midInd;
-    }
-    else
-    {
-      maxInd = midInd;
-    }
-  }
-  // Chose the index which gives results an average which is closest
-  // to rate
-  r = (1 - weight) * bwest_str->rec_bw_avg_Q - rate;
-  e1 = weight * ptrQuantizationTable[minInd] + r;
-  e2 = weight * ptrQuantizationTable[maxInd] + r;
-  e1 = (e1 > 0)? e1:-e1;
-  e2 = (e2 > 0)? e2:-e2;
-  if(e1 < e2)
-  {
-    bottleneckIndex[0] = minInd;
-  }
-  else
-  {
-    bottleneckIndex[0] = maxInd;
-  }
-
-  bwest_str->rec_bw_avg_Q = (1 - weight) * bwest_str->rec_bw_avg_Q +
-      weight * ptrQuantizationTable[bottleneckIndex[0]];
-  bottleneckIndex[0] += jitterInfo[0] * 12 * addJitterInfo;
-
-  bwest_str->rec_bw_avg = (1 - weight) * bwest_str->rec_bw_avg + weight *
-      (rate + bwest_str->rec_header_rate);
-}
-
-
-
-/* get the bottle neck rate from far side to here, as estimated on this side */
-int32_t WebRtcIsac_GetDownlinkBandwidth( const BwEstimatorstr *bwest_str)
-{
-  int32_t  rec_bw;
-  float   jitter_sign;
-  float   bw_adjust;
-
-  RTC_DCHECK(!bwest_str->external_bw_info.in_use);
-
-  /* create a value between -1.0 and 1.0 indicating "average sign" of jitter */
-  jitter_sign = bwest_str->rec_jitter_short_term /
-      bwest_str->rec_jitter_short_term_abs;
-
-  /* adjust bw proportionally to negative average jitter sign */
-  bw_adjust = 1.0f - jitter_sign * (0.15f + 0.15f * jitter_sign * jitter_sign);
-
-  /* adjust Rate if jitter sign is mostly constant */
-  rec_bw = (int32_t)(bwest_str->rec_bw * bw_adjust);
-
-  /* limit range of bottle neck rate */
-  if (rec_bw < MIN_ISAC_BW)
-  {
-    rec_bw = MIN_ISAC_BW;
-  }
-  else if (rec_bw > MAX_ISAC_BW)
-  {
-    rec_bw = MAX_ISAC_BW;
-  }
-  return rec_bw;
-}
-
-/* Returns the max delay (in ms) */
-int32_t
-WebRtcIsac_GetDownlinkMaxDelay(const BwEstimatorstr *bwest_str)
-{
-  int32_t rec_max_delay;
-
-  RTC_DCHECK(!bwest_str->external_bw_info.in_use);
-
-  rec_max_delay = (int32_t)(bwest_str->rec_max_delay);
-
-  /* limit range of jitter estimate */
-  if (rec_max_delay < MIN_ISAC_MD)
-  {
-    rec_max_delay = MIN_ISAC_MD;
-  }
-  else if (rec_max_delay > MAX_ISAC_MD)
-  {
-    rec_max_delay = MAX_ISAC_MD;
-  }
-  return rec_max_delay;
-}
-
-/* Clamp val to the closed interval [min,max]. */
-static int32_t clamp(int32_t val, int32_t min, int32_t max) {
-  RTC_DCHECK_LE(min, max);
-  return val < min ? min : (val > max ? max : val);
-}
-
-int32_t WebRtcIsac_GetUplinkBandwidth(const BwEstimatorstr* bwest_str) {
-  return bwest_str->external_bw_info.in_use
-             ? bwest_str->external_bw_info.send_bw_avg
-             : clamp(bwest_str->send_bw_avg, MIN_ISAC_BW, MAX_ISAC_BW);
-}
-
-int32_t WebRtcIsac_GetUplinkMaxDelay(const BwEstimatorstr* bwest_str) {
-  return bwest_str->external_bw_info.in_use
-             ? bwest_str->external_bw_info.send_max_delay_avg
-             : clamp(bwest_str->send_max_delay_avg, MIN_ISAC_MD, MAX_ISAC_MD);
-}
-
-/*
- * update long-term average bitrate and amount of data in buffer
- * returns minimum payload size (bytes)
- */
-int WebRtcIsac_GetMinBytes(
-    RateModel*         State,
-    int                StreamSize,    /* bytes in bitstream */
-    const int          FrameSamples,  /* samples per frame */
-    const double       BottleNeck,    /* bottle neck rate; excl headers (bps) */
-    const double       DelayBuildUp,  /* max delay from bottleneck buffering (ms) */
-    enum ISACBandwidth bandwidth
-    /*,int16_t        frequentLargePackets*/)
-{
-  double MinRate = 0.0;
-  int    MinBytes;
-  double TransmissionTime;
-  int    burstInterval = BURST_INTERVAL;
-
-  // first 10 packets @ low rate, then INIT_BURST_LEN packets @
-  // fixed rate of INIT_RATE bps
-  if (State->InitCounter > 0)
-  {
-    if (State->InitCounter-- <= INIT_BURST_LEN)
-    {
-      if(bandwidth == isac8kHz)
-      {
-        MinRate = INIT_RATE_WB;
-      }
-      else
-      {
-        MinRate = INIT_RATE_SWB;
-      }
-    }
-    else
-    {
-      MinRate = 0;
-    }
-  }
-  else
-  {
-    /* handle burst */
-    if (State->BurstCounter)
-    {
-      if (State->StillBuffered < (1.0 - 1.0/BURST_LEN) * DelayBuildUp)
-      {
-        /* max bps derived from BottleNeck and DelayBuildUp values */
-        MinRate = (1.0 + (FS/1000) * DelayBuildUp /
-                   (double)(BURST_LEN * FrameSamples)) * BottleNeck;
-      }
-      else
-      {
-        // max bps derived from StillBuffered and DelayBuildUp
-        // values
-        MinRate = (1.0 + (FS/1000) * (DelayBuildUp -
-                                      State->StillBuffered) / (double)FrameSamples) * BottleNeck;
-        if (MinRate < 1.04 * BottleNeck)
-        {
-          MinRate = 1.04 * BottleNeck;
-        }
-      }
-      State->BurstCounter--;
-    }
-  }
-
-
-  /* convert rate from bits/second to bytes/packet */
-  MinBytes = (int) (MinRate * FrameSamples / (8.0 * FS));
-
-  /* StreamSize will be adjusted if less than MinBytes */
-  if (StreamSize < MinBytes)
-  {
-    StreamSize = MinBytes;
-  }
-
-  /* keep track of when bottle neck was last exceeded by at least 1% */
-  if (StreamSize * 8.0 * FS / FrameSamples > 1.01 * BottleNeck) {
-    if (State->PrevExceed) {
-      /* bottle_neck exceded twice in a row, decrease ExceedAgo */
-      State->ExceedAgo -= /*BURST_INTERVAL*/ burstInterval / (BURST_LEN - 1);
-      if (State->ExceedAgo < 0)
-        State->ExceedAgo = 0;
-    }
-    else
-    {
-      State->ExceedAgo += (FrameSamples * 1000) / FS; /* ms */
-      State->PrevExceed = 1;
-    }
-  }
-  else
-  {
-    State->PrevExceed = 0;
-    State->ExceedAgo += (FrameSamples * 1000) / FS;     /* ms */
-  }
-
-  /* set burst flag if bottle neck not exceeded for long time */
-  if ((State->ExceedAgo > burstInterval) &&
-      (State->BurstCounter == 0))
-  {
-    if (State->PrevExceed)
-    {
-      State->BurstCounter = BURST_LEN - 1;
-    }
-    else
-    {
-      State->BurstCounter = BURST_LEN;
-    }
-  }
-
-
-  /* Update buffer delay */
-  TransmissionTime = StreamSize * 8.0 * 1000.0 / BottleNeck;  /* ms */
-  State->StillBuffered += TransmissionTime;
-  State->StillBuffered -= (FrameSamples * 1000) / FS;     /* ms */
-  if (State->StillBuffered < 0.0)
-  {
-    State->StillBuffered = 0.0;
-  }
-
-  return MinBytes;
-}
-
-
-/*
- * update long-term average bitrate and amount of data in buffer
- */
-void WebRtcIsac_UpdateRateModel(
-    RateModel *State,
-    int StreamSize,                    /* bytes in bitstream */
-    const int FrameSamples,            /* samples per frame */
-    const double BottleNeck)        /* bottle neck rate; excl headers (bps) */
-{
-  double TransmissionTime;
-
-  /* avoid the initial "high-rate" burst */
-  State->InitCounter = 0;
-
-  /* Update buffer delay */
-  TransmissionTime = StreamSize * 8.0 * 1000.0 / BottleNeck;  /* ms */
-  State->StillBuffered += TransmissionTime;
-  State->StillBuffered -= (FrameSamples * 1000) / FS;     /* ms */
-  if (State->StillBuffered < 0.0)
-    State->StillBuffered = 0.0;
-
-}
-
-
-void WebRtcIsac_InitRateModel(
-    RateModel *State)
-{
-  State->PrevExceed      = 0;                        /* boolean */
-  State->ExceedAgo       = 0;                        /* ms */
-  State->BurstCounter    = 0;                        /* packets */
-  State->InitCounter     = INIT_BURST_LEN + 10;    /* packets */
-  State->StillBuffered   = 1.0;                    /* ms */
-}
-
-int WebRtcIsac_GetNewFrameLength(
-    double bottle_neck,
-    int    current_framesamples)
-{
-  int new_framesamples;
-
-  const int Thld_20_30 = 20000;
-
-  //const int Thld_30_20 = 30000;
-  const int Thld_30_20 = 1000000;   // disable 20 ms frames
-
-  const int Thld_30_60 = 18000;
-  //const int Thld_30_60 = 0;      // disable 60 ms frames
-
-  const int Thld_60_30 = 27000;
-
-
-  new_framesamples = current_framesamples;
-
-  /* find new framelength */
-  switch(current_framesamples) {
-    case 320:
-      if (bottle_neck < Thld_20_30)
-        new_framesamples = 480;
-      break;
-    case 480:
-      if (bottle_neck < Thld_30_60)
-        new_framesamples = 960;
-      else if (bottle_neck > Thld_30_20)
-        new_framesamples = 320;
-      break;
-    case 960:
-      if (bottle_neck >= Thld_60_30)
-        new_framesamples = 480;
-      break;
-  }
-
-  return new_framesamples;
-}
-
-double WebRtcIsac_GetSnr(
-    double bottle_neck,
-    int    framesamples)
-{
-  double s2nr;
-
-  const double a_20 = -30.0;
-  const double b_20 = 0.8;
-  const double c_20 = 0.0;
-
-  const double a_30 = -23.0;
-  const double b_30 = 0.48;
-  const double c_30 = 0.0;
-
-  const double a_60 = -23.0;
-  const double b_60 = 0.53;
-  const double c_60 = 0.0;
-
-
-  /* find new SNR value */
-  switch(framesamples) {
-    case 320:
-      s2nr = a_20 + b_20 * bottle_neck * 0.001 + c_20 * bottle_neck *
-          bottle_neck * 0.000001;
-      break;
-    case 480:
-      s2nr = a_30 + b_30 * bottle_neck * 0.001 + c_30 * bottle_neck *
-          bottle_neck * 0.000001;
-      break;
-    case 960:
-      s2nr = a_60 + b_60 * bottle_neck * 0.001 + c_60 * bottle_neck *
-          bottle_neck * 0.000001;
-      break;
-    default:
-      s2nr = 0;
-  }
-
-  return s2nr;
-
-}
diff --git a/modules/audio_coding/codecs/isac/main/source/bandwidth_estimator.h b/modules/audio_coding/codecs/isac/main/source/bandwidth_estimator.h
deleted file mode 100644
index 5f4550a..0000000
--- a/modules/audio_coding/codecs/isac/main/source/bandwidth_estimator.h
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * bandwidth_estimator.h
- *
- * This header file contains the API for the Bandwidth Estimator
- * designed for iSAC.
- *
- */
-
-#ifndef MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_SOURCE_BANDWIDTH_ESTIMATOR_H_
-#define MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_SOURCE_BANDWIDTH_ESTIMATOR_H_
-
-#include <stddef.h>
-
-#include "modules/audio_coding/codecs/isac/main/source/settings.h"
-#include "modules/audio_coding/codecs/isac/main/source/structs.h"
-
-#define MIN_ISAC_BW 10000
-#define MIN_ISAC_BW_LB 10000
-#define MIN_ISAC_BW_UB 25000
-
-#define MAX_ISAC_BW 56000
-#define MAX_ISAC_BW_UB 32000
-#define MAX_ISAC_BW_LB 32000
-
-#define MIN_ISAC_MD 5
-#define MAX_ISAC_MD 25
-
-// assumed header size, in bytes; we don't know the exact number
-// (header compression may be used)
-#define HEADER_SIZE 35
-
-// Initial Frame-Size, in ms, for Wideband & Super-Wideband Mode
-#define INIT_FRAME_LEN_WB 60
-#define INIT_FRAME_LEN_SWB 30
-
-// Initial Bottleneck Estimate, in bits/sec, for
-// Wideband & Super-wideband mode
-#define INIT_BN_EST_WB 20e3f
-#define INIT_BN_EST_SWB 56e3f
-
-// Initial Header rate (header rate depends on frame-size),
-// in bits/sec, for Wideband & Super-Wideband mode.
-#define INIT_HDR_RATE_WB \
-  ((float)HEADER_SIZE * 8.0f * 1000.0f / (float)INIT_FRAME_LEN_WB)
-#define INIT_HDR_RATE_SWB \
-  ((float)HEADER_SIZE * 8.0f * 1000.0f / (float)INIT_FRAME_LEN_SWB)
-
-// number of packets in a row for a high rate burst
-#define BURST_LEN 3
-
-// ms, max time between two full bursts
-#define BURST_INTERVAL 500
-
-// number of packets in a row for initial high rate burst
-#define INIT_BURST_LEN 5
-
-// bits/s, rate for the first BURST_LEN packets
-#define INIT_RATE_WB INIT_BN_EST_WB
-#define INIT_RATE_SWB INIT_BN_EST_SWB
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-/* This function initializes the struct                    */
-/* to be called before using the struct for anything else  */
-/* returns 0 if everything went fine, -1 otherwise         */
-int32_t WebRtcIsac_InitBandwidthEstimator(
-    BwEstimatorstr* bwest_str,
-    enum IsacSamplingRate encoderSampRate,
-    enum IsacSamplingRate decoderSampRate);
-
-/* This function updates the receiving estimate */
-/* Parameters: */
-/* rtp_number    - value from RTP packet, from NetEq */
-/* frame length  - length of signal frame in ms, from iSAC decoder */
-/* send_ts       - value in RTP header giving send time in samples */
-/* arr_ts        - value given by timeGetTime() time of arrival in samples of
- * packet from NetEq      */
-/* pksize        - size of packet in bytes, from NetEq */
-/* Index         - integer (range 0...23) indicating bottle neck & jitter as
- * estimated by other side */
-/* returns 0 if everything went fine, -1 otherwise */
-int16_t WebRtcIsac_UpdateBandwidthEstimator(BwEstimatorstr* bwest_str,
-                                            uint16_t rtp_number,
-                                            int32_t frame_length,
-                                            uint32_t send_ts,
-                                            uint32_t arr_ts,
-                                            size_t pksize);
-
-/* Update receiving estimates. Used when we only receive BWE index, no iSAC data
- * packet. */
-int16_t WebRtcIsac_UpdateUplinkBwImpl(
-    BwEstimatorstr* bwest_str,
-    int16_t Index,
-    enum IsacSamplingRate encoderSamplingFreq);
-
-/* Returns the bandwidth/jitter estimation code (integer 0...23) to put in the
- * sending iSAC payload */
-void WebRtcIsac_GetDownlinkBwJitIndexImpl(
-    BwEstimatorstr* bwest_str,
-    int16_t* bottleneckIndex,
-    int16_t* jitterInfo,
-    enum IsacSamplingRate decoderSamplingFreq);
-
-/* Returns the bandwidth estimation (in bps) */
-int32_t WebRtcIsac_GetDownlinkBandwidth(const BwEstimatorstr* bwest_str);
-
-/* Returns the max delay (in ms) */
-int32_t WebRtcIsac_GetDownlinkMaxDelay(const BwEstimatorstr* bwest_str);
-
-/* Returns the bandwidth that iSAC should send with in bps */
-int32_t WebRtcIsac_GetUplinkBandwidth(const BwEstimatorstr* bwest_str);
-
-/* Returns the max delay value from the other side in ms */
-int32_t WebRtcIsac_GetUplinkMaxDelay(const BwEstimatorstr* bwest_str);
-
-/*
- * update amount of data in bottle neck buffer and burst handling
- * returns minimum payload size (bytes)
- */
-int WebRtcIsac_GetMinBytes(
-    RateModel* State,
-    int StreamSize,      /* bytes in bitstream */
-    int FrameLen,        /* ms per frame */
-    double BottleNeck,   /* bottle neck rate; excl headers (bps) */
-    double DelayBuildUp, /* max delay from bottleneck buffering (ms) */
-    enum ISACBandwidth bandwidth
-    /*,int16_t        frequentLargePackets*/);
-
-/*
- * update long-term average bitrate and amount of data in buffer
- */
-void WebRtcIsac_UpdateRateModel(
-    RateModel* State,
-    int StreamSize,     /* bytes in bitstream */
-    int FrameSamples,   /* samples per frame */
-    double BottleNeck); /* bottle neck rate; excl headers (bps) */
-
-void WebRtcIsac_InitRateModel(RateModel* State);
-
-/* Returns the new framelength value (input argument: bottle_neck) */
-int WebRtcIsac_GetNewFrameLength(double bottle_neck, int current_framelength);
-
-/* Returns the new SNR value (input argument: bottle_neck) */
-double WebRtcIsac_GetSnr(double bottle_neck, int new_framelength);
-
-int16_t WebRtcIsac_UpdateUplinkJitter(BwEstimatorstr* bwest_str, int32_t index);
-
-#if defined(__cplusplus)
-}
-#endif
-
-#endif /* MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_SOURCE_BANDWIDTH_ESTIMATOR_H_ \
-        */
diff --git a/modules/audio_coding/codecs/isac/main/source/codec.h b/modules/audio_coding/codecs/isac/main/source/codec.h
deleted file mode 100644
index a7c7ddc..0000000
--- a/modules/audio_coding/codecs/isac/main/source/codec.h
+++ /dev/null
@@ -1,223 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * codec.h
- *
- * This header file contains the calls to the internal encoder
- * and decoder functions.
- *
- */
-
-#ifndef MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_SOURCE_CODEC_H_
-#define MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_SOURCE_CODEC_H_
-
-#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);
-
-int WebRtcIsac_EstimateBandwidth(BwEstimatorstr* bwest_str,
-                                 Bitstr* streamdata,
-                                 size_t packet_size,
-                                 uint16_t rtp_seq_number,
-                                 uint32_t send_ts,
-                                 uint32_t arr_ts,
-                                 enum IsacSamplingRate encoderSampRate,
-                                 enum IsacSamplingRate decoderSampRate);
-
-int WebRtcIsac_DecodeLb(const TransformTables* transform_tables,
-                        float* signal_out,
-                        ISACLBDecStruct* ISACdec_obj,
-                        int16_t* current_framesamples,
-                        int16_t isRCUPayload);
-
-int WebRtcIsac_DecodeRcuLb(float* signal_out,
-                           ISACLBDecStruct* ISACdec_obj,
-                           int16_t* current_framesamples);
-
-int WebRtcIsac_EncodeLb(const TransformTables* transform_tables,
-                        float* in,
-                        ISACLBEncStruct* ISACencLB_obj,
-                        int16_t codingMode,
-                        int16_t bottleneckIndex);
-
-int WebRtcIsac_EncodeStoredDataLb(const IsacSaveEncoderData* ISACSavedEnc_obj,
-                                  Bitstr* ISACBitStr_obj,
-                                  int BWnumber,
-                                  float scale);
-
-int WebRtcIsac_EncodeStoredDataUb(
-    const ISACUBSaveEncDataStruct* ISACSavedEnc_obj,
-    Bitstr* bitStream,
-    int32_t jitterInfo,
-    float scale,
-    enum ISACBandwidth bandwidth);
-
-int16_t WebRtcIsac_GetRedPayloadUb(
-    const ISACUBSaveEncDataStruct* ISACSavedEncObj,
-    Bitstr* bitStreamObj,
-    enum ISACBandwidth bandwidth);
-
-/******************************************************************************
- * WebRtcIsac_RateAllocation()
- * Internal function to perform a rate-allocation for upper and lower-band,
- * given a total rate.
- *
- * Input:
- *   - inRateBitPerSec           : a total bit-rate in bits/sec.
- *
- * Output:
- *   - rateLBBitPerSec           : a bit-rate allocated to the lower-band
- *                                 in bits/sec.
- *   - rateUBBitPerSec           : a bit-rate allocated to the upper-band
- *                                 in bits/sec.
- *
- * Return value                  : 0 if rate allocation has been successful.
- *                                -1 if failed to allocate rates.
- */
-
-int16_t WebRtcIsac_RateAllocation(int32_t inRateBitPerSec,
-                                  double* rateLBBitPerSec,
-                                  double* rateUBBitPerSec,
-                                  enum ISACBandwidth* bandwidthKHz);
-
-/******************************************************************************
- * WebRtcIsac_DecodeUb16()
- *
- * Decode the upper-band if the codec is in 0-16 kHz mode.
- *
- * Input/Output:
- *       -ISACdec_obj        : pointer to the upper-band decoder object. The
- *                             bit-stream is stored inside the decoder object.
- *
- * Output:
- *       -signal_out         : decoded audio, 480 samples 30 ms.
- *
- * Return value              : >0 number of decoded bytes.
- *                             <0 if an error occurred.
- */
-int WebRtcIsac_DecodeUb16(const TransformTables* transform_tables,
-                          float* signal_out,
-                          ISACUBDecStruct* ISACdec_obj,
-                          int16_t isRCUPayload);
-
-/******************************************************************************
- * WebRtcIsac_DecodeUb12()
- *
- * Decode the upper-band if the codec is in 0-12 kHz mode.
- *
- * Input/Output:
- *       -ISACdec_obj        : pointer to the upper-band decoder object. The
- *                             bit-stream is stored inside the decoder object.
- *
- * Output:
- *       -signal_out         : decoded audio, 480 samples 30 ms.
- *
- * Return value              : >0 number of decoded bytes.
- *                             <0 if an error occurred.
- */
-int WebRtcIsac_DecodeUb12(const TransformTables* transform_tables,
-                          float* signal_out,
-                          ISACUBDecStruct* ISACdec_obj,
-                          int16_t isRCUPayload);
-
-/******************************************************************************
- * WebRtcIsac_EncodeUb16()
- *
- * Encode the upper-band if the codec is in 0-16 kHz mode.
- *
- * Input:
- *       -in                 : upper-band audio, 160 samples (10 ms).
- *
- * Input/Output:
- *       -ISACdec_obj        : pointer to the upper-band encoder object. The
- *                             bit-stream is stored inside the encoder object.
- *
- * Return value              : >0 number of encoded bytes.
- *                             <0 if an error occurred.
- */
-int WebRtcIsac_EncodeUb16(const TransformTables* transform_tables,
-                          float* in,
-                          ISACUBEncStruct* ISACenc_obj,
-                          int32_t jitterInfo);
-
-/******************************************************************************
- * WebRtcIsac_EncodeUb12()
- *
- * Encode the upper-band if the codec is in 0-12 kHz mode.
- *
- * Input:
- *       -in                 : upper-band audio, 160 samples (10 ms).
- *
- * Input/Output:
- *       -ISACdec_obj        : pointer to the upper-band encoder object. The
- *                             bit-stream is stored inside the encoder object.
- *
- * Return value              : >0 number of encoded bytes.
- *                             <0 if an error occurred.
- */
-int WebRtcIsac_EncodeUb12(const TransformTables* transform_tables,
-                          float* in,
-                          ISACUBEncStruct* ISACenc_obj,
-                          int32_t jitterInfo);
-
-/************************** initialization functions *************************/
-
-void WebRtcIsac_InitMasking(MaskFiltstr* maskdata);
-
-void WebRtcIsac_InitPostFilterbank(PostFiltBankstr* postfiltdata);
-
-/**************************** transform functions ****************************/
-
-void WebRtcIsac_InitTransform(TransformTables* tables);
-
-void WebRtcIsac_Time2Spec(const TransformTables* tables,
-                          double* inre1,
-                          double* inre2,
-                          int16_t* outre,
-                          int16_t* outim,
-                          FFTstr* fftstr_obj);
-
-void WebRtcIsac_Spec2time(const TransformTables* tables,
-                          double* inre,
-                          double* inim,
-                          double* outre1,
-                          double* outre2,
-                          FFTstr* fftstr_obj);
-
-/***************************** filterbank functions **************************/
-
-void WebRtcIsac_FilterAndCombineFloat(float* InLP,
-                                      float* InHP,
-                                      float* Out,
-                                      PostFiltBankstr* postfiltdata);
-
-/************************* normalized lattice filters ************************/
-
-void WebRtcIsac_NormLatticeFilterMa(int orderCoef,
-                                    float* stateF,
-                                    float* stateG,
-                                    float* lat_in,
-                                    double* filtcoeflo,
-                                    double* lat_out);
-
-void WebRtcIsac_NormLatticeFilterAr(int orderCoef,
-                                    float* stateF,
-                                    float* stateG,
-                                    double* lat_in,
-                                    double* lo_filt_coef,
-                                    float* lat_out);
-
-void WebRtcIsac_Dir2Lat(double* a, int orderCoef, float* sth, float* cth);
-
-#endif /* MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_SOURCE_CODEC_H_ */
diff --git a/modules/audio_coding/codecs/isac/main/source/crc.c b/modules/audio_coding/codecs/isac/main/source/crc.c
deleted file mode 100644
index 1bb0827..0000000
--- a/modules/audio_coding/codecs/isac/main/source/crc.c
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <stdlib.h>
-
-#include "modules/audio_coding/codecs/isac/main/source/crc.h"
-#include "common_audio/signal_processing/include/signal_processing_library.h"
-
-#define POLYNOMIAL 0x04c11db7L
-
-
-static const uint32_t kCrcTable[256] = {
-  0,          0x4c11db7,  0x9823b6e,  0xd4326d9,  0x130476dc, 0x17c56b6b,
-  0x1a864db2, 0x1e475005, 0x2608edb8, 0x22c9f00f, 0x2f8ad6d6, 0x2b4bcb61,
-  0x350c9b64, 0x31cd86d3, 0x3c8ea00a, 0x384fbdbd, 0x4c11db70, 0x48d0c6c7,
-  0x4593e01e, 0x4152fda9, 0x5f15adac, 0x5bd4b01b, 0x569796c2, 0x52568b75,
-  0x6a1936c8, 0x6ed82b7f, 0x639b0da6, 0x675a1011, 0x791d4014, 0x7ddc5da3,
-  0x709f7b7a, 0x745e66cd, 0x9823b6e0, 0x9ce2ab57, 0x91a18d8e, 0x95609039,
-  0x8b27c03c, 0x8fe6dd8b, 0x82a5fb52, 0x8664e6e5, 0xbe2b5b58, 0xbaea46ef,
-  0xb7a96036, 0xb3687d81, 0xad2f2d84, 0xa9ee3033, 0xa4ad16ea, 0xa06c0b5d,
-  0xd4326d90, 0xd0f37027, 0xddb056fe, 0xd9714b49, 0xc7361b4c, 0xc3f706fb,
-  0xceb42022, 0xca753d95, 0xf23a8028, 0xf6fb9d9f, 0xfbb8bb46, 0xff79a6f1,
-  0xe13ef6f4, 0xe5ffeb43, 0xe8bccd9a, 0xec7dd02d, 0x34867077, 0x30476dc0,
-  0x3d044b19, 0x39c556ae, 0x278206ab, 0x23431b1c, 0x2e003dc5, 0x2ac12072,
-  0x128e9dcf, 0x164f8078, 0x1b0ca6a1, 0x1fcdbb16, 0x18aeb13,  0x54bf6a4,
-  0x808d07d,  0xcc9cdca,  0x7897ab07, 0x7c56b6b0, 0x71159069, 0x75d48dde,
-  0x6b93dddb, 0x6f52c06c, 0x6211e6b5, 0x66d0fb02, 0x5e9f46bf, 0x5a5e5b08,
-  0x571d7dd1, 0x53dc6066, 0x4d9b3063, 0x495a2dd4, 0x44190b0d, 0x40d816ba,
-  0xaca5c697, 0xa864db20, 0xa527fdf9, 0xa1e6e04e, 0xbfa1b04b, 0xbb60adfc,
-  0xb6238b25, 0xb2e29692, 0x8aad2b2f, 0x8e6c3698, 0x832f1041, 0x87ee0df6,
-  0x99a95df3, 0x9d684044, 0x902b669d, 0x94ea7b2a, 0xe0b41de7, 0xe4750050,
-  0xe9362689, 0xedf73b3e, 0xf3b06b3b, 0xf771768c, 0xfa325055, 0xfef34de2,
-  0xc6bcf05f, 0xc27dede8, 0xcf3ecb31, 0xcbffd686, 0xd5b88683, 0xd1799b34,
-  0xdc3abded, 0xd8fba05a, 0x690ce0ee, 0x6dcdfd59, 0x608edb80, 0x644fc637,
-  0x7a089632, 0x7ec98b85, 0x738aad5c, 0x774bb0eb, 0x4f040d56, 0x4bc510e1,
-  0x46863638, 0x42472b8f, 0x5c007b8a, 0x58c1663d, 0x558240e4, 0x51435d53,
-  0x251d3b9e, 0x21dc2629, 0x2c9f00f0, 0x285e1d47, 0x36194d42, 0x32d850f5,
-  0x3f9b762c, 0x3b5a6b9b,  0x315d626, 0x7d4cb91,  0xa97ed48,  0xe56f0ff,
-  0x1011a0fa, 0x14d0bd4d, 0x19939b94, 0x1d528623, 0xf12f560e, 0xf5ee4bb9,
-  0xf8ad6d60, 0xfc6c70d7, 0xe22b20d2, 0xe6ea3d65, 0xeba91bbc, 0xef68060b,
-  0xd727bbb6, 0xd3e6a601, 0xdea580d8, 0xda649d6f, 0xc423cd6a, 0xc0e2d0dd,
-  0xcda1f604, 0xc960ebb3, 0xbd3e8d7e, 0xb9ff90c9, 0xb4bcb610, 0xb07daba7,
-  0xae3afba2, 0xaafbe615, 0xa7b8c0cc, 0xa379dd7b, 0x9b3660c6, 0x9ff77d71,
-  0x92b45ba8, 0x9675461f, 0x8832161a, 0x8cf30bad, 0x81b02d74, 0x857130c3,
-  0x5d8a9099, 0x594b8d2e, 0x5408abf7, 0x50c9b640, 0x4e8ee645, 0x4a4ffbf2,
-  0x470cdd2b, 0x43cdc09c, 0x7b827d21, 0x7f436096, 0x7200464f, 0x76c15bf8,
-  0x68860bfd, 0x6c47164a, 0x61043093, 0x65c52d24, 0x119b4be9, 0x155a565e,
-  0x18197087, 0x1cd86d30, 0x29f3d35,  0x65e2082,  0xb1d065b,  0xfdc1bec,
-  0x3793a651, 0x3352bbe6, 0x3e119d3f, 0x3ad08088, 0x2497d08d, 0x2056cd3a,
-  0x2d15ebe3, 0x29d4f654, 0xc5a92679, 0xc1683bce, 0xcc2b1d17, 0xc8ea00a0,
-  0xd6ad50a5, 0xd26c4d12, 0xdf2f6bcb, 0xdbee767c, 0xe3a1cbc1, 0xe760d676,
-  0xea23f0af, 0xeee2ed18, 0xf0a5bd1d, 0xf464a0aa, 0xf9278673, 0xfde69bc4,
-  0x89b8fd09, 0x8d79e0be, 0x803ac667, 0x84fbdbd0, 0x9abc8bd5, 0x9e7d9662,
-  0x933eb0bb, 0x97ffad0c, 0xafb010b1, 0xab710d06, 0xa6322bdf, 0xa2f33668,
-  0xbcb4666d, 0xb8757bda, 0xb5365d03, 0xb1f740b4
-};
-
-
-
-
-/****************************************************************************
- * WebRtcIsac_GetCrc(...)
- *
- * This function returns a 32 bit CRC checksum of a bit stream
- *
- * Input:
- *  - bitstream              : payload bitstream
- *  - len_bitstream_in_bytes : number of 8-bit words in the bit stream
- *
- * Output:
- *  - crc                    : checksum
- *
- * Return value              :  0 - Ok
- *                             -1 - Error
- */
-
-int WebRtcIsac_GetCrc(const int16_t* bitstream,
-                      int len_bitstream_in_bytes,
-                      uint32_t* crc)
-{
-  uint8_t* bitstream_ptr_uw8;
-  uint32_t crc_state;
-  int byte_cntr;
-  int crc_tbl_indx;
-
-  /* Sanity Check. */
-  if (bitstream == NULL) {
-    return -1;
-  }
-  /* cast to UWord8 pointer */
-  bitstream_ptr_uw8 = (uint8_t *)bitstream;
-
-  /* initialize */
-  crc_state = 0xFFFFFFFF;
-
-  for (byte_cntr = 0; byte_cntr < len_bitstream_in_bytes; byte_cntr++) {
-    crc_tbl_indx = (WEBRTC_SPL_RSHIFT_U32(crc_state, 24) ^
-                       bitstream_ptr_uw8[byte_cntr]) & 0xFF;
-    crc_state = (crc_state << 8) ^ kCrcTable[crc_tbl_indx];
-  }
-
-  *crc = ~crc_state;
-  return 0;
-}
diff --git a/modules/audio_coding/codecs/isac/main/source/crc.h b/modules/audio_coding/codecs/isac/main/source/crc.h
deleted file mode 100644
index f031019..0000000
--- a/modules/audio_coding/codecs/isac/main/source/crc.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * crc.h
- *
- * Checksum functions
- *
- */
-
-#ifndef MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_SOURCE_CRC_H_
-#define MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_SOURCE_CRC_H_
-
-#include <stdint.h>
-
-/****************************************************************************
- * WebRtcIsac_GetCrc(...)
- *
- * This function returns a 32 bit CRC checksum of a bit stream
- *
- * Input:
- *  - encoded      : payload bit stream
- *  - no_of_word8s : number of 8-bit words in the bit stream
- *
- * Output:
- *  - crc          : checksum
- *
- * Return value    :  0 - Ok
- *                   -1 - Error
- */
-
-int WebRtcIsac_GetCrc(const int16_t* encoded, int no_of_word8s, uint32_t* crc);
-
-#endif /* MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_SOURCE_CRC_H_ */
diff --git a/modules/audio_coding/codecs/isac/main/source/decode.c b/modules/audio_coding/codecs/isac/main/source/decode.c
deleted file mode 100644
index 6e114e4..0000000
--- a/modules/audio_coding/codecs/isac/main/source/decode.c
+++ /dev/null
@@ -1,303 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * decode_B.c
- *
- * This file contains definition of funtions for decoding.
- * Decoding of lower-band, including normal-decoding and RCU decoding.
- * Decoding of upper-band, including 8-12 kHz, when the bandwidth is
- * 0-12 kHz, and 8-16 kHz, when the bandwidth is 0-16 kHz.
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "modules/audio_coding/codecs/isac/main/source/codec.h"
-#include "modules/audio_coding/codecs/isac/main/source/entropy_coding.h"
-#include "modules/audio_coding/codecs/isac/main/source/pitch_estimator.h"
-#include "modules/audio_coding/codecs/isac/main/source/bandwidth_estimator.h"
-#include "modules/audio_coding/codecs/isac/main/source/structs.h"
-#include "modules/audio_coding/codecs/isac/main/source/settings.h"
-#include "modules/audio_coding/codecs/isac/main/source/pitch_filter.h"
-
-/*
- * function to decode the bitstream
- * returns the total number of bytes in the stream
- */
-int WebRtcIsac_DecodeLb(const TransformTables* transform_tables,
-                        float* signal_out, ISACLBDecStruct* ISACdecLB_obj,
-                        int16_t* current_framesamples,
-                        int16_t isRCUPayload) {
-  int k;
-  int len, err;
-  int16_t bandwidthInd;
-
-  float LP_dec_float[FRAMESAMPLES_HALF];
-  float HP_dec_float[FRAMESAMPLES_HALF];
-
-  double LPw[FRAMESAMPLES_HALF];
-  double HPw[FRAMESAMPLES_HALF];
-  double LPw_pf[FRAMESAMPLES_HALF];
-
-  double lo_filt_coef[(ORDERLO + 1)*SUBFRAMES];
-  double hi_filt_coef[(ORDERHI + 1)*SUBFRAMES];
-
-  double real_f[FRAMESAMPLES_HALF];
-  double imag_f[FRAMESAMPLES_HALF];
-
-  double PitchLags[4];
-  double PitchGains[4];
-  double AvgPitchGain;
-  int16_t PitchGains_Q12[4];
-  int16_t AvgPitchGain_Q12;
-
-  float gain;
-
-  int frame_nb; /* counter */
-  int frame_mode; /* 0 30ms, 1 for 60ms */
-  /* Processed_samples: 480 (30, 60 ms). Cannot take other values. */
-
-  WebRtcIsac_ResetBitstream(&(ISACdecLB_obj->bitstr_obj));
-
-  len = 0;
-
-  /* Decode framelength and BW estimation - not used,
-     only for stream pointer*/
-  err = WebRtcIsac_DecodeFrameLen(&ISACdecLB_obj->bitstr_obj,
-                                  current_framesamples);
-  if (err < 0) {
-    return err;
-  }
-
-  /* Frame_mode:
-   * 0: indicates 30 ms frame (480 samples)
-   * 1: indicates 60 ms frame (960 samples) */
-  frame_mode = *current_framesamples / MAX_FRAMESAMPLES;
-
-  err = WebRtcIsac_DecodeSendBW(&ISACdecLB_obj->bitstr_obj, &bandwidthInd);
-  if (err < 0) {
-    return err;
-  }
-
-  /* One loop if it's one frame (20 or 30ms), 2 loops if 2 frames
-     bundled together (60ms). */
-  for (frame_nb = 0; frame_nb <= frame_mode; frame_nb++) {
-    /* Decode & de-quantize pitch parameters */
-    err = WebRtcIsac_DecodePitchGain(&ISACdecLB_obj->bitstr_obj,
-                                     PitchGains_Q12);
-    if (err < 0) {
-      return err;
-    }
-
-    err = WebRtcIsac_DecodePitchLag(&ISACdecLB_obj->bitstr_obj, PitchGains_Q12,
-                                    PitchLags);
-    if (err < 0) {
-      return err;
-    }
-
-    AvgPitchGain_Q12 = (PitchGains_Q12[0] + PitchGains_Q12[1] +
-        PitchGains_Q12[2] + PitchGains_Q12[3]) >> 2;
-
-    /* Decode & de-quantize filter coefficients. */
-    err = WebRtcIsac_DecodeLpc(&ISACdecLB_obj->bitstr_obj, lo_filt_coef,
-                               hi_filt_coef);
-    if (err < 0) {
-      return err;
-    }
-    /* Decode & de-quantize spectrum. */
-    len = WebRtcIsac_DecodeSpec(&ISACdecLB_obj->bitstr_obj, AvgPitchGain_Q12,
-                                kIsacLowerBand, real_f, imag_f);
-    if (len < 0) {
-      return len;
-    }
-
-    /* Inverse transform. */
-    WebRtcIsac_Spec2time(transform_tables, real_f, imag_f, LPw, HPw,
-                         &ISACdecLB_obj->fftstr_obj);
-
-    /* Convert PitchGains back to float for pitchfilter_post */
-    for (k = 0; k < 4; k++) {
-      PitchGains[k] = ((float)PitchGains_Q12[k]) / 4096;
-    }
-    if (isRCUPayload) {
-      for (k = 0; k < 240; k++) {
-        LPw[k] *= RCU_TRANSCODING_SCALE_INVERSE;
-        HPw[k] *= RCU_TRANSCODING_SCALE_INVERSE;
-      }
-    }
-
-    /* Inverse pitch filter. */
-    WebRtcIsac_PitchfilterPost(LPw, LPw_pf, &ISACdecLB_obj->pitchfiltstr_obj,
-                               PitchLags, PitchGains);
-    /* Convert AvgPitchGain back to float for computation of gain. */
-    AvgPitchGain = ((float)AvgPitchGain_Q12) / 4096;
-    gain = 1.0f - 0.45f * (float)AvgPitchGain;
-
-    for (k = 0; k < FRAMESAMPLES_HALF; k++) {
-      /* Reduce gain to compensate for pitch enhancer. */
-      LPw_pf[k] *= gain;
-    }
-
-    if (isRCUPayload) {
-      for (k = 0; k < FRAMESAMPLES_HALF; k++) {
-        /* Compensation for transcoding gain changes. */
-        LPw_pf[k] *= RCU_TRANSCODING_SCALE;
-        HPw[k] *= RCU_TRANSCODING_SCALE;
-      }
-    }
-    /* Perceptual post-filtering (using normalized lattice filter). */
-    WebRtcIsac_NormLatticeFilterAr(
-        ORDERLO, ISACdecLB_obj->maskfiltstr_obj.PostStateLoF,
-        (ISACdecLB_obj->maskfiltstr_obj).PostStateLoG, LPw_pf, lo_filt_coef,
-        LP_dec_float);
-    WebRtcIsac_NormLatticeFilterAr(
-        ORDERHI, ISACdecLB_obj->maskfiltstr_obj.PostStateHiF,
-        (ISACdecLB_obj->maskfiltstr_obj).PostStateHiG, HPw, hi_filt_coef,
-        HP_dec_float);
-
-    /* Recombine the 2 bands. */
-    WebRtcIsac_FilterAndCombineFloat(LP_dec_float, HP_dec_float,
-                                     signal_out + frame_nb * FRAMESAMPLES,
-                                     &ISACdecLB_obj->postfiltbankstr_obj);
-  }
-  return len;
-}
-
-
-/*
- * This decode function is called when the codec is operating in 16 kHz
- * bandwidth to decode the upperband, i.e. 8-16 kHz.
- *
- * Contrary to lower-band, the upper-band (8-16 kHz) is not split in
- * frequency, but split to 12 sub-frames, i.e. twice as lower-band.
- */
-int WebRtcIsac_DecodeUb16(const TransformTables* transform_tables,
-                          float* signal_out, ISACUBDecStruct* ISACdecUB_obj,
-                          int16_t isRCUPayload) {
-  int len, err;
-
-  double halfFrameFirst[FRAMESAMPLES_HALF];
-  double halfFrameSecond[FRAMESAMPLES_HALF];
-
-  double percepFilterParam[(UB_LPC_ORDER + 1) * (SUBFRAMES << 1) +
-                           (UB_LPC_ORDER + 1)];
-
-  double real_f[FRAMESAMPLES_HALF];
-  double imag_f[FRAMESAMPLES_HALF];
-  const int16_t kAveragePitchGain = 0; /* No pitch-gain for upper-band. */
-  len = 0;
-
-  /* Decode & de-quantize filter coefficients. */
-  memset(percepFilterParam, 0, sizeof(percepFilterParam));
-  err = WebRtcIsac_DecodeInterpolLpcUb(&ISACdecUB_obj->bitstr_obj,
-                                       percepFilterParam, isac16kHz);
-  if (err < 0) {
-    return err;
-  }
-
-  /* Decode & de-quantize spectrum. */
-  len = WebRtcIsac_DecodeSpec(&ISACdecUB_obj->bitstr_obj, kAveragePitchGain,
-                              kIsacUpperBand16, real_f, imag_f);
-  if (len < 0) {
-    return len;
-  }
-  if (isRCUPayload) {
-    int n;
-    for (n = 0; n < 240; n++) {
-      real_f[n] *= RCU_TRANSCODING_SCALE_UB_INVERSE;
-      imag_f[n] *= RCU_TRANSCODING_SCALE_UB_INVERSE;
-    }
-  }
-  /* Inverse transform. */
-  WebRtcIsac_Spec2time(transform_tables,
-                       real_f, imag_f, halfFrameFirst, halfFrameSecond,
-                       &ISACdecUB_obj->fftstr_obj);
-
-  /* Perceptual post-filtering (using normalized lattice filter). */
-  WebRtcIsac_NormLatticeFilterAr(
-      UB_LPC_ORDER, ISACdecUB_obj->maskfiltstr_obj.PostStateLoF,
-      (ISACdecUB_obj->maskfiltstr_obj).PostStateLoG, halfFrameFirst,
-      &percepFilterParam[(UB_LPC_ORDER + 1)], signal_out);
-
-  WebRtcIsac_NormLatticeFilterAr(
-      UB_LPC_ORDER, ISACdecUB_obj->maskfiltstr_obj.PostStateLoF,
-      (ISACdecUB_obj->maskfiltstr_obj).PostStateLoG, halfFrameSecond,
-      &percepFilterParam[(UB_LPC_ORDER + 1) * SUBFRAMES + (UB_LPC_ORDER + 1)],
-      &signal_out[FRAMESAMPLES_HALF]);
-
-  return len;
-}
-
-/*
- * This decode function is called when the codec operates at 0-12 kHz
- * bandwidth to decode the upperband, i.e. 8-12 kHz.
- *
- * At the encoder the upper-band is split into two band, 8-12 kHz & 12-16
- * kHz, and only 8-12 kHz is encoded. At the decoder, 8-12 kHz band is
- * reconstructed and 12-16 kHz replaced with zeros. Then two bands
- * are combined, to reconstruct the upperband 8-16 kHz.
- */
-int WebRtcIsac_DecodeUb12(const TransformTables* transform_tables,
-                          float* signal_out, ISACUBDecStruct* ISACdecUB_obj,
-                          int16_t isRCUPayload) {
-  int len, err;
-
-  float LP_dec_float[FRAMESAMPLES_HALF];
-  float HP_dec_float[FRAMESAMPLES_HALF];
-
-  double LPw[FRAMESAMPLES_HALF];
-  double HPw[FRAMESAMPLES_HALF];
-
-  double percepFilterParam[(UB_LPC_ORDER + 1)*SUBFRAMES];
-
-  double real_f[FRAMESAMPLES_HALF];
-  double imag_f[FRAMESAMPLES_HALF];
-  const int16_t kAveragePitchGain = 0; /* No pitch-gain for upper-band. */
-  len = 0;
-
-  /* Decode & dequantize filter coefficients. */
-  err = WebRtcIsac_DecodeInterpolLpcUb(&ISACdecUB_obj->bitstr_obj,
-                                       percepFilterParam, isac12kHz);
-  if (err < 0) {
-    return err;
-  }
-
-  /* Decode & de-quantize spectrum. */
-  len = WebRtcIsac_DecodeSpec(&ISACdecUB_obj->bitstr_obj, kAveragePitchGain,
-                              kIsacUpperBand12, real_f, imag_f);
-  if (len < 0) {
-    return len;
-  }
-
-  if (isRCUPayload) {
-    int n;
-    for (n = 0; n < 240; n++) {
-      real_f[n] *= RCU_TRANSCODING_SCALE_UB_INVERSE;
-      imag_f[n] *= RCU_TRANSCODING_SCALE_UB_INVERSE;
-    }
-  }
-  /* Inverse transform. */
-  WebRtcIsac_Spec2time(transform_tables,
-                       real_f, imag_f, LPw, HPw, &ISACdecUB_obj->fftstr_obj);
-  /* perceptual post-filtering (using normalized lattice filter) */
-  WebRtcIsac_NormLatticeFilterAr(UB_LPC_ORDER,
-                                 ISACdecUB_obj->maskfiltstr_obj.PostStateLoF,
-                                 (ISACdecUB_obj->maskfiltstr_obj).PostStateLoG,
-                                 LPw, percepFilterParam, LP_dec_float);
-  /* Zero for 12-16 kHz. */
-  memset(HP_dec_float, 0, sizeof(float) * (FRAMESAMPLES_HALF));
-  /* Recombine the 2 bands. */
-  WebRtcIsac_FilterAndCombineFloat(HP_dec_float, LP_dec_float, signal_out,
-                                   &ISACdecUB_obj->postfiltbankstr_obj);
-  return len;
-}
diff --git a/modules/audio_coding/codecs/isac/main/source/decode_bwe.c b/modules/audio_coding/codecs/isac/main/source/decode_bwe.c
deleted file mode 100644
index 89d970f..0000000
--- a/modules/audio_coding/codecs/isac/main/source/decode_bwe.c
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "modules/audio_coding/codecs/isac/main/source/structs.h"
-#include "modules/audio_coding/codecs/isac/main/source/bandwidth_estimator.h"
-#include "modules/audio_coding/codecs/isac/main/source/entropy_coding.h"
-#include "modules/audio_coding/codecs/isac/main/source/codec.h"
-
-
-int
-WebRtcIsac_EstimateBandwidth(
-    BwEstimatorstr*           bwest_str,
-    Bitstr*                   streamdata,
-    size_t                packet_size,
-    uint16_t              rtp_seq_number,
-    uint32_t              send_ts,
-    uint32_t              arr_ts,
-    enum IsacSamplingRate encoderSampRate,
-    enum IsacSamplingRate decoderSampRate)
-{
-  int16_t  index;
-  int16_t  frame_samples;
-  uint32_t sendTimestampIn16kHz;
-  uint32_t arrivalTimestampIn16kHz;
-  uint32_t diffSendTime;
-  uint32_t diffArrivalTime;
-  int err;
-
-  /* decode framelength and BW estimation */
-  err = WebRtcIsac_DecodeFrameLen(streamdata, &frame_samples);
-  if(err < 0)  // error check
-  {
-    return err;
-  }
-  err = WebRtcIsac_DecodeSendBW(streamdata, &index);
-  if(err < 0)  // error check
-  {
-    return err;
-  }
-
-  /* UPDATE ESTIMATES FROM OTHER SIDE */
-  err = WebRtcIsac_UpdateUplinkBwImpl(bwest_str, index, encoderSampRate);
-  if(err < 0)
-  {
-    return err;
-  }
-
-  // We like BWE to work at 16 kHz sampling rate,
-  // therefore, we have to change the timestamps accordingly.
-  // translate the send timestamp if required
-  diffSendTime = (uint32_t)((uint32_t)send_ts -
-                                  (uint32_t)bwest_str->senderTimestamp);
-  bwest_str->senderTimestamp = send_ts;
-
-  diffArrivalTime = (uint32_t)((uint32_t)arr_ts -
-                                     (uint32_t)bwest_str->receiverTimestamp);
-  bwest_str->receiverTimestamp = arr_ts;
-
-  if(decoderSampRate == kIsacSuperWideband)
-  {
-    diffArrivalTime = (uint32_t)diffArrivalTime >> 1;
-    diffSendTime = (uint32_t)diffSendTime >> 1;
-  }
-
-  // arrival timestamp in 16 kHz
-  arrivalTimestampIn16kHz = (uint32_t)((uint32_t)
-                                             bwest_str->prev_rec_arr_ts + (uint32_t)diffArrivalTime);
-  // send timestamp in 16 kHz
-  sendTimestampIn16kHz = (uint32_t)((uint32_t)
-                                          bwest_str->prev_rec_send_ts + (uint32_t)diffSendTime);
-
-  err = WebRtcIsac_UpdateBandwidthEstimator(bwest_str, rtp_seq_number,
-                                            (frame_samples * 1000) / FS, sendTimestampIn16kHz,
-                                            arrivalTimestampIn16kHz, packet_size);
-  // error check
-  if(err < 0)
-  {
-    return err;
-  }
-
-  return 0;
-}
diff --git a/modules/audio_coding/codecs/isac/main/source/encode.c b/modules/audio_coding/codecs/isac/main/source/encode.c
deleted file mode 100644
index bf92d02..0000000
--- a/modules/audio_coding/codecs/isac/main/source/encode.c
+++ /dev/null
@@ -1,1260 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * encode.c
- *
- * This file contains definition of funtions for encoding.
- * Decoding of upper-band, including 8-12 kHz, when the bandwidth is
- * 0-12 kHz, and 8-16 kHz, when the bandwidth is 0-16 kHz.
- *
- */
-
-#include <stdlib.h>
-#include <string.h>
-#include <stdio.h>
-
-#include "modules/audio_coding/codecs/isac/main/source/structs.h"
-#include "modules/audio_coding/codecs/isac/main/source/codec.h"
-#include "modules/audio_coding/codecs/isac/main/source/pitch_estimator.h"
-#include "modules/audio_coding/codecs/isac/main/source/entropy_coding.h"
-#include "modules/audio_coding/codecs/isac/main/source/arith_routines.h"
-#include "modules/audio_coding/codecs/isac/main/source/pitch_gain_tables.h"
-#include "modules/audio_coding/codecs/isac/main/source/pitch_lag_tables.h"
-#include "modules/audio_coding/codecs/isac/main/source/spectrum_ar_model_tables.h"
-#include "modules/audio_coding/codecs/isac/main/source/lpc_tables.h"
-#include "modules/audio_coding/codecs/isac/main/source/lpc_analysis.h"
-#include "modules/audio_coding/codecs/isac/main/source/bandwidth_estimator.h"
-#include "modules/audio_coding/codecs/isac/main/source/lpc_shape_swb12_tables.h"
-#include "modules/audio_coding/codecs/isac/main/source/lpc_shape_swb16_tables.h"
-#include "modules/audio_coding/codecs/isac/main/source/lpc_gain_swb_tables.h"
-#include "modules/audio_coding/codecs/isac/main/source/isac_vad.h"
-#include "modules/audio_coding/codecs/isac/main/source/pitch_filter.h"
-
-
-#define UB_LOOKAHEAD 24
-
-
-/*
-  Rate allocation tables of lower and upper-band bottleneck for
-  12kHz & 16kHz bandwidth.
-
-  12 kHz bandwidth
-  -----------------
-  The overall bottleneck of the coder is between 38 kbps and 45 kbps. We have
-  considered 7 enteries, uniformly distributed in this interval, i.e. 38,
-  39.17, 40.33, 41.5, 42.67, 43.83 and 45. For every entery, the lower-band
-  and the upper-band bottlenecks are specified in
-  'kLowerBandBitRate12' and 'kUpperBandBitRate12'
-  tables, respectively. E.g. the overall rate of 41.5 kbps corresponts to a
-  bottleneck of 31 kbps for lower-band and 27 kbps for upper-band. Given an
-  overall bottleneck of the codec, we use linear interpolation to get
-  lower-band and upper-band bottlenecks.
-
-  16 kHz bandwidth
-  -----------------
-  The overall bottleneck of the coder is between 50 kbps and 56 kbps. We have
-  considered 7 enteries, uniformly distributed in this interval, i.e. 50, 51.2,
-  52.4, 53.6, 54.8 and 56. For every entery, the lower-band and the upper-band
-  bottlenecks are specified in 'kLowerBandBitRate16' and
-  'kUpperBandBitRate16' tables, respectively. E.g. the overall rate
-  of 53.6 kbps corresponts to a bottleneck of 32 kbps for lower-band and 30
-  kbps for upper-band. Given an overall bottleneck of the codec, we use linear
-  interpolation to get lower-band and upper-band bottlenecks.
-
- */
-
-/*     38  39.17  40.33   41.5  42.67  43.83     45 */
-static const int16_t kLowerBandBitRate12[7] = {
-    29000, 30000, 30000, 31000, 31000, 32000, 32000 };
-static const int16_t kUpperBandBitRate12[7] = {
-    25000, 25000, 27000, 27000, 29000, 29000, 32000 };
-
-/*    50     51.2  52.4   53.6   54.8    56 */
-static const int16_t kLowerBandBitRate16[6] = {
-    31000, 31000, 32000, 32000, 32000, 32000 };
-static const int16_t kUpperBandBitRate16[6] = {
-    28000, 29000, 29000, 30000, 31000, 32000 };
-
-/******************************************************************************
- * WebRtcIsac_RateAllocation()
- * Internal function to perform a rate-allocation for upper and lower-band,
- * given a total rate.
- *
- * Input:
- *   - inRateBitPerSec           : a total bottleneck in bits/sec.
- *
- * Output:
- *   - rateLBBitPerSec           : a bottleneck allocated to the lower-band
- *                                 in bits/sec.
- *   - rateUBBitPerSec           : a bottleneck allocated to the upper-band
- *                                 in bits/sec.
- *
- * Return value                  : 0 if rate allocation has been successful.
- *                                -1 if failed to allocate rates.
- */
-
-int16_t WebRtcIsac_RateAllocation(int32_t inRateBitPerSec,
-                                        double* rateLBBitPerSec,
-                                        double* rateUBBitPerSec,
-                                        enum ISACBandwidth* bandwidthKHz) {
-  int16_t idx;
-  double idxD;
-  double idxErr;
-  if (inRateBitPerSec < 38000) {
-    /* If the given overall bottleneck is less than 38000 then
-     * then codec has to operate in wideband mode, i.e. 8 kHz
-     * bandwidth. */
-    *rateLBBitPerSec = (int16_t)((inRateBitPerSec > 32000) ?
-        32000 : inRateBitPerSec);
-    *rateUBBitPerSec = 0;
-    *bandwidthKHz = isac8kHz;
-  } else if ((inRateBitPerSec >= 38000) && (inRateBitPerSec < 50000)) {
-    /* At a bottleneck between 38 and 50 kbps the codec is operating
-     * at 12 kHz bandwidth. Using xxxBandBitRate12[] to calculates
-     * upper/lower bottleneck */
-
-    /* Find the bottlenecks by linear interpolation,
-     * step is (45000 - 38000)/6.0 we use the inverse of it. */
-    const double stepSizeInv = 8.5714286e-4;
-    idxD = (inRateBitPerSec - 38000) * stepSizeInv;
-    idx = (idxD >= 6) ? 6 : ((int16_t)idxD);
-    idxErr = idxD - idx;
-    *rateLBBitPerSec = kLowerBandBitRate12[idx];
-    *rateUBBitPerSec = kUpperBandBitRate12[idx];
-
-    if (idx < 6) {
-      *rateLBBitPerSec += (int16_t)(
-          idxErr * (kLowerBandBitRate12[idx + 1] - kLowerBandBitRate12[idx]));
-      *rateUBBitPerSec += (int16_t)(
-          idxErr * (kUpperBandBitRate12[idx + 1] - kUpperBandBitRate12[idx]));
-    }
-    *bandwidthKHz = isac12kHz;
-  } else if ((inRateBitPerSec >= 50000) && (inRateBitPerSec <= 56000)) {
-    /* A bottleneck between 50 and 56 kbps corresponds to bandwidth
-     * of 16 kHz. Using xxxBandBitRate16[] to calculates
-     * upper/lower bottleneck. */
-
-    /* Find the bottlenecks by linear interpolation
-     * step is (56000 - 50000)/5 we use the inverse of it. */
-    const double stepSizeInv = 8.3333333e-4;
-    idxD = (inRateBitPerSec - 50000) * stepSizeInv;
-    idx = (idxD >= 5) ? 5 : ((int16_t)idxD);
-    idxErr = idxD - idx;
-    *rateLBBitPerSec = kLowerBandBitRate16[idx];
-    *rateUBBitPerSec  = kUpperBandBitRate16[idx];
-
-    if (idx < 5) {
-      *rateLBBitPerSec += (int16_t)(idxErr *
-          (kLowerBandBitRate16[idx + 1] -
-              kLowerBandBitRate16[idx]));
-
-      *rateUBBitPerSec += (int16_t)(idxErr *
-          (kUpperBandBitRate16[idx + 1] -
-              kUpperBandBitRate16[idx]));
-    }
-    *bandwidthKHz = isac16kHz;
-  } else {
-    /* Out-of-range botlteneck value. */
-    return -1;
-  }
-
-  /* limit the values. */
-  *rateLBBitPerSec = (*rateLBBitPerSec > 32000) ? 32000 : *rateLBBitPerSec;
-  *rateUBBitPerSec = (*rateUBBitPerSec > 32000) ? 32000 : *rateUBBitPerSec;
-  return 0;
-}
-
-
-void WebRtcIsac_ResetBitstream(Bitstr* bit_stream) {
-  bit_stream->W_upper = 0xFFFFFFFF;
-  bit_stream->stream_index = 0;
-  bit_stream->streamval = 0;
-}
-
-int WebRtcIsac_EncodeLb(const TransformTables* transform_tables,
-                        float* in, ISACLBEncStruct* ISACencLB_obj,
-                        int16_t codingMode,
-                        int16_t bottleneckIndex) {
-  int stream_length = 0;
-  int err;
-  int k;
-  int iterCntr;
-
-  double lofilt_coef[(ORDERLO + 1)*SUBFRAMES];
-  double hifilt_coef[(ORDERHI + 1)*SUBFRAMES];
-  float LP[FRAMESAMPLES_HALF];
-  float HP[FRAMESAMPLES_HALF];
-
-  double LP_lookahead[FRAMESAMPLES_HALF];
-  double HP_lookahead[FRAMESAMPLES_HALF];
-  double LP_lookahead_pf[FRAMESAMPLES_HALF + QLOOKAHEAD];
-  double LPw[FRAMESAMPLES_HALF];
-
-  double HPw[FRAMESAMPLES_HALF];
-  double LPw_pf[FRAMESAMPLES_HALF];
-  int16_t fre[FRAMESAMPLES_HALF];   /* Q7 */
-  int16_t fim[FRAMESAMPLES_HALF];   /* Q7 */
-
-  double PitchLags[4];
-  double PitchGains[4];
-  int16_t PitchGains_Q12[4];
-  int16_t AvgPitchGain_Q12;
-
-  int frame_mode; /* 0 for 30ms, 1 for 60ms */
-  int status = 0;
-  int my_index;
-  transcode_obj transcodingParam;
-  double bytesLeftSpecCoding;
-  uint16_t payloadLimitBytes;
-
-  /* Copy new frame-length and bottleneck rate only for the first 10 ms data */
-  if (ISACencLB_obj->buffer_index == 0) {
-    /* Set the framelength for the next packet. */
-    ISACencLB_obj->current_framesamples = ISACencLB_obj->new_framelength;
-  }
-  /* 'frame_mode' is 0 (30 ms) or 1 (60 ms). */
-  frame_mode = ISACencLB_obj->current_framesamples / MAX_FRAMESAMPLES;
-
-  /* buffer speech samples (by 10ms packet) until the frame-length */
-  /* is reached (30 or 60 ms).                                     */
-  /*****************************************************************/
-
-  /* fill the buffer with 10ms input data */
-  for (k = 0; k < FRAMESAMPLES_10ms; k++) {
-    ISACencLB_obj->data_buffer_float[k + ISACencLB_obj->buffer_index] = in[k];
-  }
-
-  /* If buffersize is not equal to current framesize then increase index
-   * and return. We do no encoding untill we have enough audio.  */
-  if (ISACencLB_obj->buffer_index + FRAMESAMPLES_10ms != FRAMESAMPLES) {
-    ISACencLB_obj->buffer_index += FRAMESAMPLES_10ms;
-    return 0;
-  }
-  /* If buffer reached the right size, reset index and continue with
-   * encoding the frame. */
-  ISACencLB_obj->buffer_index = 0;
-
-  /* End of buffer function. */
-  /**************************/
-
-  /* Encoding */
-  /************/
-
-  if (frame_mode == 0 || ISACencLB_obj->frame_nb == 0) {
-    /* This is to avoid Linux warnings until we change 'int' to 'Word32'
-     * at all places. */
-    int intVar;
-    /* reset bitstream */
-    WebRtcIsac_ResetBitstream(&(ISACencLB_obj->bitstr_obj));
-
-    if ((codingMode == 0) && (frame_mode == 0) &&
-        (ISACencLB_obj->enforceFrameSize == 0)) {
-      ISACencLB_obj->new_framelength = WebRtcIsac_GetNewFrameLength(
-          ISACencLB_obj->bottleneck, ISACencLB_obj->current_framesamples);
-    }
-
-    ISACencLB_obj->s2nr = WebRtcIsac_GetSnr(
-        ISACencLB_obj->bottleneck, ISACencLB_obj->current_framesamples);
-
-    /* Encode frame length. */
-    status = WebRtcIsac_EncodeFrameLen(
-        ISACencLB_obj->current_framesamples, &ISACencLB_obj->bitstr_obj);
-    if (status < 0) {
-      /* Wrong frame size. */
-      return status;
-    }
-    /* Save framelength for multiple packets memory. */
-    ISACencLB_obj->SaveEnc_obj.framelength =
-        ISACencLB_obj->current_framesamples;
-
-    /* To be used for Redundant Coding. */
-    ISACencLB_obj->lastBWIdx = bottleneckIndex;
-    intVar = (int)bottleneckIndex;
-    WebRtcIsac_EncodeReceiveBw(&intVar, &ISACencLB_obj->bitstr_obj);
-  }
-
-  /* Split signal in two bands. */
-  WebRtcIsac_SplitAndFilterFloat(ISACencLB_obj->data_buffer_float, LP, HP,
-                                 LP_lookahead, HP_lookahead,
-                                 &ISACencLB_obj->prefiltbankstr_obj);
-
-  /* estimate pitch parameters and pitch-filter lookahead signal */
-  WebRtcIsac_PitchAnalysis(LP_lookahead, LP_lookahead_pf,
-                           &ISACencLB_obj->pitchanalysisstr_obj, PitchLags,
-                           PitchGains);
-
-  /* Encode in FIX Q12. */
-
-  /* Convert PitchGain to Fixed point. */
-  for (k = 0; k < PITCH_SUBFRAMES; k++) {
-    PitchGains_Q12[k] = (int16_t)(PitchGains[k] * 4096.0);
-  }
-
-  /* Set where to store data in multiple packets memory. */
-  if (frame_mode == 0 || ISACencLB_obj->frame_nb == 0) {
-    ISACencLB_obj->SaveEnc_obj.startIdx = 0;
-  } else {
-    ISACencLB_obj->SaveEnc_obj.startIdx = 1;
-  }
-
-  /* Quantize & encode pitch parameters. */
-  WebRtcIsac_EncodePitchGain(PitchGains_Q12, &ISACencLB_obj->bitstr_obj,
-                             &ISACencLB_obj->SaveEnc_obj);
-  WebRtcIsac_EncodePitchLag(PitchLags, PitchGains_Q12,
-                            &ISACencLB_obj->bitstr_obj,
-                            &ISACencLB_obj->SaveEnc_obj);
-
-  AvgPitchGain_Q12 = (PitchGains_Q12[0] + PitchGains_Q12[1] +
-      PitchGains_Q12[2] + PitchGains_Q12[3]) >> 2;
-
-  /* Find coefficients for perceptual pre-filters. */
-  WebRtcIsac_GetLpcCoefLb(LP_lookahead_pf, HP_lookahead,
-                          &ISACencLB_obj->maskfiltstr_obj, ISACencLB_obj->s2nr,
-                          PitchGains_Q12, lofilt_coef, hifilt_coef);
-
-  /* Code LPC model and shape - gains not quantized yet. */
-  WebRtcIsac_EncodeLpcLb(lofilt_coef, hifilt_coef, &ISACencLB_obj->bitstr_obj,
-                         &ISACencLB_obj->SaveEnc_obj);
-
-  /* Convert PitchGains back to FLOAT for pitchfilter_pre. */
-  for (k = 0; k < 4; k++) {
-    PitchGains[k] = ((float)PitchGains_Q12[k]) / 4096;
-  }
-
-  /* Store the state of arithmetic coder before coding LPC gains. */
-  transcodingParam.W_upper = ISACencLB_obj->bitstr_obj.W_upper;
-  transcodingParam.stream_index = ISACencLB_obj->bitstr_obj.stream_index;
-  transcodingParam.streamval = ISACencLB_obj->bitstr_obj.streamval;
-  transcodingParam.stream[0] =
-      ISACencLB_obj->bitstr_obj.stream[ISACencLB_obj->bitstr_obj.stream_index -
-                                       2];
-  transcodingParam.stream[1] =
-      ISACencLB_obj->bitstr_obj.stream[ISACencLB_obj->bitstr_obj.stream_index -
-                                       1];
-  transcodingParam.stream[2] =
-      ISACencLB_obj->bitstr_obj.stream[ISACencLB_obj->bitstr_obj.stream_index];
-
-  /* Store LPC Gains before encoding them. */
-  for (k = 0; k < SUBFRAMES; k++) {
-    transcodingParam.loFiltGain[k] = lofilt_coef[(LPC_LOBAND_ORDER + 1) * k];
-    transcodingParam.hiFiltGain[k] = hifilt_coef[(LPC_HIBAND_ORDER + 1) * k];
-  }
-
-  /* Code gains */
-  WebRtcIsac_EncodeLpcGainLb(lofilt_coef, hifilt_coef,
-                             &ISACencLB_obj->bitstr_obj,
-                             &ISACencLB_obj->SaveEnc_obj);
-
-  /* Get the correct value for the payload limit and calculate the
-   * number of bytes left for coding the spectrum. */
-  if ((frame_mode == 1) && (ISACencLB_obj->frame_nb == 0)) {
-    /* It is a 60ms and we are in the first 30ms then the limit at
-     * this point should be half of the assigned value. */
-    payloadLimitBytes = ISACencLB_obj->payloadLimitBytes60 >> 1;
-  } else if (frame_mode == 0) {
-    /* It is a 30ms frame */
-    /* Subract 3 because termination process may add 3 bytes. */
-    payloadLimitBytes = ISACencLB_obj->payloadLimitBytes30 - 3;
-  } else {
-    /* This is the second half of a 60ms frame. */
-    /* Subract 3 because termination process may add 3 bytes. */
-    payloadLimitBytes = ISACencLB_obj->payloadLimitBytes60 - 3;
-  }
-  bytesLeftSpecCoding = payloadLimitBytes - transcodingParam.stream_index;
-
-  /* Perceptual pre-filtering (using normalized lattice filter). */
-  /* Low-band filtering. */
-  WebRtcIsac_NormLatticeFilterMa(ORDERLO,
-                                 ISACencLB_obj->maskfiltstr_obj.PreStateLoF,
-                                 ISACencLB_obj->maskfiltstr_obj.PreStateLoG,
-                                 LP, lofilt_coef, LPw);
-  /* High-band filtering. */
-  WebRtcIsac_NormLatticeFilterMa(ORDERHI,
-                                 ISACencLB_obj->maskfiltstr_obj.PreStateHiF,
-                                 ISACencLB_obj->maskfiltstr_obj.PreStateHiG,
-                                 HP, hifilt_coef, HPw);
-  /* Pitch filter. */
-  WebRtcIsac_PitchfilterPre(LPw, LPw_pf, &ISACencLB_obj->pitchfiltstr_obj,
-                            PitchLags, PitchGains);
-  /* Transform */
-  WebRtcIsac_Time2Spec(transform_tables,
-                       LPw_pf, HPw, fre, fim, &ISACencLB_obj->fftstr_obj);
-
-  /* Save data for multiple packets memory. */
-  my_index = ISACencLB_obj->SaveEnc_obj.startIdx * FRAMESAMPLES_HALF;
-  memcpy(&ISACencLB_obj->SaveEnc_obj.fre[my_index], fre, sizeof(fre));
-  memcpy(&ISACencLB_obj->SaveEnc_obj.fim[my_index], fim, sizeof(fim));
-
-  ISACencLB_obj->SaveEnc_obj.AvgPitchGain[ISACencLB_obj->SaveEnc_obj.startIdx] =
-      AvgPitchGain_Q12;
-
-  /* Quantization and loss-less coding. */
-  err = WebRtcIsac_EncodeSpec(fre, fim, AvgPitchGain_Q12, kIsacLowerBand,
-                              &ISACencLB_obj->bitstr_obj);
-  if ((err < 0) && (err != -ISAC_DISALLOWED_BITSTREAM_LENGTH)) {
-    /* There has been an error but it was not too large payload
-       (we can cure too large payload). */
-    if (frame_mode == 1 && ISACencLB_obj->frame_nb == 1) {
-      /* If this is the second 30ms of a 60ms frame reset
-         this such that in the next call encoder starts fresh. */
-      ISACencLB_obj->frame_nb = 0;
-    }
-    return err;
-  }
-  iterCntr = 0;
-  while ((ISACencLB_obj->bitstr_obj.stream_index > payloadLimitBytes) ||
-      (err == -ISAC_DISALLOWED_BITSTREAM_LENGTH)) {
-    double bytesSpecCoderUsed;
-    double transcodeScale;
-
-    if (iterCntr >= MAX_PAYLOAD_LIMIT_ITERATION) {
-      /* We were not able to limit the payload size */
-      if ((frame_mode == 1) && (ISACencLB_obj->frame_nb == 0)) {
-        /* This was the first 30ms of a 60ms frame. Although
-           the payload is larger than it should be but we let
-           the second 30ms be encoded. Maybe together we
-           won't exceed the limit. */
-        ISACencLB_obj->frame_nb = 1;
-        return 0;
-      } else if ((frame_mode == 1) && (ISACencLB_obj->frame_nb == 1)) {
-        ISACencLB_obj->frame_nb = 0;
-      }
-
-      if (err != -ISAC_DISALLOWED_BITSTREAM_LENGTH) {
-        return -ISAC_PAYLOAD_LARGER_THAN_LIMIT;
-      } else {
-        return status;
-      }
-    }
-
-    if (err == -ISAC_DISALLOWED_BITSTREAM_LENGTH) {
-      bytesSpecCoderUsed = STREAM_SIZE_MAX;
-      /* Being conservative */
-      transcodeScale = bytesLeftSpecCoding / bytesSpecCoderUsed * 0.5;
-    } else {
-      bytesSpecCoderUsed = ISACencLB_obj->bitstr_obj.stream_index -
-          transcodingParam.stream_index;
-      transcodeScale = bytesLeftSpecCoding / bytesSpecCoderUsed;
-    }
-
-    /* To be safe, we reduce the scale depending on
-       the number of iterations. */
-    transcodeScale *= (1.0 - (0.9 * (double)iterCntr /
-        (double)MAX_PAYLOAD_LIMIT_ITERATION));
-
-    /* Scale the LPC Gains. */
-    for (k = 0; k < SUBFRAMES; k++) {
-      lofilt_coef[(LPC_LOBAND_ORDER + 1) * k] =
-          transcodingParam.loFiltGain[k] * transcodeScale;
-      hifilt_coef[(LPC_HIBAND_ORDER + 1) * k] =
-          transcodingParam.hiFiltGain[k] * transcodeScale;
-      transcodingParam.loFiltGain[k] = lofilt_coef[(LPC_LOBAND_ORDER + 1) * k];
-      transcodingParam.hiFiltGain[k] = hifilt_coef[(LPC_HIBAND_ORDER + 1) * k];
-    }
-
-    /* Scale DFT coefficients. */
-    for (k = 0; k < FRAMESAMPLES_HALF; k++) {
-      fre[k] = (int16_t)(fre[k] * transcodeScale);
-      fim[k] = (int16_t)(fim[k] * transcodeScale);
-    }
-
-    /* Save data for multiple packets memory. */
-    my_index = ISACencLB_obj->SaveEnc_obj.startIdx * FRAMESAMPLES_HALF;
-    memcpy(&ISACencLB_obj->SaveEnc_obj.fre[my_index], fre, sizeof(fre));
-    memcpy(&ISACencLB_obj->SaveEnc_obj.fim[my_index], fim, sizeof(fim));
-
-    /* Re-store the state of arithmetic coder before coding LPC gains. */
-    ISACencLB_obj->bitstr_obj.W_upper = transcodingParam.W_upper;
-    ISACencLB_obj->bitstr_obj.stream_index = transcodingParam.stream_index;
-    ISACencLB_obj->bitstr_obj.streamval = transcodingParam.streamval;
-    ISACencLB_obj->bitstr_obj.stream[transcodingParam.stream_index - 2] =
-        transcodingParam.stream[0];
-    ISACencLB_obj->bitstr_obj.stream[transcodingParam.stream_index - 1] =
-        transcodingParam.stream[1];
-    ISACencLB_obj->bitstr_obj.stream[transcodingParam.stream_index] =
-        transcodingParam.stream[2];
-
-    /* Code gains. */
-    WebRtcIsac_EncodeLpcGainLb(lofilt_coef, hifilt_coef,
-                               &ISACencLB_obj->bitstr_obj,
-                               &ISACencLB_obj->SaveEnc_obj);
-
-    /* Update the number of bytes left for encoding the spectrum. */
-    bytesLeftSpecCoding = payloadLimitBytes - transcodingParam.stream_index;
-
-    /* Encode the spectrum. */
-    err = WebRtcIsac_EncodeSpec(fre, fim, AvgPitchGain_Q12, kIsacLowerBand,
-                                &ISACencLB_obj->bitstr_obj);
-
-    if ((err < 0) && (err != -ISAC_DISALLOWED_BITSTREAM_LENGTH)) {
-      /* There has been an error but it was not too large
-         payload (we can cure too large payload). */
-      if (frame_mode == 1 && ISACencLB_obj->frame_nb == 1) {
-        /* If this is the second 30 ms of a 60 ms frame reset
-           this such that in the next call encoder starts fresh. */
-        ISACencLB_obj->frame_nb = 0;
-      }
-      return err;
-    }
-    iterCntr++;
-  }
-
-  /* If 60 ms frame-size and just processed the first 30 ms, */
-  /* go back to main function to buffer the other 30 ms speech frame. */
-  if (frame_mode == 1) {
-    if (ISACencLB_obj->frame_nb == 0) {
-      ISACencLB_obj->frame_nb = 1;
-      return 0;
-    } else if (ISACencLB_obj->frame_nb == 1) {
-      ISACencLB_obj->frame_nb = 0;
-      /* Also update the frame-length for next packet,
-         in Adaptive mode only. */
-      if (codingMode == 0 && (ISACencLB_obj->enforceFrameSize == 0)) {
-        ISACencLB_obj->new_framelength =
-            WebRtcIsac_GetNewFrameLength(ISACencLB_obj->bottleneck,
-                                         ISACencLB_obj->current_framesamples);
-      }
-    }
-  } else {
-    ISACencLB_obj->frame_nb = 0;
-  }
-
-  /* Complete arithmetic coding. */
-  stream_length = WebRtcIsac_EncTerminate(&ISACencLB_obj->bitstr_obj);
-  return stream_length;
-}
-
-
-
-static int LimitPayloadUb(ISACUBEncStruct* ISACencUB_obj,
-                          uint16_t payloadLimitBytes,
-                          double bytesLeftSpecCoding,
-                          transcode_obj* transcodingParam,
-                          int16_t* fre, int16_t* fim,
-                          double* lpcGains, enum ISACBand band, int status) {
-
-  int iterCntr = 0;
-  int k;
-  double bytesSpecCoderUsed;
-  double transcodeScale;
-  const int16_t kAveragePitchGain = 0.0;
-
-  do {
-    if (iterCntr >= MAX_PAYLOAD_LIMIT_ITERATION) {
-      /* We were not able to limit the payload size. */
-      return -ISAC_PAYLOAD_LARGER_THAN_LIMIT;
-    }
-
-    if (status == -ISAC_DISALLOWED_BITSTREAM_LENGTH) {
-      bytesSpecCoderUsed = STREAM_SIZE_MAX;
-      /* Being conservative. */
-      transcodeScale = bytesLeftSpecCoding / bytesSpecCoderUsed * 0.5;
-    } else {
-      bytesSpecCoderUsed = ISACencUB_obj->bitstr_obj.stream_index -
-          transcodingParam->stream_index;
-      transcodeScale = bytesLeftSpecCoding / bytesSpecCoderUsed;
-    }
-
-    /* To be safe, we reduce the scale depending on the
-       number of iterations. */
-    transcodeScale *= (1.0 - (0.9 * (double)iterCntr /
-        (double)MAX_PAYLOAD_LIMIT_ITERATION));
-
-    /* Scale the LPC Gains. */
-    if (band == kIsacUpperBand16) {
-      /* Two sets of coefficients if 16 kHz. */
-      for (k = 0; k < SUBFRAMES; k++) {
-        transcodingParam->loFiltGain[k] *= transcodeScale;
-        transcodingParam->hiFiltGain[k] *= transcodeScale;
-      }
-    } else {
-      /* One sets of coefficients if 12 kHz. */
-      for (k = 0; k < SUBFRAMES; k++) {
-        transcodingParam->loFiltGain[k] *= transcodeScale;
-      }
-    }
-
-    /* Scale DFT coefficients. */
-    for (k = 0; k < FRAMESAMPLES_HALF; k++) {
-      fre[k] = (int16_t)(fre[k] * transcodeScale + 0.5);
-      fim[k] = (int16_t)(fim[k] * transcodeScale + 0.5);
-    }
-    /* Store FFT coefficients for multiple encoding. */
-    memcpy(ISACencUB_obj->SaveEnc_obj.realFFT, fre,
-          sizeof(ISACencUB_obj->SaveEnc_obj.realFFT));
-    memcpy(ISACencUB_obj->SaveEnc_obj.imagFFT, fim,
-           sizeof(ISACencUB_obj->SaveEnc_obj.imagFFT));
-
-    /* Store the state of arithmetic coder before coding LPC gains */
-    ISACencUB_obj->bitstr_obj.W_upper = transcodingParam->W_upper;
-    ISACencUB_obj->bitstr_obj.stream_index = transcodingParam->stream_index;
-    ISACencUB_obj->bitstr_obj.streamval = transcodingParam->streamval;
-    ISACencUB_obj->bitstr_obj.stream[transcodingParam->stream_index - 2] =
-        transcodingParam->stream[0];
-    ISACencUB_obj->bitstr_obj.stream[transcodingParam->stream_index - 1] =
-        transcodingParam->stream[1];
-    ISACencUB_obj->bitstr_obj.stream[transcodingParam->stream_index] =
-        transcodingParam->stream[2];
-
-    /* Store the gains for multiple encoding. */
-    memcpy(ISACencUB_obj->SaveEnc_obj.lpcGain, lpcGains,
-           SUBFRAMES * sizeof(double));
-    /* Entropy Code lpc-gains, indices are stored for a later use.*/
-    WebRtcIsac_EncodeLpcGainUb(transcodingParam->loFiltGain,
-                               &ISACencUB_obj->bitstr_obj,
-                               ISACencUB_obj->SaveEnc_obj.lpcGainIndex);
-
-    /* If 16kHz should do one more set. */
-    if (band == kIsacUpperBand16) {
-      /* Store the gains for multiple encoding. */
-      memcpy(&ISACencUB_obj->SaveEnc_obj.lpcGain[SUBFRAMES],
-             &lpcGains[SUBFRAMES], SUBFRAMES * sizeof(double));
-      /* Entropy Code lpc-gains, indices are stored for a later use.*/
-      WebRtcIsac_EncodeLpcGainUb(
-          transcodingParam->hiFiltGain, &ISACencUB_obj->bitstr_obj,
-          &ISACencUB_obj->SaveEnc_obj.lpcGainIndex[SUBFRAMES]);
-    }
-
-    /* Update the number of bytes left for encoding the spectrum. */
-    bytesLeftSpecCoding = payloadLimitBytes -
-        ISACencUB_obj->bitstr_obj.stream_index;
-
-    /* Save the bit-stream object at this point for FEC. */
-    memcpy(&ISACencUB_obj->SaveEnc_obj.bitStreamObj,
-           &ISACencUB_obj->bitstr_obj, sizeof(Bitstr));
-
-    /* Encode the spectrum. */
-    status = WebRtcIsac_EncodeSpec(fre, fim, kAveragePitchGain,
-                                   band, &ISACencUB_obj->bitstr_obj);
-    if ((status < 0) && (status != -ISAC_DISALLOWED_BITSTREAM_LENGTH)) {
-      /* There has been an error but it was not too large payload
-         (we can cure too large payload). */
-      return status;
-    }
-    iterCntr++;
-  } while ((ISACencUB_obj->bitstr_obj.stream_index > payloadLimitBytes) ||
-      (status == -ISAC_DISALLOWED_BITSTREAM_LENGTH));
-  return 0;
-}
-
-int WebRtcIsac_EncodeUb16(const TransformTables* transform_tables,
-                          float* in, ISACUBEncStruct* ISACencUB_obj,
-                          int32_t jitterInfo) {
-  int err;
-  int k;
-
-  double lpcVecs[UB_LPC_ORDER * UB16_LPC_VEC_PER_FRAME];
-  double percepFilterParams[(1 + UB_LPC_ORDER) * (SUBFRAMES << 1) +
-                            (1 + UB_LPC_ORDER)];
-
-  double LP_lookahead[FRAMESAMPLES];
-  int16_t fre[FRAMESAMPLES_HALF];   /* Q7 */
-  int16_t fim[FRAMESAMPLES_HALF];   /* Q7 */
-
-  int status = 0;
-
-  double varscale[2];
-  double corr[SUBFRAMES << 1][UB_LPC_ORDER + 1];
-  double lpcGains[SUBFRAMES << 1];
-  transcode_obj transcodingParam;
-  uint16_t payloadLimitBytes;
-  double s2nr;
-  const int16_t kAveragePitchGain = 0.0;
-  int bytesLeftSpecCoding;
-
-  /* Buffer speech samples (by 10ms packet) until the frame-length is   */
-  /* reached (30 ms).                                                   */
-  /*********************************************************************/
-
-  /* fill the buffer with 10ms input data */
-  memcpy(&ISACencUB_obj->data_buffer_float[ISACencUB_obj->buffer_index], in,
-         FRAMESAMPLES_10ms * sizeof(float));
-
-  /* If buffer size is not equal to current frame-size, and end of file is
-   * not reached yet, we don't do encoding unless we have the whole frame. */
-  if (ISACencUB_obj->buffer_index + FRAMESAMPLES_10ms < FRAMESAMPLES) {
-    ISACencUB_obj->buffer_index += FRAMESAMPLES_10ms;
-    return 0;
-  }
-
-  /* End of buffer function. */
-  /**************************/
-
-  /* Encoding */
-  /************/
-
-  /* Reset bit-stream */
-  WebRtcIsac_ResetBitstream(&(ISACencUB_obj->bitstr_obj));
-
-  /* Encoding of bandwidth information. */
-  WebRtcIsac_EncodeJitterInfo(jitterInfo, &ISACencUB_obj->bitstr_obj);
-
-  status = WebRtcIsac_EncodeBandwidth(isac16kHz, &ISACencUB_obj->bitstr_obj);
-  if (status < 0) {
-    return status;
-  }
-
-  s2nr = WebRtcIsac_GetSnr(ISACencUB_obj->bottleneck, FRAMESAMPLES);
-
-  memcpy(lpcVecs, ISACencUB_obj->lastLPCVec, UB_LPC_ORDER * sizeof(double));
-
-  for (k = 0; k < FRAMESAMPLES; k++) {
-    LP_lookahead[k] = ISACencUB_obj->data_buffer_float[UB_LOOKAHEAD + k];
-  }
-
-  /* Find coefficients for perceptual pre-filters. */
-  WebRtcIsac_GetLpcCoefUb(LP_lookahead, &ISACencUB_obj->maskfiltstr_obj,
-                          &lpcVecs[UB_LPC_ORDER], corr, varscale, isac16kHz);
-
-  memcpy(ISACencUB_obj->lastLPCVec,
-         &lpcVecs[(UB16_LPC_VEC_PER_FRAME - 1) * (UB_LPC_ORDER)],
-         sizeof(double) * UB_LPC_ORDER);
-
-  /* Code LPC model and shape - gains not quantized yet. */
-  WebRtcIsac_EncodeLpcUB(lpcVecs, &ISACencUB_obj->bitstr_obj,
-                         percepFilterParams, isac16kHz,
-                         &ISACencUB_obj->SaveEnc_obj);
-
-  /* the first set of lpc parameters are from the last sub-frame of
-   * the previous frame. so we don't care about them. */
-  WebRtcIsac_GetLpcGain(s2nr, &percepFilterParams[UB_LPC_ORDER + 1],
-                        (SUBFRAMES << 1), lpcGains, corr, varscale);
-
-  /* Store the state of arithmetic coder before coding LPC gains */
-  transcodingParam.stream_index = ISACencUB_obj->bitstr_obj.stream_index;
-  transcodingParam.W_upper = ISACencUB_obj->bitstr_obj.W_upper;
-  transcodingParam.streamval = ISACencUB_obj->bitstr_obj.streamval;
-  transcodingParam.stream[0] =
-      ISACencUB_obj->bitstr_obj.stream[ISACencUB_obj->bitstr_obj.stream_index -
-                                       2];
-  transcodingParam.stream[1] =
-      ISACencUB_obj->bitstr_obj.stream[ISACencUB_obj->bitstr_obj.stream_index -
-                                       1];
-  transcodingParam.stream[2] =
-      ISACencUB_obj->bitstr_obj.stream[ISACencUB_obj->bitstr_obj.stream_index];
-
-  /* Store LPC Gains before encoding them. */
-  for (k = 0; k < SUBFRAMES; k++) {
-    transcodingParam.loFiltGain[k] = lpcGains[k];
-    transcodingParam.hiFiltGain[k] = lpcGains[SUBFRAMES + k];
-  }
-
-  /* Store the gains for multiple encoding. */
-  memcpy(ISACencUB_obj->SaveEnc_obj.lpcGain, lpcGains,
-         (SUBFRAMES << 1) * sizeof(double));
-
-  WebRtcIsac_EncodeLpcGainUb(lpcGains, &ISACencUB_obj->bitstr_obj,
-                             ISACencUB_obj->SaveEnc_obj.lpcGainIndex);
-  WebRtcIsac_EncodeLpcGainUb(
-      &lpcGains[SUBFRAMES], &ISACencUB_obj->bitstr_obj,
-      &ISACencUB_obj->SaveEnc_obj.lpcGainIndex[SUBFRAMES]);
-
-  /* Get the correct value for the payload limit and calculate the number of
-     bytes left for coding the spectrum. It is a 30ms frame
-     Subract 3 because termination process may add 3 bytes */
-  payloadLimitBytes = ISACencUB_obj->maxPayloadSizeBytes -
-      ISACencUB_obj->numBytesUsed - 3;
-  bytesLeftSpecCoding = payloadLimitBytes -
-        ISACencUB_obj->bitstr_obj.stream_index;
-
-  for (k = 0; k < (SUBFRAMES << 1); k++) {
-    percepFilterParams[k * (UB_LPC_ORDER + 1) + (UB_LPC_ORDER + 1)] =
-        lpcGains[k];
-  }
-
-  /* LPC filtering (using normalized lattice filter), */
-  /* first half-frame. */
-  WebRtcIsac_NormLatticeFilterMa(UB_LPC_ORDER,
-                                 ISACencUB_obj->maskfiltstr_obj.PreStateLoF,
-                                 ISACencUB_obj->maskfiltstr_obj.PreStateLoG,
-                                 &ISACencUB_obj->data_buffer_float[0],
-                                 &percepFilterParams[UB_LPC_ORDER + 1],
-                                 &LP_lookahead[0]);
-
-  /* Second half-frame filtering. */
-  WebRtcIsac_NormLatticeFilterMa(
-      UB_LPC_ORDER, ISACencUB_obj->maskfiltstr_obj.PreStateLoF,
-      ISACencUB_obj->maskfiltstr_obj.PreStateLoG,
-      &ISACencUB_obj->data_buffer_float[FRAMESAMPLES_HALF],
-      &percepFilterParams[(UB_LPC_ORDER + 1) + SUBFRAMES * (UB_LPC_ORDER + 1)],
-      &LP_lookahead[FRAMESAMPLES_HALF]);
-
-  WebRtcIsac_Time2Spec(transform_tables,
-                       &LP_lookahead[0], &LP_lookahead[FRAMESAMPLES_HALF],
-                       fre, fim, &ISACencUB_obj->fftstr_obj);
-
-  /* Store FFT coefficients for multiple encoding. */
-  memcpy(ISACencUB_obj->SaveEnc_obj.realFFT, fre, sizeof(fre));
-  memcpy(ISACencUB_obj->SaveEnc_obj.imagFFT, fim, sizeof(fim));
-
-  /* Prepare the audio buffer for the next packet
-   * move the last 3 ms to the beginning of the buffer. */
-  memcpy(ISACencUB_obj->data_buffer_float,
-         &ISACencUB_obj->data_buffer_float[FRAMESAMPLES],
-         LB_TOTAL_DELAY_SAMPLES * sizeof(float));
-  /* start writing with 3 ms delay to compensate for the delay
-   * of the lower-band. */
-  ISACencUB_obj->buffer_index = LB_TOTAL_DELAY_SAMPLES;
-
-  /* Save the bit-stream object at this point for FEC. */
-  memcpy(&ISACencUB_obj->SaveEnc_obj.bitStreamObj, &ISACencUB_obj->bitstr_obj,
-         sizeof(Bitstr));
-
-  /* Qantization and lossless coding */
-  /* Note that there is no pitch-gain for this band so kAveragePitchGain = 0
-   * is passed to the function. In fact, the function ignores the 3rd parameter
-   * for this band. */
-  err = WebRtcIsac_EncodeSpec(fre, fim, kAveragePitchGain, kIsacUpperBand16,
-                              &ISACencUB_obj->bitstr_obj);
-  if ((err < 0) && (err != -ISAC_DISALLOWED_BITSTREAM_LENGTH)) {
-    return err;
-  }
-
-  if ((ISACencUB_obj->bitstr_obj.stream_index > payloadLimitBytes) ||
-      (err == -ISAC_DISALLOWED_BITSTREAM_LENGTH)) {
-    err = LimitPayloadUb(ISACencUB_obj, payloadLimitBytes, bytesLeftSpecCoding,
-                         &transcodingParam, fre, fim, lpcGains,
-                         kIsacUpperBand16, err);
-  }
-  if (err < 0) {
-    return err;
-  }
-  /* Complete arithmetic coding. */
-  return WebRtcIsac_EncTerminate(&ISACencUB_obj->bitstr_obj);
-}
-
-
-int WebRtcIsac_EncodeUb12(const TransformTables* transform_tables,
-                          float* in, ISACUBEncStruct* ISACencUB_obj,
-                          int32_t jitterInfo) {
-  int err;
-  int k;
-
-  double lpcVecs[UB_LPC_ORDER * UB_LPC_VEC_PER_FRAME];
-
-  double percepFilterParams[(1 + UB_LPC_ORDER) * SUBFRAMES];
-  float LP[FRAMESAMPLES_HALF];
-  float HP[FRAMESAMPLES_HALF];
-
-  double LP_lookahead[FRAMESAMPLES_HALF];
-  double HP_lookahead[FRAMESAMPLES_HALF];
-  double LPw[FRAMESAMPLES_HALF];
-
-  double HPw[FRAMESAMPLES_HALF];
-  int16_t fre[FRAMESAMPLES_HALF];   /* Q7 */
-  int16_t fim[FRAMESAMPLES_HALF];   /* Q7 */
-
-  int status = 0;
-
-  double varscale[1];
-
-  double corr[UB_LPC_GAIN_DIM][UB_LPC_ORDER + 1];
-  double lpcGains[SUBFRAMES];
-  transcode_obj transcodingParam;
-  uint16_t payloadLimitBytes;
-  double s2nr;
-  const int16_t kAveragePitchGain = 0.0;
-  double bytesLeftSpecCoding;
-
-  /* Buffer speech samples (by 10ms packet) until the framelength is  */
-  /* reached (30 ms).                                                 */
-  /********************************************************************/
-
-  /* Fill the buffer with 10ms input data. */
-  memcpy(&ISACencUB_obj->data_buffer_float[ISACencUB_obj->buffer_index], in,
-         FRAMESAMPLES_10ms * sizeof(float));
-
-  /* if buffer-size is not equal to current frame-size then increase the
-     index and return. We do the encoding when we have enough audio.     */
-  if (ISACencUB_obj->buffer_index + FRAMESAMPLES_10ms < FRAMESAMPLES) {
-    ISACencUB_obj->buffer_index += FRAMESAMPLES_10ms;
-    return 0;
-  }
-  /* If buffer reached the right size, reset index and continue
-     with encoding the frame */
-  ISACencUB_obj->buffer_index = 0;
-
-  /* End of buffer function */
-  /**************************/
-
-  /* Encoding */
-  /************/
-
-  /* Reset bit-stream. */
-  WebRtcIsac_ResetBitstream(&(ISACencUB_obj->bitstr_obj));
-
-  /* Encoding bandwidth information. */
-  WebRtcIsac_EncodeJitterInfo(jitterInfo, &ISACencUB_obj->bitstr_obj);
-  status = WebRtcIsac_EncodeBandwidth(isac12kHz, &ISACencUB_obj->bitstr_obj);
-  if (status < 0) {
-    return status;
-  }
-
-  s2nr = WebRtcIsac_GetSnr(ISACencUB_obj->bottleneck, FRAMESAMPLES);
-
-  /* Split signal in two bands. */
-  WebRtcIsac_SplitAndFilterFloat(ISACencUB_obj->data_buffer_float, HP, LP,
-                                 HP_lookahead, LP_lookahead,
-                                 &ISACencUB_obj->prefiltbankstr_obj);
-
-  /* Find coefficients for perceptual pre-filters. */
-  WebRtcIsac_GetLpcCoefUb(LP_lookahead, &ISACencUB_obj->maskfiltstr_obj,
-                          lpcVecs, corr, varscale, isac12kHz);
-
-  /* Code LPC model and shape - gains not quantized yet. */
-  WebRtcIsac_EncodeLpcUB(lpcVecs, &ISACencUB_obj->bitstr_obj,
-                         percepFilterParams, isac12kHz,
-                         &ISACencUB_obj->SaveEnc_obj);
-
-  WebRtcIsac_GetLpcGain(s2nr, percepFilterParams, SUBFRAMES, lpcGains, corr,
-                        varscale);
-
-  /* Store the state of arithmetic coder before coding LPC gains. */
-  transcodingParam.W_upper = ISACencUB_obj->bitstr_obj.W_upper;
-  transcodingParam.stream_index = ISACencUB_obj->bitstr_obj.stream_index;
-  transcodingParam.streamval = ISACencUB_obj->bitstr_obj.streamval;
-  transcodingParam.stream[0] =
-      ISACencUB_obj->bitstr_obj.stream[ISACencUB_obj->bitstr_obj.stream_index -
-                                       2];
-  transcodingParam.stream[1] =
-      ISACencUB_obj->bitstr_obj.stream[ISACencUB_obj->bitstr_obj.stream_index -
-                                       1];
-  transcodingParam.stream[2] =
-      ISACencUB_obj->bitstr_obj.stream[ISACencUB_obj->bitstr_obj.stream_index];
-
-  /* Store LPC Gains before encoding them. */
-  for (k = 0; k < SUBFRAMES; k++) {
-    transcodingParam.loFiltGain[k] = lpcGains[k];
-  }
-
-  /* Store the gains for multiple encoding. */
-  memcpy(ISACencUB_obj->SaveEnc_obj.lpcGain, lpcGains, SUBFRAMES *
-         sizeof(double));
-
-  WebRtcIsac_EncodeLpcGainUb(lpcGains, &ISACencUB_obj->bitstr_obj,
-                             ISACencUB_obj->SaveEnc_obj.lpcGainIndex);
-
-  for (k = 0; k < SUBFRAMES; k++) {
-    percepFilterParams[k * (UB_LPC_ORDER + 1)] = lpcGains[k];
-  }
-
-  /* perceptual pre-filtering (using normalized lattice filter) */
-  /* low-band filtering */
-  WebRtcIsac_NormLatticeFilterMa(UB_LPC_ORDER,
-                                 ISACencUB_obj->maskfiltstr_obj.PreStateLoF,
-                                 ISACencUB_obj->maskfiltstr_obj.PreStateLoG, LP,
-                                 percepFilterParams, LPw);
-
-  /* Get the correct value for the payload limit and calculate the number
-     of bytes left for coding the spectrum. It is a 30ms frame Subract 3
-     because termination process may add 3 bytes */
-  payloadLimitBytes = ISACencUB_obj->maxPayloadSizeBytes -
-      ISACencUB_obj->numBytesUsed - 3;
-  bytesLeftSpecCoding = payloadLimitBytes -
-      ISACencUB_obj->bitstr_obj.stream_index;
-
-  memset(HPw, 0, sizeof(HPw));
-
-  /* Transform */
-  WebRtcIsac_Time2Spec(transform_tables,
-                       LPw, HPw, fre, fim, &ISACencUB_obj->fftstr_obj);
-
-  /* Store FFT coefficients for multiple encoding. */
-  memcpy(ISACencUB_obj->SaveEnc_obj.realFFT, fre,
-         sizeof(ISACencUB_obj->SaveEnc_obj.realFFT));
-  memcpy(ISACencUB_obj->SaveEnc_obj.imagFFT, fim,
-         sizeof(ISACencUB_obj->SaveEnc_obj.imagFFT));
-
-  /* Save the bit-stream object at this point for FEC. */
-  memcpy(&ISACencUB_obj->SaveEnc_obj.bitStreamObj,
-         &ISACencUB_obj->bitstr_obj, sizeof(Bitstr));
-
-  /* Quantization and loss-less coding */
-  /* The 4th parameter to this function is pitch-gain, which is only used
-   * when encoding 0-8 kHz band, and irrelevant in this function, therefore,
-   * we insert zero here. */
-  err = WebRtcIsac_EncodeSpec(fre, fim, kAveragePitchGain, kIsacUpperBand12,
-                              &ISACencUB_obj->bitstr_obj);
-  if ((err < 0) && (err != -ISAC_DISALLOWED_BITSTREAM_LENGTH)) {
-    /* There has been an error but it was not too large
-       payload (we can cure too large payload) */
-    return err;
-  }
-
-  if ((ISACencUB_obj->bitstr_obj.stream_index > payloadLimitBytes) ||
-      (err == -ISAC_DISALLOWED_BITSTREAM_LENGTH)) {
-    err = LimitPayloadUb(ISACencUB_obj, payloadLimitBytes, bytesLeftSpecCoding,
-                         &transcodingParam, fre, fim, lpcGains,
-                         kIsacUpperBand12, err);
-  }
-  if (err < 0) {
-    return err;
-  }
-  /* Complete arithmetic coding. */
-  return WebRtcIsac_EncTerminate(&ISACencUB_obj->bitstr_obj);
-}
-
-
-
-
-
-
-/* This function is used to create a new bit-stream with new BWE.
-   The same data as previously encoded with the function WebRtcIsac_Encoder().
-   The data needed is taken from the structure, where it was stored
-   when calling the encoder. */
-
-int WebRtcIsac_EncodeStoredDataLb(const IsacSaveEncoderData* ISACSavedEnc_obj,
-                                  Bitstr* ISACBitStr_obj, int BWnumber,
-                                  float scale) {
-  int ii;
-  int status;
-  int BWno = BWnumber;
-
-  const uint16_t* WebRtcIsac_kQPitchGainCdf_ptr[1];
-  const uint16_t** cdf;
-
-  double tmpLPCcoeffs_lo[(ORDERLO + 1)*SUBFRAMES * 2];
-  double tmpLPCcoeffs_hi[(ORDERHI + 1)*SUBFRAMES * 2];
-  int tmpLPCindex_g[12 * 2];
-  int16_t tmp_fre[FRAMESAMPLES], tmp_fim[FRAMESAMPLES];
-  const int kModel = 0;
-
-  /* Sanity Check - possible values for BWnumber is 0 - 23. */
-  if ((BWnumber < 0) || (BWnumber > 23)) {
-    return -ISAC_RANGE_ERROR_BW_ESTIMATOR;
-  }
-
-  /* Reset bit-stream. */
-  WebRtcIsac_ResetBitstream(ISACBitStr_obj);
-
-  /* Encode frame length */
-  status = WebRtcIsac_EncodeFrameLen(ISACSavedEnc_obj->framelength,
-                                     ISACBitStr_obj);
-  if (status < 0) {
-    /* Wrong frame size. */
-    return status;
-  }
-
-  /* Transcoding */
-  if ((scale > 0.0) && (scale < 1.0)) {
-    /* Compensate LPC gain. */
-    for (ii = 0;
-        ii < ((ORDERLO + 1)* SUBFRAMES * (1 + ISACSavedEnc_obj->startIdx));
-        ii++) {
-      tmpLPCcoeffs_lo[ii] = scale *  ISACSavedEnc_obj->LPCcoeffs_lo[ii];
-    }
-    for (ii = 0;
-        ii < ((ORDERHI + 1) * SUBFRAMES * (1 + ISACSavedEnc_obj->startIdx));
-        ii++) {
-      tmpLPCcoeffs_hi[ii] = scale *  ISACSavedEnc_obj->LPCcoeffs_hi[ii];
-    }
-    /* Scale DFT. */
-    for (ii = 0;
-        ii < (FRAMESAMPLES_HALF * (1 + ISACSavedEnc_obj->startIdx));
-        ii++) {
-      tmp_fre[ii] = (int16_t)((scale) * (float)ISACSavedEnc_obj->fre[ii]);
-      tmp_fim[ii] = (int16_t)((scale) * (float)ISACSavedEnc_obj->fim[ii]);
-    }
-  } else {
-    for (ii = 0;
-        ii < (KLT_ORDER_GAIN * (1 + ISACSavedEnc_obj->startIdx));
-        ii++) {
-      tmpLPCindex_g[ii] =  ISACSavedEnc_obj->LPCindex_g[ii];
-    }
-    for (ii = 0;
-        ii < (FRAMESAMPLES_HALF * (1 + ISACSavedEnc_obj->startIdx));
-        ii++) {
-      tmp_fre[ii] = ISACSavedEnc_obj->fre[ii];
-      tmp_fim[ii] = ISACSavedEnc_obj->fim[ii];
-    }
-  }
-
-  /* Encode bandwidth estimate. */
-  WebRtcIsac_EncodeReceiveBw(&BWno, ISACBitStr_obj);
-
-  /* Loop over number of 30 msec */
-  for (ii = 0; ii <= ISACSavedEnc_obj->startIdx; ii++) {
-    /* Encode pitch gains. */
-    *WebRtcIsac_kQPitchGainCdf_ptr = WebRtcIsac_kQPitchGainCdf;
-    WebRtcIsac_EncHistMulti(ISACBitStr_obj,
-                            &ISACSavedEnc_obj->pitchGain_index[ii],
-                            WebRtcIsac_kQPitchGainCdf_ptr, 1);
-
-    /* Entropy coding of quantization pitch lags */
-    /* Voicing classification. */
-    if (ISACSavedEnc_obj->meanGain[ii] < 0.2) {
-      cdf = WebRtcIsac_kQPitchLagCdfPtrLo;
-    } else if (ISACSavedEnc_obj->meanGain[ii] < 0.4) {
-      cdf = WebRtcIsac_kQPitchLagCdfPtrMid;
-    } else {
-      cdf = WebRtcIsac_kQPitchLagCdfPtrHi;
-    }
-    WebRtcIsac_EncHistMulti(ISACBitStr_obj,
-                            &ISACSavedEnc_obj->pitchIndex[PITCH_SUBFRAMES * ii],
-                            cdf, PITCH_SUBFRAMES);
-
-    /* LPC */
-    /* Only one model exists. The entropy coding is done only for backward
-     * compatibility. */
-    WebRtcIsac_EncHistMulti(ISACBitStr_obj, &kModel,
-                            WebRtcIsac_kQKltModelCdfPtr, 1);
-    /* Entropy coding of quantization indices - LPC shape only. */
-    WebRtcIsac_EncHistMulti(ISACBitStr_obj,
-                            &ISACSavedEnc_obj->LPCindex_s[KLT_ORDER_SHAPE * ii],
-                            WebRtcIsac_kQKltCdfPtrShape,
-                            KLT_ORDER_SHAPE);
-
-    /* If transcoding, get new LPC gain indices */
-    if (scale < 1.0) {
-      WebRtcIsac_TranscodeLPCCoef(
-          &tmpLPCcoeffs_lo[(ORDERLO + 1) * SUBFRAMES * ii],
-          &tmpLPCcoeffs_hi[(ORDERHI + 1)*SUBFRAMES * ii],
-          &tmpLPCindex_g[KLT_ORDER_GAIN * ii]);
-    }
-
-    /* Entropy coding of quantization indices - LPC gain. */
-    WebRtcIsac_EncHistMulti(ISACBitStr_obj, &tmpLPCindex_g[KLT_ORDER_GAIN * ii],
-                            WebRtcIsac_kQKltCdfPtrGain, KLT_ORDER_GAIN);
-
-    /* Quantization and loss-less coding. */
-    status = WebRtcIsac_EncodeSpec(&tmp_fre[ii * FRAMESAMPLES_HALF],
-                                   &tmp_fim[ii * FRAMESAMPLES_HALF],
-                                   ISACSavedEnc_obj->AvgPitchGain[ii],
-                                   kIsacLowerBand, ISACBitStr_obj);
-    if (status < 0) {
-      return status;
-    }
-  }
-  /* Complete arithmetic coding. */
-  return WebRtcIsac_EncTerminate(ISACBitStr_obj);
-}
-
-
-int WebRtcIsac_EncodeStoredDataUb(
-    const ISACUBSaveEncDataStruct* ISACSavedEnc_obj,
-    Bitstr* bitStream,
-    int32_t jitterInfo,
-    float scale,
-    enum ISACBandwidth bandwidth) {
-  int n;
-  int err;
-  double lpcGain[SUBFRAMES];
-  int16_t realFFT[FRAMESAMPLES_HALF];
-  int16_t imagFFT[FRAMESAMPLES_HALF];
-  const uint16_t** shape_cdf;
-  int shape_len;
-  const int16_t kAveragePitchGain = 0.0;
-  enum ISACBand band;
-  /* Reset bitstream. */
-  WebRtcIsac_ResetBitstream(bitStream);
-
-  /* Encode jitter index. */
-  WebRtcIsac_EncodeJitterInfo(jitterInfo, bitStream);
-
-  err = WebRtcIsac_EncodeBandwidth(bandwidth, bitStream);
-  if (err < 0) {
-    return err;
-  }
-
-  /* Encode LPC-shape. */
-  if (bandwidth == isac12kHz) {
-    shape_cdf = WebRtcIsac_kLpcShapeCdfMatUb12;
-    shape_len = UB_LPC_ORDER * UB_LPC_VEC_PER_FRAME;
-    band = kIsacUpperBand12;
-  } else {
-    shape_cdf = WebRtcIsac_kLpcShapeCdfMatUb16;
-    shape_len = UB_LPC_ORDER * UB16_LPC_VEC_PER_FRAME;
-    band = kIsacUpperBand16;
-  }
-  WebRtcIsac_EncHistMulti(bitStream, ISACSavedEnc_obj->indexLPCShape,
-                          shape_cdf, shape_len);
-
-  if ((scale <= 0.0) || (scale >= 1.0)) {
-    /* We only consider scales between zero and one. */
-    WebRtcIsac_EncHistMulti(bitStream, ISACSavedEnc_obj->lpcGainIndex,
-                            WebRtcIsac_kLpcGainCdfMat, UB_LPC_GAIN_DIM);
-    if (bandwidth == isac16kHz) {
-      /* Store gain indices of the second half. */
-      WebRtcIsac_EncHistMulti(bitStream,
-                              &ISACSavedEnc_obj->lpcGainIndex[SUBFRAMES],
-                              WebRtcIsac_kLpcGainCdfMat, UB_LPC_GAIN_DIM);
-    }
-    /* Store FFT coefficients. */
-    err = WebRtcIsac_EncodeSpec(ISACSavedEnc_obj->realFFT,
-                                ISACSavedEnc_obj->imagFFT, kAveragePitchGain,
-                                band, bitStream);
-  } else {
-    /* Scale LPC gain and FFT coefficients. */
-    for (n = 0; n < SUBFRAMES; n++) {
-      lpcGain[n] = scale * ISACSavedEnc_obj->lpcGain[n];
-    }
-    /* Store LPC gains. */
-    WebRtcIsac_StoreLpcGainUb(lpcGain, bitStream);
-
-    if (bandwidth == isac16kHz) {
-      /* Scale and code the gains of the second half of the frame, if 16kHz. */
-      for (n = 0; n < SUBFRAMES; n++) {
-        lpcGain[n] = scale * ISACSavedEnc_obj->lpcGain[n + SUBFRAMES];
-      }
-      WebRtcIsac_StoreLpcGainUb(lpcGain, bitStream);
-    }
-
-    for (n = 0; n < FRAMESAMPLES_HALF; n++) {
-      realFFT[n] = (int16_t)(scale * (float)ISACSavedEnc_obj->realFFT[n] +
-          0.5f);
-      imagFFT[n] = (int16_t)(scale * (float)ISACSavedEnc_obj->imagFFT[n] +
-          0.5f);
-    }
-    /* Store FFT coefficients. */
-    err = WebRtcIsac_EncodeSpec(realFFT, imagFFT, kAveragePitchGain,
-                                band, bitStream);
-  }
-  if (err < 0) {
-    /* Error happened while encoding FFT coefficients. */
-    return err;
-  }
-
-  /* Complete arithmetic coding. */
-  return WebRtcIsac_EncTerminate(bitStream);
-}
-
-int16_t WebRtcIsac_GetRedPayloadUb(
-    const ISACUBSaveEncDataStruct* ISACSavedEncObj,
-    Bitstr*                        bitStreamObj,
-    enum ISACBandwidth             bandwidth) {
-  int n;
-  int16_t status;
-  int16_t realFFT[FRAMESAMPLES_HALF];
-  int16_t imagFFT[FRAMESAMPLES_HALF];
-  enum ISACBand band;
-  const int16_t kAveragePitchGain = 0.0;
-  /* Store bit-stream object. */
-  memcpy(bitStreamObj, &ISACSavedEncObj->bitStreamObj, sizeof(Bitstr));
-
-  /* Scale FFT coefficients. */
-  for (n = 0; n < FRAMESAMPLES_HALF; n++) {
-    realFFT[n] = (int16_t)((float)ISACSavedEncObj->realFFT[n] *
-        RCU_TRANSCODING_SCALE_UB + 0.5);
-    imagFFT[n] = (int16_t)((float)ISACSavedEncObj->imagFFT[n] *
-        RCU_TRANSCODING_SCALE_UB + 0.5);
-  }
-
-  band = (bandwidth == isac12kHz) ? kIsacUpperBand12 : kIsacUpperBand16;
-  status = WebRtcIsac_EncodeSpec(realFFT, imagFFT, kAveragePitchGain, band,
-                                 bitStreamObj);
-  if (status < 0) {
-    return status;
-  } else {
-    /* Terminate entropy coding */
-    return WebRtcIsac_EncTerminate(bitStreamObj);
-  }
-}
diff --git a/modules/audio_coding/codecs/isac/main/source/encode_lpc_swb.c b/modules/audio_coding/codecs/isac/main/source/encode_lpc_swb.c
deleted file mode 100644
index 7b02e64..0000000
--- a/modules/audio_coding/codecs/isac/main/source/encode_lpc_swb.c
+++ /dev/null
@@ -1,706 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * code_LPC_UB.c
- *
- * This file contains definition of functions used to
- * encode LPC parameters (Shape & gain) of the upper band.
- *
- */
-
-#include <math.h>
-#include <stdio.h>
-#include <string.h>
-
-#include "modules/audio_coding/codecs/isac/main/source/encode_lpc_swb.h"
-#include "modules/audio_coding/codecs/isac/main/source/lpc_gain_swb_tables.h"
-#include "modules/audio_coding/codecs/isac/main/source/lpc_shape_swb12_tables.h"
-#include "modules/audio_coding/codecs/isac/main/source/lpc_shape_swb16_tables.h"
-#include "modules/audio_coding/codecs/isac/main/source/settings.h"
-
-/******************************************************************************
- * WebRtcIsac_RemoveLarMean()
- *
- * Remove the means from LAR coefficients.
- *
- * Input:
- *      -lar                : pointer to lar vectors. LAR vectors are
- *                            concatenated.
- *      -bandwidth          : indicates if the given LAR vectors belong
- *                            to SWB-12kHz or SWB-16kHz.
- *
- * Output:
- *      -lar                : pointer to mean-removed LAR:s.
- *
- *
- */
-int16_t
-WebRtcIsac_RemoveLarMean(
-    double* lar,
-    int16_t bandwidth)
-{
-  int16_t coeffCntr;
-  int16_t vecCntr;
-  int16_t numVec;
-  const double* meanLAR;
-  switch(bandwidth)
-  {
-    case isac12kHz:
-      {
-        numVec = UB_LPC_VEC_PER_FRAME;
-        meanLAR = WebRtcIsac_kMeanLarUb12;
-        break;
-      }
-    case isac16kHz:
-      {
-        numVec = UB16_LPC_VEC_PER_FRAME;
-        meanLAR = WebRtcIsac_kMeanLarUb16;
-        break;
-      }
-    default:
-      return -1;
-  }
-
-  for(vecCntr = 0; vecCntr < numVec; vecCntr++)
-  {
-    for(coeffCntr = 0; coeffCntr < UB_LPC_ORDER; coeffCntr++)
-    {
-      // REMOVE MEAN
-      *lar++ -= meanLAR[coeffCntr];
-    }
-  }
-  return 0;
-}
-
-/******************************************************************************
- * WebRtcIsac_DecorrelateIntraVec()
- *
- * Remove the correlation amonge the components of LAR vectors. If LAR vectors
- * of one frame are put in a matrix where each column is a LAR vector of a
- * sub-frame, then this is equivalent to multiplying the LAR matrix with
- * a decorrelting mtrix from left.
- *
- * Input:
- *      -inLar              : pointer to mean-removed LAR vecrtors.
- *      -bandwidth          : indicates if the given LAR vectors belong
- *                            to SWB-12kHz or SWB-16kHz.
- *
- * Output:
- *      -out                : decorrelated LAR vectors.
- */
-int16_t
-WebRtcIsac_DecorrelateIntraVec(
-    const double* data,
-    double*       out,
-    int16_t bandwidth)
-{
-  const double* ptrData;
-  const double* ptrRow;
-  int16_t rowCntr;
-  int16_t colCntr;
-  int16_t larVecCntr;
-  int16_t numVec;
-  const double* decorrMat;
-  switch(bandwidth)
-  {
-    case isac12kHz:
-      {
-        decorrMat = &WebRtcIsac_kIntraVecDecorrMatUb12[0][0];
-        numVec = UB_LPC_VEC_PER_FRAME;
-        break;
-      }
-    case isac16kHz:
-      {
-        decorrMat = &WebRtcIsac_kIintraVecDecorrMatUb16[0][0];
-        numVec = UB16_LPC_VEC_PER_FRAME;
-        break;
-      }
-    default:
-      return -1;
-  }
-
-  //
-  // decorrMat * data
-  //
-  // data is assumed to contain 'numVec' of LAR
-  // vectors (mean removed) each of dimension 'UB_LPC_ORDER'
-  // concatenated one after the other.
-  //
-
-  ptrData = data;
-  for(larVecCntr = 0; larVecCntr < numVec; larVecCntr++)
-  {
-    for(rowCntr = 0; rowCntr < UB_LPC_ORDER; rowCntr++)
-    {
-      ptrRow = &decorrMat[rowCntr * UB_LPC_ORDER];
-      *out = 0;
-      for(colCntr = 0; colCntr < UB_LPC_ORDER; colCntr++)
-      {
-        *out += ptrData[colCntr] * ptrRow[colCntr];
-      }
-      out++;
-    }
-    ptrData += UB_LPC_ORDER;
-  }
-  return 0;
-}
-
-/******************************************************************************
- * WebRtcIsac_DecorrelateInterVec()
- *
- * Remover the correlation among mean-removed LAR vectors. If LAR vectors
- * of one frame are put in a matrix where each column is a LAR vector of a
- * sub-frame, then this is equivalent to multiplying the LAR matrix with
- * a decorrelting mtrix from right.
- *
- * Input:
- *      -data               : pointer to matrix of LAR vectors. The matrix
- *                            is stored column-wise.
- *      -bandwidth          : indicates if the given LAR vectors belong
- *                            to SWB-12kHz or SWB-16kHz.
- *
- * Output:
- *      -out                : decorrelated LAR vectors.
- */
-int16_t
-WebRtcIsac_DecorrelateInterVec(
-    const double* data,
-    double* out,
-    int16_t bandwidth)
-{
-  int16_t coeffCntr;
-  int16_t rowCntr;
-  int16_t colCntr;
-  const double* decorrMat;
-  int16_t interVecDim;
-
-  switch(bandwidth)
-  {
-    case isac12kHz:
-      {
-        decorrMat = &WebRtcIsac_kInterVecDecorrMatUb12[0][0];
-        interVecDim = UB_LPC_VEC_PER_FRAME;
-        break;
-      }
-    case isac16kHz:
-      {
-        decorrMat = &WebRtcIsac_kInterVecDecorrMatUb16[0][0];
-        interVecDim = UB16_LPC_VEC_PER_FRAME;
-        break;
-      }
-    default:
-      return -1;
-  }
-
-  //
-  // data * decorrMat
-  //
-  // data is of size 'interVecDim' * 'UB_LPC_ORDER'
-  // That is 'interVecDim' of LAR vectors (mean removed)
-  // in columns each of dimension 'UB_LPC_ORDER'.
-  // matrix is stored column-wise.
-  //
-
-  for(coeffCntr = 0; coeffCntr < UB_LPC_ORDER; coeffCntr++)
-  {
-    for(colCntr = 0; colCntr < interVecDim; colCntr++)
-    {
-      out[coeffCntr + colCntr * UB_LPC_ORDER] = 0;
-      for(rowCntr = 0; rowCntr < interVecDim; rowCntr++)
-      {
-        out[coeffCntr + colCntr * UB_LPC_ORDER] +=
-            data[coeffCntr + rowCntr * UB_LPC_ORDER] *
-            decorrMat[rowCntr * interVecDim + colCntr];
-      }
-    }
-  }
-  return 0;
-}
-
-/******************************************************************************
- * WebRtcIsac_QuantizeUncorrLar()
- *
- * Quantize the uncorrelated parameters.
- *
- * Input:
- *      -data               : uncorrelated LAR vectors.
- *      -bandwidth          : indicates if the given LAR vectors belong
- *                            to SWB-12kHz or SWB-16kHz.
- *
- * Output:
- *      -data               : quantized version of the input.
- *      -idx                : pointer to quantization indices.
- */
-double
-WebRtcIsac_QuantizeUncorrLar(
-    double* data,
-    int* recIdx,
-    int16_t bandwidth)
-{
-  int16_t cntr;
-  int32_t idx;
-  int16_t interVecDim;
-  const double* leftRecPoint;
-  double quantizationStepSize;
-  const int16_t* numQuantCell;
-  switch(bandwidth)
-  {
-    case isac12kHz:
-      {
-        leftRecPoint         = WebRtcIsac_kLpcShapeLeftRecPointUb12;
-        quantizationStepSize = WebRtcIsac_kLpcShapeQStepSizeUb12;
-        numQuantCell         = WebRtcIsac_kLpcShapeNumRecPointUb12;
-        interVecDim          = UB_LPC_VEC_PER_FRAME;
-        break;
-      }
-    case isac16kHz:
-      {
-        leftRecPoint         = WebRtcIsac_kLpcShapeLeftRecPointUb16;
-        quantizationStepSize = WebRtcIsac_kLpcShapeQStepSizeUb16;
-        numQuantCell         = WebRtcIsac_kLpcShapeNumRecPointUb16;
-        interVecDim          = UB16_LPC_VEC_PER_FRAME;
-        break;
-      }
-    default:
-      return -1;
-  }
-
-  //
-  // Quantize the parametrs.
-  //
-  for(cntr = 0; cntr < UB_LPC_ORDER * interVecDim; cntr++)
-  {
-    idx = (int32_t)floor((*data - leftRecPoint[cntr]) /
-                               quantizationStepSize + 0.5);
-    if(idx < 0)
-    {
-      idx = 0;
-    }
-    else if(idx >= numQuantCell[cntr])
-    {
-      idx = numQuantCell[cntr] - 1;
-    }
-
-    *data++ = leftRecPoint[cntr] + idx * quantizationStepSize;
-    *recIdx++ = idx;
-  }
-  return 0;
-}
-
-
-/******************************************************************************
- * WebRtcIsac_DequantizeLpcParam()
- *
- * Get the quantized value of uncorrelated LARs given the quantization indices.
- *
- * Input:
- *      -idx                : pointer to quantiztion indices.
- *      -bandwidth          : indicates if the given LAR vectors belong
- *                            to SWB-12kHz or SWB-16kHz.
- *
- * Output:
- *      -out                : pointer to quantized values.
- */
-int16_t
-WebRtcIsac_DequantizeLpcParam(
-    const int* idx,
-    double*    out,
-    int16_t bandwidth)
-{
-  int16_t cntr;
-  int16_t interVecDim;
-  const double* leftRecPoint;
-  double quantizationStepSize;
-
-  switch(bandwidth)
-  {
-    case isac12kHz:
-      {
-        leftRecPoint =         WebRtcIsac_kLpcShapeLeftRecPointUb12;
-        quantizationStepSize = WebRtcIsac_kLpcShapeQStepSizeUb12;
-        interVecDim =          UB_LPC_VEC_PER_FRAME;
-        break;
-      }
-    case isac16kHz:
-      {
-        leftRecPoint =         WebRtcIsac_kLpcShapeLeftRecPointUb16;
-        quantizationStepSize = WebRtcIsac_kLpcShapeQStepSizeUb16;
-        interVecDim =          UB16_LPC_VEC_PER_FRAME;
-        break;
-      }
-    default:
-      return -1;
-  }
-
-  //
-  // Dequantize given the quantization indices
-  //
-
-  for(cntr = 0; cntr < UB_LPC_ORDER * interVecDim; cntr++)
-  {
-    *out++ = leftRecPoint[cntr] + *idx++ * quantizationStepSize;
-  }
-  return 0;
-}
-
-
-/******************************************************************************
- * WebRtcIsac_CorrelateIntraVec()
- *
- * This is the inverse of WebRtcIsac_DecorrelateIntraVec().
- *
- * Input:
- *      -data               : uncorrelated parameters.
- *      -bandwidth          : indicates if the given LAR vectors belong
- *                            to SWB-12kHz or SWB-16kHz.
- *
- * Output:
- *      -out                : correlated parametrs.
- */
-int16_t
-WebRtcIsac_CorrelateIntraVec(
-    const double* data,
-    double*       out,
-    int16_t bandwidth)
-{
-  int16_t vecCntr;
-  int16_t rowCntr;
-  int16_t colCntr;
-  int16_t numVec;
-  const double* ptrData;
-  const double* intraVecDecorrMat;
-
-  switch(bandwidth)
-  {
-    case isac12kHz:
-      {
-        numVec            = UB_LPC_VEC_PER_FRAME;
-        intraVecDecorrMat = &WebRtcIsac_kIntraVecDecorrMatUb12[0][0];
-        break;
-      }
-    case isac16kHz:
-      {
-        numVec            = UB16_LPC_VEC_PER_FRAME;
-        intraVecDecorrMat = &WebRtcIsac_kIintraVecDecorrMatUb16[0][0];
-        break;
-      }
-    default:
-      return -1;
-  }
-
-
-  ptrData = data;
-  for(vecCntr = 0; vecCntr < numVec; vecCntr++)
-  {
-    for(colCntr = 0; colCntr < UB_LPC_ORDER; colCntr++)
-    {
-      *out = 0;
-      for(rowCntr = 0; rowCntr < UB_LPC_ORDER; rowCntr++)
-      {
-        *out += ptrData[rowCntr] *
-            intraVecDecorrMat[rowCntr * UB_LPC_ORDER + colCntr];
-      }
-      out++;
-    }
-    ptrData += UB_LPC_ORDER;
-  }
-  return 0;
-}
-
-/******************************************************************************
- * WebRtcIsac_CorrelateInterVec()
- *
- * This is the inverse of WebRtcIsac_DecorrelateInterVec().
- *
- * Input:
- *      -data
- *      -bandwidth          : indicates if the given LAR vectors belong
- *                            to SWB-12kHz or SWB-16kHz.
- *
- * Output:
- *      -out                : correlated parametrs.
- */
-int16_t
-WebRtcIsac_CorrelateInterVec(
-    const double* data,
-    double*       out,
-    int16_t bandwidth)
-{
-  int16_t coeffCntr;
-  int16_t rowCntr;
-  int16_t colCntr;
-  int16_t interVecDim;
-  double myVec[UB16_LPC_VEC_PER_FRAME] = {0.0};
-  const double* interVecDecorrMat;
-
-  switch(bandwidth)
-  {
-    case isac12kHz:
-      {
-        interVecDim       = UB_LPC_VEC_PER_FRAME;
-        interVecDecorrMat = &WebRtcIsac_kInterVecDecorrMatUb12[0][0];
-        break;
-      }
-    case isac16kHz:
-      {
-        interVecDim       = UB16_LPC_VEC_PER_FRAME;
-        interVecDecorrMat = &WebRtcIsac_kInterVecDecorrMatUb16[0][0];
-        break;
-      }
-    default:
-      return -1;
-  }
-
-  for(coeffCntr = 0; coeffCntr < UB_LPC_ORDER; coeffCntr++)
-  {
-    for(rowCntr = 0; rowCntr < interVecDim; rowCntr++)
-    {
-      myVec[rowCntr] = 0;
-      for(colCntr = 0; colCntr < interVecDim; colCntr++)
-      {
-        myVec[rowCntr] += data[coeffCntr + colCntr * UB_LPC_ORDER] * //*ptrData *
-            interVecDecorrMat[rowCntr * interVecDim + colCntr];
-        //ptrData += UB_LPC_ORDER;
-      }
-    }
-
-    for(rowCntr = 0; rowCntr < interVecDim; rowCntr++)
-    {
-      out[coeffCntr + rowCntr * UB_LPC_ORDER] = myVec[rowCntr];
-    }
-  }
-  return 0;
-}
-
-/******************************************************************************
- * WebRtcIsac_AddLarMean()
- *
- * This is the inverse of WebRtcIsac_RemoveLarMean()
- *
- * Input:
- *      -data               : pointer to mean-removed LAR:s.
- *      -bandwidth          : indicates if the given LAR vectors belong
- *                            to SWB-12kHz or SWB-16kHz.
- *
- * Output:
- *      -data               : pointer to LARs.
- */
-int16_t
-WebRtcIsac_AddLarMean(
-    double* data,
-    int16_t bandwidth)
-{
-  int16_t coeffCntr;
-  int16_t vecCntr;
-  int16_t numVec;
-  const double* meanLAR;
-
-  switch(bandwidth)
-  {
-    case isac12kHz:
-      {
-        numVec = UB_LPC_VEC_PER_FRAME;
-        meanLAR = WebRtcIsac_kMeanLarUb12;
-        break;
-      }
-    case isac16kHz:
-      {
-        numVec = UB16_LPC_VEC_PER_FRAME;
-        meanLAR = WebRtcIsac_kMeanLarUb16;
-        break;
-      }
-    default:
-      return -1;
-  }
-
-  for(vecCntr = 0; vecCntr < numVec; vecCntr++)
-  {
-    for(coeffCntr = 0; coeffCntr < UB_LPC_ORDER; coeffCntr++)
-    {
-      *data++ += meanLAR[coeffCntr];
-    }
-  }
-  return 0;
-}
-
-/******************************************************************************
- * WebRtcIsac_ToLogDomainRemoveMean()
- *
- * Transform the LPC gain to log domain then remove the mean value.
- *
- * Input:
- *      -lpcGain            : pointer to LPC Gain, expecting 6 LPC gains
- *
- * Output:
- *      -lpcGain            : mean-removed in log domain.
- */
-int16_t
-WebRtcIsac_ToLogDomainRemoveMean(
-    double* data)
-{
-  int16_t coeffCntr;
-  for(coeffCntr = 0; coeffCntr < UB_LPC_GAIN_DIM; coeffCntr++)
-  {
-    data[coeffCntr] = log(data[coeffCntr]) - WebRtcIsac_kMeanLpcGain;
-  }
-  return 0;
-}
-
-
-/******************************************************************************
- * WebRtcIsac_DecorrelateLPGain()
- *
- * Decorrelate LPC gains. There are 6 LPC Gains per frame. This is like
- * multiplying gain vector with decorrelating matrix.
- *
- * Input:
- *      -data               : LPC gain in log-domain with mean removed.
- *
- * Output:
- *      -out                : decorrelated parameters.
- */
-int16_t WebRtcIsac_DecorrelateLPGain(
-    const double* data,
-    double* out)
-{
-  int16_t rowCntr;
-  int16_t colCntr;
-
-  for(colCntr = 0; colCntr < UB_LPC_GAIN_DIM; colCntr++)
-  {
-    *out = 0;
-    for(rowCntr = 0; rowCntr < UB_LPC_GAIN_DIM; rowCntr++)
-    {
-      *out += data[rowCntr] * WebRtcIsac_kLpcGainDecorrMat[rowCntr][colCntr];
-    }
-    out++;
-  }
-  return 0;
-}
-
-/******************************************************************************
- * WebRtcIsac_QuantizeLpcGain()
- *
- * Quantize the decorrelated log-domain gains.
- *
- * Input:
- *      -lpcGain            : uncorrelated LPC gains.
- *
- * Output:
- *      -idx                : quantization indices
- *      -lpcGain            : quantized value of the inpt.
- */
-double WebRtcIsac_QuantizeLpcGain(
-    double* data,
-    int*    idx)
-{
-  int16_t coeffCntr;
-  for(coeffCntr = 0; coeffCntr < UB_LPC_GAIN_DIM; coeffCntr++)
-  {
-    *idx = (int)floor((*data - WebRtcIsac_kLeftRecPointLpcGain[coeffCntr]) /
-                                WebRtcIsac_kQSizeLpcGain + 0.5);
-
-    if(*idx < 0)
-    {
-      *idx = 0;
-    }
-    else if(*idx >= WebRtcIsac_kNumQCellLpcGain[coeffCntr])
-    {
-      *idx = WebRtcIsac_kNumQCellLpcGain[coeffCntr] - 1;
-    }
-    *data = WebRtcIsac_kLeftRecPointLpcGain[coeffCntr] + *idx *
-        WebRtcIsac_kQSizeLpcGain;
-
-    data++;
-    idx++;
-  }
-  return 0;
-}
-
-/******************************************************************************
- * WebRtcIsac_DequantizeLpcGain()
- *
- * Get the quantized values given the quantization indices.
- *
- * Input:
- *      -idx                : pointer to quantization indices.
- *
- * Output:
- *      -lpcGains           : quantized values of the given parametes.
- */
-int16_t WebRtcIsac_DequantizeLpcGain(
-    const int* idx,
-    double*    out)
-{
-  int16_t coeffCntr;
-  for(coeffCntr = 0; coeffCntr < UB_LPC_GAIN_DIM; coeffCntr++)
-  {
-    *out = WebRtcIsac_kLeftRecPointLpcGain[coeffCntr] + *idx *
-        WebRtcIsac_kQSizeLpcGain;
-    out++;
-    idx++;
-  }
-  return 0;
-}
-
-/******************************************************************************
- * WebRtcIsac_CorrelateLpcGain()
- *
- * This is the inverse of WebRtcIsac_DecorrelateLPGain().
- *
- * Input:
- *      -data               : decorrelated parameters.
- *
- * Output:
- *      -out                : correlated parameters.
- */
-int16_t WebRtcIsac_CorrelateLpcGain(
-    const double* data,
-    double* out)
-{
-  int16_t rowCntr;
-  int16_t colCntr;
-
-  for(rowCntr = 0; rowCntr < UB_LPC_GAIN_DIM; rowCntr++)
-  {
-    *out = 0;
-    for(colCntr = 0; colCntr < UB_LPC_GAIN_DIM; colCntr++)
-    {
-      *out += WebRtcIsac_kLpcGainDecorrMat[rowCntr][colCntr] * data[colCntr];
-    }
-    out++;
-  }
-
-  return 0;
-}
-
-
-/******************************************************************************
- * WebRtcIsac_AddMeanToLinearDomain()
- *
- * This is the inverse of WebRtcIsac_ToLogDomainRemoveMean().
- *
- * Input:
- *      -lpcGain            : LPC gain in log-domain & mean removed
- *
- * Output:
- *      -lpcGain            : LPC gain in normal domain.
- */
-int16_t WebRtcIsac_AddMeanToLinearDomain(
-    double* lpcGains)
-{
-  int16_t coeffCntr;
-  for(coeffCntr = 0; coeffCntr < UB_LPC_GAIN_DIM; coeffCntr++)
-  {
-    lpcGains[coeffCntr] = exp(lpcGains[coeffCntr] + WebRtcIsac_kMeanLpcGain);
-  }
-  return 0;
-}
diff --git a/modules/audio_coding/codecs/isac/main/source/encode_lpc_swb.h b/modules/audio_coding/codecs/isac/main/source/encode_lpc_swb.h
deleted file mode 100644
index 8bc3d75..0000000
--- a/modules/audio_coding/codecs/isac/main/source/encode_lpc_swb.h
+++ /dev/null
@@ -1,246 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * encode_lpc_swb.h
- *
- * This file contains declaration of functions used to
- * encode LPC parameters (Shape & gain) of the upper band.
- *
- */
-
-#ifndef MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_SOURCE_ENCODE_LPC_SWB_H_
-#define MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_SOURCE_ENCODE_LPC_SWB_H_
-
-#include "modules/audio_coding/codecs/isac/main/source/settings.h"
-#include "modules/audio_coding/codecs/isac/main/source/structs.h"
-
-/******************************************************************************
- * WebRtcIsac_RemoveLarMean()
- *
- * Remove the means from LAR coefficients.
- *
- * Input:
- *      -lar                : pointer to lar vectors. LAR vectors are
- *                            concatenated.
- *      -bandwidth          : indicates if the given LAR vectors belong
- *                            to SWB-12kHz or SWB-16kHz.
- *
- * Output:
- *      -lar                : pointer to mean-removed LAR:s.
- *
- *
- */
-int16_t WebRtcIsac_RemoveLarMean(double* lar, int16_t bandwidth);
-
-/******************************************************************************
- * WebRtcIsac_DecorrelateIntraVec()
- *
- * Remove the correlation amonge the components of LAR vectors. If LAR vectors
- * of one frame are put in a matrix where each column is a LAR vector of a
- * sub-frame, then this is equivalent to multiplying the LAR matrix with
- * a decorrelting mtrix from left.
- *
- * Input:
- *      -inLar              : pointer to mean-removed LAR vecrtors.
- *      -bandwidth          : indicates if the given LAR vectors belong
- *                            to SWB-12kHz or SWB-16kHz.
- *
- * Output:
- *      -out                : decorrelated LAR vectors.
- */
-int16_t WebRtcIsac_DecorrelateIntraVec(const double* inLAR,
-                                       double* out,
-                                       int16_t bandwidth);
-
-/******************************************************************************
- * WebRtcIsac_DecorrelateInterVec()
- *
- * Remover the correlation among mean-removed LAR vectors. If LAR vectors
- * of one frame are put in a matrix where each column is a LAR vector of a
- * sub-frame, then this is equivalent to multiplying the LAR matrix with
- * a decorrelting mtrix from right.
- *
- * Input:
- *      -data               : pointer to matrix of LAR vectors. The matrix
- *                            is stored column-wise.
- *      -bandwidth          : indicates if the given LAR vectors belong
- *                            to SWB-12kHz or SWB-16kHz.
- *
- * Output:
- *      -out                : decorrelated LAR vectors.
- */
-int16_t WebRtcIsac_DecorrelateInterVec(const double* data,
-                                       double* out,
-                                       int16_t bandwidth);
-
-/******************************************************************************
- * WebRtcIsac_QuantizeUncorrLar()
- *
- * Quantize the uncorrelated parameters.
- *
- * Input:
- *      -data               : uncorrelated LAR vectors.
- *      -bandwidth          : indicates if the given LAR vectors belong
- *                            to SWB-12kHz or SWB-16kHz.
- *
- * Output:
- *      -data               : quantized version of the input.
- *      -idx                : pointer to quantization indices.
- */
-double WebRtcIsac_QuantizeUncorrLar(double* data, int* idx, int16_t bandwidth);
-
-/******************************************************************************
- * WebRtcIsac_CorrelateIntraVec()
- *
- * This is the inverse of WebRtcIsac_DecorrelateIntraVec().
- *
- * Input:
- *      -data               : uncorrelated parameters.
- *      -bandwidth          : indicates if the given LAR vectors belong
- *                            to SWB-12kHz or SWB-16kHz.
- *
- * Output:
- *      -out                : correlated parametrs.
- */
-int16_t WebRtcIsac_CorrelateIntraVec(const double* data,
-                                     double* out,
-                                     int16_t bandwidth);
-
-/******************************************************************************
- * WebRtcIsac_CorrelateInterVec()
- *
- * This is the inverse of WebRtcIsac_DecorrelateInterVec().
- *
- * Input:
- *      -data
- *      -bandwidth          : indicates if the given LAR vectors belong
- *                            to SWB-12kHz or SWB-16kHz.
- *
- * Output:
- *      -out                : correlated parametrs.
- */
-int16_t WebRtcIsac_CorrelateInterVec(const double* data,
-                                     double* out,
-                                     int16_t bandwidth);
-
-/******************************************************************************
- * WebRtcIsac_AddLarMean()
- *
- * This is the inverse of WebRtcIsac_RemoveLarMean()
- *
- * Input:
- *      -data               : pointer to mean-removed LAR:s.
- *      -bandwidth          : indicates if the given LAR vectors belong
- *                            to SWB-12kHz or SWB-16kHz.
- *
- * Output:
- *      -data               : pointer to LARs.
- */
-int16_t WebRtcIsac_AddLarMean(double* data, int16_t bandwidth);
-
-/******************************************************************************
- * WebRtcIsac_DequantizeLpcParam()
- *
- * Get the quantized value of uncorrelated LARs given the quantization indices.
- *
- * Input:
- *      -idx                : pointer to quantiztion indices.
- *      -bandwidth          : indicates if the given LAR vectors belong
- *                            to SWB-12kHz or SWB-16kHz.
- *
- * Output:
- *      -out                : pointer to quantized values.
- */
-int16_t WebRtcIsac_DequantizeLpcParam(const int* idx,
-                                      double* out,
-                                      int16_t bandwidth);
-
-/******************************************************************************
- * WebRtcIsac_ToLogDomainRemoveMean()
- *
- * Transform the LPC gain to log domain then remove the mean value.
- *
- * Input:
- *      -lpcGain            : pointer to LPC Gain, expecting 6 LPC gains
- *
- * Output:
- *      -lpcGain            : mean-removed in log domain.
- */
-int16_t WebRtcIsac_ToLogDomainRemoveMean(double* lpGains);
-
-/******************************************************************************
- * WebRtcIsac_DecorrelateLPGain()
- *
- * Decorrelate LPC gains. There are 6 LPC Gains per frame. This is like
- * multiplying gain vector with decorrelating matrix.
- *
- * Input:
- *      -data               : LPC gain in log-domain with mean removed.
- *
- * Output:
- *      -out                : decorrelated parameters.
- */
-int16_t WebRtcIsac_DecorrelateLPGain(const double* data, double* out);
-
-/******************************************************************************
- * WebRtcIsac_QuantizeLpcGain()
- *
- * Quantize the decorrelated log-domain gains.
- *
- * Input:
- *      -lpcGain            : uncorrelated LPC gains.
- *
- * Output:
- *      -idx                : quantization indices
- *      -lpcGain            : quantized value of the inpt.
- */
-double WebRtcIsac_QuantizeLpcGain(double* lpGains, int* idx);
-
-/******************************************************************************
- * WebRtcIsac_DequantizeLpcGain()
- *
- * Get the quantized values given the quantization indices.
- *
- * Input:
- *      -idx                : pointer to quantization indices.
- *
- * Output:
- *      -lpcGains           : quantized values of the given parametes.
- */
-int16_t WebRtcIsac_DequantizeLpcGain(const int* idx, double* lpGains);
-
-/******************************************************************************
- * WebRtcIsac_CorrelateLpcGain()
- *
- * This is the inverse of WebRtcIsac_DecorrelateLPGain().
- *
- * Input:
- *      -data               : decorrelated parameters.
- *
- * Output:
- *      -out                : correlated parameters.
- */
-int16_t WebRtcIsac_CorrelateLpcGain(const double* data, double* out);
-
-/******************************************************************************
- * WebRtcIsac_AddMeanToLinearDomain()
- *
- * This is the inverse of WebRtcIsac_ToLogDomainRemoveMean().
- *
- * Input:
- *      -lpcGain            : LPC gain in log-domain & mean removed
- *
- * Output:
- *      -lpcGain            : LPC gain in normal domain.
- */
-int16_t WebRtcIsac_AddMeanToLinearDomain(double* lpcGains);
-
-#endif  // MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_SOURCE_ENCODE_LPC_SWB_H_
diff --git a/modules/audio_coding/codecs/isac/main/source/entropy_coding.c b/modules/audio_coding/codecs/isac/main/source/entropy_coding.c
deleted file mode 100644
index 188c8f6..0000000
--- a/modules/audio_coding/codecs/isac/main/source/entropy_coding.c
+++ /dev/null
@@ -1,2066 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * entropy_coding.c
- *
- * This header file defines all of the functions used to arithmetically
- * encode the iSAC bistream
- *
- */
-
-
-#include "common_audio/signal_processing/include/signal_processing_library.h"
-#include "modules/audio_coding/codecs/isac/main/source/entropy_coding.h"
-#include "modules/audio_coding/codecs/isac/main/source/settings.h"
-#include "modules/audio_coding/codecs/isac/main/source/arith_routines.h"
-#include "modules/audio_coding/codecs/isac/main/source/spectrum_ar_model_tables.h"
-#include "modules/audio_coding/codecs/isac/main/source/lpc_tables.h"
-#include "modules/audio_coding/codecs/isac/main/source/pitch_gain_tables.h"
-#include "modules/audio_coding/codecs/isac/main/source/pitch_lag_tables.h"
-#include "modules/audio_coding/codecs/isac/main/source/encode_lpc_swb.h"
-#include "modules/audio_coding/codecs/isac/main/source/lpc_shape_swb12_tables.h"
-#include "modules/audio_coding/codecs/isac/main/source/lpc_shape_swb16_tables.h"
-#include "modules/audio_coding/codecs/isac/main/source/lpc_gain_swb_tables.h"
-#include "modules/audio_coding/codecs/isac/main/source/os_specific_inline.h"
-
-#include <math.h>
-#include <string.h>
-
-static const uint16_t kLpcVecPerSegmentUb12 = 5;
-static const uint16_t kLpcVecPerSegmentUb16 = 4;
-
-/* CDF array for encoder bandwidth (12 vs 16 kHz) indicator. */
-static const uint16_t kOneBitEqualProbCdf[3] = {
-    0, 32768, 65535 };
-
-/* Pointer to cdf array for encoder bandwidth (12 vs 16 kHz) indicator. */
-static const uint16_t* const kOneBitEqualProbCdf_ptr[1] = {
-    kOneBitEqualProbCdf };
-
-/*
- * Initial cdf index for decoder of encoded bandwidth
- * (12 vs 16 kHz) indicator.
- */
-static const uint16_t kOneBitEqualProbInitIndex[1] = { 1 };
-
-
-static const int kIsSWB12 = 1;
-
-/* compute correlation from power spectrum */
-static void FindCorrelation(int32_t* PSpecQ12, int32_t* CorrQ7) {
-  int32_t summ[FRAMESAMPLES / 8];
-  int32_t diff[FRAMESAMPLES / 8];
-  const int16_t* CS_ptrQ9;
-  int32_t sum;
-  int k, n;
-
-  for (k = 0; k < FRAMESAMPLES / 8; k++) {
-    summ[k] = (PSpecQ12[k] + PSpecQ12[FRAMESAMPLES_QUARTER - 1 - k] + 16) >> 5;
-    diff[k] = (PSpecQ12[k] - PSpecQ12[FRAMESAMPLES_QUARTER - 1 - k] + 16) >> 5;
-  }
-
-  sum = 2;
-  for (n = 0; n < FRAMESAMPLES / 8; n++) {
-    sum += summ[n];
-  }
-  CorrQ7[0] = sum;
-
-  for (k = 0; k < AR_ORDER; k += 2) {
-    sum = 0;
-    CS_ptrQ9 = WebRtcIsac_kCos[k];
-    for (n = 0; n < FRAMESAMPLES / 8; n++)
-      sum += (CS_ptrQ9[n] * diff[n] + 256) >> 9;
-    CorrQ7[k + 1] = sum;
-  }
-
-  for (k = 1; k < AR_ORDER; k += 2) {
-    sum = 0;
-    CS_ptrQ9 = WebRtcIsac_kCos[k];
-    for (n = 0; n < FRAMESAMPLES / 8; n++)
-      sum += (CS_ptrQ9[n] * summ[n] + 256) >> 9;
-    CorrQ7[k + 1] = sum;
-  }
-}
-
-/* compute inverse AR power spectrum */
-/* Changed to the function used in iSAC FIX for compatibility reasons */
-static void FindInvArSpec(const int16_t* ARCoefQ12,
-                          const int32_t gainQ10,
-                          int32_t* CurveQ16) {
-  int32_t CorrQ11[AR_ORDER + 1];
-  int64_t sum, tmpGain;
-  int32_t diffQ16[FRAMESAMPLES / 8];
-  const int16_t* CS_ptrQ9;
-  int k, n;
-  int16_t round, shftVal = 0, sh;
-
-  sum = 0;
-  for (n = 0; n < AR_ORDER + 1; n++) {
-    sum += WEBRTC_SPL_MUL(ARCoefQ12[n], ARCoefQ12[n]);   /* Q24 */
-  }
-  sum = ((sum >> 6) * 65 + 32768) >> 16;  /* Q8 */
-  CorrQ11[0] = (sum * gainQ10 + 256) >> 9;
-
-  /* To avoid overflow, we shift down gainQ10 if it is large.
-   * We will not lose any precision */
-  if (gainQ10 > 400000) {
-    tmpGain = gainQ10 >> 3;
-    round = 32;
-    shftVal = 6;
-  } else {
-    tmpGain = gainQ10;
-    round = 256;
-    shftVal = 9;
-  }
-
-  for (k = 1; k < AR_ORDER + 1; k++) {
-    sum = 16384;
-    for (n = k; n < AR_ORDER + 1; n++)
-      sum += WEBRTC_SPL_MUL(ARCoefQ12[n - k], ARCoefQ12[n]); /* Q24 */
-    sum >>= 15;
-    CorrQ11[k] = (sum * tmpGain + round) >> shftVal;
-  }
-  sum = CorrQ11[0] << 7;
-  for (n = 0; n < FRAMESAMPLES / 8; n++) {
-    CurveQ16[n] = sum;
-  }
-  for (k = 1; k < AR_ORDER; k += 2) {
-    for (n = 0; n < FRAMESAMPLES / 8; n++) {
-      CurveQ16[n] += (WebRtcIsac_kCos[k][n] * CorrQ11[k + 1] + 2) >> 2;
-    }
-  }
-
-  CS_ptrQ9 = WebRtcIsac_kCos[0];
-
-  /* If CorrQ11[1] too large we avoid getting overflow in the
-   * calculation by shifting */
-  sh = WebRtcSpl_NormW32(CorrQ11[1]);
-  if (CorrQ11[1] == 0) { /* Use next correlation */
-    sh = WebRtcSpl_NormW32(CorrQ11[2]);
-  }
-  if (sh < 9) {
-    shftVal = 9 - sh;
-  } else {
-    shftVal = 0;
-  }
-  for (n = 0; n < FRAMESAMPLES / 8; n++) {
-    diffQ16[n] = (CS_ptrQ9[n] * (CorrQ11[1] >> shftVal) + 2) >> 2;
-  }
-  for (k = 2; k < AR_ORDER; k += 2) {
-    CS_ptrQ9 = WebRtcIsac_kCos[k];
-    for (n = 0; n < FRAMESAMPLES / 8; n++) {
-      diffQ16[n] += (CS_ptrQ9[n] * (CorrQ11[k + 1] >> shftVal) + 2) >> 2;
-    }
-  }
-
-  for (k = 0; k < FRAMESAMPLES / 8; k++) {
-    int32_t diff_q16_shifted = (int32_t)((uint32_t)(diffQ16[k]) << shftVal);
-    CurveQ16[FRAMESAMPLES_QUARTER - 1 - k] = CurveQ16[k] - diff_q16_shifted;
-    CurveQ16[k] += diff_q16_shifted;
-  }
-}
-
-/* Generate array of dither samples in Q7. */
-static void GenerateDitherQ7Lb(int16_t* bufQ7, uint32_t seed,
-                               int length, int16_t AvgPitchGain_Q12) {
-  int   k, shft;
-  int16_t dither1_Q7, dither2_Q7, dither_gain_Q14;
-
-  /* This threshold should be equal to that in decode_spec(). */
-  if (AvgPitchGain_Q12 < 614) {
-    for (k = 0; k < length - 2; k += 3) {
-      /* New random unsigned int. */
-      seed = (seed * 196314165) + 907633515;
-
-      /* Fixed-point dither sample between -64 and 64 (Q7). */
-      /* dither = seed * 128 / 4294967295 */
-      dither1_Q7 = (int16_t)(((int32_t)(seed + 16777216)) >> 25);
-
-      /* New random unsigned int. */
-      seed = (seed * 196314165) + 907633515;
-
-      /* Fixed-point dither sample between -64 and 64. */
-      dither2_Q7 = (int16_t)(((int32_t)(seed + 16777216)) >> 25);
-
-      shft = (seed >> 25) & 15;
-      if (shft < 5) {
-        bufQ7[k]   = dither1_Q7;
-        bufQ7[k + 1] = dither2_Q7;
-        bufQ7[k + 2] = 0;
-      } else if (shft < 10) {
-        bufQ7[k]   = dither1_Q7;
-        bufQ7[k + 1] = 0;
-        bufQ7[k + 2] = dither2_Q7;
-      } else {
-        bufQ7[k]   = 0;
-        bufQ7[k + 1] = dither1_Q7;
-        bufQ7[k + 2] = dither2_Q7;
-      }
-    }
-  } else {
-    dither_gain_Q14 = (int16_t)(22528 - 10 * AvgPitchGain_Q12);
-
-    /* Dither on half of the coefficients. */
-    for (k = 0; k < length - 1; k += 2) {
-      /* New random unsigned int */
-      seed = (seed * 196314165) + 907633515;
-
-      /* Fixed-point dither sample between -64 and 64. */
-      dither1_Q7 = (int16_t)(((int32_t)(seed + 16777216)) >> 25);
-
-      /* Dither sample is placed in either even or odd index. */
-      shft = (seed >> 25) & 1;     /* Either 0 or 1 */
-
-      bufQ7[k + shft] = (((dither_gain_Q14 * dither1_Q7) + 8192) >> 14);
-      bufQ7[k + 1 - shft] = 0;
-    }
-  }
-}
-
-
-
-/******************************************************************************
- * GenerateDitherQ7LbUB()
- *
- * generate array of dither samples in Q7 There are less zeros in dither
- * vector compared to GenerateDitherQ7Lb.
- *
- * A uniform random number generator with the range of [-64 64] is employed
- * but the generated dithers are scaled by 0.35, a heuristic scaling.
- *
- * Input:
- *      -seed               : the initial seed for the random number generator.
- *      -length             : the number of dither values to be generated.
- *
- * Output:
- *      -bufQ7              : pointer to a buffer where dithers are written to.
- */
-static void GenerateDitherQ7LbUB(
-    int16_t* bufQ7,
-    uint32_t seed,
-    int length) {
-  int k;
-  for (k = 0; k < length; k++) {
-    /* new random unsigned int */
-    seed = (seed * 196314165) + 907633515;
-
-    /* Fixed-point dither sample between -64 and 64 (Q7). */
-    /* bufQ7 = seed * 128 / 4294967295 */
-    bufQ7[k] = (int16_t)(((int32_t)(seed + 16777216)) >> 25);
-
-    /* Scale by 0.35. */
-    bufQ7[k] = (int16_t)WEBRTC_SPL_MUL_16_16_RSFT(bufQ7[k], 2048, 13);
-  }
-}
-
-/*
- * Function to decode the complex spectrum from the bit stream
- * returns the total number of bytes in the stream.
- */
-int WebRtcIsac_DecodeSpec(Bitstr* streamdata, int16_t AvgPitchGain_Q12,
-                          enum ISACBand band, double* fr, double* fi) {
-  int16_t  DitherQ7[FRAMESAMPLES];
-  int16_t  data[FRAMESAMPLES];
-  int32_t  invARSpec2_Q16[FRAMESAMPLES_QUARTER];
-  uint16_t invARSpecQ8[FRAMESAMPLES_QUARTER];
-  int16_t  ARCoefQ12[AR_ORDER + 1];
-  int16_t  RCQ15[AR_ORDER];
-  int16_t  gainQ10;
-  int32_t  gain2_Q10, res;
-  int32_t  in_sqrt;
-  int32_t  newRes;
-  int k, len, i;
-  int is_12khz = !kIsSWB12;
-  int num_dft_coeff = FRAMESAMPLES;
-  /* Create dither signal. */
-  if (band == kIsacLowerBand) {
-    GenerateDitherQ7Lb(DitherQ7, streamdata->W_upper, FRAMESAMPLES,
-                       AvgPitchGain_Q12);
-  } else {
-    GenerateDitherQ7LbUB(DitherQ7, streamdata->W_upper, FRAMESAMPLES);
-    if (band == kIsacUpperBand12) {
-      is_12khz = kIsSWB12;
-      num_dft_coeff = FRAMESAMPLES_HALF;
-    }
-  }
-
-  /* Decode model parameters. */
-  if (WebRtcIsac_DecodeRc(streamdata, RCQ15) < 0)
-    return -ISAC_RANGE_ERROR_DECODE_SPECTRUM;
-
-  WebRtcSpl_ReflCoefToLpc(RCQ15, AR_ORDER, ARCoefQ12);
-
-  if (WebRtcIsac_DecodeGain2(streamdata, &gain2_Q10) < 0)
-    return -ISAC_RANGE_ERROR_DECODE_SPECTRUM;
-
-  /* Compute inverse AR power spectrum. */
-  FindInvArSpec(ARCoefQ12, gain2_Q10, invARSpec2_Q16);
-
-  /* Convert to magnitude spectrum,
-   * by doing square-roots (modified from SPLIB). */
-  res = 1 << (WebRtcSpl_GetSizeInBits(invARSpec2_Q16[0]) >> 1);
-  for (k = 0; k < FRAMESAMPLES_QUARTER; k++) {
-    in_sqrt = invARSpec2_Q16[k];
-    i = 10;
-
-    /* Negative values make no sense for a real sqrt-function. */
-    if (in_sqrt < 0)
-      in_sqrt = -in_sqrt;
-
-    newRes = (in_sqrt / res + res) >> 1;
-    do {
-      res = newRes;
-      newRes = (in_sqrt / res + res) >> 1;
-    } while (newRes != res && i-- > 0);
-
-    invARSpecQ8[k] = (int16_t)newRes;
-  }
-
-  len = WebRtcIsac_DecLogisticMulti2(data, streamdata, invARSpecQ8, DitherQ7,
-                                     num_dft_coeff, is_12khz);
-  /* Arithmetic decoding of spectrum. */
-  if (len < 1) {
-    return -ISAC_RANGE_ERROR_DECODE_SPECTRUM;
-  }
-
-  switch (band) {
-    case kIsacLowerBand: {
-      /* Scale down spectral samples with low SNR. */
-      int32_t p1;
-      int32_t p2;
-      if (AvgPitchGain_Q12 <= 614) {
-        p1 = 30 << 10;
-        p2 = 32768 + (33 << 16);
-      } else {
-        p1 = 36 << 10;
-        p2 = 32768 + (40 << 16);
-      }
-      for (k = 0; k < FRAMESAMPLES; k += 4) {
-        gainQ10 = WebRtcSpl_DivW32W16ResW16(p1, (int16_t)(
-            (invARSpec2_Q16[k >> 2] + p2) >> 16));
-        *fr++ = (double)((data[ k ] * gainQ10 + 512) >> 10) / 128.0;
-        *fi++ = (double)((data[k + 1] * gainQ10 + 512) >> 10) / 128.0;
-        *fr++ = (double)((data[k + 2] * gainQ10 + 512) >> 10) / 128.0;
-        *fi++ = (double)((data[k + 3] * gainQ10 + 512) >> 10) / 128.0;
-      }
-      break;
-    }
-    case kIsacUpperBand12: {
-      for (k = 0, i = 0; k < FRAMESAMPLES_HALF; k += 4) {
-        fr[i] = (double)data[ k ] / 128.0;
-        fi[i] = (double)data[k + 1] / 128.0;
-        i++;
-        fr[i] = (double)data[k + 2] / 128.0;
-        fi[i] = (double)data[k + 3] / 128.0;
-        i++;
-      }
-      /* The second half of real and imaginary coefficients is zero. This is
-       * due to using the old FFT module which requires two signals as input
-       * while in 0-12 kHz mode we only have 8-12 kHz band, and the second
-       * signal is set to zero. */
-      memset(&fr[FRAMESAMPLES_QUARTER], 0, FRAMESAMPLES_QUARTER *
-             sizeof(double));
-      memset(&fi[FRAMESAMPLES_QUARTER], 0, FRAMESAMPLES_QUARTER *
-             sizeof(double));
-      break;
-    }
-    case kIsacUpperBand16: {
-      for (i = 0, k = 0; k < FRAMESAMPLES; k += 4, i++) {
-        fr[i] = (double)data[ k ] / 128.0;
-        fi[i] = (double)data[k + 1] / 128.0;
-        fr[(FRAMESAMPLES_HALF) - 1 - i] = (double)data[k + 2] / 128.0;
-        fi[(FRAMESAMPLES_HALF) - 1 - i] = (double)data[k + 3] / 128.0;
-      }
-      break;
-    }
-  }
-  return len;
-}
-
-
-int WebRtcIsac_EncodeSpec(const int16_t* fr, const int16_t* fi,
-                          int16_t AvgPitchGain_Q12, enum ISACBand band,
-                          Bitstr* streamdata) {
-  int16_t ditherQ7[FRAMESAMPLES];
-  int16_t dataQ7[FRAMESAMPLES];
-  int32_t PSpec[FRAMESAMPLES_QUARTER];
-  int32_t invARSpec2_Q16[FRAMESAMPLES_QUARTER];
-  uint16_t invARSpecQ8[FRAMESAMPLES_QUARTER];
-  int32_t CorrQ7[AR_ORDER + 1];
-  int32_t CorrQ7_norm[AR_ORDER + 1];
-  int16_t RCQ15[AR_ORDER];
-  int16_t ARCoefQ12[AR_ORDER + 1];
-  int32_t gain2_Q10;
-  int16_t val;
-  int32_t nrg, res;
-  uint32_t sum;
-  int32_t in_sqrt;
-  int32_t newRes;
-  int16_t err;
-  uint32_t nrg_u32;
-  int shift_var;
-  int k, n, j, i;
-  int is_12khz = !kIsSWB12;
-  int num_dft_coeff = FRAMESAMPLES;
-
-  /* Create dither signal. */
-  if (band == kIsacLowerBand) {
-    GenerateDitherQ7Lb(ditherQ7, streamdata->W_upper, FRAMESAMPLES,
-                       AvgPitchGain_Q12);
-  } else {
-    GenerateDitherQ7LbUB(ditherQ7, streamdata->W_upper, FRAMESAMPLES);
-    if (band == kIsacUpperBand12) {
-      is_12khz = kIsSWB12;
-      num_dft_coeff = FRAMESAMPLES_HALF;
-    }
-  }
-
-  /* add dither and quantize, and compute power spectrum */
-  switch (band) {
-    case kIsacLowerBand: {
-      for (k = 0; k < FRAMESAMPLES; k += 4) {
-        val = ((*fr++ + ditherQ7[k]   + 64) & 0xFF80) - ditherQ7[k];
-        dataQ7[k] = val;
-        sum = val * val;
-
-        val = ((*fi++ + ditherQ7[k + 1] + 64) & 0xFF80) - ditherQ7[k + 1];
-        dataQ7[k + 1] = val;
-        sum += val * val;
-
-        val = ((*fr++ + ditherQ7[k + 2] + 64) & 0xFF80) - ditherQ7[k + 2];
-        dataQ7[k + 2] = val;
-        sum += val * val;
-
-        val = ((*fi++ + ditherQ7[k + 3] + 64) & 0xFF80) - ditherQ7[k + 3];
-        dataQ7[k + 3] = val;
-        sum += val * val;
-
-        PSpec[k >> 2] = sum >> 2;
-      }
-      break;
-    }
-    case kIsacUpperBand12: {
-      for (k = 0, j = 0; k < FRAMESAMPLES_HALF; k += 4) {
-        val = ((*fr++ + ditherQ7[k]   + 64) & 0xFF80) - ditherQ7[k];
-        dataQ7[k] = val;
-        sum = val * val;
-
-        val = ((*fi++ + ditherQ7[k + 1] + 64) & 0xFF80) - ditherQ7[k + 1];
-        dataQ7[k + 1] = val;
-        sum += val * val;
-
-        PSpec[j++] = sum >> 1;
-
-        val = ((*fr++ + ditherQ7[k + 2] + 64) & 0xFF80) - ditherQ7[k + 2];
-        dataQ7[k + 2] = val;
-        sum = val * val;
-
-        val = ((*fi++ + ditherQ7[k + 3] + 64) & 0xFF80) - ditherQ7[k + 3];
-        dataQ7[k + 3] = val;
-        sum += val * val;
-
-        PSpec[j++] = sum >> 1;
-      }
-      break;
-    }
-    case kIsacUpperBand16: {
-      for (j = 0, k = 0; k < FRAMESAMPLES; k += 4, j++) {
-        val = ((fr[j] + ditherQ7[k]   + 64) & 0xFF80) - ditherQ7[k];
-        dataQ7[k] = val;
-        sum = val * val;
-
-        val = ((fi[j] + ditherQ7[k + 1] + 64) & 0xFF80) - ditherQ7[k + 1];
-        dataQ7[k + 1] = val;
-        sum += val * val;
-
-        val = ((fr[(FRAMESAMPLES_HALF) - 1 - j] + ditherQ7[k + 2] + 64) &
-            0xFF80) - ditherQ7[k + 2];
-        dataQ7[k + 2] = val;
-        sum += val * val;
-
-        val = ((fi[(FRAMESAMPLES_HALF) - 1 - j] + ditherQ7[k + 3] + 64) &
-            0xFF80) - ditherQ7[k + 3];
-        dataQ7[k + 3] = val;
-        sum += val * val;
-
-        PSpec[k >> 2] = sum >> 2;
-      }
-      break;
-    }
-  }
-
-  /* compute correlation from power spectrum */
-  FindCorrelation(PSpec, CorrQ7);
-
-  /* Find AR coefficients */
-  /* Aumber of bit shifts to 14-bit normalize CorrQ7[0]
-   * (leaving room for sign) */
-  shift_var = WebRtcSpl_NormW32(CorrQ7[0]) - 18;
-
-  if (shift_var > 0) {
-    for (k = 0; k < AR_ORDER + 1; k++) {
-      CorrQ7_norm[k] = CorrQ7[k] << shift_var;
-    }
-  } else {
-    for (k = 0; k < AR_ORDER + 1; k++) {
-      CorrQ7_norm[k] = CorrQ7[k] >> (-shift_var);
-    }
-  }
-
-  /* Find RC coefficients. */
-  WebRtcSpl_AutoCorrToReflCoef(CorrQ7_norm, AR_ORDER, RCQ15);
-
-  /* Quantize & code RC Coefficient. */
-  WebRtcIsac_EncodeRc(RCQ15, streamdata);
-
-  /* RC -> AR coefficients */
-  WebRtcSpl_ReflCoefToLpc(RCQ15, AR_ORDER, ARCoefQ12);
-
-  /* Compute ARCoef' * Corr * ARCoef in Q19. */
-  nrg = 0;
-  for (j = 0; j <= AR_ORDER; j++) {
-    for (n = 0; n <= j; n++) {
-      nrg += (ARCoefQ12[j] * ((CorrQ7_norm[j - n] * ARCoefQ12[n] + 256) >> 9) +
-          4) >> 3;
-    }
-    for (n = j + 1; n <= AR_ORDER; n++) {
-      nrg += (ARCoefQ12[j] * ((CorrQ7_norm[n - j] * ARCoefQ12[n] + 256) >> 9) +
-          4) >> 3;
-    }
-  }
-
-  nrg_u32 = (uint32_t)nrg;
-  if (shift_var > 0) {
-    nrg_u32 = nrg_u32 >> shift_var;
-  } else {
-    nrg_u32 = nrg_u32 << (-shift_var);
-  }
-  if (nrg_u32 > 0x7FFFFFFF) {
-    nrg = 0x7FFFFFFF;
-  }  else {
-    nrg = (int32_t)nrg_u32;
-  }
-  /* Also shifts 31 bits to the left! */
-  gain2_Q10 = WebRtcSpl_DivResultInQ31(FRAMESAMPLES_QUARTER, nrg);
-
-  /* Quantize & code gain2_Q10. */
-  if (WebRtcIsac_EncodeGain2(&gain2_Q10, streamdata)) {
-    return -1;
-  }
-
-  /* Compute inverse AR power spectrum. */
-  FindInvArSpec(ARCoefQ12, gain2_Q10, invARSpec2_Q16);
-  /* Convert to magnitude spectrum, by doing square-roots
-   * (modified from SPLIB). */
-  res = 1 << (WebRtcSpl_GetSizeInBits(invARSpec2_Q16[0]) >> 1);
-  for (k = 0; k < FRAMESAMPLES_QUARTER; k++) {
-    in_sqrt = invARSpec2_Q16[k];
-    i = 10;
-    /* Negative values make no sense for a real sqrt-function. */
-    if (in_sqrt < 0) {
-      in_sqrt = -in_sqrt;
-    }
-    newRes = (in_sqrt / res + res) >> 1;
-    do {
-      res = newRes;
-      newRes = (in_sqrt / res + res) >> 1;
-    } while (newRes != res && i-- > 0);
-
-    invARSpecQ8[k] = (int16_t)newRes;
-  }
-  /* arithmetic coding of spectrum */
-  err = WebRtcIsac_EncLogisticMulti2(streamdata, dataQ7, invARSpecQ8,
-                                     num_dft_coeff, is_12khz);
-  if (err < 0) {
-    return (err);
-  }
-  return 0;
-}
-
-
-/* step-up */
-void WebRtcIsac_Rc2Poly(double* RC, int N, double* a) {
-  int m, k;
-  double tmp[MAX_AR_MODEL_ORDER];
-
-  a[0] = 1.0;
-  tmp[0] = 1.0;
-  for (m = 1; m <= N; m++) {
-    /* copy */
-    memcpy(&tmp[1], &a[1], (m - 1) * sizeof(double));
-    a[m] = RC[m - 1];
-    for (k = 1; k < m; k++) {
-      a[k] += RC[m - 1] * tmp[m - k];
-    }
-  }
-  return;
-}
-
-/* step-down */
-void WebRtcIsac_Poly2Rc(double* a, int N, double* RC) {
-  int m, k;
-  double tmp[MAX_AR_MODEL_ORDER];
-  double tmp_inv;
-
-  RC[N - 1] = a[N];
-  for (m = N - 1; m > 0; m--) {
-    tmp_inv = 1.0 / (1.0 - RC[m] * RC[m]);
-    for (k = 1; k <= m; k++) {
-      tmp[k] = (a[k] - RC[m] * a[m - k + 1]) * tmp_inv;
-    }
-
-    memcpy(&a[1], &tmp[1], (m - 1) * sizeof(double));
-    RC[m - 1] = tmp[m];
-  }
-  return;
-}
-
-
-#define MAX_ORDER 100
-
-/* Matlab's LAR definition */
-void WebRtcIsac_Rc2Lar(const double* refc, double* lar, int order) {
-  int k;
-  for (k = 0; k < order; k++) {
-    lar[k] = log((1 + refc[k]) / (1 - refc[k]));
-  }
-}
-
-
-void WebRtcIsac_Lar2Rc(const double* lar, double* refc,  int order) {
-  int k;
-  double tmp;
-
-  for (k = 0; k < order; k++) {
-    tmp = exp(lar[k]);
-    refc[k] = (tmp - 1) / (tmp + 1);
-  }
-}
-
-void WebRtcIsac_Poly2Lar(double* lowband, int orderLo, double* hiband,
-                         int orderHi, int Nsub, double* lars) {
-  int k;
-  double rc[MAX_ORDER], *inpl, *inph, *outp;
-
-  inpl = lowband;
-  inph = hiband;
-  outp = lars;
-  for (k = 0; k < Nsub; k++) {
-    /* gains */
-    outp[0] = inpl[0];
-    outp[1] = inph[0];
-    outp += 2;
-
-    /* Low band */
-    inpl[0] = 1.0;
-    WebRtcIsac_Poly2Rc(inpl, orderLo, rc);
-    WebRtcIsac_Rc2Lar(rc, outp, orderLo);
-    outp += orderLo;
-
-    /* High band */
-    inph[0] = 1.0;
-    WebRtcIsac_Poly2Rc(inph, orderHi, rc);
-    WebRtcIsac_Rc2Lar(rc, outp, orderHi);
-    outp += orderHi;
-
-    inpl += orderLo + 1;
-    inph += orderHi + 1;
-  }
-}
-
-
-int16_t WebRtcIsac_Poly2LarUB(double* lpcVecs, int16_t bandwidth) {
-  double      poly[MAX_ORDER];
-  double      rc[MAX_ORDER];
-  double*     ptrIO;
-  int16_t vecCntr;
-  int16_t vecSize;
-  int16_t numVec;
-
-  vecSize = UB_LPC_ORDER;
-  switch (bandwidth) {
-    case isac12kHz: {
-      numVec  = UB_LPC_VEC_PER_FRAME;
-      break;
-    }
-    case isac16kHz: {
-      numVec  = UB16_LPC_VEC_PER_FRAME;
-      break;
-    }
-    default:
-      return -1;
-  }
-
-  ptrIO = lpcVecs;
-  poly[0] = 1.0;
-  for (vecCntr = 0; vecCntr < numVec; vecCntr++) {
-    memcpy(&poly[1], ptrIO, sizeof(double) * vecSize);
-    WebRtcIsac_Poly2Rc(poly, vecSize, rc);
-    WebRtcIsac_Rc2Lar(rc, ptrIO, vecSize);
-    ptrIO += vecSize;
-  }
-  return 0;
-}
-
-
-void WebRtcIsac_Lar2Poly(double* lars, double* lowband, int orderLo,
-                         double* hiband, int orderHi, int Nsub) {
-  int k, orderTot;
-  double rc[MAX_ORDER], *outpl, *outph, *inp;
-
-  orderTot = (orderLo + orderHi + 2);
-  outpl = lowband;
-  outph = hiband;
-  /* First two elements of 'inp' store gains*/
-  inp = lars;
-  for (k = 0; k < Nsub; k++) {
-    /* Low band */
-    WebRtcIsac_Lar2Rc(&inp[2], rc, orderLo);
-    WebRtcIsac_Rc2Poly(rc, orderLo, outpl);
-
-    /* High band */
-    WebRtcIsac_Lar2Rc(&inp[orderLo + 2], rc, orderHi);
-    WebRtcIsac_Rc2Poly(rc, orderHi, outph);
-
-    /* gains */
-    outpl[0] = inp[0];
-    outph[0] = inp[1];
-
-    outpl += orderLo + 1;
-    outph += orderHi + 1;
-    inp += orderTot;
-  }
-}
-
-/*
- *  assumes 2 LAR vectors interpolates to 'numPolyVec' A-polynomials
- *  Note: 'numPolyVecs' includes the first and the last point of the interval
- */
-void WebRtcIsac_Lar2PolyInterpolUB(double* larVecs, double* percepFilterParams,
-                                   int numPolyVecs) {
-  int polyCntr, coeffCntr;
-  double larInterpol[UB_LPC_ORDER];
-  double rc[UB_LPC_ORDER];
-  double delta[UB_LPC_ORDER];
-
-  /* calculate the step-size for linear interpolation coefficients */
-  for (coeffCntr = 0; coeffCntr < UB_LPC_ORDER; coeffCntr++) {
-    delta[coeffCntr] = (larVecs[UB_LPC_ORDER + coeffCntr] -
-        larVecs[coeffCntr]) / (numPolyVecs - 1);
-  }
-
-  for (polyCntr = 0; polyCntr < numPolyVecs; polyCntr++) {
-    for (coeffCntr = 0; coeffCntr < UB_LPC_ORDER; coeffCntr++) {
-      larInterpol[coeffCntr] = larVecs[coeffCntr] +
-          delta[coeffCntr] * polyCntr;
-    }
-    WebRtcIsac_Lar2Rc(larInterpol, rc, UB_LPC_ORDER);
-
-    /* convert to A-polynomial, the following function returns A[0] = 1;
-     * which is written where gains had to be written. Then we write the
-     * gain (outside this function). This way we say a memcpy. */
-    WebRtcIsac_Rc2Poly(rc, UB_LPC_ORDER, percepFilterParams);
-    percepFilterParams += (UB_LPC_ORDER + 1);
-  }
-}
-
-int WebRtcIsac_DecodeLpc(Bitstr* streamdata, double* LPCCoef_lo,
-                         double* LPCCoef_hi) {
-  double lars[KLT_ORDER_GAIN + KLT_ORDER_SHAPE];
-  int err;
-
-  err = WebRtcIsac_DecodeLpcCoef(streamdata, lars);
-  if (err < 0) {
-    return -ISAC_RANGE_ERROR_DECODE_LPC;
-  }
-  WebRtcIsac_Lar2Poly(lars, LPCCoef_lo, ORDERLO, LPCCoef_hi, ORDERHI,
-                      SUBFRAMES);
-  return 0;
-}
-
-int16_t WebRtcIsac_DecodeInterpolLpcUb(Bitstr* streamdata,
-                                       double* percepFilterParams,
-                                       int16_t bandwidth) {
-  double lpcCoeff[UB_LPC_ORDER * UB16_LPC_VEC_PER_FRAME];
-  int err;
-  int interpolCntr;
-  int subframeCntr;
-  int16_t numSegments;
-  int16_t numVecPerSegment;
-  int16_t numGains;
-
-  double percepFilterGains[SUBFRAMES << 1];
-  double* ptrOutParam = percepFilterParams;
-
-  err = WebRtcIsac_DecodeLpcCoefUB(streamdata, lpcCoeff, percepFilterGains,
-                                   bandwidth);
-  if (err < 0) {
-    return -ISAC_RANGE_ERROR_DECODE_LPC;
-  }
-
-  switch (bandwidth) {
-    case isac12kHz: {
-      numGains = SUBFRAMES;
-      numSegments = UB_LPC_VEC_PER_FRAME - 1;
-      numVecPerSegment = kLpcVecPerSegmentUb12;
-      break;
-    }
-    case isac16kHz: {
-      numGains = SUBFRAMES << 1;
-      numSegments = UB16_LPC_VEC_PER_FRAME - 1;
-      numVecPerSegment = kLpcVecPerSegmentUb16;
-      break;
-    }
-    default:
-      return -1;
-  }
-
-  for (interpolCntr = 0; interpolCntr < numSegments; interpolCntr++) {
-    WebRtcIsac_Lar2PolyInterpolUB(&lpcCoeff[interpolCntr * UB_LPC_ORDER],
-                                  ptrOutParam, numVecPerSegment + 1);
-    ptrOutParam += (numVecPerSegment * (UB_LPC_ORDER + 1));
-  }
-
-  ptrOutParam = percepFilterParams;
-
-  if (bandwidth == isac16kHz) {
-    ptrOutParam += (1 + UB_LPC_ORDER);
-  }
-
-  for (subframeCntr = 0; subframeCntr < numGains; subframeCntr++) {
-    *ptrOutParam = percepFilterGains[subframeCntr];
-    ptrOutParam += (1 + UB_LPC_ORDER);
-  }
-  return 0;
-}
-
-
-/* decode & dequantize LPC Coef */
-int WebRtcIsac_DecodeLpcCoef(Bitstr* streamdata, double* LPCCoef) {
-  int j, k, n, pos, pos2, posg, poss, offsg, offss, offs2;
-  int index_g[KLT_ORDER_GAIN], index_s[KLT_ORDER_SHAPE];
-  double tmpcoeffs_g[KLT_ORDER_GAIN], tmpcoeffs_s[KLT_ORDER_SHAPE];
-  double tmpcoeffs2_g[KLT_ORDER_GAIN], tmpcoeffs2_s[KLT_ORDER_SHAPE];
-  double sum;
-  int err;
-  int model = 1;
-
-  /* entropy decoding of model number */
-  /* We are keeping this for backward compatibility of bit-streams. */
-  err = WebRtcIsac_DecHistOneStepMulti(&model, streamdata,
-                                       WebRtcIsac_kQKltModelCdfPtr,
-                                       WebRtcIsac_kQKltModelInitIndex, 1);
-  if (err < 0) {
-    return err;
-  }
-  /* Only accepted value of model is 0. It is kept in bit-stream for backward
-   * compatibility. */
-  if (model != 0) {
-    return -ISAC_DISALLOWED_LPC_MODEL;
-  }
-
-  /* entropy decoding of quantization indices */
-  err = WebRtcIsac_DecHistOneStepMulti(
-      index_s, streamdata, WebRtcIsac_kQKltCdfPtrShape,
-      WebRtcIsac_kQKltInitIndexShape, KLT_ORDER_SHAPE);
-  if (err < 0) {
-    return err;
-  }
-  err = WebRtcIsac_DecHistOneStepMulti(
-      index_g, streamdata, WebRtcIsac_kQKltCdfPtrGain,
-      WebRtcIsac_kQKltInitIndexGain, KLT_ORDER_GAIN);
-  if (err < 0) {
-    return err;
-  }
-
-  /* find quantization levels for coefficients */
-  for (k = 0; k < KLT_ORDER_SHAPE; k++) {
-    tmpcoeffs_s[k] =
-        WebRtcIsac_kQKltLevelsShape[WebRtcIsac_kQKltOffsetShape[k] +
-                                    index_s[k]];
-  }
-  for (k = 0; k < KLT_ORDER_GAIN; k++) {
-    tmpcoeffs_g[k] = WebRtcIsac_kQKltLevelsGain[WebRtcIsac_kQKltOffsetGain[k] +
-                                                index_g[k]];
-  }
-
-  /* Inverse KLT  */
-
-  /* Left transform, transpose matrix!  */
-  offsg = 0;
-  offss = 0;
-  posg = 0;
-  poss = 0;
-  for (j = 0; j < SUBFRAMES; j++) {
-    offs2 = 0;
-    for (k = 0; k < LPC_GAIN_ORDER; k++) {
-      sum = 0;
-      pos = offsg;
-      pos2 = offs2;
-      for (n = 0; n < LPC_GAIN_ORDER; n++) {
-        sum += tmpcoeffs_g[pos++] * WebRtcIsac_kKltT1Gain[pos2++];
-      }
-      tmpcoeffs2_g[posg++] = sum;
-      offs2 += LPC_GAIN_ORDER;
-    }
-    offs2 = 0;
-    for (k = 0; k < LPC_SHAPE_ORDER; k++) {
-      sum = 0;
-      pos = offss;
-      pos2 = offs2;
-      for (n = 0; n < LPC_SHAPE_ORDER; n++) {
-        sum += tmpcoeffs_s[pos++] * WebRtcIsac_kKltT1Shape[pos2++];
-      }
-      tmpcoeffs2_s[poss++] = sum;
-      offs2 += LPC_SHAPE_ORDER;
-    }
-    offsg += LPC_GAIN_ORDER;
-    offss += LPC_SHAPE_ORDER;
-  }
-
-  /* Right transform, transpose matrix */
-  offsg = 0;
-  offss = 0;
-  posg = 0;
-  poss = 0;
-  for (j = 0; j < SUBFRAMES; j++) {
-    posg = offsg;
-    for (k = 0; k < LPC_GAIN_ORDER; k++) {
-      sum = 0;
-      pos = k;
-      pos2 = j;
-      for (n = 0; n < SUBFRAMES; n++) {
-        sum += tmpcoeffs2_g[pos] * WebRtcIsac_kKltT2Gain[pos2];
-        pos += LPC_GAIN_ORDER;
-        pos2 += SUBFRAMES;
-
-      }
-      tmpcoeffs_g[posg++] = sum;
-    }
-    poss = offss;
-    for (k = 0; k < LPC_SHAPE_ORDER; k++) {
-      sum = 0;
-      pos = k;
-      pos2 = j;
-      for (n = 0; n < SUBFRAMES; n++) {
-        sum += tmpcoeffs2_s[pos] * WebRtcIsac_kKltT2Shape[pos2];
-        pos += LPC_SHAPE_ORDER;
-        pos2 += SUBFRAMES;
-      }
-      tmpcoeffs_s[poss++] = sum;
-    }
-    offsg += LPC_GAIN_ORDER;
-    offss += LPC_SHAPE_ORDER;
-  }
-
-  /* scaling, mean addition, and gain restoration */
-  posg = 0;
-  poss = 0;
-  pos = 0;
-  for (k = 0; k < SUBFRAMES; k++) {
-    /* log gains */
-    LPCCoef[pos] = tmpcoeffs_g[posg] / LPC_GAIN_SCALE;
-    LPCCoef[pos] += WebRtcIsac_kLpcMeansGain[posg];
-    LPCCoef[pos] = exp(LPCCoef[pos]);
-    pos++;
-    posg++;
-    LPCCoef[pos] = tmpcoeffs_g[posg] / LPC_GAIN_SCALE;
-    LPCCoef[pos] += WebRtcIsac_kLpcMeansGain[posg];
-    LPCCoef[pos] = exp(LPCCoef[pos]);
-    pos++;
-    posg++;
-
-    /* Low-band LAR coefficients. */
-    for (n = 0; n < LPC_LOBAND_ORDER; n++, pos++, poss++) {
-      LPCCoef[pos] = tmpcoeffs_s[poss] / LPC_LOBAND_SCALE;
-      LPCCoef[pos] += WebRtcIsac_kLpcMeansShape[poss];
-    }
-
-    /* High-band LAR coefficients. */
-    for (n = 0; n < LPC_HIBAND_ORDER; n++, pos++, poss++) {
-      LPCCoef[pos] = tmpcoeffs_s[poss] / LPC_HIBAND_SCALE;
-      LPCCoef[pos] += WebRtcIsac_kLpcMeansShape[poss];
-    }
-  }
-  return 0;
-}
-
-/* Encode LPC in LAR domain. */
-void WebRtcIsac_EncodeLar(double* LPCCoef, Bitstr* streamdata,
-                          IsacSaveEncoderData* encData) {
-  int j, k, n, pos, pos2, poss, offss, offs2;
-  int index_s[KLT_ORDER_SHAPE];
-  int index_ovr_s[KLT_ORDER_SHAPE];
-  double tmpcoeffs_s[KLT_ORDER_SHAPE];
-  double tmpcoeffs2_s[KLT_ORDER_SHAPE];
-  double sum;
-  const int kModel = 0;
-
-  /* Mean removal and scaling. */
-  poss = 0;
-  pos = 0;
-  for (k = 0; k < SUBFRAMES; k++) {
-    /* First two element are gains, move over them. */
-    pos += 2;
-
-    /* Low-band LAR coefficients. */
-    for (n = 0; n < LPC_LOBAND_ORDER; n++, poss++, pos++) {
-      tmpcoeffs_s[poss] = LPCCoef[pos] - WebRtcIsac_kLpcMeansShape[poss];
-      tmpcoeffs_s[poss] *= LPC_LOBAND_SCALE;
-    }
-
-    /* High-band LAR coefficients. */
-    for (n = 0; n < LPC_HIBAND_ORDER; n++, poss++, pos++) {
-      tmpcoeffs_s[poss] = LPCCoef[pos] - WebRtcIsac_kLpcMeansShape[poss];
-      tmpcoeffs_s[poss] *= LPC_HIBAND_SCALE;
-    }
-  }
-
-  /* KLT  */
-
-  /* Left transform. */
-  offss = 0;
-  for (j = 0; j < SUBFRAMES; j++) {
-    poss = offss;
-    for (k = 0; k < LPC_SHAPE_ORDER; k++) {
-      sum = 0;
-      pos = offss;
-      pos2 = k;
-      for (n = 0; n < LPC_SHAPE_ORDER; n++) {
-        sum += tmpcoeffs_s[pos++] * WebRtcIsac_kKltT1Shape[pos2];
-        pos2 += LPC_SHAPE_ORDER;
-      }
-      tmpcoeffs2_s[poss++] = sum;
-    }
-    offss += LPC_SHAPE_ORDER;
-  }
-
-  /* Right transform. */
-  offss = 0;
-  offs2 = 0;
-  for (j = 0; j < SUBFRAMES; j++) {
-    poss = offss;
-    for (k = 0; k < LPC_SHAPE_ORDER; k++) {
-      sum = 0;
-      pos = k;
-      pos2 = offs2;
-      for (n = 0; n < SUBFRAMES; n++) {
-        sum += tmpcoeffs2_s[pos] * WebRtcIsac_kKltT2Shape[pos2++];
-        pos += LPC_SHAPE_ORDER;
-      }
-      tmpcoeffs_s[poss++] = sum;
-    }
-    offs2 += SUBFRAMES;
-    offss += LPC_SHAPE_ORDER;
-  }
-
-  /* Quantize coefficients. */
-  for (k = 0; k < KLT_ORDER_SHAPE; k++) {
-    index_s[k] = (WebRtcIsac_lrint(tmpcoeffs_s[k] / KLT_STEPSIZE)) +
-        WebRtcIsac_kQKltQuantMinShape[k];
-    if (index_s[k] < 0) {
-      index_s[k] = 0;
-    } else if (index_s[k] > WebRtcIsac_kQKltMaxIndShape[k]) {
-      index_s[k] = WebRtcIsac_kQKltMaxIndShape[k];
-    }
-    index_ovr_s[k] = WebRtcIsac_kQKltOffsetShape[k] + index_s[k];
-  }
-
-
-  /* Only one model remains in this version of the code, kModel = 0. We
-   * are keeping for bit-streams to be backward compatible. */
-  /* entropy coding of model number */
-  WebRtcIsac_EncHistMulti(streamdata, &kModel, WebRtcIsac_kQKltModelCdfPtr, 1);
-
-  /* Save data for creation of multiple bit streams */
-  /* Entropy coding of quantization indices - shape only. */
-  WebRtcIsac_EncHistMulti(streamdata, index_s, WebRtcIsac_kQKltCdfPtrShape,
-                          KLT_ORDER_SHAPE);
-
-  /* Save data for creation of multiple bit streams. */
-  for (k = 0; k < KLT_ORDER_SHAPE; k++) {
-    encData->LPCindex_s[KLT_ORDER_SHAPE * encData->startIdx + k] = index_s[k];
-  }
-
-  /* Find quantization levels for shape coefficients. */
-  for (k = 0; k < KLT_ORDER_SHAPE; k++) {
-    tmpcoeffs_s[k] = WebRtcIsac_kQKltLevelsShape[index_ovr_s[k]];
-  }
-  /* Inverse KLT.  */
-  /* Left transform, transpose matrix.! */
-  offss = 0;
-  poss = 0;
-  for (j = 0; j < SUBFRAMES; j++) {
-    offs2 = 0;
-    for (k = 0; k < LPC_SHAPE_ORDER; k++) {
-      sum = 0;
-      pos = offss;
-      pos2 = offs2;
-      for (n = 0; n < LPC_SHAPE_ORDER; n++) {
-        sum += tmpcoeffs_s[pos++] * WebRtcIsac_kKltT1Shape[pos2++];
-      }
-      tmpcoeffs2_s[poss++] = sum;
-      offs2 += LPC_SHAPE_ORDER;
-    }
-    offss += LPC_SHAPE_ORDER;
-  }
-
-  /* Right transform, Transpose matrix */
-  offss = 0;
-  poss = 0;
-  for (j = 0; j < SUBFRAMES; j++) {
-    poss = offss;
-    for (k = 0; k < LPC_SHAPE_ORDER; k++) {
-      sum = 0;
-      pos = k;
-      pos2 = j;
-      for (n = 0; n < SUBFRAMES; n++) {
-        sum += tmpcoeffs2_s[pos] * WebRtcIsac_kKltT2Shape[pos2];
-        pos += LPC_SHAPE_ORDER;
-        pos2 += SUBFRAMES;
-      }
-      tmpcoeffs_s[poss++] = sum;
-    }
-    offss += LPC_SHAPE_ORDER;
-  }
-
-  /* Scaling, mean addition, and gain restoration. */
-  poss = 0;
-  pos = 0;
-  for (k = 0; k < SUBFRAMES; k++) {
-    /* Ignore gains. */
-    pos += 2;
-
-    /* Low band LAR coefficients. */
-    for (n = 0; n < LPC_LOBAND_ORDER; n++, pos++, poss++) {
-      LPCCoef[pos] = tmpcoeffs_s[poss] / LPC_LOBAND_SCALE;
-      LPCCoef[pos] += WebRtcIsac_kLpcMeansShape[poss];
-    }
-
-    /* High band LAR coefficients. */
-    for (n = 0; n < LPC_HIBAND_ORDER; n++, pos++, poss++) {
-      LPCCoef[pos] = tmpcoeffs_s[poss] / LPC_HIBAND_SCALE;
-      LPCCoef[pos] += WebRtcIsac_kLpcMeansShape[poss];
-    }
-  }
-}
-
-
-void WebRtcIsac_EncodeLpcLb(double* LPCCoef_lo, double* LPCCoef_hi,
-                            Bitstr* streamdata, IsacSaveEncoderData* encData) {
-  double lars[KLT_ORDER_GAIN + KLT_ORDER_SHAPE];
-  int k;
-
-  WebRtcIsac_Poly2Lar(LPCCoef_lo, ORDERLO, LPCCoef_hi, ORDERHI, SUBFRAMES,
-                      lars);
-  WebRtcIsac_EncodeLar(lars, streamdata, encData);
-  WebRtcIsac_Lar2Poly(lars, LPCCoef_lo, ORDERLO, LPCCoef_hi, ORDERHI,
-                      SUBFRAMES);
-  /* Save data for creation of multiple bit streams (and transcoding). */
-  for (k = 0; k < (ORDERLO + 1)*SUBFRAMES; k++) {
-    encData->LPCcoeffs_lo[(ORDERLO + 1)*SUBFRAMES * encData->startIdx + k] =
-        LPCCoef_lo[k];
-  }
-  for (k = 0; k < (ORDERHI + 1)*SUBFRAMES; k++) {
-    encData->LPCcoeffs_hi[(ORDERHI + 1)*SUBFRAMES * encData->startIdx + k] =
-        LPCCoef_hi[k];
-  }
-}
-
-
-int16_t WebRtcIsac_EncodeLpcUB(double* lpcVecs, Bitstr* streamdata,
-                               double* interpolLPCCoeff,
-                               int16_t bandwidth,
-                                     ISACUBSaveEncDataStruct* encData) {
-  double    U[UB_LPC_ORDER * UB16_LPC_VEC_PER_FRAME];
-  int     idx[UB_LPC_ORDER * UB16_LPC_VEC_PER_FRAME];
-  int interpolCntr;
-
-  WebRtcIsac_Poly2LarUB(lpcVecs, bandwidth);
-  WebRtcIsac_RemoveLarMean(lpcVecs, bandwidth);
-  WebRtcIsac_DecorrelateIntraVec(lpcVecs, U, bandwidth);
-  WebRtcIsac_DecorrelateInterVec(U, lpcVecs, bandwidth);
-  WebRtcIsac_QuantizeUncorrLar(lpcVecs, idx, bandwidth);
-
-  WebRtcIsac_CorrelateInterVec(lpcVecs, U, bandwidth);
-  WebRtcIsac_CorrelateIntraVec(U, lpcVecs, bandwidth);
-  WebRtcIsac_AddLarMean(lpcVecs, bandwidth);
-
-  switch (bandwidth) {
-    case isac12kHz: {
-      /* Store the indices to be used for multiple encoding. */
-      memcpy(encData->indexLPCShape, idx, UB_LPC_ORDER *
-             UB_LPC_VEC_PER_FRAME * sizeof(int));
-      WebRtcIsac_EncHistMulti(streamdata, idx, WebRtcIsac_kLpcShapeCdfMatUb12,
-                              UB_LPC_ORDER * UB_LPC_VEC_PER_FRAME);
-      for (interpolCntr = 0; interpolCntr < UB_INTERPOL_SEGMENTS;
-          interpolCntr++) {
-        WebRtcIsac_Lar2PolyInterpolUB(lpcVecs, interpolLPCCoeff,
-                                      kLpcVecPerSegmentUb12 + 1);
-        lpcVecs += UB_LPC_ORDER;
-        interpolLPCCoeff += (kLpcVecPerSegmentUb12 * (UB_LPC_ORDER + 1));
-      }
-      break;
-    }
-    case isac16kHz: {
-      /* Store the indices to be used for multiple encoding. */
-      memcpy(encData->indexLPCShape, idx, UB_LPC_ORDER *
-             UB16_LPC_VEC_PER_FRAME * sizeof(int));
-      WebRtcIsac_EncHistMulti(streamdata, idx, WebRtcIsac_kLpcShapeCdfMatUb16,
-                              UB_LPC_ORDER * UB16_LPC_VEC_PER_FRAME);
-      for (interpolCntr = 0; interpolCntr < UB16_INTERPOL_SEGMENTS;
-          interpolCntr++) {
-        WebRtcIsac_Lar2PolyInterpolUB(lpcVecs, interpolLPCCoeff,
-                                      kLpcVecPerSegmentUb16 + 1);
-        lpcVecs += UB_LPC_ORDER;
-        interpolLPCCoeff += (kLpcVecPerSegmentUb16 * (UB_LPC_ORDER + 1));
-      }
-      break;
-    }
-    default:
-      return -1;
-  }
-  return 0;
-}
-
-void WebRtcIsac_EncodeLpcGainLb(double* LPCCoef_lo, double* LPCCoef_hi,
-                                Bitstr* streamdata,
-                                IsacSaveEncoderData* encData) {
-  int j, k, n, pos, pos2, posg, offsg, offs2;
-  int index_g[KLT_ORDER_GAIN];
-  int index_ovr_g[KLT_ORDER_GAIN];
-  double tmpcoeffs_g[KLT_ORDER_GAIN];
-  double tmpcoeffs2_g[KLT_ORDER_GAIN];
-  double sum;
-  /* log gains, mean removal and scaling */
-  posg = 0;
-  for (k = 0; k < SUBFRAMES; k++) {
-    tmpcoeffs_g[posg] = log(LPCCoef_lo[(LPC_LOBAND_ORDER + 1) * k]);
-    tmpcoeffs_g[posg] -= WebRtcIsac_kLpcMeansGain[posg];
-    tmpcoeffs_g[posg] *= LPC_GAIN_SCALE;
-    posg++;
-    tmpcoeffs_g[posg] = log(LPCCoef_hi[(LPC_HIBAND_ORDER + 1) * k]);
-    tmpcoeffs_g[posg] -= WebRtcIsac_kLpcMeansGain[posg];
-    tmpcoeffs_g[posg] *= LPC_GAIN_SCALE;
-    posg++;
-  }
-
-  /* KLT  */
-
-  /* Left transform. */
-  offsg = 0;
-  for (j = 0; j < SUBFRAMES; j++) {
-    posg = offsg;
-    for (k = 0; k < LPC_GAIN_ORDER; k++) {
-      sum = 0;
-      pos = offsg;
-      pos2 = k;
-      for (n = 0; n < LPC_GAIN_ORDER; n++) {
-        sum += tmpcoeffs_g[pos++] * WebRtcIsac_kKltT1Gain[pos2];
-        pos2 += LPC_GAIN_ORDER;
-      }
-      tmpcoeffs2_g[posg++] = sum;
-    }
-    offsg += LPC_GAIN_ORDER;
-  }
-
-  /* Right transform. */
-  offsg = 0;
-  offs2 = 0;
-  for (j = 0; j < SUBFRAMES; j++) {
-    posg = offsg;
-    for (k = 0; k < LPC_GAIN_ORDER; k++) {
-      sum = 0;
-      pos = k;
-      pos2 = offs2;
-      for (n = 0; n < SUBFRAMES; n++) {
-        sum += tmpcoeffs2_g[pos] * WebRtcIsac_kKltT2Gain[pos2++];
-        pos += LPC_GAIN_ORDER;
-      }
-      tmpcoeffs_g[posg++] = sum;
-    }
-    offs2 += SUBFRAMES;
-    offsg += LPC_GAIN_ORDER;
-  }
-
-  /* Quantize coefficients. */
-  for (k = 0; k < KLT_ORDER_GAIN; k++) {
-    /* Get index. */
-    pos2 = WebRtcIsac_lrint(tmpcoeffs_g[k] / KLT_STEPSIZE);
-    index_g[k] = (pos2) + WebRtcIsac_kQKltQuantMinGain[k];
-    if (index_g[k] < 0) {
-      index_g[k] = 0;
-    } else if (index_g[k] > WebRtcIsac_kQKltMaxIndGain[k]) {
-      index_g[k] = WebRtcIsac_kQKltMaxIndGain[k];
-    }
-    index_ovr_g[k] = WebRtcIsac_kQKltOffsetGain[k] + index_g[k];
-
-    /* Find quantization levels for coefficients. */
-    tmpcoeffs_g[k] = WebRtcIsac_kQKltLevelsGain[index_ovr_g[k]];
-
-    /* Save data for creation of multiple bit streams. */
-    encData->LPCindex_g[KLT_ORDER_GAIN * encData->startIdx + k] = index_g[k];
-  }
-
-  /* Entropy coding of quantization indices - gain. */
-  WebRtcIsac_EncHistMulti(streamdata, index_g, WebRtcIsac_kQKltCdfPtrGain,
-                          KLT_ORDER_GAIN);
-
-  /* Find quantization levels for coefficients. */
-  /* Left transform. */
-  offsg = 0;
-  posg = 0;
-  for (j = 0; j < SUBFRAMES; j++) {
-    offs2 = 0;
-    for (k = 0; k < LPC_GAIN_ORDER; k++) {
-      sum = 0;
-      pos = offsg;
-      pos2 = offs2;
-      for (n = 0; n < LPC_GAIN_ORDER; n++)
-        sum += tmpcoeffs_g[pos++] * WebRtcIsac_kKltT1Gain[pos2++];
-      tmpcoeffs2_g[posg++] = sum;
-      offs2 += LPC_GAIN_ORDER;
-    }
-    offsg += LPC_GAIN_ORDER;
-  }
-
-  /* Right transform, transpose matrix. */
-  offsg = 0;
-  posg = 0;
-  for (j = 0; j < SUBFRAMES; j++) {
-    posg = offsg;
-    for (k = 0; k < LPC_GAIN_ORDER; k++) {
-      sum = 0;
-      pos = k;
-      pos2 = j;
-      for (n = 0; n < SUBFRAMES; n++) {
-        sum += tmpcoeffs2_g[pos] * WebRtcIsac_kKltT2Gain[pos2];
-        pos += LPC_GAIN_ORDER;
-        pos2 += SUBFRAMES;
-      }
-      tmpcoeffs_g[posg++] = sum;
-    }
-    offsg += LPC_GAIN_ORDER;
-  }
-
-
-  /* Scaling, mean addition, and gain restoration. */
-  posg = 0;
-  for (k = 0; k < SUBFRAMES; k++) {
-    sum = tmpcoeffs_g[posg] / LPC_GAIN_SCALE;
-    sum += WebRtcIsac_kLpcMeansGain[posg];
-    LPCCoef_lo[k * (LPC_LOBAND_ORDER + 1)] = exp(sum);
-    pos++;
-    posg++;
-    sum = tmpcoeffs_g[posg] / LPC_GAIN_SCALE;
-    sum += WebRtcIsac_kLpcMeansGain[posg];
-    LPCCoef_hi[k * (LPC_HIBAND_ORDER + 1)] = exp(sum);
-    pos++;
-    posg++;
-  }
-
-}
-
-void WebRtcIsac_EncodeLpcGainUb(double* lpGains, Bitstr* streamdata,
-                                int* lpcGainIndex) {
-  double U[UB_LPC_GAIN_DIM];
-  int idx[UB_LPC_GAIN_DIM];
-  WebRtcIsac_ToLogDomainRemoveMean(lpGains);
-  WebRtcIsac_DecorrelateLPGain(lpGains, U);
-  WebRtcIsac_QuantizeLpcGain(U, idx);
-  /* Store the index for re-encoding for FEC. */
-  memcpy(lpcGainIndex, idx, UB_LPC_GAIN_DIM * sizeof(int));
-  WebRtcIsac_CorrelateLpcGain(U, lpGains);
-  WebRtcIsac_AddMeanToLinearDomain(lpGains);
-  WebRtcIsac_EncHistMulti(streamdata, idx, WebRtcIsac_kLpcGainCdfMat,
-                          UB_LPC_GAIN_DIM);
-}
-
-
-void WebRtcIsac_StoreLpcGainUb(double* lpGains, Bitstr* streamdata) {
-  double U[UB_LPC_GAIN_DIM];
-  int idx[UB_LPC_GAIN_DIM];
-  WebRtcIsac_ToLogDomainRemoveMean(lpGains);
-  WebRtcIsac_DecorrelateLPGain(lpGains, U);
-  WebRtcIsac_QuantizeLpcGain(U, idx);
-  WebRtcIsac_EncHistMulti(streamdata, idx, WebRtcIsac_kLpcGainCdfMat,
-                          UB_LPC_GAIN_DIM);
-}
-
-
-
-int16_t WebRtcIsac_DecodeLpcGainUb(double* lpGains, Bitstr* streamdata) {
-  double U[UB_LPC_GAIN_DIM];
-  int idx[UB_LPC_GAIN_DIM];
-  int err;
-  err = WebRtcIsac_DecHistOneStepMulti(idx, streamdata,
-                                       WebRtcIsac_kLpcGainCdfMat,
-                                       WebRtcIsac_kLpcGainEntropySearch,
-                                       UB_LPC_GAIN_DIM);
-  if (err < 0) {
-    return -1;
-  }
-  WebRtcIsac_DequantizeLpcGain(idx, U);
-  WebRtcIsac_CorrelateLpcGain(U, lpGains);
-  WebRtcIsac_AddMeanToLinearDomain(lpGains);
-  return 0;
-}
-
-
-
-/* decode & dequantize RC */
-int WebRtcIsac_DecodeRc(Bitstr* streamdata, int16_t* RCQ15) {
-  int k, err;
-  int index[AR_ORDER];
-
-  /* entropy decoding of quantization indices */
-  err = WebRtcIsac_DecHistOneStepMulti(index, streamdata,
-                                       WebRtcIsac_kQArRcCdfPtr,
-                                       WebRtcIsac_kQArRcInitIndex, AR_ORDER);
-  if (err < 0)
-    return err;
-
-  /* find quantization levels for reflection coefficients */
-  for (k = 0; k < AR_ORDER; k++) {
-    RCQ15[k] = *(WebRtcIsac_kQArRcLevelsPtr[k] + index[k]);
-  }
-  return 0;
-}
-
-
-/* quantize & code RC */
-void WebRtcIsac_EncodeRc(int16_t* RCQ15, Bitstr* streamdata) {
-  int k;
-  int index[AR_ORDER];
-
-  /* quantize reflection coefficients (add noise feedback?) */
-  for (k = 0; k < AR_ORDER; k++) {
-    index[k] = WebRtcIsac_kQArRcInitIndex[k];
-    // The safe-guards in following while conditions are to suppress gcc 4.8.3
-    // warnings, Issue 2888. Otherwise, first and last elements of
-    // `WebRtcIsac_kQArBoundaryLevels` are such that the following search
-    // *never* cause an out-of-boundary read.
-    if (RCQ15[k] > WebRtcIsac_kQArBoundaryLevels[index[k]]) {
-      while (index[k] + 1 < NUM_AR_RC_QUANT_BAUNDARY &&
-        RCQ15[k] > WebRtcIsac_kQArBoundaryLevels[index[k] + 1]) {
-        index[k]++;
-      }
-    } else {
-      while (index[k] > 0 &&
-        RCQ15[k] < WebRtcIsac_kQArBoundaryLevels[--index[k]]) ;
-    }
-    RCQ15[k] = *(WebRtcIsac_kQArRcLevelsPtr[k] + index[k]);
-  }
-
-  /* entropy coding of quantization indices */
-  WebRtcIsac_EncHistMulti(streamdata, index, WebRtcIsac_kQArRcCdfPtr, AR_ORDER);
-}
-
-
-/* decode & dequantize squared Gain */
-int WebRtcIsac_DecodeGain2(Bitstr* streamdata, int32_t* gainQ10) {
-  int index, err;
-
-  /* entropy decoding of quantization index */
-  err = WebRtcIsac_DecHistOneStepMulti(&index, streamdata,
-                                       WebRtcIsac_kQGainCdf_ptr,
-                                       WebRtcIsac_kQGainInitIndex, 1);
-  if (err < 0) {
-    return err;
-  }
-  /* find quantization level */
-  *gainQ10 = WebRtcIsac_kQGain2Levels[index];
-  return 0;
-}
-
-
-/* quantize & code squared Gain */
-int WebRtcIsac_EncodeGain2(int32_t* gainQ10, Bitstr* streamdata) {
-  int index;
-
-  /* find quantization index */
-  index = WebRtcIsac_kQGainInitIndex[0];
-  if (*gainQ10 > WebRtcIsac_kQGain2BoundaryLevels[index]) {
-    while (*gainQ10 > WebRtcIsac_kQGain2BoundaryLevels[index + 1]) {
-      index++;
-    }
-  } else {
-    while (*gainQ10 < WebRtcIsac_kQGain2BoundaryLevels[--index]) ;
-  }
-  /* De-quantize */
-  *gainQ10 = WebRtcIsac_kQGain2Levels[index];
-
-  /* entropy coding of quantization index */
-  WebRtcIsac_EncHistMulti(streamdata, &index, WebRtcIsac_kQGainCdf_ptr, 1);
-  return 0;
-}
-
-
-/* code and decode Pitch Gains and Lags functions */
-
-/* decode & dequantize Pitch Gains */
-int WebRtcIsac_DecodePitchGain(Bitstr* streamdata,
-                               int16_t* PitchGains_Q12) {
-  int index_comb, err;
-  const uint16_t* WebRtcIsac_kQPitchGainCdf_ptr[1];
-
-  /* Entropy decoding of quantization indices */
-  *WebRtcIsac_kQPitchGainCdf_ptr = WebRtcIsac_kQPitchGainCdf;
-  err = WebRtcIsac_DecHistBisectMulti(&index_comb, streamdata,
-                                      WebRtcIsac_kQPitchGainCdf_ptr,
-                                      WebRtcIsac_kQCdfTableSizeGain, 1);
-  /* Error check, Q_mean_Gain.. tables are of size 144 */
-  if ((err < 0) || (index_comb < 0) || (index_comb >= 144)) {
-    return -ISAC_RANGE_ERROR_DECODE_PITCH_GAIN;
-  }
-  /* De-quantize back to pitch gains by table look-up. */
-  PitchGains_Q12[0] = WebRtcIsac_kQMeanGain1Q12[index_comb];
-  PitchGains_Q12[1] = WebRtcIsac_kQMeanGain2Q12[index_comb];
-  PitchGains_Q12[2] = WebRtcIsac_kQMeanGain3Q12[index_comb];
-  PitchGains_Q12[3] = WebRtcIsac_kQMeanGain4Q12[index_comb];
-  return 0;
-}
-
-
-/* Quantize & code Pitch Gains. */
-void WebRtcIsac_EncodePitchGain(int16_t* PitchGains_Q12,
-                                Bitstr* streamdata,
-                                IsacSaveEncoderData* encData) {
-  int k, j;
-  double C;
-  double S[PITCH_SUBFRAMES];
-  int index[3];
-  int index_comb;
-  const uint16_t* WebRtcIsac_kQPitchGainCdf_ptr[1];
-  double PitchGains[PITCH_SUBFRAMES] = {0, 0, 0, 0};
-
-  /* Take the asin. */
-  for (k = 0; k < PITCH_SUBFRAMES; k++) {
-    PitchGains[k] = ((float)PitchGains_Q12[k]) / 4096;
-    S[k] = asin(PitchGains[k]);
-  }
-
-  /* Find quantization index; only for the first three
-   * transform coefficients. */
-  for (k = 0; k < 3; k++) {
-    /*  transform */
-    C = 0.0;
-    for (j = 0; j < PITCH_SUBFRAMES; j++) {
-      C += WebRtcIsac_kTransform[k][j] * S[j];
-    }
-    /* Quantize */
-    index[k] = WebRtcIsac_lrint(C / PITCH_GAIN_STEPSIZE);
-
-    /* Check that the index is not outside the boundaries of the table. */
-    if (index[k] < WebRtcIsac_kIndexLowerLimitGain[k]) {
-      index[k] = WebRtcIsac_kIndexLowerLimitGain[k];
-    } else if (index[k] > WebRtcIsac_kIndexUpperLimitGain[k]) {
-      index[k] = WebRtcIsac_kIndexUpperLimitGain[k];
-    }
-    index[k] -= WebRtcIsac_kIndexLowerLimitGain[k];
-  }
-
-  /* Calculate unique overall index. */
-  index_comb = WebRtcIsac_kIndexMultsGain[0] * index[0] +
-      WebRtcIsac_kIndexMultsGain[1] * index[1] + index[2];
-
-  /* unquantize back to pitch gains by table look-up */
-  PitchGains_Q12[0] = WebRtcIsac_kQMeanGain1Q12[index_comb];
-  PitchGains_Q12[1] = WebRtcIsac_kQMeanGain2Q12[index_comb];
-  PitchGains_Q12[2] = WebRtcIsac_kQMeanGain3Q12[index_comb];
-  PitchGains_Q12[3] = WebRtcIsac_kQMeanGain4Q12[index_comb];
-
-  /* entropy coding of quantization pitch gains */
-  *WebRtcIsac_kQPitchGainCdf_ptr = WebRtcIsac_kQPitchGainCdf;
-  WebRtcIsac_EncHistMulti(streamdata, &index_comb,
-                          WebRtcIsac_kQPitchGainCdf_ptr, 1);
-  encData->pitchGain_index[encData->startIdx] = index_comb;
-}
-
-
-
-/* Pitch LAG */
-/* Decode & de-quantize Pitch Lags. */
-int WebRtcIsac_DecodePitchLag(Bitstr* streamdata, int16_t* PitchGain_Q12,
-                              double* PitchLags) {
-  int k, err;
-  double StepSize;
-  double C;
-  int index[PITCH_SUBFRAMES];
-  double mean_gain;
-  const double* mean_val2, *mean_val3, *mean_val4;
-  const int16_t* lower_limit;
-  const uint16_t* init_index;
-  const uint16_t* cdf_size;
-  const uint16_t** cdf;
-  double PitchGain[4] = {0, 0, 0, 0};
-
-  /* compute mean pitch gain */
-  mean_gain = 0.0;
-  for (k = 0; k < 4; k++) {
-    PitchGain[k] = ((float)PitchGain_Q12[k]) / 4096;
-    mean_gain += PitchGain[k];
-  }
-  mean_gain /= 4.0;
-
-  /* voicing classification. */
-  if (mean_gain < 0.2) {
-    StepSize = WebRtcIsac_kQPitchLagStepsizeLo;
-    cdf = WebRtcIsac_kQPitchLagCdfPtrLo;
-    cdf_size = WebRtcIsac_kQPitchLagCdfSizeLo;
-    mean_val2 = WebRtcIsac_kQMeanLag2Lo;
-    mean_val3 = WebRtcIsac_kQMeanLag3Lo;
-    mean_val4 = WebRtcIsac_kQMeanLag4Lo;
-    lower_limit = WebRtcIsac_kQIndexLowerLimitLagLo;
-    init_index = WebRtcIsac_kQInitIndexLagLo;
-  } else if (mean_gain < 0.4) {
-    StepSize = WebRtcIsac_kQPitchLagStepsizeMid;
-    cdf = WebRtcIsac_kQPitchLagCdfPtrMid;
-    cdf_size = WebRtcIsac_kQPitchLagCdfSizeMid;
-    mean_val2 = WebRtcIsac_kQMeanLag2Mid;
-    mean_val3 = WebRtcIsac_kQMeanLag3Mid;
-    mean_val4 = WebRtcIsac_kQMeanLag4Mid;
-    lower_limit = WebRtcIsac_kQIndexLowerLimitLagMid;
-    init_index = WebRtcIsac_kQInitIndexLagMid;
-  } else {
-    StepSize = WebRtcIsac_kQPitchLagStepsizeHi;
-    cdf = WebRtcIsac_kQPitchLagCdfPtrHi;
-    cdf_size = WebRtcIsac_kQPitchLagCdfSizeHi;
-    mean_val2 = WebRtcIsac_kQMeanLag2Hi;
-    mean_val3 = WebRtcIsac_kQMeanLag3Hi;
-    mean_val4 = WebRtcIsac_kQMeanLag4Hi;
-    lower_limit = WebRtcIsac_kQindexLowerLimitLagHi;
-    init_index = WebRtcIsac_kQInitIndexLagHi;
-  }
-
-  /* Entropy decoding of quantization indices. */
-  err = WebRtcIsac_DecHistBisectMulti(index, streamdata, cdf, cdf_size, 1);
-  if ((err < 0) || (index[0] < 0)) {
-    return -ISAC_RANGE_ERROR_DECODE_PITCH_LAG;
-  }
-  err = WebRtcIsac_DecHistOneStepMulti(index + 1, streamdata, cdf + 1,
-                                       init_index, 3);
-  if (err < 0) {
-    return -ISAC_RANGE_ERROR_DECODE_PITCH_LAG;
-  }
-
-  /* Unquantize back to transform coefficients and do the inverse transform:
-   * S = T'*C. */
-  C = (index[0] + lower_limit[0]) * StepSize;
-  for (k = 0; k < PITCH_SUBFRAMES; k++) {
-    PitchLags[k] = WebRtcIsac_kTransformTranspose[k][0] * C;
-  }
-  C = mean_val2[index[1]];
-  for (k = 0; k < PITCH_SUBFRAMES; k++) {
-    PitchLags[k] += WebRtcIsac_kTransformTranspose[k][1] * C;
-  }
-  C = mean_val3[index[2]];
-  for (k = 0; k < PITCH_SUBFRAMES; k++) {
-    PitchLags[k] += WebRtcIsac_kTransformTranspose[k][2] * C;
-  }
-  C = mean_val4[index[3]];
-  for (k = 0; k < PITCH_SUBFRAMES; k++) {
-    PitchLags[k] += WebRtcIsac_kTransformTranspose[k][3] * C;
-  }
-  return 0;
-}
-
-
-
-/* Quantize & code pitch lags. */
-void WebRtcIsac_EncodePitchLag(double* PitchLags, int16_t* PitchGain_Q12,
-                               Bitstr* streamdata,
-                               IsacSaveEncoderData* encData) {
-  int k, j;
-  double StepSize;
-  double C;
-  int index[PITCH_SUBFRAMES];
-  double mean_gain;
-  const double* mean_val2, *mean_val3, *mean_val4;
-  const int16_t* lower_limit, *upper_limit;
-  const uint16_t** cdf;
-  double PitchGain[4] = {0, 0, 0, 0};
-
-  /* compute mean pitch gain */
-  mean_gain = 0.0;
-  for (k = 0; k < 4; k++) {
-    PitchGain[k] = ((float)PitchGain_Q12[k]) / 4096;
-    mean_gain += PitchGain[k];
-  }
-  mean_gain /= 4.0;
-
-  /* Save data for creation of multiple bit streams */
-  encData->meanGain[encData->startIdx] = mean_gain;
-
-  /* Voicing classification. */
-  if (mean_gain < 0.2) {
-    StepSize = WebRtcIsac_kQPitchLagStepsizeLo;
-    cdf = WebRtcIsac_kQPitchLagCdfPtrLo;
-    mean_val2 = WebRtcIsac_kQMeanLag2Lo;
-    mean_val3 = WebRtcIsac_kQMeanLag3Lo;
-    mean_val4 = WebRtcIsac_kQMeanLag4Lo;
-    lower_limit = WebRtcIsac_kQIndexLowerLimitLagLo;
-    upper_limit = WebRtcIsac_kQIndexUpperLimitLagLo;
-  } else if (mean_gain < 0.4) {
-    StepSize = WebRtcIsac_kQPitchLagStepsizeMid;
-    cdf = WebRtcIsac_kQPitchLagCdfPtrMid;
-    mean_val2 = WebRtcIsac_kQMeanLag2Mid;
-    mean_val3 = WebRtcIsac_kQMeanLag3Mid;
-    mean_val4 = WebRtcIsac_kQMeanLag4Mid;
-    lower_limit = WebRtcIsac_kQIndexLowerLimitLagMid;
-    upper_limit = WebRtcIsac_kQIndexUpperLimitLagMid;
-  } else {
-    StepSize = WebRtcIsac_kQPitchLagStepsizeHi;
-    cdf = WebRtcIsac_kQPitchLagCdfPtrHi;
-    mean_val2 = WebRtcIsac_kQMeanLag2Hi;
-    mean_val3 = WebRtcIsac_kQMeanLag3Hi;
-    mean_val4 = WebRtcIsac_kQMeanLag4Hi;
-    lower_limit = WebRtcIsac_kQindexLowerLimitLagHi;
-    upper_limit = WebRtcIsac_kQindexUpperLimitLagHi;
-  }
-
-  /* find quantization index */
-  for (k = 0; k < 4; k++) {
-    /*  transform */
-    C = 0.0;
-    for (j = 0; j < PITCH_SUBFRAMES; j++) {
-      C += WebRtcIsac_kTransform[k][j] * PitchLags[j];
-    }
-    /* quantize */
-    index[k] = WebRtcIsac_lrint(C / StepSize);
-
-    /* check that the index is not outside the boundaries of the table */
-    if (index[k] < lower_limit[k]) {
-      index[k] = lower_limit[k];
-    } else if (index[k] > upper_limit[k]) index[k] = upper_limit[k]; {
-      index[k] -= lower_limit[k];
-    }
-    /* Save data for creation of multiple bit streams */
-    encData->pitchIndex[PITCH_SUBFRAMES * encData->startIdx + k] = index[k];
-  }
-
-  /* Un-quantize back to transform coefficients and do the inverse transform:
-   * S = T'*C */
-  C = (index[0] + lower_limit[0]) * StepSize;
-  for (k = 0; k < PITCH_SUBFRAMES; k++) {
-    PitchLags[k] = WebRtcIsac_kTransformTranspose[k][0] * C;
-  }
-  C = mean_val2[index[1]];
-  for (k = 0; k < PITCH_SUBFRAMES; k++) {
-    PitchLags[k] += WebRtcIsac_kTransformTranspose[k][1] * C;
-  }
-  C = mean_val3[index[2]];
-  for (k = 0; k < PITCH_SUBFRAMES; k++) {
-    PitchLags[k] += WebRtcIsac_kTransformTranspose[k][2] * C;
-  }
-  C = mean_val4[index[3]];
-  for (k = 0; k < PITCH_SUBFRAMES; k++) {
-    PitchLags[k] += WebRtcIsac_kTransformTranspose[k][3] * C;
-  }
-  /* entropy coding of quantization pitch lags */
-  WebRtcIsac_EncHistMulti(streamdata, index, cdf, PITCH_SUBFRAMES);
-}
-
-
-
-/* Routines for in-band signaling of bandwidth estimation */
-/* Histograms based on uniform distribution of indices */
-/* Move global variables later! */
-
-
-/* cdf array for frame length indicator */
-const uint16_t WebRtcIsac_kFrameLengthCdf[4] = {
-    0, 21845, 43690, 65535 };
-
-/* pointer to cdf array for frame length indicator */
-const uint16_t* WebRtcIsac_kFrameLengthCdf_ptr[1] = {
-    WebRtcIsac_kFrameLengthCdf };
-
-/* initial cdf index for decoder of frame length indicator */
-const uint16_t WebRtcIsac_kFrameLengthInitIndex[1] = { 1 };
-
-
-int WebRtcIsac_DecodeFrameLen(Bitstr* streamdata, int16_t* framesamples) {
-  int frame_mode, err;
-  err = 0;
-  /* entropy decoding of frame length [1:30ms,2:60ms] */
-  err = WebRtcIsac_DecHistOneStepMulti(&frame_mode, streamdata,
-                                       WebRtcIsac_kFrameLengthCdf_ptr,
-                                       WebRtcIsac_kFrameLengthInitIndex, 1);
-  if (err < 0)
-    return -ISAC_RANGE_ERROR_DECODE_FRAME_LENGTH;
-
-  switch (frame_mode) {
-    case 1:
-      *framesamples = 480; /* 30ms */
-      break;
-    case 2:
-      *framesamples = 960; /* 60ms */
-      break;
-    default:
-      err = -ISAC_DISALLOWED_FRAME_MODE_DECODER;
-  }
-  return err;
-}
-
-int WebRtcIsac_EncodeFrameLen(int16_t framesamples, Bitstr* streamdata) {
-  int frame_mode, status;
-
-  status = 0;
-  frame_mode = 0;
-  /* entropy coding of frame length [1:480 samples,2:960 samples] */
-  switch (framesamples) {
-    case 480:
-      frame_mode = 1;
-      break;
-    case 960:
-      frame_mode = 2;
-      break;
-    default:
-      status = - ISAC_DISALLOWED_FRAME_MODE_ENCODER;
-  }
-
-  if (status < 0)
-    return status;
-
-  WebRtcIsac_EncHistMulti(streamdata, &frame_mode,
-                          WebRtcIsac_kFrameLengthCdf_ptr, 1);
-  return status;
-}
-
-/* cdf array for estimated bandwidth */
-static const uint16_t kBwCdf[25] = {
-    0, 2731, 5461, 8192, 10923, 13653, 16384, 19114, 21845, 24576, 27306, 30037,
-    32768, 35498, 38229, 40959, 43690, 46421, 49151, 51882, 54613, 57343, 60074,
-    62804, 65535 };
-
-/* pointer to cdf array for estimated bandwidth */
-static const uint16_t* const kBwCdfPtr[1] = { kBwCdf };
-
-/* initial cdf index for decoder of estimated bandwidth*/
-static const uint16_t kBwInitIndex[1] = { 7 };
-
-
-int WebRtcIsac_DecodeSendBW(Bitstr* streamdata, int16_t* BWno) {
-  int BWno32, err;
-
-  /* entropy decoding of sender's BW estimation [0..23] */
-  err = WebRtcIsac_DecHistOneStepMulti(&BWno32, streamdata, kBwCdfPtr,
-                                       kBwInitIndex, 1);
-  if (err < 0) {
-    return -ISAC_RANGE_ERROR_DECODE_BANDWIDTH;
-  }
-  *BWno = (int16_t)BWno32;
-  return err;
-}
-
-void WebRtcIsac_EncodeReceiveBw(int* BWno, Bitstr* streamdata) {
-  /* entropy encoding of receiver's BW estimation [0..23] */
-  WebRtcIsac_EncHistMulti(streamdata, BWno, kBwCdfPtr, 1);
-}
-
-
-/* estimate code length of LPC Coef */
-void WebRtcIsac_TranscodeLPCCoef(double* LPCCoef_lo, double* LPCCoef_hi,
-                                 int* index_g) {
-  int j, k, n, pos, pos2, posg, offsg, offs2;
-  int index_ovr_g[KLT_ORDER_GAIN];
-  double tmpcoeffs_g[KLT_ORDER_GAIN];
-  double tmpcoeffs2_g[KLT_ORDER_GAIN];
-  double sum;
-
-  /* log gains, mean removal and scaling */
-  posg = 0;
-  for (k = 0; k < SUBFRAMES; k++) {
-    tmpcoeffs_g[posg] = log(LPCCoef_lo[(LPC_LOBAND_ORDER + 1) * k]);
-    tmpcoeffs_g[posg] -= WebRtcIsac_kLpcMeansGain[posg];
-    tmpcoeffs_g[posg] *= LPC_GAIN_SCALE;
-    posg++;
-    tmpcoeffs_g[posg] = log(LPCCoef_hi[(LPC_HIBAND_ORDER + 1) * k]);
-    tmpcoeffs_g[posg] -= WebRtcIsac_kLpcMeansGain[posg];
-    tmpcoeffs_g[posg] *= LPC_GAIN_SCALE;
-    posg++;
-  }
-
-  /* KLT  */
-
-  /* Left transform. */
-  offsg = 0;
-  for (j = 0; j < SUBFRAMES; j++) {
-    posg = offsg;
-    for (k = 0; k < LPC_GAIN_ORDER; k++) {
-      sum = 0;
-      pos = offsg;
-      pos2 = k;
-      for (n = 0; n < LPC_GAIN_ORDER; n++) {
-        sum += tmpcoeffs_g[pos++] * WebRtcIsac_kKltT1Gain[pos2];
-        pos2 += LPC_GAIN_ORDER;
-      }
-      tmpcoeffs2_g[posg++] = sum;
-    }
-    offsg += LPC_GAIN_ORDER;
-  }
-
-  /* Right transform. */
-  offsg = 0;
-  offs2 = 0;
-  for (j = 0; j < SUBFRAMES; j++) {
-    posg = offsg;
-    for (k = 0; k < LPC_GAIN_ORDER; k++) {
-      sum = 0;
-      pos = k;
-      pos2 = offs2;
-      for (n = 0; n < SUBFRAMES; n++) {
-        sum += tmpcoeffs2_g[pos] * WebRtcIsac_kKltT2Gain[pos2++];
-        pos += LPC_GAIN_ORDER;
-      }
-      tmpcoeffs_g[posg++] = sum;
-    }
-    offs2 += SUBFRAMES;
-    offsg += LPC_GAIN_ORDER;
-  }
-
-
-  /* quantize coefficients */
-  for (k = 0; k < KLT_ORDER_GAIN; k++) {
-    /* Get index. */
-    pos2 = WebRtcIsac_lrint(tmpcoeffs_g[k] / KLT_STEPSIZE);
-    index_g[k] = (pos2) + WebRtcIsac_kQKltQuantMinGain[k];
-    if (index_g[k] < 0) {
-      index_g[k] = 0;
-    } else if (index_g[k] > WebRtcIsac_kQKltMaxIndGain[k]) {
-      index_g[k] = WebRtcIsac_kQKltMaxIndGain[k];
-    }
-    index_ovr_g[k] = WebRtcIsac_kQKltOffsetGain[k] + index_g[k];
-
-    /* find quantization levels for coefficients */
-    tmpcoeffs_g[k] = WebRtcIsac_kQKltLevelsGain[index_ovr_g[k]];
-  }
-}
-
-
-/* Decode & de-quantize LPC Coefficients. */
-int WebRtcIsac_DecodeLpcCoefUB(Bitstr* streamdata, double* lpcVecs,
-                               double* percepFilterGains,
-                               int16_t bandwidth) {
-  int  index_s[KLT_ORDER_SHAPE];
-
-  double U[UB_LPC_ORDER * UB16_LPC_VEC_PER_FRAME];
-  int err;
-
-  /* Entropy decoding of quantization indices. */
-  switch (bandwidth) {
-    case isac12kHz: {
-      err = WebRtcIsac_DecHistOneStepMulti(
-          index_s, streamdata, WebRtcIsac_kLpcShapeCdfMatUb12,
-          WebRtcIsac_kLpcShapeEntropySearchUb12, UB_LPC_ORDER *
-          UB_LPC_VEC_PER_FRAME);
-      break;
-    }
-    case isac16kHz: {
-      err = WebRtcIsac_DecHistOneStepMulti(
-          index_s, streamdata, WebRtcIsac_kLpcShapeCdfMatUb16,
-          WebRtcIsac_kLpcShapeEntropySearchUb16, UB_LPC_ORDER *
-          UB16_LPC_VEC_PER_FRAME);
-      break;
-    }
-    default:
-      return -1;
-  }
-
-  if (err < 0) {
-    return err;
-  }
-
-  WebRtcIsac_DequantizeLpcParam(index_s, lpcVecs, bandwidth);
-  WebRtcIsac_CorrelateInterVec(lpcVecs, U, bandwidth);
-  WebRtcIsac_CorrelateIntraVec(U, lpcVecs, bandwidth);
-  WebRtcIsac_AddLarMean(lpcVecs, bandwidth);
-  WebRtcIsac_DecodeLpcGainUb(percepFilterGains, streamdata);
-
-  if (bandwidth == isac16kHz) {
-    /* Decode another set of Gains. */
-    WebRtcIsac_DecodeLpcGainUb(&percepFilterGains[SUBFRAMES], streamdata);
-  }
-  return 0;
-}
-
-int16_t WebRtcIsac_EncodeBandwidth(enum ISACBandwidth bandwidth,
-                                   Bitstr* streamData) {
-  int bandwidthMode;
-  switch (bandwidth) {
-    case isac12kHz: {
-      bandwidthMode = 0;
-      break;
-    }
-    case isac16kHz: {
-      bandwidthMode = 1;
-      break;
-    }
-    default:
-      return -ISAC_DISALLOWED_ENCODER_BANDWIDTH;
-  }
-  WebRtcIsac_EncHistMulti(streamData, &bandwidthMode, kOneBitEqualProbCdf_ptr,
-                          1);
-  return 0;
-}
-
-int16_t WebRtcIsac_DecodeBandwidth(Bitstr* streamData,
-                                   enum ISACBandwidth* bandwidth) {
-  int bandwidthMode;
-  if (WebRtcIsac_DecHistOneStepMulti(&bandwidthMode, streamData,
-                                     kOneBitEqualProbCdf_ptr,
-                                     kOneBitEqualProbInitIndex, 1) < 0) {
-    return -ISAC_RANGE_ERROR_DECODE_BANDWITH;
-  }
-  switch (bandwidthMode) {
-    case 0: {
-      *bandwidth = isac12kHz;
-      break;
-    }
-    case 1: {
-      *bandwidth = isac16kHz;
-      break;
-    }
-    default:
-      return -ISAC_DISALLOWED_BANDWIDTH_MODE_DECODER;
-  }
-  return 0;
-}
-
-int16_t WebRtcIsac_EncodeJitterInfo(int32_t jitterIndex,
-                                    Bitstr* streamData) {
-  /* This is to avoid LINUX warning until we change 'int' to 'Word32'. */
-  int intVar;
-
-  if ((jitterIndex < 0) || (jitterIndex > 1)) {
-    return -1;
-  }
-  intVar = (int)(jitterIndex);
-  /* Use the same CDF table as for bandwidth
-   * both take two values with equal probability.*/
-  WebRtcIsac_EncHistMulti(streamData, &intVar, kOneBitEqualProbCdf_ptr, 1);
-  return 0;
-}
-
-int16_t WebRtcIsac_DecodeJitterInfo(Bitstr* streamData,
-                                    int32_t* jitterInfo) {
-  int intVar;
-  /* Use the same CDF table as for bandwidth
-   * both take two values with equal probability. */
-  if (WebRtcIsac_DecHistOneStepMulti(&intVar, streamData,
-                                     kOneBitEqualProbCdf_ptr,
-                                     kOneBitEqualProbInitIndex, 1) < 0) {
-    return -ISAC_RANGE_ERROR_DECODE_BANDWITH;
-  }
-  *jitterInfo = (int16_t)(intVar);
-  return 0;
-}
diff --git a/modules/audio_coding/codecs/isac/main/source/entropy_coding.h b/modules/audio_coding/codecs/isac/main/source/entropy_coding.h
deleted file mode 100644
index 6c2b8d3..0000000
--- a/modules/audio_coding/codecs/isac/main/source/entropy_coding.h
+++ /dev/null
@@ -1,347 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * entropy_coding.h
- *
- * This header file declares all of the functions used to arithmetically
- * encode the iSAC bistream
- *
- */
-
-#ifndef MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_SOURCE_ENTROPY_CODING_H_
-#define MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_SOURCE_ENTROPY_CODING_H_
-
-#include "modules/audio_coding/codecs/isac/main/source/settings.h"
-#include "modules/audio_coding/codecs/isac/main/source/structs.h"
-
-/******************************************************************************
- * WebRtcIsac_DecodeSpec()
- * Decode real and imaginary part of the DFT coefficients, given a bit-stream.
- * The decoded DFT coefficient can be transformed to time domain by
- * WebRtcIsac_Time2Spec().
- *
- * Input:
- *  - streamdata            : pointer to a stucture containg the encoded
- *                            data and theparameters needed for entropy
- *                            coding.
- *  - AvgPitchGain_Q12      : average pitch-gain of the frame. This is only
- *                            relevant for 0-4 kHz band, and the input value is
- *                            not used in other bands.
- *  - band                  : specifies which band's DFT should be decoded.
- *
- * Output:
- *   - *fr                  : pointer to a buffer where the real part of DFT
- *                            coefficients are written to.
- *   - *fi                  : pointer to a buffer where the imaginary part
- *                            of DFT coefficients are written to.
- *
- * Return value             : < 0 if an error occures
- *                              0 if succeeded.
- */
-int WebRtcIsac_DecodeSpec(Bitstr* streamdata,
-                          int16_t AvgPitchGain_Q12,
-                          enum ISACBand band,
-                          double* fr,
-                          double* fi);
-
-/******************************************************************************
- * WebRtcIsac_EncodeSpec()
- * Encode real and imaginary part of the DFT coefficients into the given
- * bit-stream.
- *
- * Input:
- *  - *fr                   : pointer to a buffer where the real part of DFT
- *                            coefficients are written to.
- *  - *fi                   : pointer to a buffer where the imaginary part
- *                            of DFT coefficients are written to.
- *  - AvgPitchGain_Q12      : average pitch-gain of the frame. This is only
- *                            relevant for 0-4 kHz band, and the input value is
- *                            not used in other bands.
- *  - band                  : specifies which band's DFT should be decoded.
- *
- * Output:
- *  - streamdata            : pointer to a stucture containg the encoded
- *                            data and theparameters needed for entropy
- *                            coding.
- *
- * Return value             : < 0 if an error occures
- *                              0 if succeeded.
- */
-int WebRtcIsac_EncodeSpec(const int16_t* fr,
-                          const int16_t* fi,
-                          int16_t AvgPitchGain_Q12,
-                          enum ISACBand band,
-                          Bitstr* streamdata);
-
-/* decode & dequantize LPC Coef */
-int WebRtcIsac_DecodeLpcCoef(Bitstr* streamdata, double* LPCCoef);
-int WebRtcIsac_DecodeLpcCoefUB(Bitstr* streamdata,
-                               double* lpcVecs,
-                               double* percepFilterGains,
-                               int16_t bandwidth);
-
-int WebRtcIsac_DecodeLpc(Bitstr* streamdata,
-                         double* LPCCoef_lo,
-                         double* LPCCoef_hi);
-
-/* quantize & code LPC Coef */
-void WebRtcIsac_EncodeLpcLb(double* LPCCoef_lo,
-                            double* LPCCoef_hi,
-                            Bitstr* streamdata,
-                            IsacSaveEncoderData* encData);
-
-void WebRtcIsac_EncodeLpcGainLb(double* LPCCoef_lo,
-                                double* LPCCoef_hi,
-                                Bitstr* streamdata,
-                                IsacSaveEncoderData* encData);
-
-/******************************************************************************
- * WebRtcIsac_EncodeLpcUB()
- * Encode LPC parameters, given as A-polynomial, of upper-band. The encoding
- * is performed in LAR domain.
- * For the upper-band, we compute and encode LPC of some sub-frames, LPC of
- * other sub-frames are computed by linear interpolation, in LAR domain. This
- * function performs the interpolation and returns the LPC of all sub-frames.
- *
- * Inputs:
- *  - lpcCoef               : a buffer containing A-polynomials of sub-frames
- *                            (excluding first coefficient that is 1).
- *  - bandwidth             : specifies if the codec is operating at 0-12 kHz
- *                            or 0-16 kHz mode.
- *
- * Input/output:
- *  - streamdata            : pointer to a structure containing the encoded
- *                            data and the parameters needed for entropy
- *                            coding.
- *
- * Output:
- *  - interpolLPCCoeff      : Decoded and interpolated LPC (A-polynomial)
- *                            of all sub-frames.
- *                            If LP analysis is of order K, and there are N
- *                            sub-frames then this is a buffer of size
- *                            (k + 1) * N, each vector starts with the LPC gain
- *                            of the corresponding sub-frame. The LPC gains
- *                            are encoded and inserted after this function is
- *                            called. The first A-coefficient which is 1 is not
- *                            included.
- *
- * Return value             : 0 if encoding is successful,
- *                           <0 if failed to encode.
- */
-int16_t WebRtcIsac_EncodeLpcUB(double* lpcCoeff,
-                               Bitstr* streamdata,
-                               double* interpolLPCCoeff,
-                               int16_t bandwidth,
-                               ISACUBSaveEncDataStruct* encData);
-
-/******************************************************************************
- * WebRtcIsac_DecodeInterpolLpcUb()
- * Decode LPC coefficients and interpolate to get the coefficients fo all
- * sub-frmaes.
- *
- * Inputs:
- *  - bandwidth             : spepecifies if the codec is in 0-12 kHz or
- *                            0-16 kHz mode.
- *
- * Input/output:
- *  - streamdata            : pointer to a stucture containg the encoded
- *                            data and theparameters needed for entropy
- *                            coding.
- *
- * Output:
- *  - percepFilterParam     : Decoded and interpolated LPC (A-polynomial) of
- *                            all sub-frames.
- *                            If LP analysis is of order K, and there are N
- *                            sub-frames then this is a buffer of size
- *                            (k + 1) * N, each vector starts with the LPC gain
- *                            of the corresponding sub-frame. The LPC gains
- *                            are encoded and inserted after this function is
- *                            called. The first A-coefficient which is 1 is not
- *                            included.
- *
- * Return value             : 0 if encoding is successful,
- *                           <0 if failed to encode.
- */
-int16_t WebRtcIsac_DecodeInterpolLpcUb(Bitstr* streamdata,
-                                       double* percepFilterParam,
-                                       int16_t bandwidth);
-
-/* Decode & dequantize RC */
-int WebRtcIsac_DecodeRc(Bitstr* streamdata, int16_t* RCQ15);
-
-/* Quantize & code RC */
-void WebRtcIsac_EncodeRc(int16_t* RCQ15, Bitstr* streamdata);
-
-/* Decode & dequantize squared Gain */
-int WebRtcIsac_DecodeGain2(Bitstr* streamdata, int32_t* Gain2);
-
-/* Quantize & code squared Gain (input is squared gain) */
-int WebRtcIsac_EncodeGain2(int32_t* gain2, Bitstr* streamdata);
-
-void WebRtcIsac_EncodePitchGain(int16_t* PitchGains_Q12,
-                                Bitstr* streamdata,
-                                IsacSaveEncoderData* encData);
-
-void WebRtcIsac_EncodePitchLag(double* PitchLags,
-                               int16_t* PitchGain_Q12,
-                               Bitstr* streamdata,
-                               IsacSaveEncoderData* encData);
-
-int WebRtcIsac_DecodePitchGain(Bitstr* streamdata, int16_t* PitchGain_Q12);
-int WebRtcIsac_DecodePitchLag(Bitstr* streamdata,
-                              int16_t* PitchGain_Q12,
-                              double* PitchLag);
-
-int WebRtcIsac_DecodeFrameLen(Bitstr* streamdata, int16_t* framelength);
-int WebRtcIsac_EncodeFrameLen(int16_t framelength, Bitstr* streamdata);
-int WebRtcIsac_DecodeSendBW(Bitstr* streamdata, int16_t* BWno);
-void WebRtcIsac_EncodeReceiveBw(int* BWno, Bitstr* streamdata);
-
-/* Step-down */
-void WebRtcIsac_Poly2Rc(double* a, int N, double* RC);
-
-/* Step-up */
-void WebRtcIsac_Rc2Poly(double* RC, int N, double* a);
-
-void WebRtcIsac_TranscodeLPCCoef(double* LPCCoef_lo,
-                                 double* LPCCoef_hi,
-                                 int* index_g);
-
-/******************************************************************************
- * WebRtcIsac_EncodeLpcGainUb()
- * Encode LPC gains of sub-Frames.
- *
- * Input/outputs:
- *  - lpGains               : a buffer which contains 'SUBFRAME' number of
- *                            LP gains to be encoded. The input values are
- *                            overwritten by the quantized values.
- *  - streamdata            : pointer to a stucture containg the encoded
- *                            data and theparameters needed for entropy
- *                            coding.
- *
- * Output:
- *  - lpcGainIndex          : quantization indices for lpc gains, these will
- *                            be stored to be used  for FEC.
- */
-void WebRtcIsac_EncodeLpcGainUb(double* lpGains,
-                                Bitstr* streamdata,
-                                int* lpcGainIndex);
-
-/******************************************************************************
- * WebRtcIsac_EncodeLpcGainUb()
- * Store LPC gains of sub-Frames in 'streamdata'.
- *
- * Input:
- *  - lpGains               : a buffer which contains 'SUBFRAME' number of
- *                            LP gains to be encoded.
- * Input/outputs:
- *  - streamdata            : pointer to a stucture containg the encoded
- *                            data and theparameters needed for entropy
- *                            coding.
- *
- */
-void WebRtcIsac_StoreLpcGainUb(double* lpGains, Bitstr* streamdata);
-
-/******************************************************************************
- * WebRtcIsac_DecodeLpcGainUb()
- * Decode the LPC gain of sub-frames.
- *
- * Input/output:
- *  - streamdata            : pointer to a stucture containg the encoded
- *                            data and theparameters needed for entropy
- *                            coding.
- *
- * Output:
- *  - lpGains               : a buffer where decoded LPC gians will be stored.
- *
- * Return value             : 0 if succeeded.
- *                           <0 if failed.
- */
-int16_t WebRtcIsac_DecodeLpcGainUb(double* lpGains, Bitstr* streamdata);
-
-/******************************************************************************
- * WebRtcIsac_EncodeBandwidth()
- * Encode if the bandwidth of encoded audio is 0-12 kHz or 0-16 kHz.
- *
- * Input:
- *  - bandwidth             : an enumerator specifying if the codec in is
- *                            0-12 kHz or 0-16 kHz mode.
- *
- * Input/output:
- *  - streamdata            : pointer to a stucture containg the encoded
- *                            data and theparameters needed for entropy
- *                            coding.
- *
- * Return value             : 0 if succeeded.
- *                           <0 if failed.
- */
-int16_t WebRtcIsac_EncodeBandwidth(enum ISACBandwidth bandwidth,
-                                   Bitstr* streamData);
-
-/******************************************************************************
- * WebRtcIsac_DecodeBandwidth()
- * Decode the bandwidth of the encoded audio, i.e. if the bandwidth is 0-12 kHz
- * or 0-16 kHz.
- *
- * Input/output:
- *  - streamdata            : pointer to a stucture containg the encoded
- *                            data and theparameters needed for entropy
- *                            coding.
- *
- * Output:
- *  - bandwidth             : an enumerator specifying if the codec is in
- *                            0-12 kHz or 0-16 kHz mode.
- *
- * Return value             : 0 if succeeded.
- *                           <0 if failed.
- */
-int16_t WebRtcIsac_DecodeBandwidth(Bitstr* streamData,
-                                   enum ISACBandwidth* bandwidth);
-
-/******************************************************************************
- * WebRtcIsac_EncodeJitterInfo()
- * Decode the jitter information.
- *
- * Input/output:
- *  - streamdata            : pointer to a stucture containg the encoded
- *                            data and theparameters needed for entropy
- *                            coding.
- *
- * Input:
- *  - jitterInfo            : one bit of info specifying if the channel is
- *                            in high/low jitter. Zero indicates low jitter
- *                            and one indicates high jitter.
- *
- * Return value             : 0 if succeeded.
- *                           <0 if failed.
- */
-int16_t WebRtcIsac_EncodeJitterInfo(int32_t jitterIndex, Bitstr* streamData);
-
-/******************************************************************************
- * WebRtcIsac_DecodeJitterInfo()
- * Decode the jitter information.
- *
- * Input/output:
- *  - streamdata            : pointer to a stucture containg the encoded
- *                            data and theparameters needed for entropy
- *                            coding.
- *
- * Output:
- *  - jitterInfo            : one bit of info specifying if the channel is
- *                            in high/low jitter. Zero indicates low jitter
- *                            and one indicates high jitter.
- *
- * Return value             : 0 if succeeded.
- *                           <0 if failed.
- */
-int16_t WebRtcIsac_DecodeJitterInfo(Bitstr* streamData, int32_t* jitterInfo);
-
-#endif /* MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_SOURCE_ENTROPY_CODING_H_ */
diff --git a/modules/audio_coding/codecs/isac/main/source/filterbanks.c b/modules/audio_coding/codecs/isac/main/source/filterbanks.c
deleted file mode 100644
index d57b550..0000000
--- a/modules/audio_coding/codecs/isac/main/source/filterbanks.c
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * filterbanks.c
- *
- * This file contains function WebRtcIsac_AllPassFilter2Float,
- * WebRtcIsac_SplitAndFilter, and WebRtcIsac_FilterAndCombine
- * which implement filterbanks that produce decimated lowpass and
- * highpass versions of a signal, and performs reconstruction.
- *
- */
-
-#include "modules/audio_coding/codecs/isac/main/source/settings.h"
-#include "modules/audio_coding/codecs/isac/main/source/codec.h"
-#include "modules/audio_coding/codecs/isac/main/source/isac_vad.h"
-
-/* Combining */
-
-/* HPstcoeff_out_1 = {a1, a2, b1 - b0 * a1, b2 - b0 * a2}; */
-static const float kHpStCoefOut1Float[4] =
-{-1.99701049409000f, 0.99714204490000f, 0.01701049409000f, -0.01704204490000f};
-
-/* HPstcoeff_out_2 = {a1, a2, b1 - b0 * a1, b2 - b0 * a2}; */
-static const float kHpStCoefOut2Float[4] =
-{-1.98645294509837f, 0.98672435560000f, 0.00645294509837f, -0.00662435560000f};
-
-
-/* Function WebRtcIsac_FilterAndCombine */
-/* This is a decoder function that takes the decimated
-   length FRAMESAMPLES_HALF input low-pass and
-   high-pass signals and creates a reconstructed fullband
-   output signal of length FRAMESAMPLES. WebRtcIsac_FilterAndCombine
-   is the sibling function of WebRtcIsac_SplitAndFilter */
-/* INPUTS:
-   inLP: a length FRAMESAMPLES_HALF array of input low-pass
-   samples.
-   inHP: a length FRAMESAMPLES_HALF array of input high-pass
-   samples.
-   postfiltdata: input data structure containing the filterbank
-   states from the previous decoding iteration.
-   OUTPUTS:
-   Out: a length FRAMESAMPLES array of output reconstructed
-   samples (fullband) based on the input low-pass and
-   high-pass signals.
-   postfiltdata: the input data structure containing the filterbank
-   states is updated for the next decoding iteration */
-void WebRtcIsac_FilterAndCombineFloat(float *InLP,
-                                      float *InHP,
-                                      float *Out,
-                                      PostFiltBankstr *postfiltdata)
-{
-  int k;
-  float tempin_ch1[FRAMESAMPLES+MAX_AR_MODEL_ORDER];
-  float tempin_ch2[FRAMESAMPLES+MAX_AR_MODEL_ORDER];
-  float ftmp, ftmp2;
-
-  /* Form the polyphase signals*/
-  for (k=0;k<FRAMESAMPLES_HALF;k++) {
-    tempin_ch1[k]=InLP[k]+InHP[k]; /* Construct a new upper channel signal*/
-    tempin_ch2[k]=InLP[k]-InHP[k]; /* Construct a new lower channel signal*/
-  }
-
-
-  /* all-pass filter the new upper channel signal. HOWEVER, use the all-pass filter factors
-     that were used as a lower channel at the encoding side.  So at the decoder, the
-     corresponding all-pass filter factors for each channel are swapped.*/
-  WebRtcIsac_AllPassFilter2Float(tempin_ch1, WebRtcIsac_kLowerApFactorsFloat,
-                                 FRAMESAMPLES_HALF, NUMBEROFCHANNELAPSECTIONS,postfiltdata->STATE_0_UPPER_float);
-
-  /* Now, all-pass filter the new lower channel signal. But since all-pass filter factors
-     at the decoder are swapped from the ones at the encoder, the 'upper' channel
-     all-pass filter factors (WebRtcIsac_kUpperApFactorsFloat) are used to filter this new
-     lower channel signal */
-  WebRtcIsac_AllPassFilter2Float(tempin_ch2, WebRtcIsac_kUpperApFactorsFloat,
-                                 FRAMESAMPLES_HALF, NUMBEROFCHANNELAPSECTIONS,postfiltdata->STATE_0_LOWER_float);
-
-
-  /* Merge outputs to form the full length output signal.*/
-  for (k=0;k<FRAMESAMPLES_HALF;k++) {
-    Out[2*k]=tempin_ch2[k];
-    Out[2*k+1]=tempin_ch1[k];
-  }
-
-
-  /* High pass filter */
-
-  for (k=0;k<FRAMESAMPLES;k++) {
-    ftmp2 = Out[k] + kHpStCoefOut1Float[2] * postfiltdata->HPstates1_float[0] +
-        kHpStCoefOut1Float[3] * postfiltdata->HPstates1_float[1];
-    ftmp = Out[k] - kHpStCoefOut1Float[0] * postfiltdata->HPstates1_float[0] -
-        kHpStCoefOut1Float[1] * postfiltdata->HPstates1_float[1];
-    postfiltdata->HPstates1_float[1] = postfiltdata->HPstates1_float[0];
-    postfiltdata->HPstates1_float[0] = ftmp;
-    Out[k] = ftmp2;
-  }
-
-  for (k=0;k<FRAMESAMPLES;k++) {
-    ftmp2 = Out[k] + kHpStCoefOut2Float[2] * postfiltdata->HPstates2_float[0] +
-        kHpStCoefOut2Float[3] * postfiltdata->HPstates2_float[1];
-    ftmp = Out[k] - kHpStCoefOut2Float[0] * postfiltdata->HPstates2_float[0] -
-        kHpStCoefOut2Float[1] * postfiltdata->HPstates2_float[1];
-    postfiltdata->HPstates2_float[1] = postfiltdata->HPstates2_float[0];
-    postfiltdata->HPstates2_float[0] = ftmp;
-    Out[k] = ftmp2;
-  }
-}
diff --git a/modules/audio_coding/codecs/isac/main/source/intialize.c b/modules/audio_coding/codecs/isac/main/source/intialize.c
deleted file mode 100644
index 5c951f6..0000000
--- a/modules/audio_coding/codecs/isac/main/source/intialize.c
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/* encode.c  - Encoding function for the iSAC coder */
-
-#include <math.h>
-
-#include "modules/audio_coding/codecs/isac/main/source/structs.h"
-#include "modules/audio_coding/codecs/isac/main/source/codec.h"
-#include "modules/audio_coding/codecs/isac/main/source/pitch_estimator.h"
-
-void WebRtcIsac_InitMasking(MaskFiltstr *maskdata) {
-
-  int k;
-
-  for (k = 0; k < WINLEN; k++) {
-    maskdata->DataBufferLo[k] = 0.0;
-    maskdata->DataBufferHi[k] = 0.0;
-  }
-  for (k = 0; k < ORDERLO+1; k++) {
-    maskdata->CorrBufLo[k] = 0.0;
-    maskdata->PreStateLoF[k] = 0.0;
-    maskdata->PreStateLoG[k] = 0.0;
-    maskdata->PostStateLoF[k] = 0.0;
-    maskdata->PostStateLoG[k] = 0.0;
-  }
-  for (k = 0; k < ORDERHI+1; k++) {
-    maskdata->CorrBufHi[k] = 0.0;
-    maskdata->PreStateHiF[k] = 0.0;
-    maskdata->PreStateHiG[k] = 0.0;
-    maskdata->PostStateHiF[k] = 0.0;
-    maskdata->PostStateHiG[k] = 0.0;
-  }
-
-  maskdata->OldEnergy = 10.0;
-  return;
-}
-
-void WebRtcIsac_InitPostFilterbank(PostFiltBankstr *postfiltdata)
-{
-  int k;
-
-  for (k = 0; k < 2*POSTQORDER; k++) {
-    postfiltdata->STATE_0_LOWER[k] = 0;
-    postfiltdata->STATE_0_UPPER[k] = 0;
-
-    postfiltdata->STATE_0_LOWER_float[k] = 0;
-    postfiltdata->STATE_0_UPPER_float[k] = 0;
-  }
-
-  /* High pass filter states */
-  postfiltdata->HPstates1[0] = 0.0;
-  postfiltdata->HPstates1[1] = 0.0;
-
-  postfiltdata->HPstates2[0] = 0.0;
-  postfiltdata->HPstates2[1] = 0.0;
-
-  postfiltdata->HPstates1_float[0] = 0.0f;
-  postfiltdata->HPstates1_float[1] = 0.0f;
-
-  postfiltdata->HPstates2_float[0] = 0.0f;
-  postfiltdata->HPstates2_float[1] = 0.0f;
-
-  return;
-}
diff --git a/modules/audio_coding/codecs/isac/main/source/isac.c b/modules/audio_coding/codecs/isac/main/source/isac.c
deleted file mode 100644
index 456f447..0000000
--- a/modules/audio_coding/codecs/isac/main/source/isac.c
+++ /dev/null
@@ -1,2307 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * isac.c
- *
- * This C file contains the functions for the ISAC API
- *
- */
-
-#include "modules/audio_coding/codecs/isac/main/include/isac.h"
-
-#include <math.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "rtc_base/checks.h"
-#include "common_audio/signal_processing/include/signal_processing_library.h"
-#include "modules/audio_coding/codecs/isac/main/source/bandwidth_estimator.h"
-#include "modules/audio_coding/codecs/isac/main/source/codec.h"
-#include "modules/audio_coding/codecs/isac/main/source/crc.h"
-#include "modules/audio_coding/codecs/isac/main/source/entropy_coding.h"
-#include "modules/audio_coding/codecs/isac/main/source/lpc_shape_swb16_tables.h"
-#include "modules/audio_coding/codecs/isac/main/source/os_specific_inline.h"
-#include "modules/audio_coding/codecs/isac/main/source/structs.h"
-#include "modules/audio_coding/codecs/isac/main/source/isac_vad.h"
-#include "rtc_base/system/arch.h"
-
-#define BIT_MASK_DEC_INIT 0x0001
-#define BIT_MASK_ENC_INIT 0x0002
-
-#define LEN_CHECK_SUM_WORD8     4
-#define MAX_NUM_LAYERS         10
-
-
-/****************************************************************************
- * UpdatePayloadSizeLimit(...)
- *
- * Call this function to update the limit on the payload size. The limit on
- * payload size might change i) if a user ''directly changes the limit by
- * calling xxx_setMaxPayloadSize() or xxx_setMaxRate(), or ii) indirectly
- * when bandwidth is changing. The latter might be the result of bandwidth
- * adaptation, or direct change of the bottleneck in instantaneous mode.
- *
- * This function takes the current overall limit on payload, and translates it
- * to the limits on lower and upper-band. If the codec is in wideband mode,
- * then the overall limit and the limit on the lower-band is the same.
- * Otherwise, a fraction of the limit should be allocated to lower-band
- * leaving some room for the upper-band bit-stream. That is why an update
- * of limit is required every time that the bandwidth is changing.
- *
- */
-static void UpdatePayloadSizeLimit(ISACMainStruct* instISAC) {
-  int16_t lim30MsPayloadBytes = WEBRTC_SPL_MIN(
-                          (instISAC->maxPayloadSizeBytes),
-                          (instISAC->maxRateBytesPer30Ms));
-  int16_t lim60MsPayloadBytes = WEBRTC_SPL_MIN(
-                          (instISAC->maxPayloadSizeBytes),
-                          (instISAC->maxRateBytesPer30Ms << 1));
-
-  /* The only time that iSAC will have 60 ms
-   * frame-size is when operating in wideband, so
-   * there is no upper-band bit-stream. */
-
-  if (instISAC->bandwidthKHz == isac8kHz) {
-    /* At 8 kHz there is no upper-band bit-stream,
-     * therefore, the lower-band limit is the overall limit. */
-    instISAC->instLB.ISACencLB_obj.payloadLimitBytes60 =
-      lim60MsPayloadBytes;
-    instISAC->instLB.ISACencLB_obj.payloadLimitBytes30 =
-      lim30MsPayloadBytes;
-  } else {
-    /* When in super-wideband, we only have 30 ms frames.
-     * Do a rate allocation for the given limit. */
-    if (lim30MsPayloadBytes > 250) {
-      /* 4/5 to lower-band the rest for upper-band. */
-      instISAC->instLB.ISACencLB_obj.payloadLimitBytes30 =
-        (lim30MsPayloadBytes << 2) / 5;
-    } else if (lim30MsPayloadBytes > 200) {
-      /* For the interval of 200 to 250 the share of
-       * upper-band linearly grows from 20 to 50. */
-      instISAC->instLB.ISACencLB_obj.payloadLimitBytes30 =
-        (lim30MsPayloadBytes << 1) / 5 + 100;
-    } else {
-      /* Allocate only 20 for upper-band. */
-      instISAC->instLB.ISACencLB_obj.payloadLimitBytes30 =
-        lim30MsPayloadBytes - 20;
-    }
-    instISAC->instUB.ISACencUB_obj.maxPayloadSizeBytes =
-      lim30MsPayloadBytes;
-  }
-}
-
-
-/****************************************************************************
- * UpdateBottleneck(...)
- *
- * This function updates the bottleneck only if the codec is operating in
- * channel-adaptive mode. Furthermore, as the update of bottleneck might
- * result in an update of bandwidth, therefore, the bottlenech should be
- * updated just right before the first 10ms of a frame is pushed into encoder.
- *
- */
-static void UpdateBottleneck(ISACMainStruct* instISAC) {
-  /* Read the bottleneck from bandwidth estimator for the
-   * first 10 ms audio. This way, if there is a change
-   * in bandwidth, upper and lower-band will be in sync. */
-  if ((instISAC->codingMode == 0) &&
-      (instISAC->instLB.ISACencLB_obj.buffer_index == 0) &&
-      (instISAC->instLB.ISACencLB_obj.frame_nb == 0)) {
-    int32_t bottleneck =
-        WebRtcIsac_GetUplinkBandwidth(&instISAC->bwestimator_obj);
-
-    /* Adding hysteresis when increasing signal bandwidth. */
-    if ((instISAC->bandwidthKHz == isac8kHz)
-        && (bottleneck > 37000)
-        && (bottleneck < 41000)) {
-      bottleneck = 37000;
-    }
-
-    /* Switching from 12 kHz to 16 kHz is not allowed at this revision.
-     * If we let this happen, we have to take care of buffer_index and
-     * the last LPC vector. */
-    if ((instISAC->bandwidthKHz != isac16kHz) &&
-        (bottleneck > 46000)) {
-      bottleneck = 46000;
-    }
-
-    /* We might need a rate allocation. */
-    if (instISAC->encoderSamplingRateKHz == kIsacWideband) {
-      /* Wideband is the only choice we have here. */
-      instISAC->instLB.ISACencLB_obj.bottleneck =
-        (bottleneck > 32000) ? 32000 : bottleneck;
-      instISAC->bandwidthKHz = isac8kHz;
-    } else {
-      /* Do the rate-allocation and get the new bandwidth. */
-      enum ISACBandwidth bandwidth;
-      WebRtcIsac_RateAllocation(bottleneck,
-                                &(instISAC->instLB.ISACencLB_obj.bottleneck),
-                                &(instISAC->instUB.ISACencUB_obj.bottleneck),
-                                &bandwidth);
-      if (bandwidth != isac8kHz) {
-        instISAC->instLB.ISACencLB_obj.new_framelength = 480;
-      }
-      if (bandwidth != instISAC->bandwidthKHz) {
-        /* Bandwidth is changing. */
-        instISAC->bandwidthKHz = bandwidth;
-        UpdatePayloadSizeLimit(instISAC);
-        if (bandwidth == isac12kHz) {
-          instISAC->instLB.ISACencLB_obj.buffer_index = 0;
-        }
-        /* Currently we don't let the bandwidth to switch to 16 kHz
-         * if in adaptive mode. If we let this happen, we have to take
-         * care of buffer_index and the last LPC vector. */
-      }
-    }
-  }
-}
-
-
-/****************************************************************************
- * GetSendBandwidthInfo(...)
- *
- * This is called to get the bandwidth info. This info is the bandwidth and
- * the jitter of 'there-to-here' channel, estimated 'here.' These info
- * is signaled in an in-band fashion to the other side.
- *
- * The call to the bandwidth estimator triggers a recursive averaging which
- * has to be synchronized between encoder & decoder, therefore, the call to
- * BWE should be once per packet. As the BWE info is inserted into bit-stream
- * We need a valid info right before the encodeLB function is going to
- * generate a bit-stream. That is when lower-band buffer has already 20ms
- * of audio, and the 3rd block of 10ms is going to be injected into encoder.
- *
- * Inputs:
- *         - instISAC          : iSAC instance.
- *
- * Outputs:
- *         - bandwidthIndex    : an index which has to be encoded in
- *                               lower-band bit-stream, indicating the
- *                               bandwidth of there-to-here channel.
- *         - jitterInfo        : this indicates if the jitter is high
- *                               or low and it is encoded in upper-band
- *                               bit-stream.
- *
- */
-static void GetSendBandwidthInfo(ISACMainStruct* instISAC,
-                                 int16_t* bandwidthIndex,
-                                 int16_t* jitterInfo) {
-  if ((instISAC->instLB.ISACencLB_obj.buffer_index ==
-      (FRAMESAMPLES_10ms << 1)) &&
-      (instISAC->instLB.ISACencLB_obj.frame_nb == 0)) {
-    /* Bandwidth estimation and coding. */
-    WebRtcIsac_GetDownlinkBwJitIndexImpl(&(instISAC->bwestimator_obj),
-                                         bandwidthIndex, jitterInfo,
-                                         instISAC->decoderSamplingRateKHz);
-  }
-}
-
-
-/****************************************************************************
- * WebRtcIsac_Create(...)
- *
- * This function creates an ISAC instance, which will contain the state
- * information for one coding/decoding channel.
- *
- * Input:
- *        - ISAC_main_inst    : address of the pointer to the coder instance.
- *
- * Return value               : 0 - Ok
- *                             -1 - Error
- */
-int16_t WebRtcIsac_Create(ISACStruct** ISAC_main_inst) {
-  ISACMainStruct* instISAC;
-
-  if (ISAC_main_inst != NULL) {
-    instISAC = (ISACMainStruct*)malloc(sizeof(ISACMainStruct));
-    *ISAC_main_inst = (ISACStruct*)instISAC;
-    if (*ISAC_main_inst != NULL) {
-      instISAC->errorCode = 0;
-      instISAC->initFlag = 0;
-      /* Default is wideband. */
-      instISAC->bandwidthKHz = isac8kHz;
-      instISAC->encoderSamplingRateKHz = kIsacWideband;
-      instISAC->decoderSamplingRateKHz = kIsacWideband;
-      instISAC->in_sample_rate_hz = 16000;
-
-      WebRtcIsac_InitTransform(&instISAC->transform_tables);
-      return 0;
-    } else {
-      return -1;
-    }
-  } else {
-    return -1;
-  }
-}
-
-
-/****************************************************************************
- * WebRtcIsac_Free(...)
- *
- * This function frees the ISAC instance created at the beginning.
- *
- * Input:
- *        - ISAC_main_inst    : a ISAC instance.
- *
- * Return value               : 0 - Ok
- *                             -1 - Error
- */
-int16_t WebRtcIsac_Free(ISACStruct* ISAC_main_inst) {
-  ISACMainStruct* instISAC = (ISACMainStruct*)ISAC_main_inst;
-  free(instISAC);
-  return 0;
-}
-
-
-/****************************************************************************
- * EncoderInitLb(...) - internal function for initialization of
- *                                Lower Band
- * EncoderInitUb(...) - internal function for initialization of
- *                                Upper Band
- * WebRtcIsac_EncoderInit(...) - API function
- *
- * This function initializes a ISAC instance prior to the encoder calls.
- *
- * Input:
- *        - ISAC_main_inst    : ISAC instance.
- *        - CodingMode        : 0 -> Bit rate and frame length are automatically
- *                                 adjusted to available bandwidth on
- *                                 transmission channel, applicable just to
- *                                 wideband mode.
- *                              1 -> User sets a frame length and a target bit
- *                                 rate which is taken as the maximum
- *                                 short-term average bit rate.
- *
- * Return value               :  0 - Ok
- *                              -1 - Error
- */
-static int16_t EncoderInitLb(ISACLBStruct* instLB,
-                             int16_t codingMode,
-                             enum IsacSamplingRate sampRate) {
-  int16_t statusInit = 0;
-  int k;
-
-  /* Init stream vector to zero */
-  for (k = 0; k < STREAM_SIZE_MAX_60; k++) {
-    instLB->ISACencLB_obj.bitstr_obj.stream[k] = 0;
-  }
-
-  if ((codingMode == 1) || (sampRate == kIsacSuperWideband)) {
-    /* 30 ms frame-size if either in super-wideband or
-     * instantaneous mode (I-mode). */
-    instLB->ISACencLB_obj.new_framelength = 480;
-  } else {
-    instLB->ISACencLB_obj.new_framelength = INITIAL_FRAMESAMPLES;
-  }
-
-  WebRtcIsac_InitMasking(&instLB->ISACencLB_obj.maskfiltstr_obj);
-  WebRtcIsac_InitPreFilterbank(&instLB->ISACencLB_obj.prefiltbankstr_obj);
-  WebRtcIsac_InitPitchFilter(&instLB->ISACencLB_obj.pitchfiltstr_obj);
-  WebRtcIsac_InitPitchAnalysis(
-    &instLB->ISACencLB_obj.pitchanalysisstr_obj);
-
-  instLB->ISACencLB_obj.buffer_index = 0;
-  instLB->ISACencLB_obj.frame_nb = 0;
-  /* Default for I-mode. */
-  instLB->ISACencLB_obj.bottleneck = 32000;
-  instLB->ISACencLB_obj.current_framesamples = 0;
-  instLB->ISACencLB_obj.s2nr = 0;
-  instLB->ISACencLB_obj.payloadLimitBytes30 = STREAM_SIZE_MAX_30;
-  instLB->ISACencLB_obj.payloadLimitBytes60 = STREAM_SIZE_MAX_60;
-  instLB->ISACencLB_obj.maxPayloadBytes = STREAM_SIZE_MAX_60;
-  instLB->ISACencLB_obj.maxRateInBytes = STREAM_SIZE_MAX_30;
-  instLB->ISACencLB_obj.enforceFrameSize = 0;
-  /* Invalid value prevents getRedPayload to
-     run before encoder is called. */
-  instLB->ISACencLB_obj.lastBWIdx            = -1;
-  return statusInit;
-}
-
-static int16_t EncoderInitUb(ISACUBStruct* instUB,
-                             int16_t bandwidth) {
-  int16_t statusInit = 0;
-  int k;
-
-  /* Init stream vector to zero. */
-  for (k = 0; k < STREAM_SIZE_MAX_60; k++) {
-    instUB->ISACencUB_obj.bitstr_obj.stream[k] = 0;
-  }
-
-  WebRtcIsac_InitMasking(&instUB->ISACencUB_obj.maskfiltstr_obj);
-  WebRtcIsac_InitPreFilterbank(&instUB->ISACencUB_obj.prefiltbankstr_obj);
-
-  if (bandwidth == isac16kHz) {
-    instUB->ISACencUB_obj.buffer_index = LB_TOTAL_DELAY_SAMPLES;
-  } else {
-    instUB->ISACencUB_obj.buffer_index = 0;
-  }
-  /* Default for I-mode. */
-  instUB->ISACencUB_obj.bottleneck = 32000;
-  /* These store the limits for the wideband + super-wideband bit-stream. */
-  instUB->ISACencUB_obj.maxPayloadSizeBytes = STREAM_SIZE_MAX_30 << 1;
-  /* This has to be updated after each lower-band encoding to guarantee
-   * a correct payload-limitation. */
-  instUB->ISACencUB_obj.numBytesUsed = 0;
-  memset(instUB->ISACencUB_obj.data_buffer_float, 0,
-         (MAX_FRAMESAMPLES + LB_TOTAL_DELAY_SAMPLES) * sizeof(float));
-
-  memcpy(&(instUB->ISACencUB_obj.lastLPCVec),
-         WebRtcIsac_kMeanLarUb16, sizeof(double) * UB_LPC_ORDER);
-
-  return statusInit;
-}
-
-
-int16_t WebRtcIsac_EncoderInit(ISACStruct* ISAC_main_inst,
-                               int16_t codingMode) {
-  ISACMainStruct* instISAC = (ISACMainStruct*)ISAC_main_inst;
-  int16_t status;
-
-  if ((codingMode != 0) && (codingMode != 1)) {
-    instISAC->errorCode = ISAC_DISALLOWED_CODING_MODE;
-    return -1;
-  }
-  /* Default bottleneck. */
-  instISAC->bottleneck = MAX_ISAC_BW;
-
-  if (instISAC->encoderSamplingRateKHz == kIsacWideband) {
-    instISAC->bandwidthKHz = isac8kHz;
-    instISAC->maxPayloadSizeBytes = STREAM_SIZE_MAX_60;
-    instISAC->maxRateBytesPer30Ms = STREAM_SIZE_MAX_30;
-  } else {
-    instISAC->bandwidthKHz = isac16kHz;
-    instISAC->maxPayloadSizeBytes = STREAM_SIZE_MAX;
-    instISAC->maxRateBytesPer30Ms = STREAM_SIZE_MAX;
-  }
-
-  /* Channel-adaptive = 0; Instantaneous (Channel-independent) = 1. */
-  instISAC->codingMode = codingMode;
-
-  WebRtcIsac_InitBandwidthEstimator(&instISAC->bwestimator_obj,
-                                    instISAC->encoderSamplingRateKHz,
-                                    instISAC->decoderSamplingRateKHz);
-
-  WebRtcIsac_InitRateModel(&instISAC->rate_data_obj);
-  /* Default for I-mode. */
-  instISAC->MaxDelay = 10.0;
-
-  status = EncoderInitLb(&instISAC->instLB, codingMode,
-                         instISAC->encoderSamplingRateKHz);
-  if (status < 0) {
-    instISAC->errorCode = -status;
-    return -1;
-  }
-
-  if (instISAC->encoderSamplingRateKHz == kIsacSuperWideband) {
-    /* Initialize encoder filter-bank. */
-    memset(instISAC->analysisFBState1, 0,
-           FB_STATE_SIZE_WORD32 * sizeof(int32_t));
-    memset(instISAC->analysisFBState2, 0,
-           FB_STATE_SIZE_WORD32 * sizeof(int32_t));
-
-    status = EncoderInitUb(&(instISAC->instUB),
-                           instISAC->bandwidthKHz);
-    if (status < 0) {
-      instISAC->errorCode = -status;
-      return -1;
-    }
-  }
-  /* Initialization is successful, set the flag. */
-  instISAC->initFlag |= BIT_MASK_ENC_INIT;
-  return 0;
-}
-
-
-/****************************************************************************
- * WebRtcIsac_Encode(...)
- *
- * This function encodes 10ms frame(s) and inserts it into a package.
- * Input speech length has to be 160 samples (10ms). The encoder buffers those
- * 10ms frames until it reaches the chosen Framesize (480 or 960 samples
- * corresponding to 30 or 60 ms frames), and then proceeds to the encoding.
- *
- * Input:
- *        - ISAC_main_inst    : ISAC instance.
- *        - speechIn          : input speech vector.
- *
- * Output:
- *        - encoded           : the encoded data vector
- *
- * Return value:
- *                            : >0 - Length (in bytes) of coded data
- *                            :  0 - The buffer didn't reach the chosen
- *                                  frameSize so it keeps buffering speech
- *                                 samples.
- *                            : -1 - Error
- */
-int WebRtcIsac_Encode(ISACStruct* ISAC_main_inst,
-                      const int16_t* speechIn,
-                      uint8_t* encoded) {
-  float inFrame[FRAMESAMPLES_10ms];
-  int16_t speechInLB[FRAMESAMPLES_10ms];
-  int16_t speechInUB[FRAMESAMPLES_10ms];
-  int streamLenLB = 0;
-  int streamLenUB = 0;
-  int streamLen = 0;
-  size_t k = 0;
-  uint8_t garbageLen = 0;
-  int32_t bottleneck = 0;
-  int16_t bottleneckIdx = 0;
-  int16_t jitterInfo = 0;
-
-  ISACMainStruct* instISAC = (ISACMainStruct*)ISAC_main_inst;
-  ISACLBStruct* instLB = &(instISAC->instLB);
-  ISACUBStruct* instUB = &(instISAC->instUB);
-
-  /* Check if encoder initiated. */
-  if ((instISAC->initFlag & BIT_MASK_ENC_INIT) !=
-      BIT_MASK_ENC_INIT) {
-    instISAC->errorCode = ISAC_ENCODER_NOT_INITIATED;
-    return -1;
-  }
-
-  if (instISAC->encoderSamplingRateKHz == kIsacSuperWideband) {
-    WebRtcSpl_AnalysisQMF(speechIn, SWBFRAMESAMPLES_10ms, speechInLB,
-                          speechInUB, instISAC->analysisFBState1,
-                          instISAC->analysisFBState2);
-
-    /* Convert from fixed to floating point. */
-    for (k = 0; k < FRAMESAMPLES_10ms; k++) {
-      inFrame[k] = (float)speechInLB[k];
-    }
-  } else {
-    for (k = 0; k < FRAMESAMPLES_10ms; k++) {
-      inFrame[k] = (float) speechIn[k];
-    }
-  }
-
-  /* Add some noise to avoid denormal numbers. */
-  inFrame[0] += (float)1.23455334e-3;
-  inFrame[1] -= (float)2.04324239e-3;
-  inFrame[2] += (float)1.90854954e-3;
-  inFrame[9] += (float)1.84854878e-3;
-
-  /* This function will update the bottleneck if required. */
-  UpdateBottleneck(instISAC);
-
-  /* Get the bandwith information which has to be sent to the other side. */
-  GetSendBandwidthInfo(instISAC, &bottleneckIdx, &jitterInfo);
-
-  /* Encode lower-band. */
-  streamLenLB = WebRtcIsac_EncodeLb(&instISAC->transform_tables,
-                                    inFrame, &instLB->ISACencLB_obj,
-                                    instISAC->codingMode, bottleneckIdx);
-  if (streamLenLB < 0) {
-    return -1;
-  }
-
-  if (instISAC->encoderSamplingRateKHz == kIsacSuperWideband) {
-    instUB = &(instISAC->instUB);
-
-    /* Convert to float. */
-    for (k = 0; k < FRAMESAMPLES_10ms; k++) {
-      inFrame[k] = (float) speechInUB[k];
-    }
-
-    /* Add some noise to avoid denormal numbers. */
-    inFrame[0] += (float)1.23455334e-3;
-    inFrame[1] -= (float)2.04324239e-3;
-    inFrame[2] += (float)1.90854954e-3;
-    inFrame[9] += (float)1.84854878e-3;
-
-    /* Tell to upper-band the number of bytes used so far.
-     * This is for payload limitation. */
-    instUB->ISACencUB_obj.numBytesUsed =
-        (int16_t)(streamLenLB + 1 + LEN_CHECK_SUM_WORD8);
-    /* Encode upper-band. */
-    switch (instISAC->bandwidthKHz) {
-      case isac12kHz: {
-        streamLenUB = WebRtcIsac_EncodeUb12(&instISAC->transform_tables,
-                                            inFrame, &instUB->ISACencUB_obj,
-                                            jitterInfo);
-        break;
-      }
-      case isac16kHz: {
-        streamLenUB = WebRtcIsac_EncodeUb16(&instISAC->transform_tables,
-                                            inFrame, &instUB->ISACencUB_obj,
-                                            jitterInfo);
-        break;
-      }
-      case isac8kHz: {
-        streamLenUB = 0;
-        break;
-      }
-    }
-
-    if ((streamLenUB < 0) && (streamLenUB != -ISAC_PAYLOAD_LARGER_THAN_LIMIT)) {
-      /* An error has happened but this is not the error due to a
-       * bit-stream larger than the limit. */
-      return -1;
-    }
-
-    if (streamLenLB == 0) {
-      return 0;
-    }
-
-    /* One byte is allocated for the length. According to older decoders
-       so the length bit-stream plus one byte for size and
-       LEN_CHECK_SUM_WORD8 for the checksum should be less than or equal
-       to 255. */
-    if ((streamLenUB > (255 - (LEN_CHECK_SUM_WORD8 + 1))) ||
-        (streamLenUB == -ISAC_PAYLOAD_LARGER_THAN_LIMIT)) {
-      /* We have got a too long bit-stream we skip the upper-band
-       * bit-stream for this frame. */
-      streamLenUB = 0;
-    }
-
-    memcpy(encoded, instLB->ISACencLB_obj.bitstr_obj.stream, streamLenLB);
-    streamLen = streamLenLB;
-    if (streamLenUB > 0) {
-      encoded[streamLenLB] = (uint8_t)(streamLenUB + 1 + LEN_CHECK_SUM_WORD8);
-      memcpy(&encoded[streamLenLB + 1],
-             instUB->ISACencUB_obj.bitstr_obj.stream,
-             streamLenUB);
-      streamLen += encoded[streamLenLB];
-    } else {
-      encoded[streamLenLB] = 0;
-    }
-  } else {
-    if (streamLenLB == 0) {
-      return 0;
-    }
-    memcpy(encoded, instLB->ISACencLB_obj.bitstr_obj.stream, streamLenLB);
-    streamLenUB = 0;
-    streamLen = streamLenLB;
-  }
-
-  /* Add Garbage if required. */
-  bottleneck = WebRtcIsac_GetUplinkBandwidth(&instISAC->bwestimator_obj);
-  if (instISAC->codingMode == 0) {
-    int minBytes;
-    int limit;
-    uint8_t* ptrGarbage;
-
-    instISAC->MaxDelay = (double)WebRtcIsac_GetUplinkMaxDelay(
-                           &instISAC->bwestimator_obj);
-
-    /* Update rate model and get minimum number of bytes in this packet. */
-    minBytes = WebRtcIsac_GetMinBytes(
-        &(instISAC->rate_data_obj), streamLen,
-        instISAC->instLB.ISACencLB_obj.current_framesamples, bottleneck,
-        instISAC->MaxDelay, instISAC->bandwidthKHz);
-
-    /* Make sure MinBytes does not exceed packet size limit. */
-    if (instISAC->bandwidthKHz == isac8kHz) {
-      if (instLB->ISACencLB_obj.current_framesamples == FRAMESAMPLES) {
-        limit = instLB->ISACencLB_obj.payloadLimitBytes30;
-      } else {
-        limit = instLB->ISACencLB_obj.payloadLimitBytes60;
-      }
-    } else {
-      limit = instUB->ISACencUB_obj.maxPayloadSizeBytes;
-    }
-    minBytes = (minBytes > limit) ? limit : minBytes;
-
-    /* Make sure we don't allow more than 255 bytes of garbage data.
-     * We store the length of the garbage data in 8 bits in the bitstream,
-     * 255 is the max garbage length we can signal using 8 bits. */
-    if ((instISAC->bandwidthKHz == isac8kHz) ||
-        (streamLenUB == 0)) {
-      ptrGarbage = &encoded[streamLenLB];
-      limit = streamLen + 255;
-    } else {
-      ptrGarbage = &encoded[streamLenLB + 1 + streamLenUB];
-      limit = streamLen + (255 - encoded[streamLenLB]);
-    }
-    minBytes = (minBytes > limit) ? limit : minBytes;
-
-    garbageLen = (minBytes > streamLen) ? (uint8_t)(minBytes - streamLen) : 0;
-
-    /* Save data for creation of multiple bit-streams. */
-    /* If bit-stream too short then add garbage at the end. */
-    if (garbageLen > 0) {
-      /* Overwrite the garbage area to avoid leaking possibly sensitive data
-         over the network. This also makes the output deterministic. */
-      memset(ptrGarbage, 0, garbageLen);
-
-      /* For a correct length of the upper-band bit-stream together
-       * with the garbage. Garbage is embeded in upper-band bit-stream.
-       * That is the only way to preserve backward compatibility. */
-      if ((instISAC->bandwidthKHz == isac8kHz) ||
-          (streamLenUB == 0)) {
-        encoded[streamLenLB] = garbageLen;
-      } else {
-        encoded[streamLenLB] += garbageLen;
-        /* Write the length of the garbage at the end of the upper-band
-         *  bit-stream, if exists. This helps for sanity check. */
-        encoded[streamLenLB + 1 + streamLenUB] = garbageLen;
-
-      }
-      streamLen += garbageLen;
-    }
-  } else {
-    /* update rate model */
-    WebRtcIsac_UpdateRateModel(
-        &instISAC->rate_data_obj, streamLen,
-        instISAC->instLB.ISACencLB_obj.current_framesamples, bottleneck);
-    garbageLen = 0;
-  }
-
-  /* Generate CRC if required. */
-  if ((instISAC->bandwidthKHz != isac8kHz) && (streamLenUB > 0)) {
-    uint32_t crc;
-
-    WebRtcIsac_GetCrc((int16_t*)(&(encoded[streamLenLB + 1])),
-                      streamLenUB + garbageLen, &crc);
-#ifndef WEBRTC_ARCH_BIG_ENDIAN
-    for (k = 0; k < LEN_CHECK_SUM_WORD8; k++) {
-      encoded[streamLen - LEN_CHECK_SUM_WORD8 + k] =
-          (uint8_t)(crc >> (24 - k * 8));
-    }
-#else
-    memcpy(&encoded[streamLenLB + streamLenUB + 1], &crc, LEN_CHECK_SUM_WORD8);
-#endif
-  }
-  return streamLen;
-}
-
-
-/******************************************************************************
- * WebRtcIsac_GetNewBitStream(...)
- *
- * This function returns encoded data, with the received bwe-index in the
- * stream. If the rate is set to a value less than bottleneck of codec
- * the new bistream will be re-encoded with the given target rate.
- * It should always return a complete packet, i.e. only called once
- * even for 60 msec frames.
- *
- * NOTE 1! This function does not write in the ISACStruct, it is not allowed.
- * NOTE 2! Rates larger than the bottleneck of the codec will be limited
- *         to the current bottleneck.
- *
- * Input:
- *        - ISAC_main_inst    : ISAC instance.
- *        - bweIndex          : Index of bandwidth estimate to put in new
- *                              bitstream
- *        - rate              : target rate of the transcoder is bits/sec.
- *                              Valid values are the accepted rate in iSAC,
- *                              i.e. 10000 to 56000.
- *
- * Output:
- *        - encoded           : The encoded data vector
- *
- * Return value               : >0 - Length (in bytes) of coded data
- *                              -1 - Error  or called in SWB mode
- *                                 NOTE! No error code is written to
- *                                 the struct since it is only allowed to read
- *                                 the struct.
- */
-int16_t WebRtcIsac_GetNewBitStream(ISACStruct*  ISAC_main_inst,
-                                   int16_t  bweIndex,
-                                   int16_t  jitterInfo,
-                                   int32_t  rate,
-                                   uint8_t* encoded,
-                                   int16_t  isRCU) {
-  Bitstr iSACBitStreamInst;   /* Local struct for bitstream handling */
-  int16_t streamLenLB;
-  int16_t streamLenUB;
-  int16_t totalStreamLen;
-  double gain2;
-  double gain1;
-  float scale;
-  enum ISACBandwidth bandwidthKHz;
-  double rateLB;
-  double rateUB;
-  int32_t currentBN;
-  uint32_t crc;
-#ifndef WEBRTC_ARCH_BIG_ENDIAN
-  int16_t  k;
-#endif
-  ISACMainStruct* instISAC = (ISACMainStruct*)ISAC_main_inst;
-
-  if ((instISAC->initFlag & BIT_MASK_ENC_INIT) !=
-      BIT_MASK_ENC_INIT) {
-    return -1;
-  }
-
-  /* Get the bottleneck of this iSAC and limit the
-   * given rate to the current bottleneck. */
-  WebRtcIsac_GetUplinkBw(ISAC_main_inst, &currentBN);
-  if (rate > currentBN) {
-    rate = currentBN;
-  }
-
-  if (WebRtcIsac_RateAllocation(rate, &rateLB, &rateUB, &bandwidthKHz) < 0) {
-    return -1;
-  }
-
-  /* Cannot transcode from 16 kHz to 12 kHz. */
-  if ((bandwidthKHz == isac12kHz) &&
-      (instISAC->bandwidthKHz == isac16kHz)) {
-    return -1;
-  }
-
-  /* A gain [dB] for the given rate. */
-  gain1 = WebRtcIsac_GetSnr(
-      rateLB, instISAC->instLB.ISACencLB_obj.current_framesamples);
-  /* The gain [dB] of this iSAC. */
-  gain2 = WebRtcIsac_GetSnr(
-      instISAC->instLB.ISACencLB_obj.bottleneck,
-      instISAC->instLB.ISACencLB_obj.current_framesamples);
-
-  /* Scale is the ratio of two gains in normal domain. */
-  scale = (float)pow(10, (gain1 - gain2) / 20.0);
-  /* Change the scale if this is a RCU bit-stream. */
-  scale = (isRCU) ? (scale * RCU_TRANSCODING_SCALE) : scale;
-
-  streamLenLB = WebRtcIsac_EncodeStoredDataLb(
-                  &instISAC->instLB.ISACencLB_obj.SaveEnc_obj,
-                  &iSACBitStreamInst, bweIndex, scale);
-
-  if (streamLenLB < 0) {
-    return -1;
-  }
-
-  /* Convert from bytes to int16_t. */
-  memcpy(encoded, iSACBitStreamInst.stream, streamLenLB);
-
-  if (bandwidthKHz == isac8kHz) {
-    return streamLenLB;
-  }
-
-  totalStreamLen = streamLenLB;
-  /* super-wideband is always at 30ms.
-   * These gains are in dB.
-   * Gain for the given rate. */
-  gain1 = WebRtcIsac_GetSnr(rateUB, FRAMESAMPLES);
-  /* Gain of this iSAC */
-  gain2 = WebRtcIsac_GetSnr(instISAC->instUB.ISACencUB_obj.bottleneck,
-                            FRAMESAMPLES);
-
-  /* Scale is the ratio of two gains in normal domain. */
-  scale = (float)pow(10, (gain1 - gain2) / 20.0);
-
-  /* Change the scale if this is a RCU bit-stream. */
-  scale = (isRCU)? (scale * RCU_TRANSCODING_SCALE_UB) : scale;
-
-  streamLenUB = WebRtcIsac_EncodeStoredDataUb(
-                  &(instISAC->instUB.ISACencUB_obj.SaveEnc_obj),
-                  &iSACBitStreamInst, jitterInfo, scale,
-                  instISAC->bandwidthKHz);
-
-  if (streamLenUB < 0) {
-    return -1;
-  }
-
-  if (streamLenUB + 1 + LEN_CHECK_SUM_WORD8 > 255) {
-    return streamLenLB;
-  }
-
-  totalStreamLen = streamLenLB + streamLenUB + 1 + LEN_CHECK_SUM_WORD8;
-  encoded[streamLenLB] = streamLenUB + 1 + LEN_CHECK_SUM_WORD8;
-
-  memcpy(&encoded[streamLenLB + 1], iSACBitStreamInst.stream,
-         streamLenUB);
-
-  WebRtcIsac_GetCrc((int16_t*)(&(encoded[streamLenLB + 1])),
-                    streamLenUB, &crc);
-#ifndef WEBRTC_ARCH_BIG_ENDIAN
-  for (k = 0; k < LEN_CHECK_SUM_WORD8; k++) {
-    encoded[totalStreamLen - LEN_CHECK_SUM_WORD8 + k] =
-      (uint8_t)((crc >> (24 - k * 8)) & 0xFF);
-  }
-#else
-  memcpy(&encoded[streamLenLB + streamLenUB + 1], &crc,
-         LEN_CHECK_SUM_WORD8);
-#endif
-  return totalStreamLen;
-}
-
-
-/****************************************************************************
- * DecoderInitLb(...) - internal function for initialization of
- *                                Lower Band
- * DecoderInitUb(...) - internal function for initialization of
- *                                Upper Band
- * WebRtcIsac_DecoderInit(...) - API function
- *
- * This function initializes a ISAC instance prior to the decoder calls.
- *
- * Input:
- *        - ISAC_main_inst    : ISAC instance.
- */
-static void DecoderInitLb(ISACLBStruct* instISAC) {
-  int i;
-  /* Initialize stream vector to zero. */
-  for (i = 0; i < STREAM_SIZE_MAX_60; i++) {
-    instISAC->ISACdecLB_obj.bitstr_obj.stream[i] = 0;
-  }
-
-  WebRtcIsac_InitMasking(&instISAC->ISACdecLB_obj.maskfiltstr_obj);
-  WebRtcIsac_InitPostFilterbank(
-    &instISAC->ISACdecLB_obj.postfiltbankstr_obj);
-  WebRtcIsac_InitPitchFilter(&instISAC->ISACdecLB_obj.pitchfiltstr_obj);
-}
-
-static void DecoderInitUb(ISACUBStruct* instISAC) {
-  int i;
-  /* Init stream vector to zero */
-  for (i = 0; i < STREAM_SIZE_MAX_60; i++) {
-    instISAC->ISACdecUB_obj.bitstr_obj.stream[i] = 0;
-  }
-
-  WebRtcIsac_InitMasking(&instISAC->ISACdecUB_obj.maskfiltstr_obj);
-  WebRtcIsac_InitPostFilterbank(
-    &instISAC->ISACdecUB_obj.postfiltbankstr_obj);
-}
-
-void WebRtcIsac_DecoderInit(ISACStruct* ISAC_main_inst) {
-  ISACMainStruct* instISAC = (ISACMainStruct*)ISAC_main_inst;
-
-  DecoderInitLb(&instISAC->instLB);
-  if (instISAC->decoderSamplingRateKHz == kIsacSuperWideband) {
-    memset(instISAC->synthesisFBState1, 0,
-           FB_STATE_SIZE_WORD32 * sizeof(int32_t));
-    memset(instISAC->synthesisFBState2, 0,
-           FB_STATE_SIZE_WORD32 * sizeof(int32_t));
-    DecoderInitUb(&(instISAC->instUB));
-  }
-  if ((instISAC->initFlag & BIT_MASK_ENC_INIT) != BIT_MASK_ENC_INIT) {
-    WebRtcIsac_InitBandwidthEstimator(&instISAC->bwestimator_obj,
-                                      instISAC->encoderSamplingRateKHz,
-                                      instISAC->decoderSamplingRateKHz);
-  }
-  instISAC->initFlag |= BIT_MASK_DEC_INIT;
-  instISAC->resetFlag_8kHz = 0;
-}
-
-
-/****************************************************************************
- * WebRtcIsac_UpdateBwEstimate(...)
- *
- * This function updates the estimate of the bandwidth.
- *
- * NOTE:
- * The estimates of bandwidth is not valid if the sample rate of the far-end
- * encoder is set to 48 kHz and send timestamps are increamented according to
- * 48 kHz sampling rate.
- *
- * Input:
- *        - ISAC_main_inst    : ISAC instance.
- *        - encoded           : encoded ISAC frame(s).
- *        - packet_size       : size of the packet.
- *        - rtp_seq_number    : the RTP number of the packet.
- *        - arr_ts            : the arrival time of the packet (from NetEq)
- *                              in samples.
- *
- * Return value               :  0 - Ok
- *                              -1 - Error
- */
-int16_t WebRtcIsac_UpdateBwEstimate(ISACStruct* ISAC_main_inst,
-                                    const uint8_t* encoded,
-                                    size_t packet_size,
-                                    uint16_t rtp_seq_number,
-                                    uint32_t send_ts,
-                                    uint32_t arr_ts) {
-  ISACMainStruct* instISAC = (ISACMainStruct*)ISAC_main_inst;
-  Bitstr streamdata;
-#ifndef WEBRTC_ARCH_BIG_ENDIAN
-  int k;
-#endif
-  int16_t err;
-
-  /* Check if decoder initiated. */
-  if ((instISAC->initFlag & BIT_MASK_DEC_INIT) != BIT_MASK_DEC_INIT) {
-    instISAC->errorCode = ISAC_DECODER_NOT_INITIATED;
-    return -1;
-  }
-
-  /* Check that the size of the packet is valid, and if not return without
-   * updating the bandwidth estimate. A valid size is at least 10 bytes. */
-  if (packet_size < 10) {
-    /* Return error code if the packet length is null. */
-    instISAC->errorCode = ISAC_EMPTY_PACKET;
-    return -1;
-  }
-
-  WebRtcIsac_ResetBitstream(&(streamdata));
-
-#ifndef WEBRTC_ARCH_BIG_ENDIAN
-  for (k = 0; k < 10; k++) {
-    uint16_t ek = ((const uint16_t*)encoded)[k >> 1];
-    streamdata.stream[k] = (uint8_t)((ek >> ((k & 1) << 3)) & 0xff);
-  }
-#else
-  memcpy(streamdata.stream, encoded, 10);
-#endif
-
-  err = WebRtcIsac_EstimateBandwidth(&instISAC->bwestimator_obj, &streamdata,
-                                     packet_size, rtp_seq_number, send_ts,
-                                     arr_ts, instISAC->encoderSamplingRateKHz,
-                                     instISAC->decoderSamplingRateKHz);
-  if (err < 0) {
-    /* Return error code if something went wrong. */
-    instISAC->errorCode = -err;
-    return -1;
-  }
-  return 0;
-}
-
-static int Decode(ISACStruct* ISAC_main_inst,
-                  const uint8_t* encoded,
-                  size_t lenEncodedBytes,
-                  int16_t* decoded,
-                  int16_t* speechType,
-                  int16_t isRCUPayload) {
-  /* Number of samples (480 or 960), output from decoder
-     that were actually used in the encoder/decoder
-     (determined on the fly). */
-  int16_t numSamplesLB;
-  int16_t numSamplesUB;
-  int16_t speechIdx;
-  float outFrame[MAX_FRAMESAMPLES];
-  int16_t outFrameLB[MAX_FRAMESAMPLES];
-  int16_t outFrameUB[MAX_FRAMESAMPLES];
-  int numDecodedBytesLBint;
-  size_t numDecodedBytesLB;
-  int numDecodedBytesUB;
-  size_t lenEncodedLBBytes;
-  int16_t validChecksum = 1;
-  int16_t k;
-  uint16_t numLayer;
-  size_t totSizeBytes;
-  int16_t err;
-
-  ISACMainStruct* instISAC = (ISACMainStruct*)ISAC_main_inst;
-  ISACUBDecStruct* decInstUB = &(instISAC->instUB.ISACdecUB_obj);
-  ISACLBDecStruct* decInstLB = &(instISAC->instLB.ISACdecLB_obj);
-
-  /* Check if decoder initiated. */
-  if ((instISAC->initFlag & BIT_MASK_DEC_INIT) !=
-      BIT_MASK_DEC_INIT) {
-    instISAC->errorCode = ISAC_DECODER_NOT_INITIATED;
-    return -1;
-  }
-
-  if (lenEncodedBytes == 0) {
-    /* return error code if the packet length is null. */
-    instISAC->errorCode = ISAC_EMPTY_PACKET;
-    return -1;
-  }
-
-  /* The size of the encoded lower-band is bounded by
-   * STREAM_SIZE_MAX. If a payload with the size larger than STREAM_SIZE_MAX
-   * is received, it is not considered erroneous. */
-  lenEncodedLBBytes = (lenEncodedBytes > STREAM_SIZE_MAX) ?
-      STREAM_SIZE_MAX : lenEncodedBytes;
-
-  /* Copy to lower-band bit-stream structure. */
-  memcpy(instISAC->instLB.ISACdecLB_obj.bitstr_obj.stream, encoded,
-         lenEncodedLBBytes);
-
-  /* We need to initialize numSamplesLB to something; otherwise, in the test
-     for whether we should return -1 below, the compiler might generate code
-     that fools Memcheck (Valgrind) into thinking that the control flow depends
-     on the uninitialized value in numSamplesLB (since WebRtcIsac_DecodeLb will
-     not fill it in if it fails and returns -1). */
-  numSamplesLB = 0;
-
-  /* Regardless of that the current codec is setup to work in
-   * wideband or super-wideband, the decoding of the lower-band
-   * has to be performed. */
-  numDecodedBytesLBint = WebRtcIsac_DecodeLb(&instISAC->transform_tables,
-                                             outFrame, decInstLB,
-                                             &numSamplesLB, isRCUPayload);
-  numDecodedBytesLB = (size_t)numDecodedBytesLBint;
-  if ((numDecodedBytesLBint < 0) ||
-      (numDecodedBytesLB > lenEncodedLBBytes) ||
-      (numSamplesLB > MAX_FRAMESAMPLES)) {
-    instISAC->errorCode = ISAC_LENGTH_MISMATCH;
-    return -1;
-  }
-
-  /* Error Check, we accept multi-layer bit-stream This will limit number
-   * of iterations of the while loop. Even without this the number
-   * of iterations is limited. */
-  numLayer = 1;
-  totSizeBytes = numDecodedBytesLB;
-  while (totSizeBytes != lenEncodedBytes) {
-    if ((totSizeBytes > lenEncodedBytes) ||
-        (encoded[totSizeBytes] == 0) ||
-        (numLayer > MAX_NUM_LAYERS)) {
-      instISAC->errorCode = ISAC_LENGTH_MISMATCH;
-      return -1;
-    }
-    totSizeBytes += encoded[totSizeBytes];
-    numLayer++;
-  }
-
-  if (instISAC->decoderSamplingRateKHz == kIsacWideband) {
-    for (k = 0; k < numSamplesLB; k++) {
-      if (outFrame[k] > 32767) {
-        decoded[k] = 32767;
-      } else if (outFrame[k] < -32768) {
-        decoded[k] = -32768;
-      } else {
-        decoded[k] = (int16_t)WebRtcIsac_lrint(outFrame[k]);
-      }
-    }
-    numSamplesUB = 0;
-  } else {
-    uint32_t crc;
-    /* We don't accept larger than 30ms (480 samples at lower-band)
-     * frame-size. */
-    for (k = 0; k < numSamplesLB; k++) {
-      if (outFrame[k] > 32767) {
-        outFrameLB[k] = 32767;
-      } else if (outFrame[k] < -32768) {
-        outFrameLB[k] = -32768;
-      } else {
-        outFrameLB[k] = (int16_t)WebRtcIsac_lrint(outFrame[k]);
-      }
-    }
-
-    /* Check for possible error, and if upper-band stream exists. */
-    if (numDecodedBytesLB == lenEncodedBytes) {
-      /* Decoding was successful. No super-wideband bit-stream exists. */
-      numSamplesUB = numSamplesLB;
-      memset(outFrameUB, 0, sizeof(int16_t) *  numSamplesUB);
-
-      /* Prepare for the potential increase of signal bandwidth. */
-      instISAC->resetFlag_8kHz = 2;
-    } else {
-      /* This includes the checksum and the bytes that stores the length. */
-      int16_t lenNextStream = encoded[numDecodedBytesLB];
-
-      /* Is this garbage or valid super-wideband bit-stream?
-       * Check if checksum is valid. */
-      if (lenNextStream <= (LEN_CHECK_SUM_WORD8 + 1)) {
-        /* Such a small second layer cannot be super-wideband layer.
-         * It must be a short garbage. */
-        validChecksum = 0;
-      } else {
-        /* Run CRC to see if the checksum match. */
-        WebRtcIsac_GetCrc((int16_t*)(&encoded[numDecodedBytesLB + 1]),
-                          lenNextStream - LEN_CHECK_SUM_WORD8 - 1, &crc);
-
-        validChecksum = 1;
-        for (k = 0; k < LEN_CHECK_SUM_WORD8; k++) {
-          validChecksum &= (((crc >> (24 - k * 8)) & 0xFF) ==
-                            encoded[numDecodedBytesLB + lenNextStream -
-                                          LEN_CHECK_SUM_WORD8 + k]);
-        }
-      }
-
-      if (!validChecksum) {
-        /* This is a garbage, we have received a wideband
-         * bit-stream with garbage. */
-        numSamplesUB = numSamplesLB;
-        memset(outFrameUB, 0, sizeof(int16_t) * numSamplesUB);
-      } else {
-        /* A valid super-wideband biststream exists. */
-        enum ISACBandwidth bandwidthKHz;
-        int32_t maxDelayBit;
-
-        /* If we have super-wideband bit-stream, we cannot
-         * have 60 ms frame-size. */
-        if (numSamplesLB > FRAMESAMPLES) {
-          instISAC->errorCode = ISAC_LENGTH_MISMATCH;
-          return -1;
-        }
-
-        /* The rest of the bit-stream contains the upper-band
-         * bit-stream curently this is the only thing there,
-         * however, we might add more layers. */
-
-        /* Have to exclude one byte where the length is stored
-         * and last 'LEN_CHECK_SUM_WORD8' bytes where the
-         * checksum is stored. */
-        lenNextStream -= (LEN_CHECK_SUM_WORD8 + 1);
-
-        memcpy(decInstUB->bitstr_obj.stream,
-               &encoded[numDecodedBytesLB + 1], lenNextStream);
-
-        /* Reset bit-stream object, this is the first decoding. */
-        WebRtcIsac_ResetBitstream(&(decInstUB->bitstr_obj));
-
-        /* Decode jitter information. */
-        err = WebRtcIsac_DecodeJitterInfo(&decInstUB->bitstr_obj, &maxDelayBit);
-        if (err < 0) {
-          instISAC->errorCode = -err;
-          return -1;
-        }
-
-        /* Update jitter info which is in the upper-band bit-stream
-         * only if the encoder is in super-wideband. Otherwise,
-         * the jitter info is already embedded in bandwidth index
-         * and has been updated. */
-        if (instISAC->encoderSamplingRateKHz == kIsacSuperWideband) {
-          err = WebRtcIsac_UpdateUplinkJitter(
-                  &(instISAC->bwestimator_obj), maxDelayBit);
-          if (err < 0) {
-            instISAC->errorCode = -err;
-            return -1;
-          }
-        }
-
-        /* Decode bandwidth information. */
-        err = WebRtcIsac_DecodeBandwidth(&decInstUB->bitstr_obj,
-                                         &bandwidthKHz);
-        if (err < 0) {
-          instISAC->errorCode = -err;
-          return -1;
-        }
-
-        switch (bandwidthKHz) {
-          case isac12kHz: {
-            numDecodedBytesUB = WebRtcIsac_DecodeUb12(
-                &instISAC->transform_tables, outFrame, decInstUB, isRCUPayload);
-
-            /* Hang-over for transient alleviation -
-             * wait two frames to add the upper band going up from 8 kHz. */
-            if (instISAC->resetFlag_8kHz > 0) {
-              if (instISAC->resetFlag_8kHz == 2) {
-                /* Silence first and a half frame. */
-                memset(outFrame, 0, MAX_FRAMESAMPLES *
-                       sizeof(float));
-              } else {
-                const float rampStep = 2.0f / MAX_FRAMESAMPLES;
-                float rampVal = 0;
-                memset(outFrame, 0, (MAX_FRAMESAMPLES >> 1) *
-                       sizeof(float));
-
-                /* Ramp up second half of second frame. */
-                for (k = MAX_FRAMESAMPLES / 2; k < MAX_FRAMESAMPLES; k++) {
-                  outFrame[k] *= rampVal;
-                  rampVal += rampStep;
-                }
-              }
-              instISAC->resetFlag_8kHz -= 1;
-            }
-
-            break;
-          }
-          case isac16kHz: {
-            numDecodedBytesUB = WebRtcIsac_DecodeUb16(
-                &instISAC->transform_tables, outFrame, decInstUB, isRCUPayload);
-            break;
-          }
-          default:
-            return -1;
-        }
-
-        if (numDecodedBytesUB < 0) {
-          instISAC->errorCode = numDecodedBytesUB;
-          return -1;
-        }
-        if (numDecodedBytesLB + numDecodedBytesUB > lenEncodedBytes) {
-          // We have supposedly decoded more bytes than we were given. Likely
-          // caused by bad input data.
-          instISAC->errorCode = ISAC_LENGTH_MISMATCH;
-          return -1;
-        }
-
-        /* It might be less due to garbage. */
-        if ((numDecodedBytesUB != lenNextStream) &&
-            (numDecodedBytesLB + 1 + numDecodedBytesUB >= lenEncodedBytes ||
-             numDecodedBytesUB !=
-                 (lenNextStream -
-                  encoded[numDecodedBytesLB + 1 + numDecodedBytesUB]))) {
-          instISAC->errorCode = ISAC_LENGTH_MISMATCH;
-          return -1;
-        }
-
-        /* If there is no error Upper-band always decodes
-         * 30 ms (480 samples). */
-        numSamplesUB = FRAMESAMPLES;
-
-        /* Convert to W16. */
-        for (k = 0; k < numSamplesUB; k++) {
-          if (outFrame[k] > 32767) {
-            outFrameUB[k] = 32767;
-          } else if (outFrame[k] < -32768) {
-            outFrameUB[k] = -32768;
-          } else {
-            outFrameUB[k] = (int16_t)WebRtcIsac_lrint(
-                              outFrame[k]);
-          }
-        }
-      }
-    }
-
-    speechIdx = 0;
-    while (speechIdx < numSamplesLB) {
-      WebRtcSpl_SynthesisQMF(&outFrameLB[speechIdx], &outFrameUB[speechIdx],
-                             FRAMESAMPLES_10ms, &decoded[(speechIdx << 1)],
-                             instISAC->synthesisFBState1,
-                             instISAC->synthesisFBState2);
-
-      speechIdx += FRAMESAMPLES_10ms;
-    }
-  }
-  *speechType = 0;
-  return (numSamplesLB + numSamplesUB);
-}
-
-
-
-
-
-
-
-/****************************************************************************
- * WebRtcIsac_Decode(...)
- *
- * This function decodes a ISAC frame. Output speech length
- * will be a multiple of 480 samples: 480 or 960 samples,
- * depending on the  frameSize (30 or 60 ms).
- *
- * Input:
- *        - ISAC_main_inst    : ISAC instance.
- *        - encoded           : encoded ISAC frame(s)
- *        - len               : bytes in encoded vector
- *
- * Output:
- *        - decoded           : The decoded vector
- *
- * Return value               : >0 - number of samples in decoded vector
- *                              -1 - Error
- */
-
-int WebRtcIsac_Decode(ISACStruct* ISAC_main_inst,
-                      const uint8_t* encoded,
-                      size_t lenEncodedBytes,
-                      int16_t* decoded,
-                      int16_t* speechType) {
-  int16_t isRCUPayload = 0;
-  return Decode(ISAC_main_inst, encoded, lenEncodedBytes, decoded,
-                speechType, isRCUPayload);
-}
-
-/****************************************************************************
- * WebRtcIsac_DecodeRcu(...)
- *
- * This function decodes a redundant (RCU) iSAC frame. Function is called in
- * NetEq with a stored RCU payload in case of packet loss. Output speech length
- * will be a multiple of 480 samples: 480 or 960 samples,
- * depending on the framesize (30 or 60 ms).
- *
- * Input:
- *      - ISAC_main_inst     : ISAC instance.
- *      - encoded            : encoded ISAC RCU frame(s)
- *      - len                : bytes in encoded vector
- *
- * Output:
- *      - decoded            : The decoded vector
- *
- * Return value              : >0 - number of samples in decoded vector
- *                             -1 - Error
- */
-
-
-
-int WebRtcIsac_DecodeRcu(ISACStruct* ISAC_main_inst,
-                         const uint8_t* encoded,
-                         size_t lenEncodedBytes,
-                         int16_t* decoded,
-                         int16_t* speechType) {
-  int16_t isRCUPayload = 1;
-  return Decode(ISAC_main_inst, encoded, lenEncodedBytes, decoded,
-                speechType, isRCUPayload);
-}
-
-
-/****************************************************************************
- * WebRtcIsac_DecodePlc(...)
- *
- * This function conducts PLC for ISAC frame(s). Output speech length
- * will be a multiple of 480 samples: 480 or 960 samples,
- * depending on the  frameSize (30 or 60 ms).
- *
- * Input:
- *        - ISAC_main_inst    : ISAC instance.
- *        - noOfLostFrames    : Number of PLC frames to produce
- *
- * Output:
- *        - decoded           : The decoded vector
- *
- * Return value               : Number of samples in decoded PLC vector
- */
-size_t WebRtcIsac_DecodePlc(ISACStruct* ISAC_main_inst,
-                            int16_t* decoded,
-                            size_t noOfLostFrames) {
-  size_t numSamples = 0;
-  ISACMainStruct* instISAC = (ISACMainStruct*)ISAC_main_inst;
-
-  /* Limit number of frames to two = 60 millisecond.
-   * Otherwise we exceed data vectors. */
-  if (noOfLostFrames > 2) {
-    noOfLostFrames = 2;
-  }
-
-  /* Get the number of samples per frame */
-  switch (instISAC->decoderSamplingRateKHz) {
-    case kIsacWideband: {
-      numSamples = 480 * noOfLostFrames;
-      break;
-    }
-    case kIsacSuperWideband: {
-      numSamples = 960 * noOfLostFrames;
-      break;
-    }
-  }
-
-  /* Set output samples to zero. */
-  memset(decoded, 0, numSamples * sizeof(int16_t));
-  return numSamples;
-}
-
-
-/****************************************************************************
- * ControlLb(...) - Internal function for controlling Lower Band
- * ControlUb(...) - Internal function for controlling Upper Band
- * WebRtcIsac_Control(...) - API function
- *
- * This function sets the limit on the short-term average bit rate and the
- * frame length. Should be used only in Instantaneous mode.
- *
- * Input:
- *        - ISAC_main_inst    : ISAC instance.
- *        - rate              : limit on the short-term average bit rate,
- *                              in bits/second (between 10000 and 32000)
- *        - frameSize         : number of milliseconds per frame (30 or 60)
- *
- * Return value               : 0 - ok
- *                             -1 - Error
- */
-static int16_t ControlLb(ISACLBStruct* instISAC, double rate,
-                         int16_t frameSize) {
-  if ((rate >= 10000) && (rate <= 32000)) {
-    instISAC->ISACencLB_obj.bottleneck = rate;
-  } else {
-    return -ISAC_DISALLOWED_BOTTLENECK;
-  }
-
-  if ((frameSize == 30) || (frameSize == 60)) {
-    instISAC->ISACencLB_obj.new_framelength = (FS / 1000) *  frameSize;
-  } else {
-    return -ISAC_DISALLOWED_FRAME_LENGTH;
-  }
-
-  return 0;
-}
-
-static int16_t ControlUb(ISACUBStruct* instISAC, double rate) {
-  if ((rate >= 10000) && (rate <= 32000)) {
-    instISAC->ISACencUB_obj.bottleneck = rate;
-  } else {
-    return -ISAC_DISALLOWED_BOTTLENECK;
-  }
-  return 0;
-}
-
-int16_t WebRtcIsac_Control(ISACStruct* ISAC_main_inst,
-                           int32_t bottleneckBPS,
-                           int frameSize) {
-  ISACMainStruct* instISAC = (ISACMainStruct*)ISAC_main_inst;
-  int16_t status;
-  double rateLB;
-  double rateUB;
-  enum ISACBandwidth bandwidthKHz;
-
-  if (instISAC->codingMode == 0) {
-    /* In adaptive mode. */
-    instISAC->errorCode = ISAC_MODE_MISMATCH;
-    return -1;
-  }
-
-  /* Check if encoder initiated */
-  if ((instISAC->initFlag & BIT_MASK_ENC_INIT) !=
-      BIT_MASK_ENC_INIT) {
-    instISAC->errorCode = ISAC_ENCODER_NOT_INITIATED;
-    return -1;
-  }
-
-  if (instISAC->encoderSamplingRateKHz == kIsacWideband) {
-    /* If the sampling rate is 16kHz then bandwith should be 8kHz,
-     * regardless of bottleneck. */
-    bandwidthKHz = isac8kHz;
-    rateLB = (bottleneckBPS > 32000) ? 32000 : bottleneckBPS;
-    rateUB = 0;
-  } else {
-    if (WebRtcIsac_RateAllocation(bottleneckBPS, &rateLB, &rateUB,
-                                  &bandwidthKHz) < 0) {
-      return -1;
-    }
-  }
-
-  if ((instISAC->encoderSamplingRateKHz == kIsacSuperWideband) &&
-      (frameSize != 30) &&
-      (bandwidthKHz != isac8kHz)) {
-    /* Cannot have 60 ms in super-wideband. */
-    instISAC->errorCode = ISAC_DISALLOWED_FRAME_LENGTH;
-    return -1;
-  }
-
-  status = ControlLb(&instISAC->instLB, rateLB, (int16_t)frameSize);
-  if (status < 0) {
-    instISAC->errorCode = -status;
-    return -1;
-  }
-  if (bandwidthKHz != isac8kHz) {
-    status = ControlUb(&(instISAC->instUB), rateUB);
-    if (status < 0) {
-      instISAC->errorCode = -status;
-      return -1;
-    }
-  }
-
-
-  /* Check if bandwidth is changing from wideband to super-wideband
-   * then we have to synch data buffer of lower & upper-band. Also
-   * clean up the upper-band data buffer. */
-
-  if ((instISAC->bandwidthKHz == isac8kHz) && (bandwidthKHz != isac8kHz)) {
-    memset(instISAC->instUB.ISACencUB_obj.data_buffer_float, 0,
-           sizeof(float) * (MAX_FRAMESAMPLES + LB_TOTAL_DELAY_SAMPLES));
-
-    if (bandwidthKHz == isac12kHz) {
-      instISAC->instUB.ISACencUB_obj.buffer_index =
-        instISAC->instLB.ISACencLB_obj.buffer_index;
-    } else {
-      instISAC->instUB.ISACencUB_obj.buffer_index =
-          LB_TOTAL_DELAY_SAMPLES + instISAC->instLB.ISACencLB_obj.buffer_index;
-
-      memcpy(&(instISAC->instUB.ISACencUB_obj.lastLPCVec),
-             WebRtcIsac_kMeanLarUb16, sizeof(double) * UB_LPC_ORDER);
-    }
-  }
-
-  /* Update the payload limit if the bandwidth is changing. */
-  if (instISAC->bandwidthKHz != bandwidthKHz) {
-    instISAC->bandwidthKHz = bandwidthKHz;
-    UpdatePayloadSizeLimit(instISAC);
-  }
-  instISAC->bottleneck = bottleneckBPS;
-  return 0;
-}
-
-void WebRtcIsac_SetInitialBweBottleneck(ISACStruct* ISAC_main_inst,
-                                        int bottleneck_bits_per_second) {
-  ISACMainStruct* instISAC = (ISACMainStruct*)ISAC_main_inst;
-  RTC_DCHECK_GE(bottleneck_bits_per_second, 10000);
-  RTC_DCHECK_LE(bottleneck_bits_per_second, 32000);
-  instISAC->bwestimator_obj.send_bw_avg = (float)bottleneck_bits_per_second;
-}
-
-/****************************************************************************
- * WebRtcIsac_ControlBwe(...)
- *
- * This function sets the initial values of bottleneck and frame-size if
- * iSAC is used in channel-adaptive mode. Through this API, users can
- * enforce a frame-size for all values of bottleneck. Then iSAC will not
- * automatically change the frame-size.
- *
- *
- * Input:
- *        - ISAC_main_inst    : ISAC instance.
- *        - rateBPS           : initial value of bottleneck in bits/second
- *                              10000 <= rateBPS <= 32000 is accepted
- *                              For default bottleneck set rateBPS = 0
- *        - frameSizeMs       : number of milliseconds per frame (30 or 60)
- *        - enforceFrameSize  : 1 to enforce the given frame-size through out
- *                              the adaptation process, 0 to let iSAC change
- *                              the frame-size if required.
- *
- * Return value               : 0 - ok
- *                             -1 - Error
- */
-int16_t WebRtcIsac_ControlBwe(ISACStruct* ISAC_main_inst,
-                              int32_t bottleneckBPS,
-                              int frameSizeMs,
-                              int16_t enforceFrameSize) {
-  ISACMainStruct* instISAC = (ISACMainStruct*)ISAC_main_inst;
-  enum ISACBandwidth bandwidth;
-
-   /* Check if encoder initiated */
-  if ((instISAC->initFlag & BIT_MASK_ENC_INIT) !=
-      BIT_MASK_ENC_INIT) {
-    instISAC->errorCode = ISAC_ENCODER_NOT_INITIATED;
-    return -1;
-  }
-
-  /* Check that we are in channel-adaptive mode, otherwise, return (-1) */
-  if (instISAC->codingMode != 0) {
-    instISAC->errorCode = ISAC_MODE_MISMATCH;
-    return -1;
-  }
-  if ((frameSizeMs != 30) &&
-      (instISAC->encoderSamplingRateKHz == kIsacSuperWideband)) {
-    return -1;
-  }
-
-  /* Set structure variable if enforceFrameSize is set. ISAC will then
-   * keep the chosen frame size. */
-  if (enforceFrameSize != 0) {
-    instISAC->instLB.ISACencLB_obj.enforceFrameSize = 1;
-  } else {
-    instISAC->instLB.ISACencLB_obj.enforceFrameSize = 0;
-  }
-
-  /* Set the initial rate. If the input value is zero then the default intial
-   * rate is used. Otehrwise, values between 10 to 32 kbps are accepted. */
-  if (bottleneckBPS != 0) {
-    double rateLB;
-    double rateUB;
-    if (WebRtcIsac_RateAllocation(bottleneckBPS, &rateLB, &rateUB,
-                                  &bandwidth) < 0) {
-      return -1;
-    }
-    instISAC->bwestimator_obj.send_bw_avg = (float)bottleneckBPS;
-    instISAC->bandwidthKHz = bandwidth;
-  }
-
-  /* Set the initial frame-size. If 'enforceFrameSize' is set, the frame-size
-   *  will not change */
-  if (frameSizeMs != 0) {
-    if ((frameSizeMs  == 30) || (frameSizeMs == 60)) {
-      instISAC->instLB.ISACencLB_obj.new_framelength =
-          (int16_t)((FS / 1000) * frameSizeMs);
-    } else {
-      instISAC->errorCode = ISAC_DISALLOWED_FRAME_LENGTH;
-      return -1;
-    }
-  }
-  return 0;
-}
-
-
-/****************************************************************************
- * WebRtcIsac_GetDownLinkBwIndex(...)
- *
- * This function returns index representing the Bandwidth estimate from
- * the other side to this side.
- *
- * Input:
- *        - ISAC_main_inst    : iSAC structure
- *
- * Output:
- *        - bweIndex         : Bandwidth estimate to transmit to other side.
- *
- */
-int16_t WebRtcIsac_GetDownLinkBwIndex(ISACStruct* ISAC_main_inst,
-                                      int16_t* bweIndex,
-                                      int16_t* jitterInfo) {
-  ISACMainStruct* instISAC = (ISACMainStruct*)ISAC_main_inst;
-
-  /* Check if encoder initialized. */
-  if ((instISAC->initFlag & BIT_MASK_DEC_INIT) !=
-      BIT_MASK_DEC_INIT) {
-    instISAC->errorCode = ISAC_ENCODER_NOT_INITIATED;
-    return -1;
-  }
-
-  /* Call function to get Bandwidth Estimate. */
-  WebRtcIsac_GetDownlinkBwJitIndexImpl(&(instISAC->bwestimator_obj), bweIndex,
-                                       jitterInfo,
-                                       instISAC->decoderSamplingRateKHz);
-  return 0;
-}
-
-
-/****************************************************************************
- * WebRtcIsac_UpdateUplinkBw(...)
- *
- * This function takes an index representing the Bandwidth estimate from
- * this side to other side and updates BWE.
- *
- * Input:
- *        - ISAC_main_inst    : iSAC structure
- *        - rateIndex         : Bandwidth estimate from other side.
- *
- * Return value               : 0 - ok
- *                             -1 - index out of range
- */
-int16_t WebRtcIsac_UpdateUplinkBw(ISACStruct* ISAC_main_inst,
-                                  int16_t bweIndex) {
-  ISACMainStruct* instISAC = (ISACMainStruct*)ISAC_main_inst;
-  int16_t returnVal;
-
-  /* Check if encoder initiated. */
-  if ((instISAC->initFlag & BIT_MASK_ENC_INIT) !=
-      BIT_MASK_ENC_INIT) {
-    instISAC->errorCode = ISAC_ENCODER_NOT_INITIATED;
-    return -1;
-  }
-
-  /* Call function to get Bandwidth Estimate. */
-  returnVal = WebRtcIsac_UpdateUplinkBwImpl(
-                &(instISAC->bwestimator_obj), bweIndex,
-                instISAC->encoderSamplingRateKHz);
-
-  if (returnVal < 0) {
-    instISAC->errorCode = -returnVal;
-    return -1;
-  } else {
-    return 0;
-  }
-}
-
-
-/****************************************************************************
- * WebRtcIsac_ReadBwIndex(...)
- *
- * This function returns the index of the Bandwidth estimate from the
- * bit-stream.
- *
- * Input:
- *        - encoded           : Encoded bit-stream
- *
- * Output:
- *        - frameLength       : Length of frame in packet (in samples)
- *        - bweIndex          : Bandwidth estimate in bit-stream
- *
- */
-int16_t WebRtcIsac_ReadBwIndex(const uint8_t* encoded,
-                               int16_t* bweIndex) {
-  Bitstr streamdata;
-#ifndef WEBRTC_ARCH_BIG_ENDIAN
-  int k;
-#endif
-  int16_t err;
-
-  WebRtcIsac_ResetBitstream(&(streamdata));
-
-#ifndef WEBRTC_ARCH_BIG_ENDIAN
-  for (k = 0; k < 10; k++) {
-    int16_t ek2 = ((const int16_t*)encoded)[k >> 1];
-    streamdata.stream[k] = (uint8_t)((ek2 >> ((k & 1) << 3)) & 0xff);
-  }
-#else
-  memcpy(streamdata.stream, encoded, 10);
-#endif
-
-  /* Decode frame length. */
-  err = WebRtcIsac_DecodeFrameLen(&streamdata, bweIndex);
-  if (err < 0) {
-    return err;
-  }
-
-  /* Decode BW estimation. */
-  err = WebRtcIsac_DecodeSendBW(&streamdata, bweIndex);
-  if (err < 0) {
-    return err;
-  }
-
-  return 0;
-}
-
-
-/****************************************************************************
- * WebRtcIsac_ReadFrameLen(...)
- *
- * This function returns the number of samples the decoder will generate if
- * the given payload is decoded.
- *
- * Input:
- *        - encoded           : Encoded bitstream
- *
- * Output:
- *        - frameLength       : Length of frame in packet (in samples)
- *
- */
-int16_t WebRtcIsac_ReadFrameLen(const ISACStruct* ISAC_main_inst,
-                                const uint8_t* encoded,
-                                int16_t* frameLength) {
-  Bitstr streamdata;
-#ifndef WEBRTC_ARCH_BIG_ENDIAN
-  int k;
-#endif
-  int16_t err;
-  ISACMainStruct* instISAC;
-
-  WebRtcIsac_ResetBitstream(&(streamdata));
-
-#ifndef WEBRTC_ARCH_BIG_ENDIAN
-  for (k = 0; k < 10; k++) {
-    int16_t ek2 = ((const int16_t*)encoded)[k >> 1];
-    streamdata.stream[k] = (uint8_t)((ek2 >> ((k & 1) << 3)) & 0xff);
-  }
-#else
-  memcpy(streamdata.stream, encoded, 10);
-#endif
-
-  /* Decode frame length. */
-  err = WebRtcIsac_DecodeFrameLen(&streamdata, frameLength);
-  if (err < 0) {
-    return -1;
-  }
-  instISAC = (ISACMainStruct*)ISAC_main_inst;
-
-  if (instISAC->decoderSamplingRateKHz == kIsacSuperWideband) {
-    /* The decoded frame length indicates the number of samples in
-     * lower-band in this case, multiply by 2 to get the total number
-     * of samples. */
-    *frameLength <<= 1;
-  }
-  return 0;
-}
-
-
-/*******************************************************************************
- * WebRtcIsac_GetNewFrameLen(...)
- *
- * This function returns the frame length (in samples) of the next packet.
- * In the case of channel-adaptive mode, iSAC decides on its frame length based
- * on the estimated bottleneck, this AOI allows a user to prepare for the next
- * packet (at the encoder).
- *
- * The primary usage is in CE to make the iSAC works in channel-adaptive mode
- *
- * Input:
- *        - ISAC_main_inst     : iSAC struct
- *
- * Return Value                : frame lenght in samples
- *
- */
-int16_t WebRtcIsac_GetNewFrameLen(ISACStruct* ISAC_main_inst) {
-  ISACMainStruct* instISAC = (ISACMainStruct*)ISAC_main_inst;
-
-  /* Return new frame length. */
-  if (instISAC->in_sample_rate_hz == 16000)
-    return (instISAC->instLB.ISACencLB_obj.new_framelength);
-  else  /* 32000 Hz */
-    return ((instISAC->instLB.ISACencLB_obj.new_framelength) * 2);
-}
-
-
-/****************************************************************************
- * WebRtcIsac_GetErrorCode(...)
- *
- * This function can be used to check the error code of an iSAC instance.
- * When a function returns -1 an error code will be set for that instance.
- * The function below extracts the code of the last error that occurred in
- * the specified instance.
- *
- * Input:
- *        - ISAC_main_inst    : ISAC instance
- *
- * Return value               : Error code
- */
-int16_t WebRtcIsac_GetErrorCode(ISACStruct* ISAC_main_inst) {
- return ((ISACMainStruct*)ISAC_main_inst)->errorCode;
-}
-
-
-/****************************************************************************
- * WebRtcIsac_GetUplinkBw(...)
- *
- * This function outputs the target bottleneck of the codec. In
- * channel-adaptive mode, the target bottleneck is specified through an in-band
- * signalling retrieved by bandwidth estimator.
- * In channel-independent, also called instantaneous mode, the target
- * bottleneck is provided to the encoder by calling xxx_control(...) (if
- * xxx_control is never called, the default values are used.).
- * Note that the output is the iSAC internal operating bottleneck which might
- * differ slightly from the one provided through xxx_control().
- *
- * Input:
- *        - ISAC_main_inst    : iSAC instance
- *
- * Output:
- *        - *bottleneck       : bottleneck in bits/sec
- *
- * Return value               : -1 if error happens
- *                               0 bit-rates computed correctly.
- */
-int16_t WebRtcIsac_GetUplinkBw(ISACStruct*  ISAC_main_inst,
-                               int32_t* bottleneck) {
-  ISACMainStruct* instISAC = (ISACMainStruct*)ISAC_main_inst;
-
-  if (instISAC->codingMode == 0) {
-    /* We are in adaptive mode then get the bottleneck from BWE. */
-    *bottleneck = (int32_t)instISAC->bwestimator_obj.send_bw_avg;
-  } else {
-    *bottleneck = instISAC->bottleneck;
-  }
-
-  if ((*bottleneck > 32000) && (*bottleneck < 38000)) {
-    *bottleneck = 32000;
-  } else if ((*bottleneck > 45000) && (*bottleneck < 50000)) {
-    *bottleneck = 45000;
-  } else if (*bottleneck > 56000) {
-    *bottleneck = 56000;
-  }
-  return 0;
-}
-
-
-/******************************************************************************
- * WebRtcIsac_SetMaxPayloadSize(...)
- *
- * This function sets a limit for the maximum payload size of iSAC. The same
- * value is used both for 30 and 60 ms packets. If the encoder sampling rate
- * is 16 kHz the maximum payload size is between 120 and 400 bytes. If the
- * encoder sampling rate is 32 kHz the maximum payload size is between 120
- * and 600 bytes.
- *
- * ---------------
- * IMPORTANT NOTES
- * ---------------
- * The size of a packet is limited to the minimum of 'max-payload-size' and
- * 'max-rate.' For instance, let's assume the max-payload-size is set to
- * 170 bytes, and max-rate is set to 40 kbps. Note that a limit of 40 kbps
- * translates to 150 bytes for 30ms frame-size & 300 bytes for 60ms
- * frame-size. Then a packet with a frame-size of 30 ms is limited to 150,
- * i.e. min(170, 150), and a packet with 60 ms frame-size is limited to
- * 170 bytes, i.e. min(170, 300).
- *
- * Input:
- *        - ISAC_main_inst    : iSAC instance
- *        - maxPayloadBytes   : maximum size of the payload in bytes
- *                              valid values are between 100 and 400 bytes
- *                              if encoder sampling rate is 16 kHz. For
- *                              32 kHz encoder sampling rate valid values
- *                              are between 100 and 600 bytes.
- *
- * Return value               : 0 if successful
- *                             -1 if error happens
- */
-int16_t WebRtcIsac_SetMaxPayloadSize(ISACStruct* ISAC_main_inst,
-                                     int16_t maxPayloadBytes) {
-  ISACMainStruct* instISAC = (ISACMainStruct*)ISAC_main_inst;
-  int16_t status = 0;
-
-  /* Check if encoder initiated */
-  if ((instISAC->initFlag & BIT_MASK_ENC_INIT) !=
-      BIT_MASK_ENC_INIT) {
-    instISAC->errorCode = ISAC_ENCODER_NOT_INITIATED;
-    return -1;
-  }
-
-  if (instISAC->encoderSamplingRateKHz == kIsacSuperWideband) {
-    /* Sanity check. */
-    if (maxPayloadBytes < 120) {
-      /* 'maxRate' is out of valid range
-       * set to the acceptable value and return -1. */
-      maxPayloadBytes = 120;
-      status = -1;
-    }
-
-    /* sanity check */
-    if (maxPayloadBytes > STREAM_SIZE_MAX) {
-      /* maxRate is out of valid range,
-       * set to the acceptable value and return -1. */
-      maxPayloadBytes = STREAM_SIZE_MAX;
-      status = -1;
-    }
-  } else {
-    if (maxPayloadBytes < 120) {
-      /* Max payload-size is out of valid range
-       * set to the acceptable value and return -1. */
-      maxPayloadBytes = 120;
-      status = -1;
-    }
-    if (maxPayloadBytes > STREAM_SIZE_MAX_60) {
-      /* Max payload-size is out of valid range
-       * set to the acceptable value and return -1. */
-      maxPayloadBytes = STREAM_SIZE_MAX_60;
-      status = -1;
-    }
-  }
-  instISAC->maxPayloadSizeBytes = maxPayloadBytes;
-  UpdatePayloadSizeLimit(instISAC);
-  return status;
-}
-
-
-/******************************************************************************
- * WebRtcIsac_SetMaxRate(...)
- *
- * This function sets the maximum rate which the codec may not exceed for
- * any signal packet. The maximum rate is defined and payload-size per
- * frame-size in bits per second.
- *
- * The codec has a maximum rate of 53400 bits per second (200 bytes per 30
- * ms) if the encoder sampling rate is 16kHz, and 160 kbps (600 bytes/30 ms)
- * if the encoder sampling rate is 32 kHz.
- *
- * It is possible to set a maximum rate between 32000 and 53400 bits/sec
- * in wideband mode, and 32000 to 160000 bits/sec in super-wideband mode.
- *
- * ---------------
- * IMPORTANT NOTES
- * ---------------
- * The size of a packet is limited to the minimum of 'max-payload-size' and
- * 'max-rate.' For instance, let's assume the max-payload-size is set to
- * 170 bytes, and max-rate is set to 40 kbps. Note that a limit of 40 kbps
- * translates to 150 bytes for 30ms frame-size & 300 bytes for 60ms
- * frame-size. Then a packet with a frame-size of 30 ms is limited to 150,
- * i.e. min(170, 150), and a packet with 60 ms frame-size is limited to
- * 170 bytes, min(170, 300).
- *
- * Input:
- *        - ISAC_main_inst    : iSAC instance
- *        - maxRate           : maximum rate in bits per second,
- *                              valid values are 32000 to 53400 bits/sec in
- *                              wideband mode, and 32000 to 160000 bits/sec in
- *                              super-wideband mode.
- *
- * Return value               : 0 if successful
- *                             -1 if error happens
- */
-int16_t WebRtcIsac_SetMaxRate(ISACStruct* ISAC_main_inst,
-                              int32_t maxRate) {
-  ISACMainStruct* instISAC = (ISACMainStruct*)ISAC_main_inst;
-  int16_t maxRateInBytesPer30Ms;
-  int16_t status = 0;
-
-  /* check if encoder initiated */
-  if ((instISAC->initFlag & BIT_MASK_ENC_INIT) != BIT_MASK_ENC_INIT) {
-    instISAC->errorCode = ISAC_ENCODER_NOT_INITIATED;
-    return -1;
-  }
-  /* Calculate maximum number of bytes per 30 msec packets for the
-     given maximum rate. Multiply with 30/1000 to get number of
-     bits per 30 ms, divide by 8 to get number of bytes per 30 ms:
-     maxRateInBytes = floor((maxRate * 30/1000) / 8); */
-  maxRateInBytesPer30Ms = (int16_t)(maxRate * 3 / 800);
-
-  if (instISAC->encoderSamplingRateKHz == kIsacWideband) {
-    if (maxRate < 32000) {
-      /* 'maxRate' is out of valid range.
-       * Set to the acceptable value and return -1. */
-      maxRateInBytesPer30Ms = 120;
-      status = -1;
-    }
-
-    if (maxRate > 53400) {
-      /* 'maxRate' is out of valid range.
-       * Set to the acceptable value and return -1. */
-      maxRateInBytesPer30Ms = 200;
-      status = -1;
-    }
-  } else {
-    if (maxRateInBytesPer30Ms < 120) {
-      /* 'maxRate' is out of valid range
-       * Set to the acceptable value and return -1. */
-      maxRateInBytesPer30Ms = 120;
-      status = -1;
-    }
-
-    if (maxRateInBytesPer30Ms > STREAM_SIZE_MAX) {
-      /* 'maxRate' is out of valid range.
-       * Set to the acceptable value and return -1. */
-      maxRateInBytesPer30Ms = STREAM_SIZE_MAX;
-      status = -1;
-    }
-  }
-  instISAC->maxRateBytesPer30Ms = maxRateInBytesPer30Ms;
-  UpdatePayloadSizeLimit(instISAC);
-  return status;
-}
-
-
-/****************************************************************************
- * WebRtcIsac_GetRedPayload(...)
- *
- * This function populates "encoded" with the redundant payload of the recently
- * encodedframe. This function has to be called once that WebRtcIsac_Encode(...)
- * returns a positive value. Regardless of the frame-size this function will
- * be called only once after encoding is completed. The bit-stream is
- * targeted for 16000 bit/sec.
- *
- * Input:
- *        - ISAC_main_inst    : iSAC struct
- *
- * Output:
- *        - encoded           : the encoded data vector
- *
- *
- * Return value               : >0 - Length (in bytes) of coded data
- *                            : -1 - Error
- */
-int16_t WebRtcIsac_GetRedPayload(ISACStruct* ISAC_main_inst,
-                                 uint8_t* encoded) {
-  Bitstr iSACBitStreamInst;
-  int16_t streamLenLB;
-  int16_t streamLenUB;
-  int16_t streamLen;
-  int16_t totalLenUB;
-  ISACMainStruct* instISAC = (ISACMainStruct*)ISAC_main_inst;
-#ifndef WEBRTC_ARCH_BIG_ENDIAN
-  int k;
-#endif
-
-  if ((instISAC->initFlag & BIT_MASK_ENC_INIT) !=
-      BIT_MASK_ENC_INIT) {
-    instISAC->errorCode = ISAC_ENCODER_NOT_INITIATED;
-  }
-
-  WebRtcIsac_ResetBitstream(&(iSACBitStreamInst));
-
-  streamLenLB = WebRtcIsac_EncodeStoredDataLb(
-                  &instISAC->instLB.ISACencLB_obj.SaveEnc_obj,
-                  &iSACBitStreamInst,
-                  instISAC->instLB.ISACencLB_obj.lastBWIdx,
-                  RCU_TRANSCODING_SCALE);
-  if (streamLenLB < 0) {
-    return -1;
-  }
-
-  /* convert from bytes to int16_t. */
-  memcpy(encoded, iSACBitStreamInst.stream, streamLenLB);
-  streamLen = streamLenLB;
-  if (instISAC->bandwidthKHz == isac8kHz) {
-    return streamLenLB;
-  }
-
-  streamLenUB = WebRtcIsac_GetRedPayloadUb(
-                  &instISAC->instUB.ISACencUB_obj.SaveEnc_obj,
-                  &iSACBitStreamInst, instISAC->bandwidthKHz);
-  if (streamLenUB < 0) {
-    /* An error has happened but this is not the error due to a
-     * bit-stream larger than the limit. */
-    return -1;
-  }
-
-  /* We have one byte to write the total length of the upper-band.
-   * The length includes the bit-stream length, check-sum and the
-   * single byte where the length is written to. This is according to
-   * iSAC wideband and how the "garbage" is dealt. */
-  totalLenUB = streamLenUB + 1 + LEN_CHECK_SUM_WORD8;
-  if (totalLenUB > 255) {
-    streamLenUB = 0;
-  }
-
-  /* Generate CRC if required. */
-  if ((instISAC->bandwidthKHz != isac8kHz) &&
-      (streamLenUB > 0)) {
-    uint32_t crc;
-    streamLen += totalLenUB;
-    encoded[streamLenLB] = (uint8_t)totalLenUB;
-    memcpy(&encoded[streamLenLB + 1], iSACBitStreamInst.stream,
-           streamLenUB);
-
-    WebRtcIsac_GetCrc((int16_t*)(&(encoded[streamLenLB + 1])),
-                      streamLenUB, &crc);
-#ifndef WEBRTC_ARCH_BIG_ENDIAN
-    for (k = 0; k < LEN_CHECK_SUM_WORD8; k++) {
-      encoded[streamLen - LEN_CHECK_SUM_WORD8 + k] =
-        (uint8_t)((crc >> (24 - k * 8)) & 0xFF);
-    }
-#else
-    memcpy(&encoded[streamLenLB + streamLenUB + 1], &crc,
-           LEN_CHECK_SUM_WORD8);
-#endif
-  }
-  return streamLen;
-}
-
-
-/****************************************************************************
- * WebRtcIsac_version(...)
- *
- * This function returns the version number.
- *
- * Output:
- *        - version      : Pointer to character string
- *
- */
-void WebRtcIsac_version(char* version) {
-  strcpy(version, "4.3.0");
-}
-
-
-/******************************************************************************
- * WebRtcIsac_SetEncSampRate()
- * This function sets the sampling rate of the encoder. Initialization of the
- * encoder WILL NOT overwrite the sampling rate of the encoder. The default
- * value is 16 kHz which is set when the instance is created. The encoding-mode
- * and the bottleneck remain unchanged by this call, however, the maximum rate
- * and maximum payload-size will be reset to their default values.
- *
- * Input:
- *        - ISAC_main_inst    : iSAC instance
- *        - sample_rate_hz    : sampling rate in Hertz, valid values are 16000
- *                              and 32000.
- *
- * Return value               : 0 if successful
- *                             -1 if failed.
- */
-int16_t WebRtcIsac_SetEncSampRate(ISACStruct* ISAC_main_inst,
-                                  uint16_t sample_rate_hz) {
-  ISACMainStruct* instISAC = (ISACMainStruct*)ISAC_main_inst;
-  enum IsacSamplingRate encoder_operational_rate;
-
-  if ((sample_rate_hz != 16000) && (sample_rate_hz != 32000)) {
-    /* Sampling Frequency is not supported. */
-    instISAC->errorCode = ISAC_UNSUPPORTED_SAMPLING_FREQUENCY;
-    return -1;
-  }
-  if (sample_rate_hz == 16000) {
-    encoder_operational_rate = kIsacWideband;
-  } else {
-    encoder_operational_rate = kIsacSuperWideband;
-  }
-
-  if ((instISAC->initFlag & BIT_MASK_ENC_INIT) !=
-      BIT_MASK_ENC_INIT) {
-    if (encoder_operational_rate == kIsacWideband) {
-      instISAC->bandwidthKHz = isac8kHz;
-    } else {
-      instISAC->bandwidthKHz = isac16kHz;
-    }
-  } else {
-    ISACUBStruct* instUB = &(instISAC->instUB);
-    ISACLBStruct* instLB = &(instISAC->instLB);
-    int32_t bottleneck = instISAC->bottleneck;
-    int16_t codingMode = instISAC->codingMode;
-    int16_t frameSizeMs = instLB->ISACencLB_obj.new_framelength /
-        (FS / 1000);
-
-    if ((encoder_operational_rate == kIsacWideband) &&
-        (instISAC->encoderSamplingRateKHz == kIsacSuperWideband)) {
-      /* Changing from super-wideband to wideband.
-       * we don't need to re-initialize the encoder of the lower-band. */
-      instISAC->bandwidthKHz = isac8kHz;
-      if (codingMode == 1) {
-        ControlLb(instLB,
-                  (bottleneck > 32000) ? 32000 : bottleneck, FRAMESIZE);
-      }
-      instISAC->maxPayloadSizeBytes = STREAM_SIZE_MAX_60;
-      instISAC->maxRateBytesPer30Ms = STREAM_SIZE_MAX_30;
-    } else if ((encoder_operational_rate == kIsacSuperWideband) &&
-               (instISAC->encoderSamplingRateKHz == kIsacWideband)) {
-      double bottleneckLB = 0;
-      double bottleneckUB = 0;
-      if (codingMode == 1) {
-        WebRtcIsac_RateAllocation(bottleneck, &bottleneckLB, &bottleneckUB,
-                                  &(instISAC->bandwidthKHz));
-      }
-
-      instISAC->bandwidthKHz = isac16kHz;
-      instISAC->maxPayloadSizeBytes = STREAM_SIZE_MAX;
-      instISAC->maxRateBytesPer30Ms = STREAM_SIZE_MAX;
-
-      EncoderInitLb(instLB, codingMode, encoder_operational_rate);
-      EncoderInitUb(instUB, instISAC->bandwidthKHz);
-
-      memset(instISAC->analysisFBState1, 0,
-             FB_STATE_SIZE_WORD32 * sizeof(int32_t));
-      memset(instISAC->analysisFBState2, 0,
-             FB_STATE_SIZE_WORD32 * sizeof(int32_t));
-
-      if (codingMode == 1) {
-        instISAC->bottleneck = bottleneck;
-        ControlLb(instLB, bottleneckLB,
-                  (instISAC->bandwidthKHz == isac8kHz) ? frameSizeMs:FRAMESIZE);
-        if (instISAC->bandwidthKHz > isac8kHz) {
-          ControlUb(instUB, bottleneckUB);
-        }
-      } else {
-        instLB->ISACencLB_obj.enforceFrameSize = 0;
-        instLB->ISACencLB_obj.new_framelength = FRAMESAMPLES;
-      }
-    }
-  }
-  instISAC->encoderSamplingRateKHz = encoder_operational_rate;
-  instISAC->in_sample_rate_hz = sample_rate_hz;
-  return 0;
-}
-
-
-/******************************************************************************
- * WebRtcIsac_SetDecSampRate()
- * This function sets the sampling rate of the decoder. Initialization of the
- * decoder WILL NOT overwrite the sampling rate of the encoder. The default
- * value is 16 kHz which is set when the instance is created.
- *
- * Input:
- *        - ISAC_main_inst    : iSAC instance
- *        - sample_rate_hz    : sampling rate in Hertz, valid values are 16000
- *                              and 32000.
- *
- * Return value               : 0 if successful
- *                             -1 if failed.
- */
-int16_t WebRtcIsac_SetDecSampRate(ISACStruct* ISAC_main_inst,
-                                  uint16_t sample_rate_hz) {
-  ISACMainStruct* instISAC = (ISACMainStruct*)ISAC_main_inst;
-  enum IsacSamplingRate decoder_operational_rate;
-
-  if (sample_rate_hz == 16000) {
-    decoder_operational_rate = kIsacWideband;
-  } else if (sample_rate_hz == 32000) {
-    decoder_operational_rate = kIsacSuperWideband;
-  } else {
-    /* Sampling Frequency is not supported. */
-    instISAC->errorCode = ISAC_UNSUPPORTED_SAMPLING_FREQUENCY;
-    return -1;
-  }
-
-  if ((instISAC->decoderSamplingRateKHz == kIsacWideband) &&
-        (decoder_operational_rate == kIsacSuperWideband)) {
-      /* Switching from wideband to super-wideband at the decoder
-       * we need to reset the filter-bank and initialize upper-band decoder. */
-      memset(instISAC->synthesisFBState1, 0,
-             FB_STATE_SIZE_WORD32 * sizeof(int32_t));
-      memset(instISAC->synthesisFBState2, 0,
-             FB_STATE_SIZE_WORD32 * sizeof(int32_t));
-
-      DecoderInitUb(&instISAC->instUB);
-  }
-  instISAC->decoderSamplingRateKHz = decoder_operational_rate;
-  return 0;
-}
-
-
-/******************************************************************************
- * WebRtcIsac_EncSampRate()
- *
- * Input:
- *        - ISAC_main_inst    : iSAC instance
- *
- * Return value               : sampling rate in Hertz. The input to encoder
- *                              is expected to be sampled in this rate.
- *
- */
-uint16_t WebRtcIsac_EncSampRate(ISACStruct* ISAC_main_inst) {
-  ISACMainStruct* instISAC = (ISACMainStruct*)ISAC_main_inst;
-  return instISAC->in_sample_rate_hz;
-}
-
-
-/******************************************************************************
- * WebRtcIsac_DecSampRate()
- * Return the sampling rate of the decoded audio.
- *
- * Input:
- *        - ISAC_main_inst    : iSAC instance
- *
- * Return value               : sampling rate in Hertz. Decoder output is
- *                              sampled at this rate.
- *
- */
-uint16_t WebRtcIsac_DecSampRate(ISACStruct* ISAC_main_inst) {
-  ISACMainStruct* instISAC = (ISACMainStruct*)ISAC_main_inst;
-  return instISAC->decoderSamplingRateKHz == kIsacWideband ? 16000 : 32000;
-}
-
-void WebRtcIsac_SetEncSampRateInDecoder(ISACStruct* inst,
-                                        int sample_rate_hz) {
-  ISACMainStruct* instISAC = (ISACMainStruct*)inst;
-  RTC_DCHECK_NE(0, instISAC->initFlag & BIT_MASK_DEC_INIT);
-  RTC_DCHECK(!(instISAC->initFlag & BIT_MASK_ENC_INIT));
-  RTC_DCHECK(sample_rate_hz == 16000 || sample_rate_hz == 32000);
-  instISAC->encoderSamplingRateKHz = sample_rate_hz / 1000;
-}
diff --git a/modules/audio_coding/codecs/isac/main/source/isac_float_type.h b/modules/audio_coding/codecs/isac/main/source/isac_float_type.h
deleted file mode 100644
index 511bc97..0000000
--- a/modules/audio_coding/codecs/isac/main/source/isac_float_type.h
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- *  Copyright (c) 2015 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_SOURCE_ISAC_FLOAT_TYPE_H_
-#define MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_SOURCE_ISAC_FLOAT_TYPE_H_
-
-#include "modules/audio_coding/codecs/isac/main/include/isac.h"
-
-namespace webrtc {
-
-struct IsacFloat {
-  using instance_type = ISACStruct;
-  static const bool has_swb = true;
-  static inline int16_t Control(instance_type* inst,
-                                int32_t rate,
-                                int framesize) {
-    return WebRtcIsac_Control(inst, rate, framesize);
-  }
-  static inline int16_t ControlBwe(instance_type* inst,
-                                   int32_t rate_bps,
-                                   int frame_size_ms,
-                                   int16_t enforce_frame_size) {
-    return WebRtcIsac_ControlBwe(inst, rate_bps, frame_size_ms,
-                                 enforce_frame_size);
-  }
-  static inline int16_t Create(instance_type** inst) {
-    return WebRtcIsac_Create(inst);
-  }
-  static inline int DecodeInternal(instance_type* inst,
-                                   const uint8_t* encoded,
-                                   size_t len,
-                                   int16_t* decoded,
-                                   int16_t* speech_type) {
-    return WebRtcIsac_Decode(inst, encoded, len, decoded, speech_type);
-  }
-  static inline size_t DecodePlc(instance_type* inst,
-                                 int16_t* decoded,
-                                 size_t num_lost_frames) {
-    return WebRtcIsac_DecodePlc(inst, decoded, num_lost_frames);
-  }
-
-  static inline void DecoderInit(instance_type* inst) {
-    WebRtcIsac_DecoderInit(inst);
-  }
-  static inline int Encode(instance_type* inst,
-                           const int16_t* speech_in,
-                           uint8_t* encoded) {
-    return WebRtcIsac_Encode(inst, speech_in, encoded);
-  }
-  static inline int16_t EncoderInit(instance_type* inst, int16_t coding_mode) {
-    return WebRtcIsac_EncoderInit(inst, coding_mode);
-  }
-  static inline uint16_t EncSampRate(instance_type* inst) {
-    return WebRtcIsac_EncSampRate(inst);
-  }
-
-  static inline int16_t Free(instance_type* inst) {
-    return WebRtcIsac_Free(inst);
-  }
-  static inline int16_t GetErrorCode(instance_type* inst) {
-    return WebRtcIsac_GetErrorCode(inst);
-  }
-
-  static inline int16_t GetNewFrameLen(instance_type* inst) {
-    return WebRtcIsac_GetNewFrameLen(inst);
-  }
-  static inline int16_t SetDecSampRate(instance_type* inst,
-                                       uint16_t sample_rate_hz) {
-    return WebRtcIsac_SetDecSampRate(inst, sample_rate_hz);
-  }
-  static inline int16_t SetEncSampRate(instance_type* inst,
-                                       uint16_t sample_rate_hz) {
-    return WebRtcIsac_SetEncSampRate(inst, sample_rate_hz);
-  }
-  static inline void SetEncSampRateInDecoder(instance_type* inst,
-                                             uint16_t sample_rate_hz) {
-    WebRtcIsac_SetEncSampRateInDecoder(inst, sample_rate_hz);
-  }
-  static inline void SetInitialBweBottleneck(instance_type* inst,
-                                             int bottleneck_bits_per_second) {
-    WebRtcIsac_SetInitialBweBottleneck(inst, bottleneck_bits_per_second);
-  }
-  static inline int16_t SetMaxPayloadSize(instance_type* inst,
-                                          int16_t max_payload_size_bytes) {
-    return WebRtcIsac_SetMaxPayloadSize(inst, max_payload_size_bytes);
-  }
-  static inline int16_t SetMaxRate(instance_type* inst, int32_t max_bit_rate) {
-    return WebRtcIsac_SetMaxRate(inst, max_bit_rate);
-  }
-};
-
-}  // namespace webrtc
-#endif  // MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_SOURCE_ISAC_FLOAT_TYPE_H_
diff --git a/modules/audio_coding/codecs/isac/main/source/isac_unittest.cc b/modules/audio_coding/codecs/isac/main/source/isac_unittest.cc
deleted file mode 100644
index c98b21d..0000000
--- a/modules/audio_coding/codecs/isac/main/source/isac_unittest.cc
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- *  Copyright (c) 2013 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-#include "modules/audio_coding/codecs/isac/main/include/isac.h"
-
-#include <string>
-
-#include "test/gtest.h"
-#include "test/testsupport/file_utils.h"
-
-struct WebRtcISACStruct;
-
-namespace webrtc {
-
-// Number of samples in a 60 ms, sampled at 32 kHz.
-const int kIsacNumberOfSamples = 320 * 6;
-// Maximum number of bytes in output bitstream.
-const size_t kMaxBytes = 1000;
-
-class IsacTest : public ::testing::Test {
- protected:
-  IsacTest();
-  virtual void SetUp();
-
-  WebRtcISACStruct* isac_codec_;
-
-  int16_t speech_data_[kIsacNumberOfSamples];
-  int16_t output_data_[kIsacNumberOfSamples];
-  uint8_t bitstream_[kMaxBytes];
-  uint8_t bitstream_small_[7];  // Simulate sync packets.
-};
-
-IsacTest::IsacTest() : isac_codec_(NULL) {}
-
-void IsacTest::SetUp() {
-  // Read some samples from a speech file, to be used in the encode test.
-  FILE* input_file;
-  const std::string file_name =
-      webrtc::test::ResourcePath("audio_coding/testfile32kHz", "pcm");
-  input_file = fopen(file_name.c_str(), "rb");
-  ASSERT_TRUE(input_file != NULL);
-  ASSERT_EQ(kIsacNumberOfSamples,
-            static_cast<int32_t>(fread(speech_data_, sizeof(int16_t),
-                                       kIsacNumberOfSamples, input_file)));
-  fclose(input_file);
-  input_file = NULL;
-}
-
-// Test failing Create.
-TEST_F(IsacTest, IsacCreateFail) {
-  // Test to see that an invalid pointer is caught.
-  EXPECT_EQ(-1, WebRtcIsac_Create(NULL));
-}
-
-// Test failing Free.
-TEST_F(IsacTest, IsacFreeFail) {
-  // Test to see that free function doesn't crash.
-  EXPECT_EQ(0, WebRtcIsac_Free(NULL));
-}
-
-// Test normal Create and Free.
-TEST_F(IsacTest, IsacCreateFree) {
-  EXPECT_EQ(0, WebRtcIsac_Create(&isac_codec_));
-  EXPECT_TRUE(isac_codec_ != NULL);
-  EXPECT_EQ(0, WebRtcIsac_Free(isac_codec_));
-}
-
-TEST_F(IsacTest, IsacUpdateBWE) {
-  // Create encoder memory.
-  EXPECT_EQ(0, WebRtcIsac_Create(&isac_codec_));
-
-  // Init encoder (adaptive mode) and decoder.
-  WebRtcIsac_EncoderInit(isac_codec_, 0);
-  WebRtcIsac_DecoderInit(isac_codec_);
-
-  int encoded_bytes;
-
-  // Test with call with a small packet (sync packet).
-  EXPECT_EQ(-1, WebRtcIsac_UpdateBwEstimate(isac_codec_, bitstream_small_, 7, 1,
-                                            12345, 56789));
-
-  // Encode 60 ms of data (needed to create a first packet).
-  encoded_bytes = WebRtcIsac_Encode(isac_codec_, speech_data_, bitstream_);
-  EXPECT_EQ(0, encoded_bytes);
-  encoded_bytes = WebRtcIsac_Encode(isac_codec_, speech_data_, bitstream_);
-  EXPECT_EQ(0, encoded_bytes);
-  encoded_bytes = WebRtcIsac_Encode(isac_codec_, speech_data_, bitstream_);
-  EXPECT_EQ(0, encoded_bytes);
-  encoded_bytes = WebRtcIsac_Encode(isac_codec_, speech_data_, bitstream_);
-  EXPECT_EQ(0, encoded_bytes);
-  encoded_bytes = WebRtcIsac_Encode(isac_codec_, speech_data_, bitstream_);
-  EXPECT_EQ(0, encoded_bytes);
-  encoded_bytes = WebRtcIsac_Encode(isac_codec_, speech_data_, bitstream_);
-  EXPECT_GT(encoded_bytes, 0);
-
-  // Call to update bandwidth estimator with real data.
-  EXPECT_EQ(0, WebRtcIsac_UpdateBwEstimate(isac_codec_, bitstream_,
-                                           static_cast<size_t>(encoded_bytes),
-                                           1, 12345, 56789));
-
-  // Free memory.
-  EXPECT_EQ(0, WebRtcIsac_Free(isac_codec_));
-}
-
-}  // namespace webrtc
diff --git a/modules/audio_coding/codecs/isac/main/source/lattice.c b/modules/audio_coding/codecs/isac/main/source/lattice.c
deleted file mode 100644
index d9d2d65..0000000
--- a/modules/audio_coding/codecs/isac/main/source/lattice.c
+++ /dev/null
@@ -1,219 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * lattice.c
- *
- * contains the normalized lattice filter routines (MA and AR) for iSAC codec
- *
- */
-
-#include <math.h>
-#include <memory.h>
-#include <string.h>
-#ifdef WEBRTC_ANDROID
-#include <stdlib.h>
-#endif
-
-#include "modules/audio_coding/codecs/isac/main/source/settings.h"
-#include "modules/audio_coding/codecs/isac/main/source/codec.h"
-
-/* filter the signal using normalized lattice filter */
-/* MA filter */
-void WebRtcIsac_NormLatticeFilterMa(int orderCoef,
-                                     float *stateF,
-                                     float *stateG,
-                                     float *lat_in,
-                                     double *filtcoeflo,
-                                     double *lat_out)
-{
-  int n,k,i,u,temp1;
-  int ord_1 = orderCoef+1;
-  float sth[MAX_AR_MODEL_ORDER];
-  float cth[MAX_AR_MODEL_ORDER];
-  float inv_cth[MAX_AR_MODEL_ORDER];
-  double a[MAX_AR_MODEL_ORDER+1];
-  float f[MAX_AR_MODEL_ORDER+1][HALF_SUBFRAMELEN], g[MAX_AR_MODEL_ORDER+1][HALF_SUBFRAMELEN];
-  float gain1;
-
-  for (u=0;u<SUBFRAMES;u++)
-  {
-    /* set the Direct Form coefficients */
-    temp1 = u*ord_1;
-    a[0] = 1;
-    memcpy(a+1, filtcoeflo+temp1+1, sizeof(double) * (ord_1-1));
-
-    /* compute lattice filter coefficients */
-    WebRtcIsac_Dir2Lat(a,orderCoef,sth,cth);
-
-    /* compute the gain */
-    gain1 = (float)filtcoeflo[temp1];
-    for (k=0;k<orderCoef;k++)
-    {
-      gain1 *= cth[k];
-      inv_cth[k] = 1/cth[k];
-    }
-
-    /* normalized lattice filter */
-    /*****************************/
-
-    /* initial conditions */
-    for (i=0;i<HALF_SUBFRAMELEN;i++)
-    {
-      f[0][i] = lat_in[i + u * HALF_SUBFRAMELEN];
-      g[0][i] = lat_in[i + u * HALF_SUBFRAMELEN];
-    }
-
-    /* get the state of f&g for the first input, for all orders */
-    for (i=1;i<ord_1;i++)
-    {
-      f[i][0] = inv_cth[i-1]*(f[i-1][0] + sth[i-1]*stateG[i-1]);
-      g[i][0] = cth[i-1]*stateG[i-1] + sth[i-1]* f[i][0];
-    }
-
-    /* filtering */
-    for(k=0;k<orderCoef;k++)
-    {
-      for(n=0;n<(HALF_SUBFRAMELEN-1);n++)
-      {
-        f[k+1][n+1] = inv_cth[k]*(f[k][n+1] + sth[k]*g[k][n]);
-        g[k+1][n+1] = cth[k]*g[k][n] + sth[k]* f[k+1][n+1];
-      }
-    }
-
-    for(n=0;n<HALF_SUBFRAMELEN;n++)
-    {
-      lat_out[n + u * HALF_SUBFRAMELEN] = gain1 * f[orderCoef][n];
-    }
-
-    /* save the states */
-    for (i=0;i<ord_1;i++)
-    {
-      stateF[i] = f[i][HALF_SUBFRAMELEN-1];
-      stateG[i] = g[i][HALF_SUBFRAMELEN-1];
-    }
-    /* process next frame */
-  }
-
-  return;
-}
-
-
-/*///////////////////AR filter ///////////////////////////////*/
-/* filter the signal using normalized lattice filter */
-void WebRtcIsac_NormLatticeFilterAr(int orderCoef,
-                                     float *stateF,
-                                     float *stateG,
-                                     double *lat_in,
-                                     double *lo_filt_coef,
-                                     float *lat_out)
-{
-  int n,k,i,u,temp1;
-  int ord_1 = orderCoef+1;
-  float sth[MAX_AR_MODEL_ORDER];
-  float cth[MAX_AR_MODEL_ORDER];
-  double a[MAX_AR_MODEL_ORDER+1];
-  float ARf[MAX_AR_MODEL_ORDER+1][HALF_SUBFRAMELEN], ARg[MAX_AR_MODEL_ORDER+1][HALF_SUBFRAMELEN];
-  float gain1,inv_gain1;
-
-  for (u=0;u<SUBFRAMES;u++)
-  {
-    /* set the denominator and numerator of the Direct Form */
-    temp1 = u*ord_1;
-    a[0] = 1;
-
-    memcpy(a+1, lo_filt_coef+temp1+1, sizeof(double) * (ord_1-1));
-
-    WebRtcIsac_Dir2Lat(a,orderCoef,sth,cth);
-
-    gain1 = (float)lo_filt_coef[temp1];
-    for (k=0;k<orderCoef;k++)
-    {
-      gain1 = cth[k]*gain1;
-    }
-
-    /* initial conditions */
-    inv_gain1 = 1/gain1;
-    for (i=0;i<HALF_SUBFRAMELEN;i++)
-    {
-      ARf[orderCoef][i] = (float)lat_in[i + u * HALF_SUBFRAMELEN]*inv_gain1;
-    }
-
-
-    for (i=orderCoef-1;i>=0;i--) //get the state of f&g for the first input, for all orders
-    {
-      ARf[i][0] = cth[i]*ARf[i+1][0] - sth[i]*stateG[i];
-      ARg[i+1][0] = sth[i]*ARf[i+1][0] + cth[i]* stateG[i];
-    }
-    ARg[0][0] = ARf[0][0];
-
-    for(n=0;n<(HALF_SUBFRAMELEN-1);n++)
-    {
-      for(k=orderCoef-1;k>=0;k--)
-      {
-        ARf[k][n+1] = cth[k]*ARf[k+1][n+1] - sth[k]*ARg[k][n];
-        ARg[k+1][n+1] = sth[k]*ARf[k+1][n+1] + cth[k]* ARg[k][n];
-      }
-      ARg[0][n+1] = ARf[0][n+1];
-    }
-
-    memcpy(lat_out+u * HALF_SUBFRAMELEN, &(ARf[0][0]), sizeof(float) * HALF_SUBFRAMELEN);
-
-    /* cannot use memcpy in the following */
-    for (i=0;i<ord_1;i++)
-    {
-      stateF[i] = ARf[i][HALF_SUBFRAMELEN-1];
-      stateG[i] = ARg[i][HALF_SUBFRAMELEN-1];
-    }
-
-  }
-
-  return;
-}
-
-
-/* compute the reflection coefficients using the step-down procedure*/
-/* converts the direct form parameters to lattice form.*/
-/* a and b are vectors which contain the direct form coefficients,
-   according to
-   A(z) = a(1) + a(2)*z + a(3)*z^2 + ... + a(M+1)*z^M
-   B(z) = b(1) + b(2)*z + b(3)*z^2 + ... + b(M+1)*z^M
-*/
-
-void WebRtcIsac_Dir2Lat(double *a,
-                        int orderCoef,
-                        float *sth,
-                        float *cth)
-{
-  int m, k;
-  float tmp[MAX_AR_MODEL_ORDER];
-  float tmp_inv, cth2;
-
-  sth[orderCoef-1] = (float)a[orderCoef];
-  cth2 = 1.0f - sth[orderCoef-1] * sth[orderCoef-1];
-  cth[orderCoef-1] = (float)sqrt(cth2);
-  for (m=orderCoef-1; m>0; m--)
-  {
-    tmp_inv = 1.0f / cth2;
-    for (k=1; k<=m; k++)
-    {
-      tmp[k] = ((float)a[k] - sth[m] * (float)a[m-k+1]) * tmp_inv;
-    }
-
-    for (k=1; k<m; k++)
-    {
-      a[k] = tmp[k];
-    }
-
-    sth[m-1] = tmp[m];
-    cth2 = 1 - sth[m-1] * sth[m-1];
-    cth[m-1] = (float)sqrt(cth2);
-  }
-}
diff --git a/modules/audio_coding/codecs/isac/main/source/lpc_analysis.c b/modules/audio_coding/codecs/isac/main/source/lpc_analysis.c
deleted file mode 100644
index 0fda73b..0000000
--- a/modules/audio_coding/codecs/isac/main/source/lpc_analysis.c
+++ /dev/null
@@ -1,496 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <math.h>
-#include <string.h>
-
-#include "modules/audio_coding/codecs/isac/main/source/lpc_analysis.h"
-#include "modules/audio_coding/codecs/isac/main/source/settings.h"
-#include "modules/audio_coding/codecs/isac/main/source/codec.h"
-#include "modules/audio_coding/codecs/isac/main/source/entropy_coding.h"
-#include "modules/audio_coding/codecs/isac/main/source/filter_functions.h"
-#include "modules/audio_coding/codecs/isac/main/source/isac_vad.h"
-
-/* window */
-/* Matlab generation code:
- *  t = (1:256)/257; r = 1-(1-t).^.45; w = sin(r*pi).^3; w = w/sum(w); plot((1:256)/8, w); grid;
- *  for k=1:16, fprintf(1, '%.8f, ', w(k*16 + (-15:0))); fprintf(1, '\n'); end
- */
-static const double kLpcCorrWindow[WINLEN] = {
-  0.00000000, 0.00000001, 0.00000004, 0.00000010, 0.00000020,
-  0.00000035, 0.00000055, 0.00000083, 0.00000118, 0.00000163,
-  0.00000218, 0.00000283, 0.00000361, 0.00000453, 0.00000558, 0.00000679,
-  0.00000817, 0.00000973, 0.00001147, 0.00001342, 0.00001558,
-  0.00001796, 0.00002058, 0.00002344, 0.00002657, 0.00002997,
-  0.00003365, 0.00003762, 0.00004190, 0.00004651, 0.00005144, 0.00005673,
-  0.00006236, 0.00006837, 0.00007476, 0.00008155, 0.00008875,
-  0.00009636, 0.00010441, 0.00011290, 0.00012186, 0.00013128,
-  0.00014119, 0.00015160, 0.00016252, 0.00017396, 0.00018594, 0.00019846,
-  0.00021155, 0.00022521, 0.00023946, 0.00025432, 0.00026978,
-  0.00028587, 0.00030260, 0.00031998, 0.00033802, 0.00035674,
-  0.00037615, 0.00039626, 0.00041708, 0.00043863, 0.00046092, 0.00048396,
-  0.00050775, 0.00053233, 0.00055768, 0.00058384, 0.00061080,
-  0.00063858, 0.00066720, 0.00069665, 0.00072696, 0.00075813,
-  0.00079017, 0.00082310, 0.00085692, 0.00089164, 0.00092728, 0.00096384,
-  0.00100133, 0.00103976, 0.00107914, 0.00111947, 0.00116077,
-  0.00120304, 0.00124630, 0.00129053, 0.00133577, 0.00138200,
-  0.00142924, 0.00147749, 0.00152676, 0.00157705, 0.00162836, 0.00168070,
-  0.00173408, 0.00178850, 0.00184395, 0.00190045, 0.00195799,
-  0.00201658, 0.00207621, 0.00213688, 0.00219860, 0.00226137,
-  0.00232518, 0.00239003, 0.00245591, 0.00252284, 0.00259079, 0.00265977,
-  0.00272977, 0.00280078, 0.00287280, 0.00294582, 0.00301984,
-  0.00309484, 0.00317081, 0.00324774, 0.00332563, 0.00340446,
-  0.00348421, 0.00356488, 0.00364644, 0.00372889, 0.00381220, 0.00389636,
-  0.00398135, 0.00406715, 0.00415374, 0.00424109, 0.00432920,
-  0.00441802, 0.00450754, 0.00459773, 0.00468857, 0.00478001,
-  0.00487205, 0.00496464, 0.00505775, 0.00515136, 0.00524542, 0.00533990,
-  0.00543476, 0.00552997, 0.00562548, 0.00572125, 0.00581725,
-  0.00591342, 0.00600973, 0.00610612, 0.00620254, 0.00629895,
-  0.00639530, 0.00649153, 0.00658758, 0.00668341, 0.00677894, 0.00687413,
-  0.00696891, 0.00706322, 0.00715699, 0.00725016, 0.00734266,
-  0.00743441, 0.00752535, 0.00761540, 0.00770449, 0.00779254,
-  0.00787947, 0.00796519, 0.00804963, 0.00813270, 0.00821431, 0.00829437,
-  0.00837280, 0.00844949, 0.00852436, 0.00859730, 0.00866822,
-  0.00873701, 0.00880358, 0.00886781, 0.00892960, 0.00898884,
-  0.00904542, 0.00909923, 0.00915014, 0.00919805, 0.00924283, 0.00928436,
-  0.00932252, 0.00935718, 0.00938821, 0.00941550, 0.00943890,
-  0.00945828, 0.00947351, 0.00948446, 0.00949098, 0.00949294,
-  0.00949020, 0.00948262, 0.00947005, 0.00945235, 0.00942938, 0.00940099,
-  0.00936704, 0.00932738, 0.00928186, 0.00923034, 0.00917268,
-  0.00910872, 0.00903832, 0.00896134, 0.00887763, 0.00878706,
-  0.00868949, 0.00858478, 0.00847280, 0.00835343, 0.00822653, 0.00809199,
-  0.00794970, 0.00779956, 0.00764145, 0.00747530, 0.00730103,
-  0.00711857, 0.00692787, 0.00672888, 0.00652158, 0.00630597,
-  0.00608208, 0.00584994, 0.00560962, 0.00536124, 0.00510493, 0.00484089,
-  0.00456935, 0.00429062, 0.00400505, 0.00371310, 0.00341532,
-  0.00311238, 0.00280511, 0.00249452, 0.00218184, 0.00186864,
-  0.00155690, 0.00124918, 0.00094895, 0.00066112, 0.00039320, 0.00015881
-};
-
-static void WebRtcIsac_GetVars(const double* input,
-                               const int16_t* pitchGains_Q12,
-                               double* oldEnergy,
-                               double* varscale) {
-  double nrg[4], chng, pg;
-  int k;
-
-  double pitchGains[4]={0,0,0,0};;
-
-  /* Calculate energies of first and second frame halfs */
-  nrg[0] = 0.0001;
-  for (k = QLOOKAHEAD/2; k < (FRAMESAMPLES_QUARTER + QLOOKAHEAD) / 2; k++) {
-    nrg[0] += input[k]*input[k];
-  }
-  nrg[1] = 0.0001;
-  for ( ; k < (FRAMESAMPLES_HALF + QLOOKAHEAD) / 2; k++) {
-    nrg[1] += input[k]*input[k];
-  }
-  nrg[2] = 0.0001;
-  for ( ; k < (FRAMESAMPLES*3/4 + QLOOKAHEAD) / 2; k++) {
-    nrg[2] += input[k]*input[k];
-  }
-  nrg[3] = 0.0001;
-  for ( ; k < (FRAMESAMPLES + QLOOKAHEAD) / 2; k++) {
-    nrg[3] += input[k]*input[k];
-  }
-
-  /* Calculate average level change */
-  chng = 0.25 * (fabs(10.0 * log10(nrg[3] / nrg[2])) +
-                 fabs(10.0 * log10(nrg[2] / nrg[1])) +
-                 fabs(10.0 * log10(nrg[1] / nrg[0])) +
-                 fabs(10.0 * log10(nrg[0] / *oldEnergy)));
-
-
-  /* Find average pitch gain */
-  pg = 0.0;
-  for (k=0; k<4; k++)
-  {
-    pitchGains[k] = ((float)pitchGains_Q12[k])/4096;
-    pg += pitchGains[k];
-  }
-  pg *= 0.25;
-
-  /* If pitch gain is low and energy constant - increase noise level*/
-  /* Matlab code:
-     pg = 0:.01:.45; plot(pg, 0.0 + 1.0 * exp( -1.0 * exp(-200.0 * pg.*pg.*pg) / (1.0 + 0.4 * 0) ))
-  */
-  *varscale = 0.0 + 1.0 * exp( -1.4 * exp(-200.0 * pg*pg*pg) / (1.0 + 0.4 * chng) );
-
-  *oldEnergy = nrg[3];
-}
-
-static void WebRtcIsac_GetVarsUB(const double* input,
-                                 double* oldEnergy,
-                                 double* varscale) {
-  double nrg[4], chng;
-  int k;
-
-  /* Calculate energies of first and second frame halfs */
-  nrg[0] = 0.0001;
-  for (k = 0; k < (FRAMESAMPLES_QUARTER) / 2; k++) {
-    nrg[0] += input[k]*input[k];
-  }
-  nrg[1] = 0.0001;
-  for ( ; k < (FRAMESAMPLES_HALF) / 2; k++) {
-    nrg[1] += input[k]*input[k];
-  }
-  nrg[2] = 0.0001;
-  for ( ; k < (FRAMESAMPLES*3/4) / 2; k++) {
-    nrg[2] += input[k]*input[k];
-  }
-  nrg[3] = 0.0001;
-  for ( ; k < (FRAMESAMPLES) / 2; k++) {
-    nrg[3] += input[k]*input[k];
-  }
-
-  /* Calculate average level change */
-  chng = 0.25 * (fabs(10.0 * log10(nrg[3] / nrg[2])) +
-                 fabs(10.0 * log10(nrg[2] / nrg[1])) +
-                 fabs(10.0 * log10(nrg[1] / nrg[0])) +
-                 fabs(10.0 * log10(nrg[0] / *oldEnergy)));
-
-
-  /* If pitch gain is low and energy constant - increase noise level*/
-  /* Matlab code:
-     pg = 0:.01:.45; plot(pg, 0.0 + 1.0 * exp( -1.0 * exp(-200.0 * pg.*pg.*pg) / (1.0 + 0.4 * 0) ))
-  */
-  *varscale = exp( -1.4 / (1.0 + 0.4 * chng) );
-
-  *oldEnergy = nrg[3];
-}
-
-void WebRtcIsac_GetLpcCoefLb(double *inLo, double *inHi, MaskFiltstr *maskdata,
-                             double signal_noise_ratio, const int16_t *pitchGains_Q12,
-                             double *lo_coeff, double *hi_coeff)
-{
-  int k, n, j, pos1, pos2;
-  double varscale;
-
-  double DataLo[WINLEN], DataHi[WINLEN];
-  double corrlo[ORDERLO+2], corrlo2[ORDERLO+1];
-  double corrhi[ORDERHI+1];
-  double k_veclo[ORDERLO], k_vechi[ORDERHI];
-
-  double a_LO[ORDERLO+1], a_HI[ORDERHI+1];
-  double tmp, res_nrg;
-
-  double FwdA, FwdB;
-
-  /* hearing threshold level in dB; higher value gives more noise */
-  const double HearThresOffset = -28.0;
-
-  /* bandwdith expansion factors for low- and high band */
-  const double gammaLo = 0.9;
-  const double gammaHi = 0.8;
-
-  /* less-noise-at-low-frequencies factor */
-  double aa;
-
-
-  /* convert from dB to signal level */
-  const double H_T_H = pow(10.0, 0.05 * HearThresOffset);
-  double S_N_R = pow(10.0, 0.05 * signal_noise_ratio) / 3.46;    /* divide by sqrt(12) */
-
-  /* change quallevel depending on pitch gains and level fluctuations */
-  WebRtcIsac_GetVars(inLo, pitchGains_Q12, &(maskdata->OldEnergy), &varscale);
-
-  /* less-noise-at-low-frequencies factor */
-  aa = 0.35 * (0.5 + 0.5 * varscale);
-
-  /* replace data in buffer by new look-ahead data */
-  for (pos1 = 0; pos1 < QLOOKAHEAD; pos1++)
-    maskdata->DataBufferLo[pos1 + WINLEN - QLOOKAHEAD] = inLo[pos1];
-
-  for (k = 0; k < SUBFRAMES; k++) {
-
-    /* Update input buffer and multiply signal with window */
-    for (pos1 = 0; pos1 < WINLEN - UPDATE/2; pos1++) {
-      maskdata->DataBufferLo[pos1] = maskdata->DataBufferLo[pos1 + UPDATE/2];
-      maskdata->DataBufferHi[pos1] = maskdata->DataBufferHi[pos1 + UPDATE/2];
-      DataLo[pos1] = maskdata->DataBufferLo[pos1] * kLpcCorrWindow[pos1];
-      DataHi[pos1] = maskdata->DataBufferHi[pos1] * kLpcCorrWindow[pos1];
-    }
-    pos2 = k * UPDATE/2;
-    for (n = 0; n < UPDATE/2; n++, pos1++) {
-      maskdata->DataBufferLo[pos1] = inLo[QLOOKAHEAD + pos2];
-      maskdata->DataBufferHi[pos1] = inHi[pos2++];
-      DataLo[pos1] = maskdata->DataBufferLo[pos1] * kLpcCorrWindow[pos1];
-      DataHi[pos1] = maskdata->DataBufferHi[pos1] * kLpcCorrWindow[pos1];
-    }
-
-    /* Get correlation coefficients */
-    WebRtcIsac_AutoCorr(corrlo, DataLo, WINLEN, ORDERLO+1); /* computing autocorrelation */
-    WebRtcIsac_AutoCorr(corrhi, DataHi, WINLEN, ORDERHI);
-
-
-    /* less noise for lower frequencies, by filtering/scaling autocorrelation sequences */
-    corrlo2[0] = (1.0+aa*aa) * corrlo[0] - 2.0*aa * corrlo[1];
-    tmp = (1.0 + aa*aa);
-    for (n = 1; n <= ORDERLO; n++) {
-      corrlo2[n] = tmp * corrlo[n] - aa * (corrlo[n-1] + corrlo[n+1]);
-    }
-    tmp = (1.0+aa) * (1.0+aa);
-    for (n = 0; n <= ORDERHI; n++) {
-      corrhi[n] = tmp * corrhi[n];
-    }
-
-    /* add white noise floor */
-    corrlo2[0] += 1e-6;
-    corrhi[0] += 1e-6;
-
-
-    FwdA = 0.01;
-    FwdB = 0.01;
-
-    /* recursive filtering of correlation over subframes */
-    for (n = 0; n <= ORDERLO; n++) {
-      maskdata->CorrBufLo[n] = FwdA * maskdata->CorrBufLo[n] + corrlo2[n];
-      corrlo2[n] = ((1.0-FwdA)*FwdB) * maskdata->CorrBufLo[n] + (1.0-FwdB) * corrlo2[n];
-    }
-    for (n = 0; n <= ORDERHI; n++) {
-      maskdata->CorrBufHi[n] = FwdA * maskdata->CorrBufHi[n] + corrhi[n];
-      corrhi[n] = ((1.0-FwdA)*FwdB) * maskdata->CorrBufHi[n] + (1.0-FwdB) * corrhi[n];
-    }
-
-    /* compute prediction coefficients */
-    WebRtcIsac_LevDurb(a_LO, k_veclo, corrlo2, ORDERLO);
-    WebRtcIsac_LevDurb(a_HI, k_vechi, corrhi, ORDERHI);
-
-    /* bandwidth expansion */
-    tmp = gammaLo;
-    for (n = 1; n <= ORDERLO; n++) {
-      a_LO[n] *= tmp;
-      tmp *= gammaLo;
-    }
-
-    /* residual energy */
-    res_nrg = 0.0;
-    for (j = 0; j <= ORDERLO; j++) {
-      for (n = 0; n <= j; n++) {
-        res_nrg += a_LO[j] * corrlo2[j-n] * a_LO[n];
-      }
-      for (n = j+1; n <= ORDERLO; n++) {
-        res_nrg += a_LO[j] * corrlo2[n-j] * a_LO[n];
-      }
-    }
-
-    /* add hearing threshold and compute the gain */
-    *lo_coeff++ = S_N_R / (sqrt(res_nrg) / varscale + H_T_H);
-
-    /* copy coefficients to output array */
-    for (n = 1; n <= ORDERLO; n++) {
-      *lo_coeff++ = a_LO[n];
-    }
-
-
-    /* bandwidth expansion */
-    tmp = gammaHi;
-    for (n = 1; n <= ORDERHI; n++) {
-      a_HI[n] *= tmp;
-      tmp *= gammaHi;
-    }
-
-    /* residual energy */
-    res_nrg = 0.0;
-    for (j = 0; j <= ORDERHI; j++) {
-      for (n = 0; n <= j; n++) {
-        res_nrg += a_HI[j] * corrhi[j-n] * a_HI[n];
-      }
-      for (n = j+1; n <= ORDERHI; n++) {
-        res_nrg += a_HI[j] * corrhi[n-j] * a_HI[n];
-      }
-    }
-
-    /* add hearing threshold and compute of the gain */
-    *hi_coeff++ = S_N_R / (sqrt(res_nrg) / varscale + H_T_H);
-
-    /* copy coefficients to output array */
-    for (n = 1; n <= ORDERHI; n++) {
-      *hi_coeff++ = a_HI[n];
-    }
-  }
-}
-
-
-
-/******************************************************************************
- * WebRtcIsac_GetLpcCoefUb()
- *
- * Compute LP coefficients and correlation coefficients. At 12 kHz LP
- * coefficients of the first and the last sub-frame is computed. At 16 kHz
- * LP coefficients of 4th, 8th and 12th sub-frames are computed. We always
- * compute correlation coefficients of all sub-frames.
- *
- * Inputs:
- *       -inSignal           : Input signal
- *       -maskdata           : a structure keeping signal from previous frame.
- *       -bandwidth          : specifies if the codec is in 0-16 kHz mode or
- *                             0-12 kHz mode.
- *
- * Outputs:
- *       -lpCoeff            : pointer to a buffer where A-polynomials are
- *                             written to (first coeff is 1 and it is not
- *                             written)
- *       -corrMat            : a matrix where correlation coefficients of each
- *                             sub-frame are written to one row.
- *       -varscale           : a scale used to compute LPC gains.
- */
-void
-WebRtcIsac_GetLpcCoefUb(
-    double*      inSignal,
-    MaskFiltstr* maskdata,
-    double*      lpCoeff,
-    double       corrMat[][UB_LPC_ORDER + 1],
-    double*      varscale,
-    int16_t  bandwidth)
-{
-  int frameCntr, activeFrameCntr, n, pos1, pos2;
-  int16_t criterion1;
-  int16_t criterion2;
-  int16_t numSubFrames = SUBFRAMES * (1 + (bandwidth == isac16kHz));
-  double data[WINLEN];
-  double corrSubFrame[UB_LPC_ORDER+2];
-  double reflecCoeff[UB_LPC_ORDER];
-
-  double aPolynom[UB_LPC_ORDER+1];
-  double tmp;
-
-  /* bandwdith expansion factors */
-  const double gamma = 0.9;
-
-  /* change quallevel depending on pitch gains and level fluctuations */
-  WebRtcIsac_GetVarsUB(inSignal, &(maskdata->OldEnergy), varscale);
-
-  /* replace data in buffer by new look-ahead data */
-  for(frameCntr = 0, activeFrameCntr = 0; frameCntr < numSubFrames;
-      frameCntr++)
-  {
-    if(frameCntr == SUBFRAMES)
-    {
-      // we are in 16 kHz
-      varscale++;
-      WebRtcIsac_GetVarsUB(&inSignal[FRAMESAMPLES_HALF],
-                          &(maskdata->OldEnergy), varscale);
-    }
-    /* Update input buffer and multiply signal with window */
-    for(pos1 = 0; pos1 < WINLEN - UPDATE/2; pos1++)
-    {
-      maskdata->DataBufferLo[pos1] = maskdata->DataBufferLo[pos1 +
-                                                            UPDATE/2];
-      data[pos1] = maskdata->DataBufferLo[pos1] * kLpcCorrWindow[pos1];
-    }
-    pos2 = frameCntr * UPDATE/2;
-    for(n = 0; n < UPDATE/2; n++, pos1++, pos2++)
-    {
-      maskdata->DataBufferLo[pos1] = inSignal[pos2];
-      data[pos1] = maskdata->DataBufferLo[pos1] * kLpcCorrWindow[pos1];
-    }
-
-    /* Get correlation coefficients */
-    /* computing autocorrelation    */
-    WebRtcIsac_AutoCorr(corrSubFrame, data, WINLEN, UB_LPC_ORDER+1);
-    memcpy(corrMat[frameCntr], corrSubFrame,
-           (UB_LPC_ORDER+1)*sizeof(double));
-
-    criterion1 = ((frameCntr == 0) || (frameCntr == (SUBFRAMES - 1))) &&
-        (bandwidth == isac12kHz);
-    criterion2 = (((frameCntr+1) % 4) == 0) &&
-        (bandwidth == isac16kHz);
-    if(criterion1 || criterion2)
-    {
-      /* add noise */
-      corrSubFrame[0] += 1e-6;
-      /* compute prediction coefficients */
-      WebRtcIsac_LevDurb(aPolynom, reflecCoeff, corrSubFrame,
-                        UB_LPC_ORDER);
-
-      /* bandwidth expansion */
-      tmp = gamma;
-      for (n = 1; n <= UB_LPC_ORDER; n++)
-      {
-        *lpCoeff++ = aPolynom[n] * tmp;
-        tmp *= gamma;
-      }
-      activeFrameCntr++;
-    }
-  }
-}
-
-
-
-/******************************************************************************
- * WebRtcIsac_GetLpcGain()
- *
- * Compute the LPC gains for each sub-frame, given the LPC of each sub-frame
- * and the corresponding correlation coefficients.
- *
- * Inputs:
- *       -signal_noise_ratio : the desired SNR in dB.
- *       -numVecs            : number of sub-frames
- *       -corrMat             : a matrix of correlation coefficients where
- *                             each row is a set of correlation coefficients of
- *                             one sub-frame.
- *       -varscale           : a scale computed when WebRtcIsac_GetLpcCoefUb()
- *                             is called.
- *
- * Outputs:
- *       -gain               : pointer to a buffer where LP gains are written.
- *
- */
-void
-WebRtcIsac_GetLpcGain(
-    double        signal_noise_ratio,
-    const double* filtCoeffVecs,
-    int           numVecs,
-    double*       gain,
-    double        corrMat[][UB_LPC_ORDER + 1],
-    const double* varscale)
-{
-  int16_t j, n;
-  int16_t subFrameCntr;
-  double aPolynom[ORDERLO + 1];
-  double res_nrg;
-
-  const double HearThresOffset = -28.0;
-  const double H_T_H = pow(10.0, 0.05 * HearThresOffset);
-  /* divide by sqrt(12) = 3.46 */
-  const double S_N_R = pow(10.0, 0.05 * signal_noise_ratio) / 3.46;
-
-  aPolynom[0] = 1;
-  for(subFrameCntr = 0; subFrameCntr < numVecs; subFrameCntr++)
-  {
-    if(subFrameCntr == SUBFRAMES)
-    {
-      // we are in second half of a SWB frame. use new varscale
-      varscale++;
-    }
-    memcpy(&aPolynom[1], &filtCoeffVecs[(subFrameCntr * (UB_LPC_ORDER + 1)) +
-                                        1], sizeof(double) * UB_LPC_ORDER);
-
-    /* residual energy */
-    res_nrg = 0.0;
-    for(j = 0; j <= UB_LPC_ORDER; j++)
-    {
-      for(n = 0; n <= j; n++)
-      {
-        res_nrg += aPolynom[j] * corrMat[subFrameCntr][j-n] *
-            aPolynom[n];
-      }
-      for(n = j+1; n <= UB_LPC_ORDER; n++)
-      {
-        res_nrg += aPolynom[j] * corrMat[subFrameCntr][n-j] *
-            aPolynom[n];
-      }
-    }
-
-    /* add hearing threshold and compute the gain */
-    gain[subFrameCntr] = S_N_R / (sqrt(res_nrg) / *varscale + H_T_H);
-  }
-}
diff --git a/modules/audio_coding/codecs/isac/main/source/lpc_analysis.h b/modules/audio_coding/codecs/isac/main/source/lpc_analysis.h
deleted file mode 100644
index 5503e2d..0000000
--- a/modules/audio_coding/codecs/isac/main/source/lpc_analysis.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * lpc_analysis.h
- *
- * LPC functions
- *
- */
-
-#ifndef MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_SOURCE_LPC_ANALYSIS_H_
-#define MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_SOURCE_LPC_ANALYSIS_H_
-
-#include "modules/audio_coding/codecs/isac/main/source/settings.h"
-#include "modules/audio_coding/codecs/isac/main/source/structs.h"
-
-void WebRtcIsac_GetLpcCoefLb(double* inLo,
-                             double* inHi,
-                             MaskFiltstr* maskdata,
-                             double signal_noise_ratio,
-                             const int16_t* pitchGains_Q12,
-                             double* lo_coeff,
-                             double* hi_coeff);
-
-void WebRtcIsac_GetLpcGain(double signal_noise_ratio,
-                           const double* filtCoeffVecs,
-                           int numVecs,
-                           double* gain,
-                           double corrLo[][UB_LPC_ORDER + 1],
-                           const double* varscale);
-
-void WebRtcIsac_GetLpcCoefUb(double* inSignal,
-                             MaskFiltstr* maskdata,
-                             double* lpCoeff,
-                             double corr[][UB_LPC_ORDER + 1],
-                             double* varscale,
-                             int16_t bandwidth);
-
-#endif /* MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_SOURCE_LPC_ANALYIS_H_ */
diff --git a/modules/audio_coding/codecs/isac/main/source/lpc_gain_swb_tables.c b/modules/audio_coding/codecs/isac/main/source/lpc_gain_swb_tables.c
deleted file mode 100644
index 6707540..0000000
--- a/modules/audio_coding/codecs/isac/main/source/lpc_gain_swb_tables.c
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * SWB_KLT_Tables_LPCGain.c
- *
- * This file defines tables used for entropy coding of LPC Gain
- * of upper-band.
- *
- */
-
-#include "modules/audio_coding/codecs/isac/main/source/lpc_gain_swb_tables.h"
-#include "modules/audio_coding/codecs/isac/main/source/settings.h"
-
-const double WebRtcIsac_kQSizeLpcGain = 0.100000;
-
-const double WebRtcIsac_kMeanLpcGain = -3.3822;
-
-/*
-* The smallest reconstruction points for quantiztion of
-* LPC gains.
-*/
-const double WebRtcIsac_kLeftRecPointLpcGain[SUBFRAMES] =
-{
-   -0.800000, -1.000000, -1.200000, -2.200000, -3.000000, -12.700000
-};
-
-/*
-* Number of reconstruction points of quantizers for LPC Gains.
-*/
-const int16_t WebRtcIsac_kNumQCellLpcGain[SUBFRAMES] =
-{
-    17,  20,  25,  45,  77, 170
-};
-/*
-* Starting index for entropy decoder to search for the right interval,
-* one entry per LAR coefficient
-*/
-const uint16_t WebRtcIsac_kLpcGainEntropySearch[SUBFRAMES] =
-{
-     8,  10,  12,  22,  38,  85
-};
-
-/*
-* The following 6 vectors define CDF of 6 decorrelated LPC
-* gains.
-*/
-const uint16_t WebRtcIsac_kLpcGainCdfVec0[18] =
-{
-     0,    10,    27,    83,   234,   568,  1601,  4683, 16830, 57534, 63437,
- 64767, 65229, 65408, 65483, 65514, 65527, 65535
-};
-
-const uint16_t WebRtcIsac_kLpcGainCdfVec1[21] =
-{
-     0,    15,    33,    84,   185,   385,   807,  1619,  3529,  7850, 19488,
- 51365, 62437, 64548, 65088, 65304, 65409, 65484, 65507, 65522, 65535
-};
-
-const uint16_t WebRtcIsac_kLpcGainCdfVec2[26] =
-{
-     0,    15,    29,    54,    89,   145,   228,   380,   652,  1493,  4260,
- 12359, 34133, 50749, 57224, 60814, 62927, 64078, 64742, 65103, 65311, 65418,
- 65473, 65509, 65521, 65535
-};
-
-const uint16_t WebRtcIsac_kLpcGainCdfVec3[46] =
-{
-     0,     8,    12,    16,    26,    42,    56,    76,   111,   164,   247,
-   366,   508,   693,  1000,  1442,  2155,  3188,  4854,  7387, 11249, 17617,
- 30079, 46711, 56291, 60127, 62140, 63258, 63954, 64384, 64690, 64891, 65031,
- 65139, 65227, 65293, 65351, 65399, 65438, 65467, 65492, 65504, 65510, 65518,
- 65523, 65535
-};
-
-const uint16_t WebRtcIsac_kLpcGainCdfVec4[78] =
-{
-     0,    17,    29,    39,    51,    70,   104,   154,   234,   324,   443,
-   590,   760,   971,  1202,  1494,  1845,  2274,  2797,  3366,  4088,  4905,
-  5899,  7142,  8683, 10625, 12983, 16095, 20637, 28216, 38859, 47237, 51537,
- 54150, 56066, 57583, 58756, 59685, 60458, 61103, 61659, 62144, 62550, 62886,
- 63186, 63480, 63743, 63954, 64148, 64320, 64467, 64600, 64719, 64837, 64939,
- 65014, 65098, 65160, 65211, 65250, 65290, 65325, 65344, 65366, 65391, 65410,
- 65430, 65447, 65460, 65474, 65487, 65494, 65501, 65509, 65513, 65518, 65520,
- 65535
-};
-
-const uint16_t WebRtcIsac_kLpcGainCdfVec5[171] =
-{
-     0,    10,    12,    14,    16,    18,    23,    29,    35,    42,    51,
-    58,    65,    72,    78,    87,    96,   103,   111,   122,   134,   150,
-   167,   184,   202,   223,   244,   265,   289,   315,   346,   379,   414,
-   450,   491,   532,   572,   613,   656,   700,   751,   802,   853,   905,
-   957,  1021,  1098,  1174,  1250,  1331,  1413,  1490,  1565,  1647,  1730,
-  1821,  1913,  2004,  2100,  2207,  2314,  2420,  2532,  2652,  2783,  2921,
-  3056,  3189,  3327,  3468,  3640,  3817,  3993,  4171,  4362,  4554,  4751,
-  4948,  5142,  5346,  5566,  5799,  6044,  6301,  6565,  6852,  7150,  7470,
-  7797,  8143,  8492,  8835,  9181,  9547,  9919, 10315, 10718, 11136, 11566,
- 12015, 12482, 12967, 13458, 13953, 14432, 14903, 15416, 15936, 16452, 16967,
- 17492, 18024, 18600, 19173, 19736, 20311, 20911, 21490, 22041, 22597, 23157,
- 23768, 24405, 25034, 25660, 26280, 26899, 27614, 28331, 29015, 29702, 30403,
- 31107, 31817, 32566, 33381, 34224, 35099, 36112, 37222, 38375, 39549, 40801,
- 42074, 43350, 44626, 45982, 47354, 48860, 50361, 51845, 53312, 54739, 56026,
- 57116, 58104, 58996, 59842, 60658, 61488, 62324, 63057, 63769, 64285, 64779,
- 65076, 65344, 65430, 65500, 65517, 65535
-};
-
-/*
-* An array of pointers to CDFs of decorrelated LPC Gains
-*/
-const uint16_t* WebRtcIsac_kLpcGainCdfMat[SUBFRAMES] =
-{
-    WebRtcIsac_kLpcGainCdfVec0, WebRtcIsac_kLpcGainCdfVec1,
-    WebRtcIsac_kLpcGainCdfVec2, WebRtcIsac_kLpcGainCdfVec3,
-    WebRtcIsac_kLpcGainCdfVec4, WebRtcIsac_kLpcGainCdfVec5
-};
-
-/*
-* A matrix to decorrellate LPC gains of subframes.
-*/
-const double WebRtcIsac_kLpcGainDecorrMat[SUBFRAMES][SUBFRAMES] =
-{
-    {-0.150860,  0.327872,  0.367220,  0.504613,  0.559270,  0.409234},
-    { 0.457128, -0.613591, -0.289283, -0.029734,  0.393760,  0.418240},
-    {-0.626043,  0.136489, -0.439118, -0.448323,  0.135987,  0.420869},
-    { 0.526617,  0.480187,  0.242552, -0.488754, -0.158713,  0.411331},
-    {-0.302587, -0.494953,  0.588112, -0.063035, -0.404290,  0.387510},
-    { 0.086378,  0.147714, -0.428875,  0.548300, -0.570121,  0.401391}
-};
diff --git a/modules/audio_coding/codecs/isac/main/source/lpc_gain_swb_tables.h b/modules/audio_coding/codecs/isac/main/source/lpc_gain_swb_tables.h
deleted file mode 100644
index 39c4a24..0000000
--- a/modules/audio_coding/codecs/isac/main/source/lpc_gain_swb_tables.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * SWB_KLT_Tables_LPCGain.h
- *
- * This file declares tables used for entropy coding of LPC Gain
- * of upper-band.
- *
- */
-
-#ifndef MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_SOURCE_LPC_GAIN_SWB_TABLES_H_
-#define MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_SOURCE_LPC_GAIN_SWB_TABLES_H_
-
-#include <stdint.h>
-
-#include "modules/audio_coding/codecs/isac/main/source/settings.h"
-
-extern const double WebRtcIsac_kQSizeLpcGain;
-
-extern const double WebRtcIsac_kLeftRecPointLpcGain[SUBFRAMES];
-
-extern const int16_t WebRtcIsac_kNumQCellLpcGain[SUBFRAMES];
-
-extern const uint16_t WebRtcIsac_kLpcGainEntropySearch[SUBFRAMES];
-
-extern const uint16_t WebRtcIsac_kLpcGainCdfVec0[18];
-
-extern const uint16_t WebRtcIsac_kLpcGainCdfVec1[21];
-
-extern const uint16_t WebRtcIsac_kLpcGainCdfVec2[26];
-
-extern const uint16_t WebRtcIsac_kLpcGainCdfVec3[46];
-
-extern const uint16_t WebRtcIsac_kLpcGainCdfVec4[78];
-
-extern const uint16_t WebRtcIsac_kLpcGainCdfVec5[171];
-
-extern const uint16_t* WebRtcIsac_kLpcGainCdfMat[SUBFRAMES];
-
-extern const double WebRtcIsac_kLpcGainDecorrMat[SUBFRAMES][SUBFRAMES];
-
-#endif  // MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_SOURCE_LPC_GAIN_SWB_TABLES_H_
diff --git a/modules/audio_coding/codecs/isac/main/source/lpc_shape_swb12_tables.c b/modules/audio_coding/codecs/isac/main/source/lpc_shape_swb12_tables.c
deleted file mode 100644
index e3600a7..0000000
--- a/modules/audio_coding/codecs/isac/main/source/lpc_shape_swb12_tables.c
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * SWB_KLT_Tables.c
- *
- * This file defines tables used for entropy coding of LPC shape of
- * upper-band signal if the bandwidth is 12 kHz.
- *
- */
-
-#include "modules/audio_coding/codecs/isac/main/source/lpc_shape_swb12_tables.h"
-#include "modules/audio_coding/codecs/isac/main/source/settings.h"
-
-/*
-* Mean value of LAR
-*/
-const double WebRtcIsac_kMeanLarUb12[UB_LPC_ORDER] =
-{
-  0.03748928306641, 0.09453441192543, -0.01112522344398, 0.03800237516842
-};
-
-/*
-* A rotation matrix to decorrelate intra-vector correlation,
-* i.e. correlation among components of LAR vector.
-*/
-const double WebRtcIsac_kIntraVecDecorrMatUb12[UB_LPC_ORDER][UB_LPC_ORDER] =
-{
-    {-0.00075365493856,  -0.05809964887743,  -0.23397966154116,   0.97050367376411},
-    { 0.00625021257734,  -0.17299965610679,   0.95977735920651,   0.22104179375008},
-    { 0.20543384258374,  -0.96202143495696,  -0.15301870801552,  -0.09432375099565},
-    {-0.97865075648479,  -0.20300322280841,  -0.02581111653779,  -0.01913568980258}
-};
-
-/*
-* A rotation matrix to remove correlation among LAR coefficients
-* of different LAR vectors. One might guess that decorrelation matrix
-* for the first component should differ from the second component
-* but we haven't observed a significant benefit of having different
-* decorrelation matrices for different components.
-*/
-const double WebRtcIsac_kInterVecDecorrMatUb12
-[UB_LPC_VEC_PER_FRAME][UB_LPC_VEC_PER_FRAME] =
-{
-    { 0.70650597970460,  -0.70770707262373},
-    {-0.70770707262373,  -0.70650597970460}
-};
-
-/*
-* LAR quantization step-size.
-*/
-const double WebRtcIsac_kLpcShapeQStepSizeUb12 = 0.150000;
-
-/*
-* The smallest reconstruction points for quantiztion of LAR coefficients.
-*/
-const double WebRtcIsac_kLpcShapeLeftRecPointUb12
-[UB_LPC_ORDER*UB_LPC_VEC_PER_FRAME] =
-{
-    -0.900000, -1.050000, -1.350000, -1.800000, -1.350000, -1.650000,
-    -2.250000, -3.450000
-};
-
-/*
-* Number of reconstruction points of quantizers for LAR coefficients.
-*/
-const int16_t WebRtcIsac_kLpcShapeNumRecPointUb12
-[UB_LPC_ORDER * UB_LPC_VEC_PER_FRAME] =
-{
-    13, 15, 19, 27, 19, 24, 32, 48
-};
-
-/*
-* Starting index for entropy decoder to search for the right interval,
-* one entry per LAR coefficient
-*/
-const uint16_t WebRtcIsac_kLpcShapeEntropySearchUb12
-[UB_LPC_ORDER * UB_LPC_VEC_PER_FRAME] =
-{
-     6,  7,  9, 13,  9, 12, 16, 24
-};
-
-/*
-* The following 8 vectors define CDF of 8 decorrelated LAR
-* coefficients.
-*/
-const uint16_t WebRtcIsac_kLpcShapeCdfVec0Ub12[14] =
-{
-     0,    13,    95,   418,  1687,  6498, 21317, 44200, 59029, 63849, 65147,
- 65449, 65525, 65535
-};
-
-const uint16_t WebRtcIsac_kLpcShapeCdfVec1Ub12[16] =
-{
-     0,    10,    59,   255,   858,  2667,  8200, 22609, 42988, 57202, 62947,
- 64743, 65308, 65476, 65522, 65535
-};
-
-const uint16_t WebRtcIsac_kLpcShapeCdfVec2Ub12[20] =
-{
-     0,    18,    40,   118,   332,   857,  2017,  4822, 11321, 24330, 41279,
- 54342, 60637, 63394, 64659, 65184, 65398, 65482, 65518, 65535
-};
-
-const uint16_t WebRtcIsac_kLpcShapeCdfVec3Ub12[28] =
-{
-     0,    21,    38,    90,   196,   398,   770,  1400,  2589,  4650,  8211,
- 14933, 26044, 39592, 50814, 57452, 60971, 62884, 63995, 64621, 65019, 65273,
- 65410, 65480, 65514, 65522, 65531, 65535
-};
-
-const uint16_t WebRtcIsac_kLpcShapeCdfVec4Ub12[20] =
-{
-     0,     7,    46,   141,   403,   969,  2132,  4649, 10633, 24902, 43254,
- 54665, 59928, 62674, 64173, 64938, 65293, 65464, 65523, 65535
-};
-
-const uint16_t WebRtcIsac_kLpcShapeCdfVec5Ub12[25] =
-{
-     0,     7,    22,    72,   174,   411,   854,  1737,  3545,  6774, 13165,
- 25221, 40980, 52821, 58714, 61706, 63472, 64437, 64989, 65287, 65430, 65503,
- 65525, 65529, 65535
-};
-
-const uint16_t WebRtcIsac_kLpcShapeCdfVec6Ub12[33] =
-{
-     0,    11,    21,    36,    65,   128,   228,   401,   707,  1241,  2126,
-  3589,  6060, 10517, 18853, 31114, 42477, 49770, 54271, 57467, 59838, 61569,
- 62831, 63772, 64433, 64833, 65123, 65306, 65419, 65466, 65499, 65519, 65535
-};
-
-const uint16_t WebRtcIsac_kLpcShapeCdfVec7Ub12[49] =
-{
-     0,    14,    34,    67,   107,   167,   245,   326,   449,   645,   861,
-  1155,  1508,  2003,  2669,  3544,  4592,  5961,  7583,  9887, 13256, 18765,
- 26519, 34077, 40034, 44349, 47795, 50663, 53262, 55473, 57458, 59122, 60592,
- 61742, 62690, 63391, 63997, 64463, 64794, 65045, 65207, 65309, 65394, 65443,
- 65478, 65504, 65514, 65523, 65535
-};
-
-/*
-* An array of pointers to CDFs of decorrelated LARs
-*/
-const uint16_t* WebRtcIsac_kLpcShapeCdfMatUb12
-[UB_LPC_ORDER * UB_LPC_VEC_PER_FRAME] =
-{
-    WebRtcIsac_kLpcShapeCdfVec0Ub12, WebRtcIsac_kLpcShapeCdfVec1Ub12,
-    WebRtcIsac_kLpcShapeCdfVec2Ub12, WebRtcIsac_kLpcShapeCdfVec3Ub12,
-    WebRtcIsac_kLpcShapeCdfVec4Ub12, WebRtcIsac_kLpcShapeCdfVec5Ub12,
-    WebRtcIsac_kLpcShapeCdfVec6Ub12, WebRtcIsac_kLpcShapeCdfVec7Ub12
-};
diff --git a/modules/audio_coding/codecs/isac/main/source/lpc_shape_swb12_tables.h b/modules/audio_coding/codecs/isac/main/source/lpc_shape_swb12_tables.h
deleted file mode 100644
index 7448a1e..0000000
--- a/modules/audio_coding/codecs/isac/main/source/lpc_shape_swb12_tables.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * lpc_shape_swb12_tables.h
- *
- * This file declares tables used for entropy coding of LPC shape of
- * upper-band signal if the bandwidth is 12 kHz.
- *
- */
-
-#ifndef MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_SOURCE_LPC_SHAPE_SWB12_TABLES_H_
-#define MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_SOURCE_LPC_SHAPE_SWB12_TABLES_H_
-
-#include <stdint.h>
-
-#include "modules/audio_coding/codecs/isac/main/source/settings.h"
-
-extern const double WebRtcIsac_kMeanLarUb12[UB_LPC_ORDER];
-
-extern const double WebRtcIsac_kMeanLpcGain;
-
-extern const double WebRtcIsac_kIntraVecDecorrMatUb12[UB_LPC_ORDER]
-                                                     [UB_LPC_ORDER];
-
-extern const double WebRtcIsac_kInterVecDecorrMatUb12[UB_LPC_VEC_PER_FRAME]
-                                                     [UB_LPC_VEC_PER_FRAME];
-
-extern const double WebRtcIsac_kLpcShapeQStepSizeUb12;
-
-extern const double
-    WebRtcIsac_kLpcShapeLeftRecPointUb12[UB_LPC_ORDER * UB_LPC_VEC_PER_FRAME];
-
-extern const int16_t
-    WebRtcIsac_kLpcShapeNumRecPointUb12[UB_LPC_ORDER * UB_LPC_VEC_PER_FRAME];
-
-extern const uint16_t
-    WebRtcIsac_kLpcShapeEntropySearchUb12[UB_LPC_ORDER * UB_LPC_VEC_PER_FRAME];
-
-extern const uint16_t WebRtcIsac_kLpcShapeCdfVec0Ub12[14];
-
-extern const uint16_t WebRtcIsac_kLpcShapeCdfVec1Ub12[16];
-
-extern const uint16_t WebRtcIsac_kLpcShapeCdfVec2Ub12[20];
-
-extern const uint16_t WebRtcIsac_kLpcShapeCdfVec3Ub12[28];
-
-extern const uint16_t WebRtcIsac_kLpcShapeCdfVec4Ub12[20];
-
-extern const uint16_t WebRtcIsac_kLpcShapeCdfVec5Ub12[25];
-
-extern const uint16_t WebRtcIsac_kLpcShapeCdfVec6Ub12[33];
-
-extern const uint16_t WebRtcIsac_kLpcShapeCdfVec7Ub12[49];
-
-extern const uint16_t*
-    WebRtcIsac_kLpcShapeCdfMatUb12[UB_LPC_ORDER * UB_LPC_VEC_PER_FRAME];
-
-#endif  // MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_SOURCE_LPC_SHAPE_SWB12_TABLES_H_
diff --git a/modules/audio_coding/codecs/isac/main/source/lpc_shape_swb16_tables.c b/modules/audio_coding/codecs/isac/main/source/lpc_shape_swb16_tables.c
deleted file mode 100644
index 59617fd..0000000
--- a/modules/audio_coding/codecs/isac/main/source/lpc_shape_swb16_tables.c
+++ /dev/null
@@ -1,247 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * SWB16_KLT_Tables.c
- *
- * This file defines tables used for entropy coding of LPC shape of
- * upper-band signal if the bandwidth is 16 kHz.
- *
- */
-
-#include "modules/audio_coding/codecs/isac/main/source/lpc_shape_swb16_tables.h"
-#include "modules/audio_coding/codecs/isac/main/source/settings.h"
-
-/*
-* Mean value of LAR
-*/
-const double WebRtcIsac_kMeanLarUb16[UB_LPC_ORDER] =
-{
-0.454978, 0.364747, 0.102999, 0.104523
-};
-
-/*
-* A rotation matrix to decorrelate intra-vector correlation,
-* i.e. correlation among components of LAR vector.
-*/
-const double WebRtcIsac_kIintraVecDecorrMatUb16[UB_LPC_ORDER][UB_LPC_ORDER] =
-{
-    {-0.020528, -0.085858, -0.002431,  0.996093},
-    {-0.033155,  0.036102,  0.998786,  0.004866},
-    { 0.202627,  0.974853, -0.028940,  0.088132},
-    {-0.978479,  0.202454, -0.039785, -0.002811}
-};
-
-/*
-* A rotation matrix to remove correlation among LAR coefficients
-* of different LAR vectors. One might guess that decorrelation matrix
-* for the first component should differ from the second component
-* but we haven't observed a significant benefit of having different
-* decorrelation matrices for different components.
-*/
-const double WebRtcIsac_kInterVecDecorrMatUb16
-[UB16_LPC_VEC_PER_FRAME][UB16_LPC_VEC_PER_FRAME] =
-{
-    { 0.291675, -0.515786,  0.644927,  0.482658},
-    {-0.647220,  0.479712,  0.289556,  0.516856},
-    { 0.643084,  0.485489, -0.289307,  0.516763},
-    {-0.287185, -0.517823, -0.645389,  0.482553}
-};
-
-/*
-* The following 16 vectors define CDF of 16 decorrelated LAR
-* coefficients.
-*/
-const uint16_t WebRtcIsac_kLpcShapeCdfVec01Ub16[14] =
-{
-     0,      2,     20,    159,   1034,   5688,  20892,  44653,
- 59849,  64485,  65383,  65518,  65534,  65535
-};
-
-const uint16_t WebRtcIsac_kLpcShapeCdfVec1Ub16[16] =
-{
-     0,      1,      7,     43,    276,   1496,   6681,  21653,
- 43891,  58859,  64022,  65248,  65489,  65529,  65534,  65535
-};
-
-const uint16_t WebRtcIsac_kLpcShapeCdfVec2Ub16[18] =
-{
-     0,      1,      9,     54,    238,    933,   3192,   9461,
- 23226,  42146,  56138,  62413,  64623,  65300,  65473,  65521,
- 65533,  65535
-};
-
-const uint16_t WebRtcIsac_kLpcShapeCdfVec3Ub16[30] =
-{
-     0,      2,      4,      8,     17,     36,     75,    155,
-   329,    683,   1376,   2662,   5047,   9508,  17526,  29027,
- 40363,  48997,  55096,  59180,  61789,  63407,  64400,  64967,
- 65273,  65429,  65497,  65526,  65534,  65535
-};
-
-const uint16_t WebRtcIsac_kLpcShapeCdfVec4Ub16[16] =
-{
-     0,      1,     10,     63,    361,   1785,   7407,  22242,
- 43337,  58125,  63729,  65181,  65472,  65527,  65534,  65535
-};
-
-const uint16_t WebRtcIsac_kLpcShapeCdfVec5Ub16[17] =
-{
-     0,      1,      7,     29,    134,    599,   2443,   8590,
- 22962,  42635,  56911,  63060,  64940,  65408,  65513,  65531,
- 65535
-};
-
-const uint16_t WebRtcIsac_kLpcShapeCdfVec6Ub16[21] =
-{
-     0,      1,      5,     16,     57,    191,    611,   1808,
-  4847,  11755,  24612,  40910,  53789,  60698,  63729,  64924,
- 65346,  65486,  65523,  65532,  65535
-};
-
-const uint16_t WebRtcIsac_kLpcShapeCdfVec7Ub16[36] =
-{
-     0,      1,      4,     12,     25,     55,    104,    184,
-   314,    539,    926,   1550,   2479,   3861,   5892,   8845,
- 13281,  20018,  29019,  38029,  45581,  51557,  56057,  59284,
- 61517,  63047,  64030,  64648,  65031,  65261,  65402,  65480,
- 65518,  65530,  65534,  65535
-};
-
-const uint16_t WebRtcIsac_kLpcShapeCdfVec8Ub16[21] =
-{
-     0,      1,      2,      7,     26,    103,    351,   1149,
-  3583,  10204,  23846,  41711,  55361,  61917,  64382,  65186,
- 65433,  65506,  65528,  65534,  65535
-};
-
-const uint16_t WebRtcIsac_kLpcShapeCdfVec01Ub160[21] =
-{
-     0,      6,     19,     63,    205,    638,   1799,   4784,
- 11721,  24494,  40803,  53805,  60886,  63822,  64931,  65333,
- 65472,  65517,  65530,  65533,  65535
-};
-
-const uint16_t WebRtcIsac_kLpcShapeCdfVec01Ub161[28] =
-{
-     0,      1,      3,     11,     31,     86,    221,    506,
-  1101,   2296,   4486,   8477,  15356,  26079,  38941,  49952,
- 57165,  61257,  63426,  64549,  65097,  65351,  65463,  65510,
- 65526,  65532,  65534,  65535
-};
-
-const uint16_t WebRtcIsac_kLpcShapeCdfVec01Ub162[55] =
-{
-     0,      3,     12,     23,     42,     65,     89,    115,
-   150,    195,    248,    327,    430,    580,    784,   1099,
-  1586,   2358,   3651,   5899,   9568,  14312,  19158,  23776,
- 28267,  32663,  36991,  41153,  45098,  48680,  51870,  54729,
- 57141,  59158,  60772,  62029,  63000,  63761,  64322,  64728,
- 65000,  65192,  65321,  65411,  65463,  65496,  65514,  65523,
- 65527,  65529,  65531,  65532,  65533,  65534,  65535
-};
-
-const uint16_t WebRtcIsac_kLpcShapeCdfVec01Ub163[26] =
-{
-     0,      2,      4,     10,     21,     48,    114,    280,
-   701,   1765,   4555,  11270,  24267,  41213,  54285,  61003,
- 63767,  64840,  65254,  65421,  65489,  65514,  65526,  65532,
- 65534,  65535
-};
-
-const uint16_t WebRtcIsac_kLpcShapeCdfVec01Ub164[28] =
-{
-     0,      1,      3,      6,     15,     36,     82,    196,
-   453,   1087,   2557,   5923,  13016,  25366,  40449,  52582,
- 59539,  62896,  64389,  65033,  65316,  65442,  65494,  65519,
- 65529,  65533,  65534,  65535
-};
-
-const uint16_t WebRtcIsac_kLpcShapeCdfVec01Ub165[34] =
-{
-     0,      2,      4,      8,     18,     35,     73,    146,
-   279,    524,    980,   1789,   3235,   5784,  10040,  16998,
- 27070,  38543,  48499,  55421,  59712,  62257,  63748,  64591,
- 65041,  65278,  65410,  65474,  65508,  65522,  65530,  65533,
- 65534,  65535
-};
-
-const uint16_t WebRtcIsac_kLpcShapeCdfVec01Ub166[71] =
-{
-     0,      1,      2,      6,     13,     26,     55,     92,
-   141,    191,    242,    296,    355,    429,    522,    636,
-   777,    947,   1162,   1428,   1753,   2137,   2605,   3140,
-  3743,   4409,   5164,   6016,   6982,   8118,   9451,  10993,
- 12754,  14810,  17130,  19780,  22864,  26424,  30547,  35222,
- 40140,  44716,  48698,  52056,  54850,  57162,  59068,  60643,
- 61877,  62827,  63561,  64113,  64519,  64807,  65019,  65167,
- 65272,  65343,  65399,  65440,  65471,  65487,  65500,  65509,
- 65518,  65524,  65527,  65531,  65533,  65534,  65535
-};
-
-/*
-* An array of pointers to CDFs of decorrelated LARs
-*/
-const uint16_t* WebRtcIsac_kLpcShapeCdfMatUb16
-[UB_LPC_ORDER * UB16_LPC_VEC_PER_FRAME] = {
-     WebRtcIsac_kLpcShapeCdfVec01Ub16,
-     WebRtcIsac_kLpcShapeCdfVec1Ub16,
-     WebRtcIsac_kLpcShapeCdfVec2Ub16,
-     WebRtcIsac_kLpcShapeCdfVec3Ub16,
-     WebRtcIsac_kLpcShapeCdfVec4Ub16,
-     WebRtcIsac_kLpcShapeCdfVec5Ub16,
-     WebRtcIsac_kLpcShapeCdfVec6Ub16,
-     WebRtcIsac_kLpcShapeCdfVec7Ub16,
-     WebRtcIsac_kLpcShapeCdfVec8Ub16,
-     WebRtcIsac_kLpcShapeCdfVec01Ub160,
-     WebRtcIsac_kLpcShapeCdfVec01Ub161,
-     WebRtcIsac_kLpcShapeCdfVec01Ub162,
-     WebRtcIsac_kLpcShapeCdfVec01Ub163,
-     WebRtcIsac_kLpcShapeCdfVec01Ub164,
-     WebRtcIsac_kLpcShapeCdfVec01Ub165,
-     WebRtcIsac_kLpcShapeCdfVec01Ub166
-};
-
-/*
-* The smallest reconstruction points for quantiztion of LAR coefficients.
-*/
-const double WebRtcIsac_kLpcShapeLeftRecPointUb16
-[UB_LPC_ORDER * UB16_LPC_VEC_PER_FRAME] =
-{
- -0.8250,  -0.9750,  -1.1250,  -2.1750,  -0.9750,  -1.1250,  -1.4250,
- -2.6250,  -1.4250,  -1.2750,  -1.8750,  -3.6750,  -1.7250,  -1.8750,
- -2.3250,  -5.4750
-};
-
-/*
-* Number of reconstruction points of quantizers for LAR coefficients.
-*/
-const int16_t WebRtcIsac_kLpcShapeNumRecPointUb16
-[UB_LPC_ORDER * UB16_LPC_VEC_PER_FRAME] =
-{
-   13,    15,    17,    29,    15,    16,    20,    35,    20,
-   20,    27,    54,    25,    27,    33,    70
-};
-
-/*
-* Starting index for entropy decoder to search for the right interval,
-* one entry per LAR coefficient
-*/
-const uint16_t WebRtcIsac_kLpcShapeEntropySearchUb16
-[UB_LPC_ORDER * UB16_LPC_VEC_PER_FRAME] =
-{
-    6,     7,     8,    14,     7,     8,    10,    17,    10,
-   10,    13,    27,    12,    13,    16,    35
-};
-
-/*
-* LAR quantization step-size.
-*/
-const double WebRtcIsac_kLpcShapeQStepSizeUb16 = 0.150000;
diff --git a/modules/audio_coding/codecs/isac/main/source/lpc_shape_swb16_tables.h b/modules/audio_coding/codecs/isac/main/source/lpc_shape_swb16_tables.h
deleted file mode 100644
index 51101db..0000000
--- a/modules/audio_coding/codecs/isac/main/source/lpc_shape_swb16_tables.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * lpc_shape_swb16_tables.h
- *
- * This file declares tables used for entropy coding of LPC shape of
- * upper-band signal if the bandwidth is 16 kHz.
- *
- */
-
-#ifndef MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_SOURCE_LPC_SHAPE_SWB16_TABLES_H_
-#define MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_SOURCE_LPC_SHAPE_SWB16_TABLES_H_
-
-#include <stdint.h>
-
-#include "modules/audio_coding/codecs/isac/main/source/settings.h"
-
-extern const double WebRtcIsac_kMeanLarUb16[UB_LPC_ORDER];
-
-extern const double WebRtcIsac_kIintraVecDecorrMatUb16[UB_LPC_ORDER]
-                                                      [UB_LPC_ORDER];
-
-extern const double WebRtcIsac_kInterVecDecorrMatUb16[UB16_LPC_VEC_PER_FRAME]
-                                                     [UB16_LPC_VEC_PER_FRAME];
-
-extern const uint16_t WebRtcIsac_kLpcShapeCdfVec01Ub16[14];
-
-extern const uint16_t WebRtcIsac_kLpcShapeCdfVec1Ub16[16];
-
-extern const uint16_t WebRtcIsac_kLpcShapeCdfVec2Ub16[18];
-
-extern const uint16_t WebRtcIsac_kLpcShapeCdfVec3Ub16[30];
-
-extern const uint16_t WebRtcIsac_kLpcShapeCdfVec4Ub16[16];
-
-extern const uint16_t WebRtcIsac_kLpcShapeCdfVec5Ub16[17];
-
-extern const uint16_t WebRtcIsac_kLpcShapeCdfVec6Ub16[21];
-
-extern const uint16_t WebRtcIsac_kLpcShapeCdfVec7Ub16[36];
-
-extern const uint16_t WebRtcIsac_kLpcShapeCdfVec8Ub16[21];
-
-extern const uint16_t WebRtcIsac_kLpcShapeCdfVec01Ub160[21];
-
-extern const uint16_t WebRtcIsac_kLpcShapeCdfVec01Ub161[28];
-
-extern const uint16_t WebRtcIsac_kLpcShapeCdfVec01Ub162[55];
-
-extern const uint16_t WebRtcIsac_kLpcShapeCdfVec01Ub163[26];
-
-extern const uint16_t WebRtcIsac_kLpcShapeCdfVec01Ub164[28];
-
-extern const uint16_t WebRtcIsac_kLpcShapeCdfVec01Ub165[34];
-
-extern const uint16_t WebRtcIsac_kLpcShapeCdfVec01Ub166[71];
-
-extern const uint16_t*
-    WebRtcIsac_kLpcShapeCdfMatUb16[UB_LPC_ORDER * UB16_LPC_VEC_PER_FRAME];
-
-extern const double
-    WebRtcIsac_kLpcShapeLeftRecPointUb16[UB_LPC_ORDER * UB16_LPC_VEC_PER_FRAME];
-
-extern const int16_t
-    WebRtcIsac_kLpcShapeNumRecPointUb16[UB_LPC_ORDER * UB16_LPC_VEC_PER_FRAME];
-
-extern const uint16_t
-    WebRtcIsac_kLpcShapeEntropySearchUb16[UB_LPC_ORDER *
-                                          UB16_LPC_VEC_PER_FRAME];
-
-extern const double WebRtcIsac_kLpcShapeQStepSizeUb16;
-
-#endif  // MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_SOURCE_LPC_SHAPE_SWB16_TABLES_H_
diff --git a/modules/audio_coding/codecs/isac/main/source/lpc_tables.c b/modules/audio_coding/codecs/isac/main/source/lpc_tables.c
deleted file mode 100644
index 461b92e..0000000
--- a/modules/audio_coding/codecs/isac/main/source/lpc_tables.c
+++ /dev/null
@@ -1,601 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/* coding tables for the KLT coefficients */
-
-#include "modules/audio_coding/codecs/isac/main/source/lpc_tables.h"
-#include "modules/audio_coding/codecs/isac/main/source/settings.h"
-
-/* cdf array for model indicator */
-const uint16_t WebRtcIsac_kQKltModelCdf[4] = {
-    0,  15434,  37548,  65535 };
-
-/* pointer to cdf array for model indicator */
-const uint16_t *WebRtcIsac_kQKltModelCdfPtr[1] = {
-    WebRtcIsac_kQKltModelCdf };
-
-/* initial cdf index for decoder of model indicator */
-const uint16_t WebRtcIsac_kQKltModelInitIndex[1] = { 1 };
-
-/* offset to go from rounded value to quantization index */
-const short WebRtcIsac_kQKltQuantMinGain[12] = {
-    3,  6,  4,  6,  6,  9,  5,  16,  11,  34, 32,  47 };
-
-
-const short WebRtcIsac_kQKltQuantMinShape[108] = {
-    0,  0,  0,  0,  0,  0,  0,  0,  0,  1,
-    1,  1,  1,  1,  2,  2,  2,  3,  0,  0,
-    0,  0,  1,  0,  0,  0,  0,  1,  1,  1,
-    1,  1,  1,  2,  2,  3,  0,  0,  0,  0,
-    1,  0,  1,  1,  1,  1,  1,  1,  1,  2,
-    2,  4,  3,  5,  0,  0,  0,  0,  1,  1,
-    1,  1,  1,  1,  2,  1,  2,  2,  3,  4,
-    4,  7,  0,  0,  1,  1,  1,  1,  1,  1,
-    1,  2,  3,  2,  3,  4,  4,  5,  7,  13,
-    0,  1,  1,  2,  3,  2,  2,  2,  4,  4,
-    5,  6,  7,  11,  9,  13,  12,  26 };
-
-/* maximum quantization index */
-const uint16_t WebRtcIsac_kQKltMaxIndGain[12] = {
-    6,  12,  8,  14,  10,  19,  12,  31,  22,  56, 52,  138 };
-
-const uint16_t WebRtcIsac_kQKltMaxIndShape[108] = {
-    0,  0,  0,  0,  0,  0,  0,  0,  0,  1,
-    2,  2,  2,  2,  4,  4,  5,  6,  0,  0,
-    0,  0,  1,  0,  0,  0,  0,  1,  2,  2,
-    2,  2,  3,  4,  5,  7,  0,  0,  0,  0,
-    2,  0,  2,  2,  2,  2,  3,  2,  2,  4,
-    4,  6,  6,  9,  0,  0,  0,  0,  2,  2,
-    2,  2,  2,  2,  3,  2,  4,  4,  7,  7,
-    9,  13,  0,  0,  2,  2,  2,  2,  2,  2,
-    3,  4,  5,  4,  6,  8,  8,  10,  16,  25,
-    0,  2,  2,  4,  5,  4,  4,  4,  7,  8,
-    9,  10,  13,  19,  17,  23,  25,  49 };
-
-/* index offset */
-const uint16_t WebRtcIsac_kQKltOffsetGain[12] = {
-    0,  7,  20,  29,  44,  55,  75,  88,  120,  143,  200,  253 };
-
-const uint16_t WebRtcIsac_kQKltOffsetShape[108] = {
-    0,  1,  2,  3,  4,  5,  6,  7,  8,  9,
-    11,  14,  17,  20,  23,  28,  33,  39,  46,  47,
-    48,  49,  50,  52,  53,  54,  55,  56,  58,  61,
-    64,  67,  70,  74,  79,  85,  93,  94,  95,  96,
-    97,  100,  101,  104,  107,  110,  113,  117,  120,  123,
-    128,  133,  140,  147,  157,  158,  159,  160,  161,  164,
-    167,  170,  173,  176,  179,  183,  186,  191,  196,  204,
-    212,  222,  236,  237,  238,  241,  244,  247,  250,  253,
-    256,  260,  265,  271,  276,  283,  292,  301,  312,  329,
-    355,  356,  359,  362,  367,  373,  378,  383,  388,  396,
-    405,  415,  426,  440,  460,  478,  502,  528 };
-
-/* initial cdf index for KLT coefficients */
-const uint16_t WebRtcIsac_kQKltInitIndexGain[12] = {
-    3,  6,  4,  7,  5,  10,  6,  16,  11,  28, 26,  69};
-
-const uint16_t WebRtcIsac_kQKltInitIndexShape[108] = {
-    0,  0,  0,  0,  0,  0,  0,  0,  0,  1,
-    1,  1,  1,  1,  2,  2,  3,  3,  0,  0,
-    0,  0,  1,  0,  0,  0,  0,  1,  1,  1,
-    1,  1,  2,  2,  3,  4,  0,  0,  0,  0,
-    1,  0,  1,  1,  1,  1,  2,  1,  1,  2,
-    2,  3,  3,  5,  0,  0,  0,  0,  1,  1,
-    1,  1,  1,  1,  2,  1,  2,  2,  4,  4,
-    5,  7,  0,  0,  1,  1,  1,  1,  1,  1,
-    2,  2,  3,  2,  3,  4,  4,  5,  8,  13,
-    0,  1,  1,  2,  3,  2,  2,  2,  4,  4,
-    5,  5,  7,  10,  9,  12,  13,  25 };
-
-
-/* quantizer representation levels */
-const double WebRtcIsac_kQKltLevelsGain[392] = {
-    -2.78127126, -1.76745590, -0.77913790, -0.00437329,  0.79961206,
-    1.81775776, 2.81389782, -5.78753143, -4.88384084, -3.89320940,
-    -2.88133610, -1.92859977, -0.86347396,  0.02003888,  0.86140400,
-    1.89667156,  2.97134967,  3.98781964,  4.91727277,  5.82865898,
-    -4.11195874, -2.80898424, -1.87547977, -0.80943825, -0.00679084,
-    0.79573851,  1.83953397,  2.67586037,  3.76274082, -6.10933968,
-    -4.93034581, -3.89281296, -2.91530625, -1.89684163, -0.85319130,
-    -0.02275767,  0.86862017,  1.91578276,  2.96107339,  3.96543056,
-    4.91369908,  5.91058154,  6.83848343,  8.07136925, -5.87470395,
-    -4.84703049, -3.84284597, -2.86168446, -1.89290192, -0.82798145,
-    -0.00080013,  0.82594974,  1.85754329,  2.88351798,  3.96172628,
-    -8.85684885, -7.87387461, -6.97811862, -5.93256270, -4.94301439,
-    -3.95513701, -2.96041544, -1.94031192, -0.87961478, -0.00456201,
-    0.89911505,  1.91723376,  2.94011511,  3.93302540,  4.97990967,
-    5.93133404,  7.02181199,  7.92407762,  8.80155440,  10.04665814,
-    -4.82396678, -3.85612158, -2.89482244, -1.89558408, -0.90036978,
-    -0.00677823,  0.90607989,  1.90937981,  2.91175777,  3.91637730,
-    4.97565723,  5.84771228,  7.11145863, -16.07879840, -15.03776309,
-    -13.93905670, -12.95671800, -11.89171202, -10.95820934, -9.95923714,
-    -8.94357334, -7.99068299, -6.97481009, -5.94826231, -4.96673988,
-    -3.97490466, -2.97846970, -1.95130435, -0.94215262, -0.01444043,
-    0.96770704,  1.95848598,  2.94107862,  3.95666119,  4.97253085,
-    5.97191122,  6.93277360,  7.96608727,  8.87958779,  10.00264269,
-    10.86560820,  12.07449071,  13.04491775,  13.97507061,  14.91845261,
-    -10.85696295, -9.83365357, -9.01245635, -7.95915145, -6.95625003,
-    -5.95362618, -4.93468444, -3.98760978, -2.95044407, -1.97041277,
-    -0.97701799, -0.00840234,  0.97834289,  1.98361415,  2.97802439,
-    3.96415871,  4.95369042,  5.94101770,  6.92756798,  7.94063998,
-    8.85951828,  9.97077022,  11.00068503, -33.92030406, -32.81426422,
-    -32.00000000, -31.13243639, -30.11886909, -29.06017570, -28.12598824,
-    -27.22045482, -25.81215858, -25.07849962, -23.93018013, -23.02097643,
-    -21.89529725, -20.99091085, -19.98889048, -18.94327044, -17.96562071,
-    -16.96126218, -15.95054062, -14.98516200, -13.97101012, -13.02106500,
-    -11.98438006, -11.03216748, -9.95930286, -8.97043946, -7.98085082,
-    -6.98360995, -5.98998802, -4.98668173, -4.00032906, -3.00420619,
-    -1.98701132, -0.99324682, -0.00609324,  0.98297834,  1.99483076,
-    3.00305044,  3.97142097,  4.97525759,  5.98612258,  6.97448236,
-    7.97575900,  9.01086211,  9.98665542,  11.00541438,  11.98078628,
-    12.92352471,  14.06849675,  14.99949430,  15.94904834,  16.97440321,
-    18.04040916,  18.88987609,  20.05312391,  21.00000000,  21.79443341,
-    -31.98578825, -31.00000000, -29.89060567, -28.98555686, -27.97114102,
-    -26.84935410, -26.02402230, -24.94195278, -23.92336849, -22.95552382,
-    -21.97932836, -20.96055470, -19.99649553, -19.03436122, -17.96706525,
-    -17.01139515, -16.01363516, -14.99154248, -14.00298333, -12.99630613,
-    -11.99955519, -10.99000421, -10.00819092, -8.99763648, -7.98431793,
-    -7.01769025, -5.99604690, -4.99980697, -3.99334671, -3.01748192,
-    -2.02051217, -1.00848371, -0.01942358,  1.00477757,  1.95477872,
-    2.98593031,  3.98779079,  4.96862849,  6.02694771,  6.93983733,
-    7.89874717,  8.99615862,  10.02367921,  10.96293452,  11.84351528,
-    12.92207187,  13.85122329,  15.05146877,  15.99371264,  17.00000000,
-    18.00000000,  19.00000000,  19.82763573, -47.00000000, -46.00000000,
-    -44.87138498, -44.00000000, -43.00000000, -42.00000000, -41.00000000,
-    -39.88966612, -38.98913239, -37.80306486, -37.23584325, -35.94200288,
-    -34.99881301, -34.11361858, -33.06507360, -32.13129135, -30.90891364,
-    -29.81511907, -28.99250380, -28.04535391, -26.99767800, -26.04418164,
-    -24.95687851, -24.04865595, -23.03392645, -21.89366707, -20.93517364,
-    -19.99388660, -18.91620943, -18.03749683, -16.99532379, -15.98683813,
-    -15.06421479, -13.99359211, -12.99714098, -11.97022520, -10.98500279,
-    -9.98834422, -8.95729330, -8.01232284, -7.00253661, -5.99681626,
-    -5.01207817, -3.95914904, -3.01232178, -1.96615919, -0.97687670,
-    0.01228030,  0.98412288,  2.01753544,  3.00580570,  3.97783510,
-    4.98846894,  6.01321400,  7.00867732,  8.00416375,  9.01771966,
-    9.98637729,  10.98255180,  11.99194163,  13.01807333,  14.00999545,
-    15.00118556,  16.00089224,  17.00584148,  17.98251763,  18.99942091,
-    19.96917690,  20.97839265,  21.98207297,  23.00171271,  23.99930737,
-    24.99746061,  26.00936304,  26.98240132,  28.01126868,  29.01395915,
-    29.98153507,  31.01376711,  31.99876818,  33.00475317,  33.99753994,
-    34.99493913,  35.98933585,  36.95620160,  37.98428461,  38.99317544,
-    40.01832073,  40.98048133,  41.95999283,  42.98232091,  43.96523612,
-    44.99574268,  45.99524194,  47.05464025,  48.03821548,  48.99354366,
-    49.96400411,  50.98017973,  51.95184408,  52.96291806,  54.00194392,
-    54.96603783,  55.95623778,  57.03076595,  58.05889901,  58.99081551,
-    59.97928121,  61.05071612,  62.03971580,  63.01286038,  64.01290338,
-    65.02074503,  65.99454594,  67.00399425,  67.96571257,  68.95305727,
-    69.92030664,  70.95594862,  71.98088567,  73.04764124,  74.00285480,
-    75.02696330,  75.89837673,  76.93459997,  78.16266309,  78.83317543,
-    80.00000000,  80.87251574,  82.09803524,  83.10671664,  84.00000000,
-    84.77023523,  86.00000000,  87.00000000,  87.92946897,  88.69159118,
-    90.00000000,  90.90535270 };
-
-const double WebRtcIsac_kQKltLevelsShape[578] = {
-    0.00032397,  0.00008053, -0.00061202, -0.00012620,  0.00030437,
-    0.00054764, -0.00027902,  0.00069360,  0.00029449, -0.80219239,
-    0.00091089, -0.74514927, -0.00094283,  0.64030631, -0.60509119,
-    0.00035575,  0.61851665, -0.62129957,  0.00375219,  0.60054900,
-    -0.61554359,  0.00054977,  0.63362016, -1.73118727, -0.65422341,
-    0.00524568,  0.66165298,  1.76785515, -1.83182018, -0.65997434,
-    -0.00011887,  0.67524299,  1.79933938, -1.76344480, -0.72547708,
-    -0.00133017,  0.73104704,  1.75305377,  2.85164534, -2.80423916,
-    -1.71959639, -0.75419722, -0.00329945,  0.77196760,  1.72211069,
-    2.87339653,  0.00031089, -0.00015311,  0.00018201, -0.00035035,
-    -0.77357251,  0.00154647, -0.00047625, -0.00045299,  0.00086590,
-    0.00044762, -0.83383829,  0.00024787, -0.68526258, -0.00122472,
-    0.64643255, -0.60904942, -0.00448987,  0.62309184, -0.59626442,
-    -0.00574132,  0.62296546, -0.63222115,  0.00013441,  0.63609545,
-    -0.66911055, -0.00369971,  0.66346095,  2.07281301, -1.77184694,
-    -0.67640425, -0.00010145,  0.64818392,  1.74948973, -1.69420224,
-    -0.71943894, -0.00004680,  0.75303493,  1.81075983,  2.80610041,
-    -2.80005755, -1.79866753, -0.77409777, -0.00084220,  0.80141293,
-    1.78291081,  2.73954236,  3.82994169,  0.00015140, -0.00012766,
-    -0.00034241, -0.00119125, -0.76113497,  0.00069246,  0.76722027,
-    0.00132862, -0.69107530,  0.00010656,  0.77061578, -0.78012970,
-    0.00095947,  0.77828502, -0.64787758,  0.00217168,  0.63050167,
-    -0.58601125,  0.00306596,  0.59466308, -0.58603410,  0.00059779,
-    0.64257970,  1.76512766, -0.61193600, -0.00259517,  0.59767574,
-    -0.61026273,  0.00315811,  0.61725479, -1.69169719, -0.65816029,
-    0.00067575,  0.65576890,  2.00000000, -1.72689193, -0.69780808,
-    -0.00040990,  0.70668487,  1.74198458, -3.79028154, -3.00000000,
-    -1.73194459, -0.70179341, -0.00106695,  0.71302629,  1.76849782,
-    -2.89332364, -1.78585007, -0.78731491, -0.00132610,  0.79692976,
-    1.75247009,  2.97828682, -5.26238694, -3.69559829, -2.87286122,
-    -1.84908818, -0.84434577, -0.01167975,  0.84641753,  1.84087672,
-    2.87628156,  3.83556679, -0.00190204,  0.00092642,  0.00354385,
-    -0.00012982, -0.67742785,  0.00229509,  0.64935672, -0.58444751,
-    0.00470733,  0.57299534, -0.58456202, -0.00097715,  0.64593607,
-    -0.64060330, -0.00638534,  0.59680157, -0.59287537,  0.00490772,
-    0.58919707, -0.60306173, -0.00417464,  0.60562100, -1.75218757,
-    -0.63018569, -0.00225922,  0.63863300, -0.63949939, -0.00126421,
-    0.64268914, -1.75851182, -0.68318060,  0.00510418,  0.69049211,
-    1.88178506, -1.71136148, -0.72710534, -0.00815559,  0.73412917,
-    1.79996711, -2.77111145, -1.73940498, -0.78212945,  0.01074476,
-    0.77688916,  1.76873972,  2.87281379,  3.77554698, -3.75832725,
-    -2.95463235, -1.80451491, -0.80017226,  0.00149902,  0.80729206,
-    1.78265046,  2.89391793, -3.78236148, -2.83640598, -1.82532067,
-    -0.88844327, -0.00620952,  0.88208030,  1.85757631,  2.81712391,
-    3.88430176,  5.16179367, -7.00000000, -5.93805408, -4.87172597,
-    -3.87524433, -2.89399744, -1.92359563, -0.92136341, -0.00172725,
-    0.93087018,  1.90528280,  2.89809686,  3.88085708,  4.89147740,
-    5.89078692, -0.00239502,  0.00312564, -1.00000000,  0.00178325,
-    1.00000000, -0.62198029,  0.00143254,  0.65344051, -0.59851220,
-    -0.00676987,  0.61510140, -0.58894151,  0.00385055,  0.59794203,
-    -0.59808568, -0.00038214,  0.57625703, -0.63009713, -0.01107985,
-    0.61278758, -0.64206758, -0.00154369,  0.65480598,  1.80604162,
-    -1.80909286, -0.67810514,  0.00205762,  0.68571097,  1.79453891,
-    -3.22682422, -1.73808453, -0.71870305, -0.00738594,  0.71486172,
-    1.73005326, -1.66891897, -0.73689615, -0.00616203,  0.74262409,
-    1.73807899, -2.92417482, -1.73866741, -0.78133871,  0.00764425,
-    0.80027264,  1.78668732,  2.74992588, -4.00000000, -2.75578740,
-    -1.83697516, -0.83117035, -0.00355191,  0.83527172,  1.82814700,
-    2.77377675,  3.80718693, -3.81667698, -2.83575471, -1.83372350,
-    -0.86579471,  0.00547578,  0.87582281,  1.82858793,  2.87265007,
-    3.91405377, -4.87521600, -3.78999094, -2.86437014, -1.86964365,
-    -0.90618018,  0.00128243,  0.91497811,  1.87374952,  2.83199819,
-    3.91519130,  4.76632822, -6.68713448, -6.01252467, -4.94587936,
-    -3.88795368, -2.91299088, -1.92592211, -0.95504570, -0.00089980,
-    0.94565200,  1.93239633,  2.91832808,  3.91363475,  4.88920034,
-    5.96471415,  6.83905252,  7.86195009,  8.81571018,-12.96141759,
-    -11.73039516,-10.96459719, -9.97382433, -9.04414433, -7.89460619,
-    -6.96628608, -5.93236595, -4.93337924, -3.95479990, -2.96451499,
-    -1.96635876, -0.97271229, -0.00402238,  0.98343930,  1.98348291,
-    2.96641164,  3.95456471,  4.95517089,  5.98975714,  6.90322073,
-    7.90468849,  8.85639467,  9.97255498, 10.79006309, 11.81988596,
-    0.04950500, -1.00000000, -0.01226628,  1.00000000, -0.59479469,
-    -0.10438305,  0.59822144, -2.00000000, -0.67109149, -0.09256692,
-    0.65171621,  2.00000000, -3.00000000, -1.68391999, -0.76681039,
-    -0.03354151,  0.71509146,  1.77615472, -2.00000000, -0.68661511,
-    -0.02497881,  0.66478398,  2.00000000, -2.00000000, -0.67032784,
-    -0.00920582,  0.64892756,  2.00000000, -2.00000000, -0.68561894,
-    0.03641869,  0.73021611,  1.68293863, -4.00000000, -2.72024184,
-    -1.80096059, -0.81696185,  0.03604685,  0.79232033,  1.70070730,
-    3.00000000, -4.00000000, -2.71795670, -1.80482986, -0.86001162,
-    0.03764903,  0.87723968,  1.79970771,  2.72685932,  3.67589143,
-    -5.00000000, -4.00000000, -2.85492548, -1.78996365, -0.83250358,
-    -0.01376828,  0.84195506,  1.78161105,  2.76754458,  4.00000000,
-    -6.00000000, -5.00000000, -3.82268811, -2.77563624, -1.82608163,
-    -0.86486114, -0.02671886,  0.86693165,  1.88422879,  2.86248347,
-    3.95632216, -7.00000000, -6.00000000, -5.00000000, -3.77533988,
-    -2.86391432, -1.87052039, -0.90513658,  0.06271236,  0.91083620,
-    1.85734756,  2.86031688,  3.82019418,  4.94420394,  6.00000000,
-    -11.00000000,-10.00000000, -9.00000000, -8.00000000, -6.91952415,
-    -6.00000000, -4.92044374, -3.87845165, -2.87392362, -1.88413020,
-    -0.91915740,  0.00318517,  0.91602800,  1.89664838,  2.88925058,
-    3.84123856,  4.78988651,  5.94526812,  6.81953917,  8.00000000,
-    -9.00000000, -8.00000000, -7.03319143, -5.94530963, -4.86669720,
-    -3.92438007, -2.88620396, -1.92848070, -0.94365985,  0.01671855,
-    0.97349410,  1.93419878,  2.89740109,  3.89662823,  4.83235583,
-    5.88106535,  6.80328232,  8.00000000,-13.00000000,-12.00000000,
-    -11.00000000,-10.00000000, -9.00000000, -7.86033489, -6.83344055,
-    -5.89844215, -4.90811454, -3.94841298, -2.95820490, -1.98627966,
-    -0.99161468, -0.02286136,  0.96055651,  1.95052433,  2.93969396,
-    3.94304346,  4.88522624,  5.87434241,  6.78309433,  7.87244101,
-    9.00000000, 10.00000000,-12.09117356,-11.00000000,-10.00000000,
-    -8.84766108, -7.86934236, -6.98544896, -5.94233429, -4.95583292,
-    -3.95575986, -2.97085529, -1.98955811, -0.99359873, -0.00485413,
-    0.98298870,  1.98093258,  2.96430203,  3.95540216,  4.96915010,
-    5.96775124,  6.99236918,  7.96503302,  8.99864542,  9.85857723,
-    10.96541926, 11.91647197, 12.71060069,-26.00000000,-25.00000000,
-    -24.00585596,-23.11642573,-22.14271284,-20.89800711,-19.87815799,
-    -19.05036354,-17.88555651,-16.86471209,-15.97711073,-14.94012359,
-    -14.02661226,-12.98243228,-11.97489256,-10.97402777, -9.96425624,
-    -9.01085220, -7.97372506, -6.98795002, -5.97271328, -5.00191694,
-    -3.98055849, -2.98458048, -1.99470442, -0.99656768, -0.00825666,
-    1.00272004,  1.99922218,  2.99357669,  4.01407905,  5.01003897,
-    5.98115528,  7.00018958,  8.00338125,  8.98981046,  9.98990318,
-    10.96341479, 11.96866930, 12.99175139, 13.94580443, 14.95745083,
-    15.98992869, 16.97484646, 17.99630043, 18.93396897, 19.88347741,
-    20.96532482, 21.92191032, 23.22314702 };
-
-
-/* cdf tables for quantizer indices */
-const uint16_t WebRtcIsac_kQKltCdfGain[404] = {
-    0,  13,  301,  3730,  61784,  65167,  65489,  65535,  0,  17,
-    142,  314,  929,  2466,  7678,  56450,  63463,  64740,  65204,  65426,
-    65527,  65535,  0,  8,  100,  724,  6301,  60105,  65125,  65510,
-    65531,  65535,  0,  13,  117,  368,  1068,  3010,  11928,  53603,
-    61177,  63404,  64505,  65108,  65422,  65502,  65531,  65535,  0,  4,
-    17,  96,  410,  1859,  12125,  54361,  64103,  65305,  65497,  65535,
-    0,  4,  88,  230,  469,  950,  1746,  3228,  6092,  16592,
-    44756,  56848,  61256,  63308,  64325,  64920,  65309,  65460,  65502,
-    65522, 65535,  0,  88,  352,  1675,  6339,  20749,  46686,  59284,  63525,
-    64949,  65359,  65502,  65527,  65535,  0,  13,  38,  63,  117,
-    234,  381,  641,  929,  1407,  2043,  2809,  4032,  5753,  8792,
-    14407,  24308,  38941,  48947,  55403,  59293,  61411,  62688,  63630,
-    64329, 64840,  65188,  65376,  65472,  65506,  65527,  65531,  65535,
-    0,  8, 29,  75,  222,  615,  1327,  2801,  5623,  9931,  16094,  24966,
-    34419, 43458,  50676,  56186,  60055,  62500,  63936,  64765,  65225,
-    65435, 65514,  65535,  0,  8,  13,  15,  17,  21,  33,  59,
-    71,  92,  151,  243,  360,  456,  674,  934,  1223,  1583,
-    1989,  2504,  3031,  3617,  4354,  5154,  6163,  7411,  8780,  10747,
-    12874,  15591,  18974,  23027,  27436,  32020,  36948,  41830,  46205,
-    49797,  53042,  56094,  58418,  60360,  61763,  62818,  63559,  64103,
-    64509,  64798,  65045,  65162,  65288,  65363,  65447,  65506,  65522,
-    65531,  65533,  65535,  0,  4,  6,  25,  38,  71,  138,  264,  519,  808,
-    1227,  1825,  2516,  3408,  4279,  5560,  7092,  9197,  11420,  14108,
-    16947,  20300,  23926,  27459,  31164,  34827,  38575,  42178,  45540,
-    48747,  51444,  54090,  56426,  58460,  60080,  61595,  62734,  63668,
-    64275,  64673,  64936,  65112,  65217,  65334,  65426,  65464,  65477,
-    65489,  65518,  65527,  65529,  65531,  65533,  65535,  0,  2,  4,  8,  10,
-    12,  14,  16,  21,  33,  50,  71,  84,  92,  105,  138, 180,  255,  318,
-    377,  435,  473,  511,  590,  682,  758,  913,  1097,  1256,  1449,  1671,
-    1884,  2169,  2445,  2772,  3157,  3563,  3944,  4375,  4848,  5334,  5820,
-    6448,  7101,  7716,  8378,  9102,  9956,  10752,  11648,  12707,  13670,
-    14758,  15910,  17187,  18472,  19627,  20649,  21951,  23169,  24283,
-    25552,  26862,  28227,  29391,  30764,  31882,  33213,  34432,  35600,
-    36910,  38116,  39464,  40729,  41872,  43144,  44371,  45514,  46762,
-    47813,  48968,  50069,  51032,  51974,  52908,  53737,  54603,  55445,
-    56282,  56990,  57572,  58191,  58840,  59410,  59887,  60264,  60607,
-    60946,  61269,  61516,  61771,  61960,  62198,  62408,  62558,  62776,
-    62985,  63207,  63408,  63546,  63739,  63906,  64070,  64237,  64371,
-    64551,  64677,  64836,  64999,  65095,  65213,  65284,  65338,  65380,
-    65426,  65447,  65472,  65485,  65487,  65489,  65502,  65510,  65512,
-    65514,  65516,  65518,  65522,  65531,  65533,  65535 };
-
-
-const uint16_t WebRtcIsac_kQKltCdfShape[686] = {
-    0,  65535,  0,  65535,  0,  65535,  0,  65535,  0,  65535,
-    0,  65535,  0,  65535,  0,  65535,  0,  65535,  0,  4,
-    65535,  0,  8,  65514,  65535,  0,  29,  65481,  65535,  0,
-    121,  65439,  65535,  0,  239,  65284,  65535,  0,  8,  779,
-    64999,  65527,  65535,  0,  8,  888,  64693,  65522,  65535,  0,
-    29,  2604,  62843,  65497,  65531,  65535,  0,  25,  176,  4576,
-    61164,  65275,  65527,  65535,  0,  65535,  0,  65535,  0,  65535,
-    0,  65535,  0,  4,  65535,  0,  65535,  0,  65535,  0,
-    65535,  0,  65535,  0,  4,  65535,  0,  33,  65502,  65535,
-    0,  54,  65481,  65535,  0,  251,  65309,  65535,  0,  611,
-    65074,  65535,  0,  1273,  64292,  65527,  65535,  0,  4,  1809,
-    63940,  65518,  65535,  0,  88,  4392,  60603,  65426,  65531,  65535,
-    0,  25,  419,  7046,  57756,  64961,  65514,  65531,  65535,  0,
-    65535,  0,  65535,  0,  65535,  0,  65535,  0,  4,  65531,
-    65535,  0,  65535,  0,  8,  65531,  65535,  0,  4,  65527,
-    65535,  0,  17,  65510,  65535,  0,  42,  65481,  65535,  0,
-    197,  65342,  65531,  65535,  0,  385,  65154,  65535,  0,  1005,
-    64522,  65535,  0,  8,  1985,  63469,  65533,  65535,  0,  38,
-    3119,  61884,  65514,  65535,  0,  4,  6,  67,  4961,  60804,
-    65472,  65535,  0,  17,  565,  9182,  56538,  65087,  65514,  65535,
-    0,  8,  63,  327,  2118,  14490,  52774,  63839,  65376,  65522,
-    65535,  0,  65535,  0,  65535,  0,  65535,  0,  65535,  0,
-    17,  65522,  65535,  0,  59,  65489,  65535,  0,  50,  65522,
-    65535,  0,  54,  65489,  65535,  0,  310,  65179,  65535,  0,
-    615,  64836,  65535,  0,  4,  1503,  63965,  65535,  0,  2780,
-    63383,  65535,  0,  21,  3919,  61051,  65527,  65535,  0,  84,
-    6674,  59929,  65435,  65535,  0,  4,  255,  7976,  55784,  65150,
-    65518,  65531,  65535,  0,  4,  8,  582,  10726,  53465,  64949,
-    65518,  65535,  0,  29,  339,  3006,  17555,  49517,  62956,  65200,
-    65497,  65531,  65535,  0,  2,  33,  138,  565,  2324,  7670,
-    22089,  45966,  58949,  63479,  64966,  65380,  65518,  65535,  0,  65535,
-    0,  65535,  0,  2,  65533,  65535,  0,  46,  65514,  65535,
-    0,  414,  65091,  65535,  0,  540,  64911,  65535,  0,  419,
-    65162,  65535,  0,  976,  64790,  65535,  0,  2977,  62495,  65531,
-    65535,  0,  4,  3852,  61034,  65527,  65535,  0,  4,  29,
-    6021,  60243,  65468,  65535,  0,  84,  6711,  58066,  65418,  65535,
-    0,  13,  281,  9550,  54917,  65125,  65506,  65535,  0,  2,
-    63,  984,  12108,  52644,  64342,  65435,  65527,  65535,  0,  29,
-    251,  2014,  14871,  47553,  62881,  65229,  65518,  65535,  0,  13,
-    142,  749,  4220,  18497,  45200,  60913,  64823,  65426,  65527,  65535,
-    0,  13,  71,  264,  1176,  3789,  10500,  24480,  43488,  56324,
-    62315,  64493,  65242,  65464,  65514,  65522,  65531,  65535,  0,  4,
-    13,  38,  109,  205,  448,  850,  1708,  3429,  6276,  11371,
-    19221,  29734,  40955,  49391,  55411,  59460,  62102,  63793,  64656,
-    65150, 65401,  65485,  65522,  65531,  65535,  0,  65535,  0,  2,  65533,
-    65535,  0,  1160,  65476,  65535,  0,  2,  6640,  64763,  65533,
-    65535,  0,  2,  38,  9923,  61009,  65527,  65535,  0,  2,
-    4949,  63092,  65533,  65535,  0,  2,  3090,  63398,  65533,  65535,
-    0,  2,  2520,  58744,  65510,  65535,  0,  2,  13,  544,
-    8784,  51403,  65148,  65533,  65535,  0,  2,  25,  1017,  10412,
-    43550,  63651,  65489,  65527,  65535,  0,  2,  4,  29,  783,
-    13377,  52462,  64524,  65495,  65533,  65535,  0,  2,  4,  6,
-    100,  1817,  18451,  52590,  63559,  65376,  65531,  65535,  0,  2,
-    4,  6,  46,  385,  2562,  11225,  37416,  60488,  65026,  65487,
-    65529,  65533,  65535,  0,  2,  4,  6,  8,  10,  12,
-    42,  222,  971,  5221,  19811,  45048,  60312,  64486,  65294,  65474,
-    65525,  65529,  65533,  65535,  0,  2,  4,  8,  71,  167,
-    666,  2533,  7875,  19622,  38082,  54359,  62108,  64633,  65290,  65495,
-    65529,  65533,  65535,  0,  2,  4,  6,  8,  10,  13,
-    109,  586,  1930,  4949,  11600,  22641,  36125,  48312,  56899,  61495,
-    63927,  64932,  65389,  65489,  65518,  65531,  65533,  65535,  0,  4,
-    6,  8,  67,  209,  712,  1838,  4195,  8432,  14432,  22834,
-    31723,  40523,  48139,  53929,  57865,  60657,  62403,  63584,  64363,
-    64907, 65167,  65372,  65472,  65514,  65535,  0,  2,  4,  13,  25,
-    42,  46,  50,  75,  113,  147,  281,  448,  657,  909,
-    1185,  1591,  1976,  2600,  3676,  5317,  7398,  9914,  12941,  16169,
-    19477,  22885,  26464,  29851,  33360,  37228,  41139,  44802,  48654,
-    52058, 55181,  57676,  59581,  61022,  62190,  63107,  63676,  64199,
-    64547,  64924, 65158,  65313,  65430,  65481,  65518,  65535 };
-
-
-/* pointers to cdf tables for quantizer indices */
-const uint16_t *WebRtcIsac_kQKltCdfPtrGain[12] = {
-    WebRtcIsac_kQKltCdfGain +0 +0, WebRtcIsac_kQKltCdfGain +0 +8,
-    WebRtcIsac_kQKltCdfGain +0 +22, WebRtcIsac_kQKltCdfGain +0 +32,
-    WebRtcIsac_kQKltCdfGain +0 +48, WebRtcIsac_kQKltCdfGain +0 +60,
-    WebRtcIsac_kQKltCdfGain +0 +81, WebRtcIsac_kQKltCdfGain +0 +95,
-    WebRtcIsac_kQKltCdfGain +0 +128, WebRtcIsac_kQKltCdfGain +0 +152,
-    WebRtcIsac_kQKltCdfGain +0 +210, WebRtcIsac_kQKltCdfGain +0 +264 };
-
-const uint16_t *WebRtcIsac_kQKltCdfPtrShape[108] = {
-    WebRtcIsac_kQKltCdfShape +0 +0, WebRtcIsac_kQKltCdfShape +0 +2,
-    WebRtcIsac_kQKltCdfShape +0 +4, WebRtcIsac_kQKltCdfShape +0 +6,
-    WebRtcIsac_kQKltCdfShape +0 +8, WebRtcIsac_kQKltCdfShape +0 +10,
-    WebRtcIsac_kQKltCdfShape +0 +12, WebRtcIsac_kQKltCdfShape +0 +14,
-    WebRtcIsac_kQKltCdfShape +0 +16, WebRtcIsac_kQKltCdfShape +0 +18,
-    WebRtcIsac_kQKltCdfShape +0 +21, WebRtcIsac_kQKltCdfShape +0 +25,
-    WebRtcIsac_kQKltCdfShape +0 +29, WebRtcIsac_kQKltCdfShape +0 +33,
-    WebRtcIsac_kQKltCdfShape +0 +37, WebRtcIsac_kQKltCdfShape +0 +43,
-    WebRtcIsac_kQKltCdfShape +0 +49, WebRtcIsac_kQKltCdfShape +0 +56,
-    WebRtcIsac_kQKltCdfShape +0 +64, WebRtcIsac_kQKltCdfShape +0 +66,
-    WebRtcIsac_kQKltCdfShape +0 +68, WebRtcIsac_kQKltCdfShape +0 +70,
-    WebRtcIsac_kQKltCdfShape +0 +72, WebRtcIsac_kQKltCdfShape +0 +75,
-    WebRtcIsac_kQKltCdfShape +0 +77, WebRtcIsac_kQKltCdfShape +0 +79,
-    WebRtcIsac_kQKltCdfShape +0 +81, WebRtcIsac_kQKltCdfShape +0 +83,
-    WebRtcIsac_kQKltCdfShape +0 +86, WebRtcIsac_kQKltCdfShape +0 +90,
-    WebRtcIsac_kQKltCdfShape +0 +94, WebRtcIsac_kQKltCdfShape +0 +98,
-    WebRtcIsac_kQKltCdfShape +0 +102, WebRtcIsac_kQKltCdfShape +0 +107,
-    WebRtcIsac_kQKltCdfShape +0 +113, WebRtcIsac_kQKltCdfShape +0 +120,
-    WebRtcIsac_kQKltCdfShape +0 +129, WebRtcIsac_kQKltCdfShape +0 +131,
-    WebRtcIsac_kQKltCdfShape +0 +133, WebRtcIsac_kQKltCdfShape +0 +135,
-    WebRtcIsac_kQKltCdfShape +0 +137, WebRtcIsac_kQKltCdfShape +0 +141,
-    WebRtcIsac_kQKltCdfShape +0 +143, WebRtcIsac_kQKltCdfShape +0 +147,
-    WebRtcIsac_kQKltCdfShape +0 +151, WebRtcIsac_kQKltCdfShape +0 +155,
-    WebRtcIsac_kQKltCdfShape +0 +159, WebRtcIsac_kQKltCdfShape +0 +164,
-    WebRtcIsac_kQKltCdfShape +0 +168, WebRtcIsac_kQKltCdfShape +0 +172,
-    WebRtcIsac_kQKltCdfShape +0 +178, WebRtcIsac_kQKltCdfShape +0 +184,
-    WebRtcIsac_kQKltCdfShape +0 +192, WebRtcIsac_kQKltCdfShape +0 +200,
-    WebRtcIsac_kQKltCdfShape +0 +211, WebRtcIsac_kQKltCdfShape +0 +213,
-    WebRtcIsac_kQKltCdfShape +0 +215, WebRtcIsac_kQKltCdfShape +0 +217,
-    WebRtcIsac_kQKltCdfShape +0 +219, WebRtcIsac_kQKltCdfShape +0 +223,
-    WebRtcIsac_kQKltCdfShape +0 +227, WebRtcIsac_kQKltCdfShape +0 +231,
-    WebRtcIsac_kQKltCdfShape +0 +235, WebRtcIsac_kQKltCdfShape +0 +239,
-    WebRtcIsac_kQKltCdfShape +0 +243, WebRtcIsac_kQKltCdfShape +0 +248,
-    WebRtcIsac_kQKltCdfShape +0 +252, WebRtcIsac_kQKltCdfShape +0 +258,
-    WebRtcIsac_kQKltCdfShape +0 +264, WebRtcIsac_kQKltCdfShape +0 +273,
-    WebRtcIsac_kQKltCdfShape +0 +282, WebRtcIsac_kQKltCdfShape +0 +293,
-    WebRtcIsac_kQKltCdfShape +0 +308, WebRtcIsac_kQKltCdfShape +0 +310,
-    WebRtcIsac_kQKltCdfShape +0 +312, WebRtcIsac_kQKltCdfShape +0 +316,
-    WebRtcIsac_kQKltCdfShape +0 +320, WebRtcIsac_kQKltCdfShape +0 +324,
-    WebRtcIsac_kQKltCdfShape +0 +328, WebRtcIsac_kQKltCdfShape +0 +332,
-    WebRtcIsac_kQKltCdfShape +0 +336, WebRtcIsac_kQKltCdfShape +0 +341,
-    WebRtcIsac_kQKltCdfShape +0 +347, WebRtcIsac_kQKltCdfShape +0 +354,
-    WebRtcIsac_kQKltCdfShape +0 +360, WebRtcIsac_kQKltCdfShape +0 +368,
-    WebRtcIsac_kQKltCdfShape +0 +378, WebRtcIsac_kQKltCdfShape +0 +388,
-    WebRtcIsac_kQKltCdfShape +0 +400, WebRtcIsac_kQKltCdfShape +0 +418,
-    WebRtcIsac_kQKltCdfShape +0 +445, WebRtcIsac_kQKltCdfShape +0 +447,
-    WebRtcIsac_kQKltCdfShape +0 +451, WebRtcIsac_kQKltCdfShape +0 +455,
-    WebRtcIsac_kQKltCdfShape +0 +461, WebRtcIsac_kQKltCdfShape +0 +468,
-    WebRtcIsac_kQKltCdfShape +0 +474, WebRtcIsac_kQKltCdfShape +0 +480,
-    WebRtcIsac_kQKltCdfShape +0 +486, WebRtcIsac_kQKltCdfShape +0 +495,
-    WebRtcIsac_kQKltCdfShape +0 +505, WebRtcIsac_kQKltCdfShape +0 +516,
-    WebRtcIsac_kQKltCdfShape +0 +528, WebRtcIsac_kQKltCdfShape +0 +543,
-    WebRtcIsac_kQKltCdfShape +0 +564, WebRtcIsac_kQKltCdfShape +0 +583,
-    WebRtcIsac_kQKltCdfShape +0 +608, WebRtcIsac_kQKltCdfShape +0 +635 };
-
-
-/* left KLT transforms */
-const double WebRtcIsac_kKltT1Gain[4] = {
-    -0.79742827,  0.60341375,  0.60341375,  0.79742827 };
-
-const double WebRtcIsac_kKltT1Shape[324] = {
-    0.00159597,  0.00049320,  0.00513821,  0.00021066,  0.01338581,
-    -0.00422367, -0.00272072,  0.00935107,  0.02047622,  0.02691189,
-    0.00478236,  0.03969702,  0.00886698,  0.04877604, -0.10898362,
-    -0.05930891, -0.03415047,  0.98889721,  0.00293558, -0.00035282,
-    0.01156321, -0.00195341, -0.00937631,  0.01052213, -0.02551163,
-    0.01644059,  0.03189927,  0.07754773, -0.08742313, -0.03026338,
-    0.05136248, -0.14395974,  0.17725040,  0.22664856,  0.93380230,
-    0.07076411,  0.00557890, -0.00222834,  0.01377569,  0.01466808,
-    0.02847361, -0.00603178,  0.02382480, -0.01210452,  0.03797267,
-    -0.02371480,  0.11260335, -0.07366682,  0.00453436, -0.04136941,
-    -0.07912843, -0.95031418,  0.25295337, -0.05302216, -0.00617554,
-    -0.00044040, -0.00653778,  0.01097838,  0.01529174,  0.01374431,
-    -0.00748512, -0.00020034,  0.02432713,  0.11101570, -0.08556891,
-    0.09282249, -0.01029446,  0.67556443, -0.67454300,  0.06910063,
-    0.20866865, -0.10318050,  0.00932175,  0.00524058,  0.00803610,
-    -0.00594676, -0.01082578,  0.01069906,  0.00546768,  0.01565291,
-    0.06816200,  0.10201227,  0.16812734,  0.22984074,  0.58213170,
-    -0.54138651, -0.51379962,  0.06847390, -0.01920037, -0.04592324,
-    -0.00467394,  0.00328858,  0.00377424, -0.00987448,  0.08222096,
-    -0.00377301,  0.04551941, -0.02592517,  0.16317082,  0.13077530,
-    0.22702921, -0.31215289, -0.69645962, -0.38047101, -0.39339411,
-    0.11124777,  0.02508035, -0.00708074,  0.00400344,  0.00040331,
-    0.01142402,  0.01725406,  0.01635170,  0.14285366,  0.03949233,
-    -0.05905676,  0.05877154, -0.17497577, -0.32479440,  0.80754464,
-    -0.38085603, -0.17055430, -0.03168622, -0.07531451,  0.02942002,
-    -0.02148095, -0.00754114, -0.00322372,  0.00567812, -0.01701521,
-    -0.12358320,  0.11473564,  0.09070136,  0.06533068, -0.22560802,
-    0.19209022,  0.81605094,  0.36592275, -0.09919829,  0.16667122,
-    0.16300725,  0.04803807,  0.06739263, -0.00156752, -0.01685302,
-    -0.00905240, -0.02297836, -0.00469939,  0.06310613, -0.16391930,
-    0.10919511,  0.12529293,  0.85581322, -0.32145522,  0.24539076,
-    0.07181839,  0.07289591,  0.14066759,  0.10406711,  0.05815518,
-    0.01072680, -0.00759339,  0.00053486, -0.00044865,  0.03407361,
-    0.01645348,  0.08758579,  0.27722240,  0.53665485, -0.74853376,
-    -0.01118192, -0.19805430,  0.06130619, -0.09675299,  0.08978480,
-    0.03405255, -0.00706867,  0.05102045,  0.03250746,  0.01849966,
-    -0.01216314, -0.01184187, -0.01579288,  0.00114807,  0.11376166,
-    0.88342114, -0.36425379,  0.13863190,  0.12524180, -0.13553892,
-    0.04715856, -0.12341103,  0.04531568,  0.01899360, -0.00206897,
-    0.00567768, -0.01444163,  0.00411946, -0.00855896,  0.00381663,
-    -0.01664861, -0.05534280,  0.21328278,  0.20161162,  0.72360394,
-    0.59130708, -0.08043791,  0.08757349, -0.13893918, -0.05147377,
-    0.02680690, -0.01144070,  0.00625162, -0.00634215, -0.01248947,
-    -0.00329455, -0.00609625, -0.00136305, -0.05097048, -0.01029851,
-    0.25065384, -0.16856837, -0.07123372,  0.15992623, -0.39487617,
-    -0.79972301,  0.18118185, -0.04826639, -0.01805578, -0.02927253,
-    -0.16400618,  0.07472763,  0.10376449,  0.01705406,  0.01065801,
-    -0.01500498,  0.02039914,  0.37776349, -0.84484186,  0.10434286,
-    0.15616990,  0.13474456, -0.00906238, -0.25238368, -0.03820885,
-    -0.10650905, -0.03880833, -0.03660028, -0.09640894,  0.00583314,
-    0.01922097,  0.01489911, -0.02431117, -0.09372217,  0.39404721,
-    -0.84786223, -0.31277121,  0.03193850,  0.01974060,  0.01887901,
-    0.00337911, -0.11359599, -0.02792521, -0.03220184, -0.01533311,
-    0.00015962, -0.04225043, -0.00933965,  0.00675311,  0.00206060,
-    0.15926771,  0.40199829, -0.80792558, -0.35591604, -0.17169764,
-    0.02830436,  0.02459982, -0.03438589,  0.00718705, -0.01798329,
-    -0.01594508, -0.00702430, -0.00952419, -0.00962701, -0.01307212,
-    -0.01749740,  0.01299602,  0.00587270, -0.36103108, -0.82039266,
-    -0.43092844, -0.08500097, -0.04361674, -0.00333482,  0.01250434,
-    -0.02538295, -0.00921797,  0.01645071, -0.01400872,  0.00317607,
-    0.00003277, -0.01617646, -0.00616863, -0.00882661,  0.00466157,
-    0.00353237,  0.91803104, -0.39503305, -0.02048964,  0.00060125,
-    0.01980634,  0.00300109,  0.00313880,  0.00657337,  0.00715163,
-    0.00000261,  0.00854276, -0.00154825, -0.00516128,  0.00909527,
-    0.00095609,  0.00701196, -0.00221867, -0.00156741 };
-
-/* right KLT transforms */
-const double WebRtcIsac_kKltT2Gain[36] = {
-    0.14572837, -0.45446306,  0.61990621, -0.52197033,  0.32145074,
-    -0.11026900, -0.20698282,  0.48962182, -0.27127933, -0.33627476,
-    0.65094037, -0.32715751,  0.40262573, -0.47844405, -0.33876075,
-    0.44130653,  0.37383966, -0.39964662, -0.51730480,  0.06611973,
-    0.49030187,  0.47512886, -0.02141226, -0.51129451, -0.58578569,
-    -0.39132064, -0.13187771,  0.15649421,  0.40735596,  0.54396897,
-    0.40381276,  0.40904942,  0.41179766,  0.41167576,  0.40840251,
-    0.40468132 };
-
-const double WebRtcIsac_kKltT2Shape[36] = {
-    0.13427386, -0.35132558,  0.52506528, -0.59419077,  0.45075085,
-    -0.16312057,  0.29857439, -0.58660147,  0.34265431,  0.20879510,
-    -0.56063262,  0.30238345,  0.43308283, -0.41186999, -0.35288681,
-    0.42768996,  0.36094634, -0.45284910, -0.47116680,  0.02893449,
-    0.54326135,  0.45249040, -0.06264420, -0.52283830,  0.57137758,
-    0.44298139,  0.12617554, -0.20819946, -0.42324603, -0.48876443,
-    0.39597050,  0.40713935,  0.41389880,  0.41512486,  0.41130400,
-    0.40575001 };
-
-/* means of log gains and LAR coefficients*/
-const double WebRtcIsac_kLpcMeansGain[12] = {
-    -6.86881911, -5.35075273, -6.86792680, -5.36200897, -6.86401538,
-    -5.36921533, -6.86802969, -5.36893966, -6.86538097, -5.36315063,
-    -6.85535304, -5.35155315 };
-
-const double WebRtcIsac_kLpcMeansShape[108] = {
-    -0.91232981,  0.26258634, -0.33716701,  0.08477430, -0.03378426,
-    0.14423909,  0.07036185,  0.06155019,  0.01490385,  0.04138740,
-    0.01427317,  0.01288970,  0.83872106,  0.25750199,  0.07988929,
-    -0.01957923,  0.00831390,  0.01770300, -0.90957164,  0.25732216,
-    -0.33385344,  0.08735740, -0.03715332,  0.14584917,  0.06998990,
-    0.06131968,  0.01504379,  0.04067339,  0.01428039,  0.01406460,
-    0.83846243,  0.26169862,  0.08109025, -0.01767055,  0.00970539,
-    0.01954310, -0.90490803,  0.24656405, -0.33578607,  0.08843286,
-    -0.03749139,  0.14443959,  0.07214669,  0.06170993,  0.01449947,
-    0.04134309,  0.01314762,  0.01413471,  0.83895203,  0.26748062,
-    0.08197507, -0.01781298,  0.00885967,  0.01922394, -0.90922472,
-    0.24495889, -0.33921540,  0.08877169, -0.03581332,  0.14199172,
-    0.07444032,  0.06185940,  0.01502054,  0.04185113,  0.01276579,
-    0.01355457,  0.83645358,  0.26631720,  0.08119697, -0.01835449,
-    0.00788512,  0.01846446, -0.90482253,  0.24658310, -0.34019734,
-    0.08281090, -0.03486038,  0.14359248,  0.07401336,  0.06001471,
-    0.01528421,  0.04254560,  0.01321472,  0.01240799,  0.83857127,
-    0.26281654,  0.08174380, -0.02099842,  0.00755176,  0.01699448,
-    -0.90132307,  0.25174308, -0.33838268,  0.07883863, -0.02877906,
-    0.14105407,  0.07220290,  0.06000352,  0.01684879,  0.04226844,
-    0.01331331,  0.01269244,  0.83832138,  0.25467485,  0.08118028,
-    -0.02120528,  0.00747832,  0.01567212 };
diff --git a/modules/audio_coding/codecs/isac/main/source/lpc_tables.h b/modules/audio_coding/codecs/isac/main/source/lpc_tables.h
deleted file mode 100644
index 56ff22c..0000000
--- a/modules/audio_coding/codecs/isac/main/source/lpc_tables.h
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * lpc_tables.h
- *
- * header file for coding tables for the LPC coefficients
- *
- */
-
-#ifndef MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_SOURCE_LPC_TABLES_H_
-#define MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_SOURCE_LPC_TABLES_H_
-
-#include "modules/audio_coding/codecs/isac/main/source/settings.h"
-#include "modules/audio_coding/codecs/isac/main/source/structs.h"
-
-#define KLT_STEPSIZE 1.00000000
-#define KLT_NUM_AVG_GAIN 0
-#define KLT_NUM_AVG_SHAPE 0
-#define KLT_NUM_MODELS 3
-#define LPC_GAIN_SCALE 4.000f
-#define LPC_LOBAND_SCALE 2.100f
-#define LPC_LOBAND_ORDER ORDERLO
-#define LPC_HIBAND_SCALE 0.450f
-#define LPC_HIBAND_ORDER ORDERHI
-#define LPC_GAIN_ORDER 2
-
-#define LPC_SHAPE_ORDER (LPC_LOBAND_ORDER + LPC_HIBAND_ORDER)
-
-#define KLT_ORDER_GAIN (LPC_GAIN_ORDER * SUBFRAMES)
-#define KLT_ORDER_SHAPE (LPC_SHAPE_ORDER * SUBFRAMES)
-
-/* cdf array for model indicator */
-extern const uint16_t WebRtcIsac_kQKltModelCdf[KLT_NUM_MODELS + 1];
-
-/* pointer to cdf array for model indicator */
-extern const uint16_t* WebRtcIsac_kQKltModelCdfPtr[1];
-
-/* initial cdf index for decoder of model indicator */
-extern const uint16_t WebRtcIsac_kQKltModelInitIndex[1];
-
-/* offset to go from rounded value to quantization index */
-extern const short WebRtcIsac_kQKltQuantMinGain[12];
-
-extern const short WebRtcIsac_kQKltQuantMinShape[108];
-
-/* maximum quantization index */
-extern const uint16_t WebRtcIsac_kQKltMaxIndGain[12];
-
-extern const uint16_t WebRtcIsac_kQKltMaxIndShape[108];
-
-/* index offset */
-extern const uint16_t WebRtcIsac_kQKltOffsetGain[12];
-
-extern const uint16_t WebRtcIsac_kQKltOffsetShape[108];
-
-/* initial cdf index for KLT coefficients */
-extern const uint16_t WebRtcIsac_kQKltInitIndexGain[12];
-
-extern const uint16_t WebRtcIsac_kQKltInitIndexShape[108];
-
-/* quantizer representation levels */
-extern const double WebRtcIsac_kQKltLevelsGain[392];
-
-extern const double WebRtcIsac_kQKltLevelsShape[578];
-
-/* cdf tables for quantizer indices */
-extern const uint16_t WebRtcIsac_kQKltCdfGain[404];
-
-extern const uint16_t WebRtcIsac_kQKltCdfShape[686];
-
-/* pointers to cdf tables for quantizer indices */
-extern const uint16_t* WebRtcIsac_kQKltCdfPtrGain[12];
-
-extern const uint16_t* WebRtcIsac_kQKltCdfPtrShape[108];
-
-/* left KLT transforms */
-extern const double WebRtcIsac_kKltT1Gain[4];
-
-extern const double WebRtcIsac_kKltT1Shape[324];
-
-/* right KLT transforms */
-extern const double WebRtcIsac_kKltT2Gain[36];
-
-extern const double WebRtcIsac_kKltT2Shape[36];
-
-/* means of log gains and LAR coefficients */
-extern const double WebRtcIsac_kLpcMeansGain[12];
-
-extern const double WebRtcIsac_kLpcMeansShape[108];
-
-#endif /* MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_SOURCE_LPC_TABLES_H_ */
diff --git a/modules/audio_coding/codecs/isac/main/source/pitch_gain_tables.c b/modules/audio_coding/codecs/isac/main/source/pitch_gain_tables.c
deleted file mode 100644
index 080432c..0000000
--- a/modules/audio_coding/codecs/isac/main/source/pitch_gain_tables.c
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "modules/audio_coding/codecs/isac/main/source/pitch_gain_tables.h"
-#include "modules/audio_coding/codecs/isac/main/source/settings.h"
-
-/* header file for coding tables for the pitch filter side-info in the entropy coder */
-/********************* Pitch Filter Gain Coefficient Tables ************************/
-/* cdf for quantized pitch filter gains */
-const uint16_t WebRtcIsac_kQPitchGainCdf[255] = {
-  0,  2,  4,  6,  64,  901,  903,  905,  16954,  16956,
-  16961,  17360,  17362,  17364,  17366,  17368,  17370,  17372,  17374,  17411,
-  17514,  17516,  17583,  18790,  18796,  18802,  20760,  20777,  20782,  21722,
-  21724,  21728,  21738,  21740,  21742,  21744,  21746,  21748,  22224,  22227,
-  22230,  23214,  23229,  23239,  25086,  25108,  25120,  26088,  26094,  26098,
-  26175,  26177,  26179,  26181,  26183,  26185,  26484,  26507,  26522,  27705,
-  27731,  27750,  29767,  29799,  29817,  30866,  30883,  30885,  31025,  31029,
-  31031,  31033,  31035,  31037,  31114,  31126,  31134,  32687,  32722,  32767,
-  35718,  35742,  35757,  36943,  36952,  36954,  37115,  37128,  37130,  37132,
-  37134,  37136,  37143,  37145,  37152,  38843,  38863,  38897,  47458,  47467,
-  47474,  49040,  49061,  49063,  49145,  49157,  49159,  49161,  49163,  49165,
-  49167,  49169,  49171,  49757,  49770,  49782,  61333,  61344,  61346,  62860,
-  62883,  62885,  62887,  62889,  62891,  62893,  62895,  62897,  62899,  62901,
-  62903,  62905,  62907,  62909,  65496,  65498,  65500,  65521,  65523,  65525,
-  65527,  65529,  65531,  65533,  65535,  65535,  65535,  65535,  65535,  65535,
-  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,
-  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,
-  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,
-  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,
-  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,
-  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,
-  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,
-  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,
-  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,
-  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,
-  65535,  65535,  65535,  65535,  65535};
-
-/* index limits and ranges */
-const int16_t WebRtcIsac_kIndexLowerLimitGain[3] = {
-  -7, -2, -1};
-
-const int16_t WebRtcIsac_kIndexUpperLimitGain[3] = {
-  0,  3,  1};
-
-const uint16_t WebRtcIsac_kIndexMultsGain[2] = {
-  18,  3};
-
-/* size of cdf table */
-const uint16_t WebRtcIsac_kQCdfTableSizeGain[1] = {
-  256};
-
-///////////////////////////FIXED POINT
-/* mean values of pitch filter gains in FIXED point */
-const int16_t WebRtcIsac_kQMeanGain1Q12[144] = {
-   843,    1092,    1336,    1222,    1405,    1656,    1500,    1815,    1843,    1838,    1839,    1843,    1843,    1843,    1843,    1843,
-  1843,    1843,     814,     846,    1092,    1013,    1174,    1383,    1391,    1511,    1584,    1734,    1753,    1843,    1843,    1843,
-  1843,    1843,    1843,    1843,     524,     689,     777,     845,     947,    1069,    1090,    1263,    1380,    1447,    1559,    1676,
-  1645,    1749,    1843,    1843,    1843,    1843,      81,     477,     563,     611,     706,     806,     849,    1012,    1192,    1128,
-  1330,    1489,    1425,    1576,    1826,    1741,    1843,    1843,       0,     290,     305,     356,     488,     575,     602,     741,
-   890,     835,    1079,    1196,    1182,    1376,    1519,    1506,    1680,    1843,       0,      47,      97,      69,     289,     381,
-   385,     474,     617,     664,     803,    1079,     935,    1160,    1269,    1265,    1506,    1741,       0,       0,       0,       0,
-   112,     120,     190,     283,     442,     343,     526,     809,     684,     935,    1134,    1020,    1265,    1506,       0,       0,
-     0,       0,       0,       0,       0,     111,     256,      87,     373,     597,     430,     684,     935,     770,    1020,    1265};
-
-const int16_t WebRtcIsac_kQMeanGain2Q12[144] = {
-  1760,    1525,    1285,    1747,    1671,    1393,    1843,    1826,    1555,    1843,    1784,    1606,    1843,    1843,    1711,    1843,
-  1843,    1814,    1389,    1275,    1040,    1564,    1414,    1252,    1610,    1495,    1343,    1753,    1592,    1405,    1804,    1720,
-  1475,    1843,    1814,    1581,    1208,    1061,    856,    1349,    1148,    994,    1390,    1253,    1111,    1495,    1343,    1178,
-  1770,    1465,    1234,    1814,    1581,    1342,    1040,    793,    713,    1053,    895,    737,    1128,    1003,    861,    1277,
-  1094,    981,    1475,    1192,    1019,    1581,    1342,    1098,    855,    570,    483,    833,    648,    540,    948,    744,
-  572,    1009,    844,    636,    1234,    934,    685,    1342,    1217,    984,    537,    318,    124,    603,    423,    350,
-  687,    479,    322,    791,    581,    430,    987,    671,    488,    1098,    849,    597,    283,    27,        0,    397,
-  222,    38,        513,    271,    124,    624,    325,    157,    737,    484,    233,    849,    597,    343,    27,        0,
-  0,    141,    0,    0,    256,    69,        0,    370,    87,        0,    484,    229,    0,    597,    343,    87};
-
-const int16_t WebRtcIsac_kQMeanGain3Q12[144] = {
-  1843,    1843,    1711,    1843,    1818,    1606,    1843,    1827,    1511,    1814,    1639,    1393,    1760,    1525,    1285,    1656,
-  1419,    1176,    1835,    1718,    1475,    1841,    1650,    1387,    1648,    1498,    1287,    1600,    1411,    1176,    1522,    1299,
-  1040,    1419,    1176,    928,    1773,    1461,    1128,    1532,    1355,    1202,    1429,    1260,    1115,    1398,    1151,    1025,
-  1172,    1080,    790,    1176,    928,    677,    1475,    1147,    1019,    1276,    1096,    922,    1214,    1010,    901,    1057,
-  893,    800,    1040,    796,    734,    928,    677,    424,    1137,    897,    753,    1120,    830,    710,    875,    751,
-  601,    795,    642,    583,    790,    544,    475,    677,    474,    140,    987,    750,    482,    697,    573,    450,
-  691,    487,    303,    661,    394,    332,    537,    303,    220,    424,    168,    0,    737,    484,    229,    624,
-  348,    153,    441,    261,    136,    397,    166,    51,        283,    27,        0,    168,    0,    0,    484,    229,
-  0,    370,    57,        0,    256,    43,        0,    141,    0,        0,    27,        0,    0,    0,    0,    0};
-
-
-const int16_t WebRtcIsac_kQMeanGain4Q12[144] = {
-  1843,    1843,    1843,    1843,    1841,    1843,    1500,    1821,    1843,    1222,    1434,    1656,    843,    1092,    1336,    504,
-  757,    1007,    1843,    1843,    1843,    1838,    1791,    1843,    1265,    1505,    1599,    965,    1219,    1425,    730,    821,
-  1092,    249,    504,    757,    1783,    1819,    1843,    1351,    1567,    1727,    1096,    1268,    1409,    805,    961,    1131,
-  444,    670,    843,    0,        249,    504,    1425,    1655,    1743,    1096,    1324,    1448,    822,    1019,    1199,    490,
-  704,    867,    81,        450,    555,    0,    0,        249,    1247,    1428,    1530,    881,    1073,    1283,    610,    759,
-  939,    278,    464,    645,    0,    200,    270,    0,    0,    0,        935,    1163,    1410,    528,    790,    1068,
-  377,    499,    717,    173,    240,    274,    0,    43,        62,        0,    0,    0,    684,    935,    1182,    343,
-  551,    735,    161,    262,    423,    0,    55,        27,        0,    0,    0,    0,    0,    0,    430,    684,
-  935,    87,        377,    597,    0,    46,        256,    0,    0,    0,    0,    0,    0,    0,    0,    0};
diff --git a/modules/audio_coding/codecs/isac/main/source/pitch_gain_tables.h b/modules/audio_coding/codecs/isac/main/source/pitch_gain_tables.h
deleted file mode 100644
index 145fd4e..0000000
--- a/modules/audio_coding/codecs/isac/main/source/pitch_gain_tables.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * pitch_gain_tables.h
- *
- * This file contains tables for the pitch filter side-info in the entropy
- * coder.
- *
- */
-
-#ifndef MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_SOURCE_PITCH_GAIN_TABLES_H_
-#define MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_SOURCE_PITCH_GAIN_TABLES_H_
-
-#include <stdint.h>
-
-/* header file for coding tables for the pitch filter side-info in the entropy
- * coder */
-/********************* Pitch Filter Gain Coefficient Tables
- * ************************/
-/* cdf for quantized pitch filter gains */
-extern const uint16_t WebRtcIsac_kQPitchGainCdf[255];
-
-/* index limits and ranges */
-extern const int16_t WebRtcIsac_kIndexLowerLimitGain[3];
-
-extern const int16_t WebRtcIsac_kIndexUpperLimitGain[3];
-extern const uint16_t WebRtcIsac_kIndexMultsGain[2];
-
-/* mean values of pitch filter gains */
-//(Y)
-extern const int16_t WebRtcIsac_kQMeanGain1Q12[144];
-extern const int16_t WebRtcIsac_kQMeanGain2Q12[144];
-extern const int16_t WebRtcIsac_kQMeanGain3Q12[144];
-extern const int16_t WebRtcIsac_kQMeanGain4Q12[144];
-//(Y)
-
-/* size of cdf table */
-extern const uint16_t WebRtcIsac_kQCdfTableSizeGain[1];
-
-#endif /* MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_SOURCE_PITCH_GAIN_TABLES_H_ */
diff --git a/modules/audio_coding/codecs/isac/main/source/pitch_lag_tables.c b/modules/audio_coding/codecs/isac/main/source/pitch_lag_tables.c
deleted file mode 100644
index 57d1202..0000000
--- a/modules/audio_coding/codecs/isac/main/source/pitch_lag_tables.c
+++ /dev/null
@@ -1,277 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "modules/audio_coding/codecs/isac/main/source/pitch_lag_tables.h"
-#include "modules/audio_coding/codecs/isac/main/source/settings.h"
-
-/* header file for coding tables for the pitch filter side-info in the entropy coder */
-/********************* Pitch Filter Gain Coefficient Tables ************************/
-
-/* tables for use with small pitch gain */
-
-/* cdf for quantized pitch filter lags */
-const uint16_t WebRtcIsac_kQPitchLagCdf1Lo[127] = {
- 0,  134,  336,  549,  778,  998,  1264,  1512,  1777,  2070,
- 2423,  2794,  3051,  3361,  3708,  3979,  4315,  4610,  4933,  5269,
- 5575,  5896,  6155,  6480,  6816,  7129,  7477,  7764,  8061,  8358,
- 8718,  9020,  9390,  9783,  10177,  10543,  10885,  11342,  11795,  12213,
- 12680,  13096,  13524,  13919,  14436,  14903,  15349,  15795,  16267,  16734,
- 17266,  17697,  18130,  18632,  19080,  19447,  19884,  20315,  20735,  21288,
- 21764,  22264,  22723,  23193,  23680,  24111,  24557,  25022,  25537,  26082,
- 26543,  27090,  27620,  28139,  28652,  29149,  29634,  30175,  30692,  31273,
- 31866,  32506,  33059,  33650,  34296,  34955,  35629,  36295,  36967,  37726,
- 38559,  39458,  40364,  41293,  42256,  43215,  44231,  45253,  46274,  47359,
- 48482,  49678,  50810,  51853,  53016,  54148,  55235,  56263,  57282,  58363,
- 59288,  60179,  61076,  61806,  62474,  63129,  63656,  64160,  64533,  64856,
- 65152,  65535,  65535,  65535,  65535,  65535,  65535};
-
-const uint16_t WebRtcIsac_kQPitchLagCdf2Lo[20] = {
- 0,  429,  3558,  5861,  8558,  11639,  15210,  19502,  24773,  31983,
- 42602,  48567,  52601,  55676,  58160,  60172,  61889,  63235,  65383,  65535};
-
-const uint16_t WebRtcIsac_kQPitchLagCdf3Lo[2] = {
- 0,  65535};
-
-const uint16_t WebRtcIsac_kQPitchLagCdf4Lo[10] = {
- 0,  2966,  6368,  11182,  19431,  37793,  48532,  55353,  60626,  65535};
-
-const uint16_t *WebRtcIsac_kQPitchLagCdfPtrLo[4] = {WebRtcIsac_kQPitchLagCdf1Lo, WebRtcIsac_kQPitchLagCdf2Lo, WebRtcIsac_kQPitchLagCdf3Lo, WebRtcIsac_kQPitchLagCdf4Lo};
-
-/* size of first cdf table */
-const uint16_t WebRtcIsac_kQPitchLagCdfSizeLo[1] = {128};
-
-/* index limits and ranges */
-const int16_t WebRtcIsac_kQIndexLowerLimitLagLo[4] = {
--140, -9,  0, -4};
-
-const int16_t WebRtcIsac_kQIndexUpperLimitLagLo[4] = {
--20,  9,  0,  4};
-
-/* initial index for arithmetic decoder */
-const uint16_t WebRtcIsac_kQInitIndexLagLo[3] = {
- 10,  1,  5};
-
-/* mean values of pitch filter lags */
-const double WebRtcIsac_kQMeanLag2Lo[19] = {
--17.21385070, -15.82678944, -14.07123081, -12.03003877, -10.01311864, -8.00794627, -5.91162987, -3.89231876, -1.90220980, -0.01879275,
- 1.89144232,  3.88123171,  5.92146992,  7.96435361,  9.98923648,  11.98266347,  13.96101002,  15.74855713,  17.10976611};
-
-const double WebRtcIsac_kQMeanLag3Lo[1] = {
- 0.00000000};
-
-const double WebRtcIsac_kQMeanLag4Lo[9] = {
--7.76246496, -5.92083980, -3.94095226, -1.89502305,  0.03724681,  1.93054221,  3.96443467,  5.91726366,  7.78434291};
-
-const double WebRtcIsac_kQPitchLagStepsizeLo = 2.000000;
-
-
-/* tables for use with medium pitch gain */
-
-/* cdf for quantized pitch filter lags */
-const uint16_t WebRtcIsac_kQPitchLagCdf1Mid[255] = {
- 0,  28,  61,  88,  121,  149,  233,  331,  475,  559,
- 624,  661,  689,  712,  745,  791,  815,  843,  866,  922,
- 959,  1024,  1061,  1117,  1178,  1238,  1280,  1350,  1453,  1513,
- 1564,  1625,  1671,  1741,  1788,  1904,  2072,  2421,  2626,  2770,
- 2840,  2900,  2942,  3012,  3068,  3115,  3147,  3194,  3254,  3319,
- 3366,  3520,  3678,  3780,  3850,  3911,  3957,  4032,  4106,  4185,
- 4292,  4474,  4683,  4842,  5019,  5191,  5321,  5428,  5540,  5675,
- 5763,  5847,  5959,  6127,  6304,  6564,  6839,  7090,  7263,  7421,
- 7556,  7728,  7872,  7984,  8142,  8361,  8580,  8743,  8938,  9227,
- 9409,  9539,  9674,  9795,  9930,  10060,  10177,  10382,  10614,  10861,
- 11038,  11271,  11415,  11629,  11792,  12044,  12193,  12416,  12574,  12821,
- 13007,  13235,  13445,  13654,  13901,  14134,  14488,  15000,  15703,  16285,
- 16504,  16797,  17086,  17328,  17579,  17807,  17998,  18268,  18538,  18836,
- 19087,  19274,  19474,  19716,  19935,  20270,  20833,  21303,  21532,  21741,
- 21978,  22207,  22523,  22770,  23054,  23613,  23943,  24204,  24399,  24651,
- 24832,  25074,  25270,  25549,  25759,  26015,  26150,  26424,  26713,  27048,
- 27342,  27504,  27681,  27854,  28021,  28207,  28412,  28664,  28859,  29064,
- 29278,  29548,  29748,  30107,  30377,  30656,  30856,  31164,  31452,  31755,
- 32011,  32328,  32626,  32919,  33319,  33789,  34329,  34925,  35396,  35973,
- 36443,  36964,  37551,  38156,  38724,  39357,  40023,  40908,  41587,  42602,
- 43924,  45037,  45810,  46597,  47421,  48291,  49092,  50051,  51448,  52719,
- 53440,  54241,  54944,  55977,  56676,  57299,  57872,  58389,  59059,  59688,
- 60237,  60782,  61094,  61573,  61890,  62290,  62658,  63030,  63217,  63454,
- 63622,  63882,  64003,  64273,  64427,  64529,  64581,  64697,  64758,  64902,
- 65414,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,
- 65535,  65535,  65535,  65535,  65535};
-
-const uint16_t WebRtcIsac_kQPitchLagCdf2Mid[36] = {
- 0,  71,  335,  581,  836,  1039,  1323,  1795,  2258,  2608,
- 3005,  3591,  4243,  5344,  7163,  10583,  16848,  28078,  49448,  57007,
- 60357,  61850,  62837,  63437,  63872,  64188,  64377,  64614,  64774,  64949,
- 65039,  65115,  65223,  65360,  65474,  65535};
-
-const uint16_t WebRtcIsac_kQPitchLagCdf3Mid[2] = {
- 0,  65535};
-
-const uint16_t WebRtcIsac_kQPitchLagCdf4Mid[20] = {
- 0,  28,  246,  459,  667,  1045,  1523,  2337,  4337,  11347,
- 44231,  56709,  60781,  62243,  63161,  63969,  64608,  65062,  65502,  65535};
-
-const uint16_t *WebRtcIsac_kQPitchLagCdfPtrMid[4] = {WebRtcIsac_kQPitchLagCdf1Mid, WebRtcIsac_kQPitchLagCdf2Mid, WebRtcIsac_kQPitchLagCdf3Mid, WebRtcIsac_kQPitchLagCdf4Mid};
-
-/* size of first cdf table */
-const uint16_t WebRtcIsac_kQPitchLagCdfSizeMid[1] = {256};
-
-/* index limits and ranges */
-const int16_t WebRtcIsac_kQIndexLowerLimitLagMid[4] = {
--280, -17,  0, -9};
-
-const int16_t WebRtcIsac_kQIndexUpperLimitLagMid[4] = {
--40,  17,  0,  9};
-
-/* initial index for arithmetic decoder */
-const uint16_t WebRtcIsac_kQInitIndexLagMid[3] = {
- 18,  1,  10};
-
-/* mean values of pitch filter lags */
-const double WebRtcIsac_kQMeanLag2Mid[35] = {
--16.89183900, -15.86949778, -15.05476653, -14.00664348, -13.02793036, -12.07324237, -11.00542532, -10.11250602, -8.90792971, -8.02474753,
--7.00426767, -5.94055287, -4.98251338, -3.91053158, -2.98820425, -1.93524245, -0.92978085, -0.01722509,  0.91317387,  1.92973955,
- 2.96908851,  3.93728974,  4.96308471,  5.92244151,  7.08673497,  8.00993708,  9.04656316,  9.98538742,  10.97851694,  11.94772884,
- 13.02426166,  14.00039951,  15.01347042,  15.80758023,  16.94086895};
-
-const double WebRtcIsac_kQMeanLag3Mid[1] = {
- 0.00000000};
-
-const double WebRtcIsac_kQMeanLag4Mid[19] = {
--8.60409403, -7.89198395, -7.03450280, -5.86260421, -4.93822322, -3.93078706, -2.91302322, -1.91824007, -0.87003282,  0.02822649,
- 0.89951758,  1.87495484,  2.91802604,  3.96874074,  5.06571703,  5.93618227,  7.00520185,  7.88497726,  8.64160364};
-
-const double WebRtcIsac_kQPitchLagStepsizeMid = 1.000000;
-
-
-/* tables for use with large pitch gain */
-
-/* cdf for quantized pitch filter lags */
-const uint16_t WebRtcIsac_kQPitchLagCdf1Hi[511] = {
- 0,  7,  18,  33,  69,  105,  156,  228,  315,  612,
- 680,  691,  709,  724,  735,  738,  742,  746,  749,  753,
- 756,  760,  764,  774,  782,  785,  789,  796,  800,  803,
- 807,  814,  818,  822,  829,  832,  847,  854,  858,  869,
- 876,  883,  898,  908,  934,  977,  1010,  1050,  1060,  1064,
- 1075,  1078,  1086,  1089,  1093,  1104,  1111,  1122,  1133,  1136,
- 1151,  1162,  1183,  1209,  1252,  1281,  1339,  1364,  1386,  1401,
- 1411,  1415,  1426,  1430,  1433,  1440,  1448,  1455,  1462,  1477,
- 1487,  1495,  1502,  1506,  1509,  1516,  1524,  1531,  1535,  1542,
- 1553,  1556,  1578,  1589,  1611,  1625,  1639,  1643,  1654,  1665,
- 1672,  1687,  1694,  1705,  1708,  1719,  1730,  1744,  1752,  1759,
- 1791,  1795,  1820,  1867,  1886,  1915,  1936,  1943,  1965,  1987,
- 2041,  2099,  2161,  2175,  2200,  2211,  2226,  2233,  2244,  2251,
- 2266,  2280,  2287,  2298,  2309,  2316,  2331,  2342,  2356,  2378,
- 2403,  2418,  2447,  2497,  2544,  2602,  2863,  2895,  2903,  2935,
- 2950,  2971,  3004,  3011,  3018,  3029,  3040,  3062,  3087,  3127,
- 3152,  3170,  3199,  3243,  3293,  3322,  3340,  3377,  3402,  3427,
- 3474,  3518,  3543,  3579,  3601,  3637,  3659,  3706,  3731,  3760,
- 3818,  3847,  3869,  3901,  3920,  3952,  4068,  4169,  4220,  4271,
- 4524,  4571,  4604,  4632,  4672,  4730,  4777,  4806,  4857,  4904,
- 4951,  5002,  5031,  5060,  5107,  5150,  5212,  5266,  5331,  5382,
- 5432,  5490,  5544,  5610,  5700,  5762,  5812,  5874,  5972,  6022,
- 6091,  6163,  6232,  6305,  6402,  6540,  6685,  6880,  7090,  7271,
- 7379,  7452,  7542,  7625,  7687,  7770,  7843,  7911,  7966,  8024,
- 8096,  8190,  8252,  8320,  8411,  8501,  8585,  8639,  8751,  8842,
- 8918,  8986,  9066,  9127,  9203,  9269,  9345,  9406,  9464,  9536,
- 9612,  9667,  9735,  9844,  9931,  10036,  10119,  10199,  10260,  10358,
- 10441,  10514,  10666,  10734,  10872,  10951,  11053,  11125,  11223,  11324,
- 11516,  11664,  11737,  11816,  11892,  12008,  12120,  12200,  12280,  12392,
- 12490,  12576,  12685,  12812,  12917,  13003,  13108,  13210,  13300,  13384,
- 13470,  13579,  13673,  13771,  13879,  13999,  14136,  14201,  14368,  14614,
- 14759,  14867,  14958,  15030,  15121,  15189,  15280,  15385,  15461,  15555,
- 15653,  15768,  15884,  15971,  16069,  16145,  16210,  16279,  16380,  16463,
- 16539,  16615,  16688,  16818,  16919,  17017,  18041,  18338,  18523,  18649,
- 18790,  18917,  19047,  19167,  19315,  19460,  19601,  19731,  19858,  20068,
- 20173,  20318,  20466,  20625,  20741,  20911,  21045,  21201,  21396,  21588,
- 21816,  22022,  22305,  22547,  22786,  23072,  23322,  23600,  23879,  24168,
- 24433,  24769,  25120,  25511,  25895,  26289,  26792,  27219,  27683,  28077,
- 28566,  29094,  29546,  29977,  30491,  30991,  31573,  32105,  32594,  33173,
- 33788,  34497,  35181,  35833,  36488,  37255,  37921,  38645,  39275,  39894,
- 40505,  41167,  41790,  42431,  43096,  43723,  44385,  45134,  45858,  46607,
- 47349,  48091,  48768,  49405,  49955,  50555,  51167,  51985,  52611,  53078,
- 53494,  53965,  54435,  54996,  55601,  56125,  56563,  56838,  57244,  57566,
- 57967,  58297,  58771,  59093,  59419,  59647,  59886,  60143,  60461,  60693,
- 60917,  61170,  61416,  61634,  61891,  62122,  62310,  62455,  62632,  62839,
- 63103,  63436,  63639,  63805,  63906,  64015,  64192,  64355,  64475,  64558,
- 64663,  64742,  64811,  64865,  64916,  64956,  64981,  65025,  65068,  65115,
- 65195,  65314,  65419,  65535,  65535,  65535,  65535,  65535,  65535,  65535,
- 65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,
- 65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,
- 65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,  65535,
- 65535};
-
-const uint16_t WebRtcIsac_kQPitchLagCdf2Hi[68] = {
- 0,  7,  11,  22,  37,  52,  56,  59,  81,  85,
- 89,  96,  115,  130,  137,  152,  170,  181,  193,  200,
- 207,  233,  237,  259,  289,  318,  363,  433,  592,  992,
- 1607,  3062,  6149,  12206,  25522,  48368,  58223,  61918,  63640,  64584,
- 64943,  65098,  65206,  65268,  65294,  65335,  65350,  65372,  65387,  65402,
- 65413,  65420,  65428,  65435,  65439,  65450,  65454,  65468,  65472,  65476,
- 65483,  65491,  65498,  65505,  65516,  65520,  65528,  65535};
-
-const uint16_t WebRtcIsac_kQPitchLagCdf3Hi[2] = {
- 0,  65535};
-
-const uint16_t WebRtcIsac_kQPitchLagCdf4Hi[35] = {
- 0,  7,  19,  30,  41,  48,  63,  74,  82,  96,
- 122,  152,  215,  330,  701,  2611,  10931,  48106,  61177,  64341,
- 65112,  65238,  65309,  65338,  65364,  65379,  65401,  65427,  65453,  65465,
- 65476,  65490,  65509,  65528,  65535};
-
-const uint16_t *WebRtcIsac_kQPitchLagCdfPtrHi[4] = {WebRtcIsac_kQPitchLagCdf1Hi, WebRtcIsac_kQPitchLagCdf2Hi, WebRtcIsac_kQPitchLagCdf3Hi, WebRtcIsac_kQPitchLagCdf4Hi};
-
-/* size of first cdf table */
-const uint16_t WebRtcIsac_kQPitchLagCdfSizeHi[1] = {512};
-
-/* index limits and ranges */
-const int16_t WebRtcIsac_kQindexLowerLimitLagHi[4] = {
--552, -34,  0, -16};
-
-const int16_t WebRtcIsac_kQindexUpperLimitLagHi[4] = {
--80,  32,  0,  17};
-
-/* initial index for arithmetic decoder */
-const uint16_t WebRtcIsac_kQInitIndexLagHi[3] = {
- 34,  1,  18};
-
-/* mean values of pitch filter lags */
-const double WebRtcIsac_kQMeanLag2Hi[67] = {
--17.07263295, -16.50000000, -15.83966081, -15.55613708, -14.96948007, -14.50000000, -14.00000000, -13.48377986, -13.00000000, -12.50000000,
--11.93199636, -11.44530414, -11.04197641, -10.39910301, -10.15202337, -9.51322461, -8.93357741, -8.46456632, -8.10270672, -7.53751847,
--6.98686404, -6.50000000, -6.08463150, -5.46872991, -5.00864717, -4.50163760, -4.01382410, -3.43856708, -2.96898001, -2.46554810,
--1.96861004, -1.47106701, -0.97197237, -0.46561654, -0.00531409,  0.45767857,  0.96777907,  1.47507903,  1.97740425,  2.46695420,
- 3.00695774,  3.47167185,  4.02712538,  4.49280007,  5.01087640,  5.48191963,  6.04916550,  6.51511058,  6.97297819,  7.46565499,
- 8.01489405,  8.39912001,  8.91819757,  9.50000000,  10.11654065,  10.50000000,  11.03712583,  11.50000000,  12.00000000,  12.38964346,
- 12.89466127,  13.43657881,  13.96013840,  14.46279912,  15.00000000,  15.39412269,  15.96662441};
-
-const double WebRtcIsac_kQMeanLag3Hi[1] = {
- 0.00000000};
-
-const double WebRtcIsac_kQMeanLag4Hi[34] = {
--7.98331221, -7.47988769, -7.03626557, -6.52708003, -6.06982173, -5.51856292, -5.05827033, -4.45909878, -3.99125864, -3.45308135,
--3.02328139, -2.47297273, -1.94341995, -1.44699056, -0.93612243, -0.43012406,  0.01120357,  0.44054812,  0.93199883,  1.45669587,
- 1.97218322,  2.50187419,  2.98748690,  3.49343202,  4.01660147,  4.50984306,  5.01402683,  5.58936797,  5.91787793,  6.59998900,
- 6.85034315,  7.53503316,  7.87711194,  8.53631648};
-
-const double WebRtcIsac_kQPitchLagStepsizeHi = 0.500000;
-
-/* transform matrix */
-const double WebRtcIsac_kTransform[4][4] = {
-{-0.50000000, -0.50000000, -0.50000000, -0.50000000},
-{ 0.67082039,  0.22360680, -0.22360680, -0.67082039},
-{ 0.50000000, -0.50000000, -0.50000000,  0.50000000},
-{ 0.22360680, -0.67082039,  0.67082039, -0.22360680}};
-
-/* transpose transform matrix */
-const double WebRtcIsac_kTransformTranspose[4][4] = {
-{-0.50000000,  0.67082039,  0.50000000,  0.22360680},
-{-0.50000000,  0.22360680, -0.50000000, -0.67082039},
-{-0.50000000, -0.22360680, -0.50000000,  0.67082039},
-{-0.50000000, -0.67082039,  0.50000000, -0.22360680}};
-
diff --git a/modules/audio_coding/codecs/isac/main/source/pitch_lag_tables.h b/modules/audio_coding/codecs/isac/main/source/pitch_lag_tables.h
deleted file mode 100644
index b48e358..0000000
--- a/modules/audio_coding/codecs/isac/main/source/pitch_lag_tables.h
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * pitch_lag_tables.h
- *
- * This file contains tables for the pitch filter side-info in the entropy
- * coder.
- *
- */
-
-#ifndef MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_SOURCE_PITCH_LAG_TABLES_H_
-#define MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_SOURCE_PITCH_LAG_TABLES_H_
-
-#include <stdint.h>
-
-/* header file for coding tables for the pitch filter side-info in the entropy
- * coder */
-/********************* Pitch Filter Lag Coefficient Tables
- * ************************/
-
-/* tables for use with small pitch gain */
-
-/* cdfs for quantized pitch lags */
-extern const uint16_t WebRtcIsac_kQPitchLagCdf1Lo[127];
-extern const uint16_t WebRtcIsac_kQPitchLagCdf2Lo[20];
-extern const uint16_t WebRtcIsac_kQPitchLagCdf3Lo[2];
-extern const uint16_t WebRtcIsac_kQPitchLagCdf4Lo[10];
-
-extern const uint16_t* WebRtcIsac_kQPitchLagCdfPtrLo[4];
-
-/* size of first cdf table */
-extern const uint16_t WebRtcIsac_kQPitchLagCdfSizeLo[1];
-
-/* index limits and ranges */
-extern const int16_t WebRtcIsac_kQIndexLowerLimitLagLo[4];
-extern const int16_t WebRtcIsac_kQIndexUpperLimitLagLo[4];
-
-/* initial index for arithmetic decoder */
-extern const uint16_t WebRtcIsac_kQInitIndexLagLo[3];
-
-/* mean values of pitch filter lags */
-extern const double WebRtcIsac_kQMeanLag2Lo[19];
-extern const double WebRtcIsac_kQMeanLag3Lo[1];
-extern const double WebRtcIsac_kQMeanLag4Lo[9];
-
-extern const double WebRtcIsac_kQPitchLagStepsizeLo;
-
-/* tables for use with medium pitch gain */
-
-/* cdfs for quantized pitch lags */
-extern const uint16_t WebRtcIsac_kQPitchLagCdf1Mid[255];
-extern const uint16_t WebRtcIsac_kQPitchLagCdf2Mid[36];
-extern const uint16_t WebRtcIsac_kQPitchLagCdf3Mid[2];
-extern const uint16_t WebRtcIsac_kQPitchLagCdf4Mid[20];
-
-extern const uint16_t* WebRtcIsac_kQPitchLagCdfPtrMid[4];
-
-/* size of first cdf table */
-extern const uint16_t WebRtcIsac_kQPitchLagCdfSizeMid[1];
-
-/* index limits and ranges */
-extern const int16_t WebRtcIsac_kQIndexLowerLimitLagMid[4];
-extern const int16_t WebRtcIsac_kQIndexUpperLimitLagMid[4];
-
-/* initial index for arithmetic decoder */
-extern const uint16_t WebRtcIsac_kQInitIndexLagMid[3];
-
-/* mean values of pitch filter lags */
-extern const double WebRtcIsac_kQMeanLag2Mid[35];
-extern const double WebRtcIsac_kQMeanLag3Mid[1];
-extern const double WebRtcIsac_kQMeanLag4Mid[19];
-
-extern const double WebRtcIsac_kQPitchLagStepsizeMid;
-
-/* tables for use with large pitch gain */
-
-/* cdfs for quantized pitch lags */
-extern const uint16_t WebRtcIsac_kQPitchLagCdf1Hi[511];
-extern const uint16_t WebRtcIsac_kQPitchLagCdf2Hi[68];
-extern const uint16_t WebRtcIsac_kQPitchLagCdf3Hi[2];
-extern const uint16_t WebRtcIsac_kQPitchLagCdf4Hi[35];
-
-extern const uint16_t* WebRtcIsac_kQPitchLagCdfPtrHi[4];
-
-/* size of first cdf table */
-extern const uint16_t WebRtcIsac_kQPitchLagCdfSizeHi[1];
-
-/* index limits and ranges */
-extern const int16_t WebRtcIsac_kQindexLowerLimitLagHi[4];
-extern const int16_t WebRtcIsac_kQindexUpperLimitLagHi[4];
-
-/* initial index for arithmetic decoder */
-extern const uint16_t WebRtcIsac_kQInitIndexLagHi[3];
-
-/* mean values of pitch filter lags */
-extern const double WebRtcIsac_kQMeanLag2Hi[67];
-extern const double WebRtcIsac_kQMeanLag3Hi[1];
-extern const double WebRtcIsac_kQMeanLag4Hi[34];
-
-extern const double WebRtcIsac_kQPitchLagStepsizeHi;
-
-/* transform matrix */
-extern const double WebRtcIsac_kTransform[4][4];
-
-/* transpose transform matrix */
-extern const double WebRtcIsac_kTransformTranspose[4][4];
-
-#endif /* MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_SOURCE_PITCH_LAG_TABLES_H_ */
diff --git a/modules/audio_coding/codecs/isac/main/source/spectrum_ar_model_tables.c b/modules/audio_coding/codecs/isac/main/source/spectrum_ar_model_tables.c
deleted file mode 100644
index 839d5d4..0000000
--- a/modules/audio_coding/codecs/isac/main/source/spectrum_ar_model_tables.c
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "modules/audio_coding/codecs/isac/main/source/spectrum_ar_model_tables.h"
-#include "modules/audio_coding/codecs/isac/main/source/settings.h"
-
-/********************* AR Coefficient Tables ************************/
-/* cdf for quantized reflection coefficient 1 */
-const uint16_t WebRtcIsac_kQArRc1Cdf[NUM_AR_RC_QUANT_BAUNDARY] = {
- 0,  2,  4,  129,  7707,  57485,  65495,  65527,  65529,  65531,
- 65533,  65535};
-
-/* cdf for quantized reflection coefficient 2 */
-const uint16_t WebRtcIsac_kQArRc2Cdf[NUM_AR_RC_QUANT_BAUNDARY] = {
- 0,  2,  4,  7,  531,  25298,  64525,  65526,  65529,  65531,
- 65533,  65535};
-
-/* cdf for quantized reflection coefficient 3 */
-const uint16_t WebRtcIsac_kQArRc3Cdf[NUM_AR_RC_QUANT_BAUNDARY] = {
- 0,  2,  4,  6,  620,  22898,  64843,  65527,  65529,  65531,
- 65533,  65535};
-
-/* cdf for quantized reflection coefficient 4 */
-const uint16_t WebRtcIsac_kQArRc4Cdf[NUM_AR_RC_QUANT_BAUNDARY] = {
- 0,  2,  4,  6,  35,  10034,  60733,  65506,  65529,  65531,
- 65533,  65535};
-
-/* cdf for quantized reflection coefficient 5 */
-const uint16_t WebRtcIsac_kQArRc5Cdf[NUM_AR_RC_QUANT_BAUNDARY] = {
- 0,  2,  4,  6,  36,  7567,  56727,  65385,  65529,  65531,
- 65533,  65535};
-
-/* cdf for quantized reflection coefficient 6 */
-const uint16_t WebRtcIsac_kQArRc6Cdf[NUM_AR_RC_QUANT_BAUNDARY] = {
- 0,  2,  4,  6,  14,  6579,  57360,  65409,  65529,  65531,
- 65533,  65535};
-
-/* representation levels for quantized reflection coefficient 1 */
-const int16_t WebRtcIsac_kQArRc1Levels[NUM_AR_RC_QUANT_BAUNDARY - 1] = {
- -32104, -29007, -23202, -15496, -9279, -2577, 5934, 17535, 24512, 29503, 32104
-};
-
-/* representation levels for quantized reflection coefficient 2 */
-const int16_t WebRtcIsac_kQArRc2Levels[NUM_AR_RC_QUANT_BAUNDARY - 1] = {
- -32104, -29503, -23494, -15261, -7309, -1399, 6158, 16381, 24512, 29503, 32104
-};
-
-/* representation levels for quantized reflection coefficient 3 */
-const int16_t WebRtcIsac_kQArRc3Levels[NUM_AR_RC_QUANT_BAUNDARY - 1] = {
--32104, -29503, -23157, -15186, -7347, -1359, 5829, 17535, 24512, 29503, 32104
-};
-
-/* representation levels for quantized reflection coefficient 4 */
-const int16_t WebRtcIsac_kQArRc4Levels[NUM_AR_RC_QUANT_BAUNDARY - 1] = {
--32104, -29503, -24512, -15362, -6665, -342, 6596, 14585, 24512, 29503, 32104
-};
-
-/* representation levels for quantized reflection coefficient 5 */
-const int16_t WebRtcIsac_kQArRc5Levels[NUM_AR_RC_QUANT_BAUNDARY - 1] = {
--32104, -29503, -24512, -15005, -6564, -106, 7123, 14920, 24512, 29503, 32104
-};
-
-/* representation levels for quantized reflection coefficient 6 */
-const int16_t WebRtcIsac_kQArRc6Levels[NUM_AR_RC_QUANT_BAUNDARY - 1] = {
--32104, -29503, -24512, -15096, -6656, -37, 7036, 14847, 24512, 29503, 32104
-};
-
-/* quantization boundary levels for reflection coefficients */
-const int16_t WebRtcIsac_kQArBoundaryLevels[NUM_AR_RC_QUANT_BAUNDARY] = {
--32768, -31441, -27566, -21458, -13612, -4663, 4663, 13612, 21458, 27566, 31441,
-32767
-};
-
-/* initial index for AR reflection coefficient quantizer and cdf table search */
-const uint16_t WebRtcIsac_kQArRcInitIndex[6] = {
- 5,  5,  5,  5,  5,  5};
-
-/* pointers to AR cdf tables */
-const uint16_t *WebRtcIsac_kQArRcCdfPtr[AR_ORDER] = {
-  WebRtcIsac_kQArRc1Cdf, WebRtcIsac_kQArRc2Cdf, WebRtcIsac_kQArRc3Cdf,
-  WebRtcIsac_kQArRc4Cdf, WebRtcIsac_kQArRc5Cdf, WebRtcIsac_kQArRc6Cdf
-};
-
-/* pointers to AR representation levels tables */
-const int16_t *WebRtcIsac_kQArRcLevelsPtr[AR_ORDER] = {
-  WebRtcIsac_kQArRc1Levels, WebRtcIsac_kQArRc2Levels, WebRtcIsac_kQArRc3Levels,
-  WebRtcIsac_kQArRc4Levels, WebRtcIsac_kQArRc5Levels, WebRtcIsac_kQArRc6Levels
-};
-
-
-/******************** GAIN Coefficient Tables ***********************/
-/* cdf for Gain coefficient */
-const uint16_t WebRtcIsac_kQGainCdf[19] = {
- 0,  2,  4,  6,  8,  10,  12,  14,  16,  1172,
- 11119,  29411,  51699,  64445,  65527,  65529,  65531,  65533,  65535};
-
-/* representation levels for quantized squared Gain coefficient */
-const int32_t WebRtcIsac_kQGain2Levels[18] = {
-// 17, 28, 46, 76, 128, 215, 364, 709, 1268, 1960, 3405, 6078, 11286, 17827, 51918, 134498, 487432, 2048000};
- 128, 128, 128, 128, 128, 215, 364, 709, 1268, 1960, 3405, 6078, 11286, 17827, 51918, 134498, 487432, 2048000};
-/* quantization boundary levels for squared Gain coefficient */
-const int32_t WebRtcIsac_kQGain2BoundaryLevels[19] = {
-0, 21, 35, 59, 99, 166, 280, 475, 815, 1414, 2495, 4505, 8397, 16405, 34431, 81359, 240497, 921600, 0x7FFFFFFF};
-
-/* pointers to Gain cdf table */
-const uint16_t *WebRtcIsac_kQGainCdf_ptr[1] = {WebRtcIsac_kQGainCdf};
-
-/* Gain initial index for gain quantizer and cdf table search */
-const uint16_t WebRtcIsac_kQGainInitIndex[1] = {11};
-
-/************************* Cosine Tables ****************************/
-/* Cosine table */
-const int16_t WebRtcIsac_kCos[6][60] = {
-{512,  512,  511,  510,  508,  507,  505,  502,  499,  496,  493,  489,  485,  480,  476,  470,  465,  459,  453,  447,
-440,  433,  426,  418,  410,  402,  394,  385,  376,  367,  357,  348,  338,  327,  317,  306,  295,  284,  273,  262,
-250,  238,  226,  214,  202,  190,  177,  165,  152,  139,  126,  113,  100,  87,  73,  60,  47,  33,  20,  7},
-{512,  510,  508,  503,  498,  491,  483,  473,  462,  450,  437,  422,  406,  389,  371,  352,  333,  312,  290,  268,
-244,  220,  196,  171,  145,  120,  93,  67,  40,  13,  -13,  -40,  -67,  -93,  -120,  -145,  -171,  -196,  -220,  -244,
--268,  -290,  -312,  -333,  -352,  -371,  -389,  -406,  -422,  -437,  -450,  -462,  -473,  -483,  -491,  -498,  -503,  -508,  -510,  -512},
-{512,  508,  502,  493,  480,  465,  447,  426,  402,  376,  348,  317,  284,  250,  214,  177,  139,  100,  60,  20,
--20,  -60,  -100,  -139,  -177,  -214,  -250,  -284,  -317,  -348,  -376,  -402,  -426,  -447,  -465,  -480,  -493,  -502,  -508,  -512,
--512,  -508,  -502,  -493,  -480,  -465,  -447,  -426,  -402,  -376,  -348,  -317,  -284,  -250,  -214,  -177,  -139,  -100,  -60,  -20},
-{511,  506,  495,  478,  456,  429,  398,  362,  322,  279,  232,  183,  133,  80,  27,  -27,  -80,  -133,  -183,  -232,
--279,  -322,  -362,  -398,  -429,  -456,  -478,  -495,  -506,  -511,  -511,  -506,  -495,  -478,  -456,  -429,  -398,  -362,  -322,  -279,
--232,  -183,  -133,  -80,  -27,  27,  80,  133,  183,  232,  279,  322,  362,  398,  429,  456,  478,  495,  506,  511},
-{511,  502,  485,  459,  426,  385,  338,  284,  226,  165,  100,  33,  -33,  -100,  -165,  -226,  -284,  -338,  -385,  -426,
--459,  -485,  -502,  -511,  -511,  -502,  -485,  -459,  -426,  -385,  -338,  -284,  -226,  -165,  -100,  -33,  33,  100,  165,  226,
-284,  338,  385,  426,  459,  485,  502,  511,  511,  502,  485,  459,  426,  385,  338,  284,  226,  165,  100,  33},
-{510,  498,  473,  437,  389,  333,  268,  196,  120,  40,  -40,  -120,  -196,  -268,  -333,  -389,  -437,  -473,  -498,  -510,
--510,  -498,  -473,  -437,  -389,  -333,  -268,  -196,  -120,  -40,  40,  120,  196,  268,  333,  389,  437,  473,  498,  510,
-510,  498,  473,  437,  389,  333,  268,  196,  120,  40,  -40,  -120,  -196,  -268,  -333,  -389,  -437,  -473,  -498,  -510}
-};
diff --git a/modules/audio_coding/codecs/isac/main/source/spectrum_ar_model_tables.h b/modules/audio_coding/codecs/isac/main/source/spectrum_ar_model_tables.h
deleted file mode 100644
index d272be0..0000000
--- a/modules/audio_coding/codecs/isac/main/source/spectrum_ar_model_tables.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/*
- * spectrum_ar_model_tables.h
- *
- * This file contains definitions of tables with AR coefficients,
- * Gain coefficients and cosine tables.
- *
- */
-
-#ifndef MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_SOURCE_SPECTRUM_AR_MODEL_TABLES_H_
-#define MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_SOURCE_SPECTRUM_AR_MODEL_TABLES_H_
-
-#include "modules/audio_coding/codecs/isac/main/source/structs.h"
-
-#define NUM_AR_RC_QUANT_BAUNDARY 12
-
-/********************* AR Coefficient Tables ************************/
-/* cdf for quantized reflection coefficient 1 */
-extern const uint16_t WebRtcIsac_kQArRc1Cdf[NUM_AR_RC_QUANT_BAUNDARY];
-
-/* cdf for quantized reflection coefficient 2 */
-extern const uint16_t WebRtcIsac_kQArRc2Cdf[NUM_AR_RC_QUANT_BAUNDARY];
-
-/* cdf for quantized reflection coefficient 3 */
-extern const uint16_t WebRtcIsac_kQArRc3Cdf[NUM_AR_RC_QUANT_BAUNDARY];
-
-/* cdf for quantized reflection coefficient 4 */
-extern const uint16_t WebRtcIsac_kQArRc4Cdf[NUM_AR_RC_QUANT_BAUNDARY];
-
-/* cdf for quantized reflection coefficient 5 */
-extern const uint16_t WebRtcIsac_kQArRc5Cdf[NUM_AR_RC_QUANT_BAUNDARY];
-
-/* cdf for quantized reflection coefficient 6 */
-extern const uint16_t WebRtcIsac_kQArRc6Cdf[NUM_AR_RC_QUANT_BAUNDARY];
-
-/* quantization boundary levels for reflection coefficients */
-extern const int16_t WebRtcIsac_kQArBoundaryLevels[NUM_AR_RC_QUANT_BAUNDARY];
-
-/* initial indices for AR reflection coefficient quantizer and cdf table search
- */
-extern const uint16_t WebRtcIsac_kQArRcInitIndex[AR_ORDER];
-
-/* pointers to AR cdf tables */
-extern const uint16_t* WebRtcIsac_kQArRcCdfPtr[AR_ORDER];
-
-/* pointers to AR representation levels tables */
-extern const int16_t* WebRtcIsac_kQArRcLevelsPtr[AR_ORDER];
-
-/******************** GAIN Coefficient Tables ***********************/
-/* cdf for Gain coefficient */
-extern const uint16_t WebRtcIsac_kQGainCdf[19];
-
-/* representation levels for quantized Gain coefficient */
-extern const int32_t WebRtcIsac_kQGain2Levels[18];
-
-/* squared quantization boundary levels for Gain coefficient */
-extern const int32_t WebRtcIsac_kQGain2BoundaryLevels[19];
-
-/* pointer to Gain cdf table */
-extern const uint16_t* WebRtcIsac_kQGainCdf_ptr[1];
-
-/* Gain initial index for gain quantizer and cdf table search */
-extern const uint16_t WebRtcIsac_kQGainInitIndex[1];
-
-/************************* Cosine Tables ****************************/
-/* Cosine table */
-extern const int16_t WebRtcIsac_kCos[6][60];
-
-#endif /* MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_SOURCE_SPECTRUM_AR_MODEL_TABLES_H_ \
-        */
diff --git a/modules/audio_coding/codecs/isac/main/source/transform.c b/modules/audio_coding/codecs/isac/main/source/transform.c
deleted file mode 100644
index 082ad94..0000000
--- a/modules/audio_coding/codecs/isac/main/source/transform.c
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <math.h>
-
-#include "modules/audio_coding/codecs/isac/main/source/settings.h"
-#include "modules/audio_coding/codecs/isac/main/source/codec.h"
-#include "modules/audio_coding/codecs/isac/main/source/os_specific_inline.h"
-#include "modules/third_party/fft/fft.h"
-
-void WebRtcIsac_InitTransform(TransformTables* tables) {
-  int k;
-  double fact, phase;
-
-  fact = PI / (FRAMESAMPLES_HALF);
-  phase = 0.0;
-  for (k = 0; k < FRAMESAMPLES_HALF; k++) {
-    tables->costab1[k] = cos(phase);
-    tables->sintab1[k] = sin(phase);
-    phase += fact;
-  }
-
-  fact = PI * ((double) (FRAMESAMPLES_HALF - 1)) / ((double) FRAMESAMPLES_HALF);
-  phase = 0.5 * fact;
-  for (k = 0; k < FRAMESAMPLES_QUARTER; k++) {
-    tables->costab2[k] = cos(phase);
-    tables->sintab2[k] = sin(phase);
-    phase += fact;
-  }
-}
-
-void WebRtcIsac_Time2Spec(const TransformTables* tables,
-                          double* inre1,
-                          double* inre2,
-                          int16_t* outreQ7,
-                          int16_t* outimQ7,
-                          FFTstr* fftstr_obj) {
-  int k;
-  int dims[1];
-  double tmp1r, tmp1i, xr, xi, yr, yi, fact;
-  double tmpre[FRAMESAMPLES_HALF], tmpim[FRAMESAMPLES_HALF];
-
-
-  dims[0] = FRAMESAMPLES_HALF;
-
-
-  /* Multiply with complex exponentials and combine into one complex vector */
-  fact = 0.5 / sqrt(FRAMESAMPLES_HALF);
-  for (k = 0; k < FRAMESAMPLES_HALF; k++) {
-    tmp1r = tables->costab1[k];
-    tmp1i = tables->sintab1[k];
-    tmpre[k] = (inre1[k] * tmp1r + inre2[k] * tmp1i) * fact;
-    tmpim[k] = (inre2[k] * tmp1r - inre1[k] * tmp1i) * fact;
-  }
-
-
-  /* Get DFT */
-  WebRtcIsac_Fftns(1, dims, tmpre, tmpim, -1, 1.0, fftstr_obj);
-
-  /* Use symmetry to separate into two complex vectors and center frames in time around zero */
-  for (k = 0; k < FRAMESAMPLES_QUARTER; k++) {
-    xr = tmpre[k] + tmpre[FRAMESAMPLES_HALF - 1 - k];
-    yi = -tmpre[k] + tmpre[FRAMESAMPLES_HALF - 1 - k];
-    xi = tmpim[k] - tmpim[FRAMESAMPLES_HALF - 1 - k];
-    yr = tmpim[k] + tmpim[FRAMESAMPLES_HALF - 1 - k];
-
-    tmp1r = tables->costab2[k];
-    tmp1i = tables->sintab2[k];
-    outreQ7[k] = (int16_t)WebRtcIsac_lrint((xr * tmp1r - xi * tmp1i) * 128.0);
-    outimQ7[k] = (int16_t)WebRtcIsac_lrint((xr * tmp1i + xi * tmp1r) * 128.0);
-    outreQ7[FRAMESAMPLES_HALF - 1 - k] = (int16_t)WebRtcIsac_lrint((-yr * tmp1i - yi * tmp1r) * 128.0);
-    outimQ7[FRAMESAMPLES_HALF - 1 - k] = (int16_t)WebRtcIsac_lrint((-yr * tmp1r + yi * tmp1i) * 128.0);
-  }
-}
-
-void WebRtcIsac_Spec2time(const TransformTables* tables,
-                          double* inre,
-                          double* inim,
-                          double* outre1,
-                          double* outre2,
-                          FFTstr* fftstr_obj) {
-  int k;
-  double tmp1r, tmp1i, xr, xi, yr, yi, fact;
-
-  int dims;
-
-  dims = FRAMESAMPLES_HALF;
-
-  for (k = 0; k < FRAMESAMPLES_QUARTER; k++) {
-    /* Move zero in time to beginning of frames */
-    tmp1r = tables->costab2[k];
-    tmp1i = tables->sintab2[k];
-    xr = inre[k] * tmp1r + inim[k] * tmp1i;
-    xi = inim[k] * tmp1r - inre[k] * tmp1i;
-    yr = -inim[FRAMESAMPLES_HALF - 1 - k] * tmp1r - inre[FRAMESAMPLES_HALF - 1 - k] * tmp1i;
-    yi = -inre[FRAMESAMPLES_HALF - 1 - k] * tmp1r + inim[FRAMESAMPLES_HALF - 1 - k] * tmp1i;
-
-    /* Combine into one vector,  z = x + j * y */
-    outre1[k] = xr - yi;
-    outre1[FRAMESAMPLES_HALF - 1 - k] = xr + yi;
-    outre2[k] = xi + yr;
-    outre2[FRAMESAMPLES_HALF - 1 - k] = -xi + yr;
-  }
-
-
-  /* Get IDFT */
-  WebRtcIsac_Fftns(1, &dims, outre1, outre2, 1, FRAMESAMPLES_HALF, fftstr_obj);
-
-
-  /* Demodulate and separate */
-  fact = sqrt(FRAMESAMPLES_HALF);
-  for (k = 0; k < FRAMESAMPLES_HALF; k++) {
-    tmp1r = tables->costab1[k];
-    tmp1i = tables->sintab1[k];
-    xr = (outre1[k] * tmp1r - outre2[k] * tmp1i) * fact;
-    outre2[k] = (outre2[k] * tmp1r + outre1[k] * tmp1i) * fact;
-    outre1[k] = xr;
-  }
-}
diff --git a/modules/audio_coding/codecs/isac/main/test/ReleaseTest-API/ReleaseTest-API.cc b/modules/audio_coding/codecs/isac/main/test/ReleaseTest-API/ReleaseTest-API.cc
deleted file mode 100644
index ee72b07..0000000
--- a/modules/audio_coding/codecs/isac/main/test/ReleaseTest-API/ReleaseTest-API.cc
+++ /dev/null
@@ -1,942 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-// ReleaseTest-API.cpp : Defines the entry point for the console application.
-//
-
-#include <ctype.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-
-#include <iostream>
-
-/* include API */
-#include "modules/audio_coding/codecs/isac/main/include/isac.h"
-#include "modules/audio_coding/codecs/isac/main/util/utility.h"
-
-/* Defines */
-#define SEED_FILE                                             \
-  "randseed.txt" /* Used when running decoder on garbage data \
-                  */
-#define MAX_FRAMESAMPLES                                         \
-  960                         /* max number of samples per frame \
-                                 (= 60 ms frame & 16 kHz) or     \
-                                 (= 30 ms frame & 32 kHz) */
-#define FRAMESAMPLES_10ms 160 /* number of samples per 10ms frame */
-#define SWBFRAMESAMPLES_10ms 320
-//#define FS 16000 /* sampling frequency (Hz) */
-
-#ifdef WIN32
-#ifndef CLOCKS_PER_SEC
-#define CLOCKS_PER_SEC 1000 /* Runtime statistics */
-#endif
-#endif
-
-int main(int argc, char* argv[]) {
-  char inname[100], outname[100], bottleneck_file[100], vadfile[100];
-  FILE *inp, *outp, *f_bn = NULL, *vadp = NULL, *bandwidthp;
-  int framecnt, endfile;
-
-  size_t i;
-  int errtype, VADusage = 0, packetLossPercent = 0;
-  int16_t CodingMode;
-  int32_t bottleneck = 0;
-  int framesize = 30; /* ms */
-  int cur_framesmpls, err;
-
-  /* Runtime statistics */
-  double starttime, runtime, length_file;
-
-  size_t stream_len = 0;
-  int declen = 0, declenTC = 0;
-  bool lostFrame = false;
-
-  int16_t shortdata[SWBFRAMESAMPLES_10ms];
-  int16_t vaddata[SWBFRAMESAMPLES_10ms * 3];
-  int16_t decoded[MAX_FRAMESAMPLES << 1];
-  int16_t decodedTC[MAX_FRAMESAMPLES << 1];
-  uint16_t streamdata[500];
-  int16_t speechType[1];
-  int16_t rateBPS = 0;
-  int16_t fixedFL = 0;
-  int16_t payloadSize = 0;
-  int32_t payloadRate = 0;
-  int setControlBWE = 0;
-  short FL, testNum;
-  char version_number[20];
-  FILE* plFile;
-  int32_t sendBN;
-
-#if !defined(NDEBUG)
-  FILE* fy;
-  double kbps;
-#endif
-  size_t totalbits = 0;
-  int totalsmpls = 0;
-
-  /* If use GNS file */
-  FILE* fp_gns = NULL;
-  char gns_file[100];
-  size_t maxStreamLen30 = 0;
-  size_t maxStreamLen60 = 0;
-  short sampFreqKHz = 32;
-  short samplesIn10Ms;
-  // FILE logFile;
-  bool doTransCoding = false;
-  int32_t rateTransCoding = 0;
-  uint8_t streamDataTransCoding[1200];
-  size_t streamLenTransCoding = 0;
-  FILE* transCodingFile = NULL;
-  FILE* transcodingBitstream = NULL;
-  size_t numTransCodingBytes = 0;
-
-  /* only one structure used for ISAC encoder */
-  ISACStruct* ISAC_main_inst = NULL;
-  ISACStruct* decoderTransCoding = NULL;
-
-  BottleNeckModel BN_data;
-
-#if !defined(NDEBUG)
-  fy = fopen("bit_rate.dat", "w");
-  fclose(fy);
-  fy = fopen("bytes_frames.dat", "w");
-  fclose(fy);
-#endif
-
-  /* Handling wrong input arguments in the command line */
-  if ((argc < 3) || (argc > 17)) {
-    printf("\n\nWrong number of arguments or flag values.\n\n");
-
-    printf("\n");
-    WebRtcIsac_version(version_number);
-    printf("iSAC-swb version %s \n\n", version_number);
-
-    printf("Usage:\n\n");
-    printf("%s [-I] bottleneck_value infile outfile \n\n", argv[0]);
-    printf("with:\n");
-    printf("[-FS num]       : sampling frequency in kHz, valid values are\n");
-    printf("                  16 & 32, with 16 as default.\n");
-    printf("[-I]            : if -I option is specified, the coder will use\n");
-    printf("                  an instantaneous Bottleneck value. If not, it\n");
-    printf("                  will be an adaptive Bottleneck value.\n");
-    printf("[-assign]       : Use Assign API.\n");
-    printf("[-B num]        : the value of the bottleneck provided either\n");
-    printf("                  as a fixed value in bits/sec (e.g. 25000) or\n");
-    printf("                  read from a file (e.g. bottleneck.txt)\n");
-    printf("[-INITRATE num] : Set a new value for initial rate. Note! Only\n");
-    printf("                  used in adaptive mode.\n");
-    printf("[-FL num]       : Set (initial) frame length in msec. Valid\n");
-    printf("                  lengths are 30 and 60 msec.\n");
-    printf("[-FIXED_FL]     : Frame length will be fixed to initial value.\n");
-    printf("[-MAX num]      : Set the limit for the payload size of iSAC\n");
-    printf("                  in bytes. Minimum 100 maximum 400.\n");
-    printf("[-MAXRATE num]  : Set the maxrate for iSAC in bits per second.\n");
-    printf("                  Minimum 32000, maximum 53400.\n");
-    printf("[-F num]        : if -F option is specified, the test function\n");
-    printf("                  will run the iSAC API fault scenario\n");
-    printf("                  specified by the supplied number.\n");
-    printf("                  F 1 - Call encoder prior to init encoder call\n");
-    printf("                  F 2 - Call decoder prior to init decoder call\n");
-    printf("                  F 3 - Call decoder prior to encoder call\n");
-    printf("                  F 4 - Call decoder with a too short coded\n");
-    printf("                        sequence\n");
-    printf("                  F 5 - Call decoder with a too long coded\n");
-    printf("                        sequence\n");
-    printf("                  F 6 - Call decoder with random bit stream\n");
-    printf("                  F 7 - Call init encoder/decoder at random\n");
-    printf("                        during a call\n");
-    printf("                  F 8 - Call encoder/decoder without having\n");
-    printf("                        allocated memory for encoder/decoder\n");
-    printf("                        instance\n");
-    printf("                  F 9 - Call decodeB without calling decodeA\n");
-    printf("                  F 10 - Call decodeB with garbage data\n");
-    printf("[-PL num]       : if -PL option is specified \n");
-    printf("[-T rate file]  : test trans-coding with target bottleneck\n");
-    printf("                  'rate' bits/sec\n");
-    printf("                  the output file is written to 'file'\n");
-    printf("[-LOOP num]     : number of times to repeat coding the input\n");
-    printf("                  file for stress testing\n");
-    // printf("[-CE num]       : Test of APIs used by Conference Engine.\n");
-    // printf("                  CE 1 - getNewBitstream, getBWE \n");
-    // printf("                  (CE 2 - RESERVED for transcoding)\n");
-    // printf("                  CE 3 - getSendBWE, setSendBWE.  \n");
-    // printf("-L filename     : write the logging info into file
-    // (appending)\n");
-    printf("infile          :   Normal speech input file\n");
-    printf("outfile         :   Speech output file\n");
-    exit(0);
-  }
-
-  /* Print version number */
-  printf("-------------------------------------------------\n");
-  WebRtcIsac_version(version_number);
-  printf("iSAC version %s \n\n", version_number);
-
-  /* Loop over all command line arguments */
-  CodingMode = 0;
-  testNum = 0;
-  // logFile = NULL;
-  char transCodingFileName[500];
-  int16_t totFileLoop = 0;
-  int16_t numFileLoop = 0;
-  for (i = 1; i + 2 < static_cast<size_t>(argc); i++) {
-    if (!strcmp("-LOOP", argv[i])) {
-      i++;
-      totFileLoop = (int16_t)atol(argv[i]);
-      if (totFileLoop <= 0) {
-        fprintf(stderr, "Invalid number of runs for the given input file, %d.",
-                totFileLoop);
-        exit(0);
-      }
-    }
-
-    if (!strcmp("-T", argv[i])) {
-      doTransCoding = true;
-      i++;
-      rateTransCoding = atoi(argv[i]);
-      i++;
-      strcpy(transCodingFileName, argv[i]);
-    }
-
-    /* Set Sampling Rate */
-    if (!strcmp("-FS", argv[i])) {
-      i++;
-      sampFreqKHz = atoi(argv[i]);
-    }
-
-    /* Instantaneous mode */
-    if (!strcmp("-I", argv[i])) {
-      printf("Instantaneous BottleNeck\n");
-      CodingMode = 1;
-    }
-
-    /* Set (initial) bottleneck value */
-    if (!strcmp("-INITRATE", argv[i])) {
-      rateBPS = atoi(argv[i + 1]);
-      setControlBWE = 1;
-      if ((rateBPS < 10000) || (rateBPS > 32000)) {
-        printf(
-            "\n%d is not a initial rate. Valid values are in the range "
-            "10000 to 32000.\n",
-            rateBPS);
-        exit(0);
-      }
-      printf("New initial rate: %d\n", rateBPS);
-      i++;
-    }
-
-    /* Set (initial) framelength */
-    if (!strcmp("-FL", argv[i])) {
-      framesize = atoi(argv[i + 1]);
-      if ((framesize != 30) && (framesize != 60)) {
-        printf(
-            "\n%d is not a valid frame length. Valid length are 30 and 60 "
-            "msec.\n",
-            framesize);
-        exit(0);
-      }
-      setControlBWE = 1;
-      printf("Frame Length: %d\n", framesize);
-      i++;
-    }
-
-    /* Fixed frame length */
-    if (!strcmp("-FIXED_FL", argv[i])) {
-      fixedFL = 1;
-      setControlBWE = 1;
-      printf("Fixed Frame Length\n");
-    }
-
-    /* Set maximum allowed payload size in bytes */
-    if (!strcmp("-MAX", argv[i])) {
-      payloadSize = atoi(argv[i + 1]);
-      printf("Maximum Payload Size: %d\n", payloadSize);
-      i++;
-    }
-
-    /* Set maximum rate in bytes */
-    if (!strcmp("-MAXRATE", argv[i])) {
-      payloadRate = atoi(argv[i + 1]);
-      printf("Maximum Rate in kbps: %d\n", payloadRate);
-      i++;
-    }
-
-    /* Test of fault scenarious */
-    if (!strcmp("-F", argv[i])) {
-      testNum = atoi(argv[i + 1]);
-      printf("Fault test: %d\n", testNum);
-      if (testNum < 1 || testNum > 10) {
-        printf(
-            "\n%d is not a valid Fault Scenario number. Valid Fault "
-            "Scenarios are numbered 1-10.\n",
-            testNum);
-        exit(0);
-      }
-      i++;
-    }
-
-    /* Packet loss test */
-    if (!strcmp("-PL", argv[i])) {
-      if (isdigit(static_cast<unsigned char>(*argv[i + 1]))) {
-        packetLossPercent = atoi(argv[i + 1]);
-        if ((packetLossPercent < 0) | (packetLossPercent > 100)) {
-          printf("\nInvalid packet loss perentage \n");
-          exit(0);
-        }
-        if (packetLossPercent > 0) {
-          printf("Simulating %d %% of independent packet loss\n",
-                 packetLossPercent);
-        } else {
-          printf("\nNo Packet Loss Is Simulated \n");
-        }
-      } else {
-        plFile = fopen(argv[i + 1], "rb");
-        if (plFile == NULL) {
-          printf("\n couldn't open the frameloss file: %s\n", argv[i + 1]);
-          exit(0);
-        }
-        printf("Simulating packet loss through the given channel file: %s\n",
-               argv[i + 1]);
-      }
-      i++;
-    }
-
-    /* Random packetlosses */
-    if (!strcmp("-rnd", argv[i])) {
-      srand((unsigned int)time(NULL));
-      printf("Random pattern in lossed packets \n");
-    }
-
-    /* Use gns file */
-    if (!strcmp("-G", argv[i])) {
-      sscanf(argv[i + 1], "%s", gns_file);
-      fp_gns = fopen(gns_file, "rb");
-      if (fp_gns == NULL) {
-        printf("Cannot read file %s.\n", gns_file);
-        exit(0);
-      }
-      i++;
-    }
-
-    // make it with '-B'
-    /* Get Bottleneck value */
-    if (!strcmp("-B", argv[i])) {
-      i++;
-      bottleneck = atoi(argv[i]);
-      if (bottleneck == 0) {
-        sscanf(argv[i], "%s", bottleneck_file);
-        f_bn = fopen(bottleneck_file, "rb");
-        if (f_bn == NULL) {
-          printf(
-              "Error No value provided for BottleNeck and cannot read file "
-              "%s.\n",
-              bottleneck_file);
-          exit(0);
-        } else {
-          printf("reading bottleneck rates from file %s\n\n", bottleneck_file);
-          if (fscanf(f_bn, "%d", &bottleneck) == EOF) {
-            /* Set pointer to beginning of file */
-            fseek(f_bn, 0L, SEEK_SET);
-            if (fscanf(f_bn, "%d", &bottleneck) == EOF) {
-              exit(0);
-            }
-          }
-
-          /* Bottleneck is a cosine function
-           * Matlab code for writing the bottleneck file:
-           * BottleNeck_10ms = 20e3 + 10e3 * cos((0:5999)/5999*2*pi);
-           * fid = fopen('bottleneck.txt', 'wb');
-           * fprintf(fid, '%d\n', BottleNeck_10ms); fclose(fid);
-           */
-        }
-      } else {
-        printf("\nfixed bottleneck rate of %d bits/s\n\n", bottleneck);
-      }
-    }
-    /* Run Conference Engine APIs */
-    //     Do not test it in the first release
-    //
-    //     if(!strcmp ("-CE", argv[i]))
-    //     {
-    //         testCE = atoi(argv[i + 1]);
-    //         if(testCE==1)
-    //         {
-    //             i++;
-    //             scale = (float)atof( argv[i+1] );
-    //         }
-    //         else if(testCE == 2)
-    //         {
-    //             printf("\nCE-test 2 (transcoding) not implemented.\n");
-    //             exit(0);
-    //         }
-    //         else if(testCE < 1 || testCE > 3)
-    //         {
-    //             printf("\n%d is not a valid CE-test number. Valid CE tests
-    //             are 1-3.\n", testCE);
-    //             exit(0);
-    //         }
-    //         printf("CE-test number: %d\n", testCE);
-    //         i++;
-    //     }
-  }
-
-  if (CodingMode == 0) {
-    printf("\nAdaptive BottleNeck\n");
-  }
-
-  switch (sampFreqKHz) {
-    case 16: {
-      printf("iSAC Wideband.\n");
-      samplesIn10Ms = FRAMESAMPLES_10ms;
-      break;
-    }
-    case 32: {
-      printf("iSAC Supper-Wideband.\n");
-      samplesIn10Ms = SWBFRAMESAMPLES_10ms;
-      break;
-    }
-    default:
-      printf("Unsupported sampling frequency %d kHz", sampFreqKHz);
-      exit(0);
-  }
-
-  /* Get Input and Output files */
-  sscanf(argv[argc - 2], "%s", inname);
-  sscanf(argv[argc - 1], "%s", outname);
-  printf("\nInput file: %s\n", inname);
-  printf("Output file: %s\n\n", outname);
-  if ((inp = fopen(inname, "rb")) == NULL) {
-    printf("  Error iSAC Cannot read file %s.\n", inname);
-    std::cout << std::flush;
-    exit(1);
-  }
-
-  if ((outp = fopen(outname, "wb")) == NULL) {
-    printf("  Error iSAC Cannot write file %s.\n", outname);
-    std::cout << std::flush;
-    getc(stdin);
-    exit(1);
-  }
-  if (VADusage) {
-    if ((vadp = fopen(vadfile, "rb")) == NULL) {
-      printf("  Error iSAC Cannot read file %s.\n", vadfile);
-      std::cout << std::flush;
-      exit(1);
-    }
-  }
-
-  if ((bandwidthp = fopen("bwe.pcm", "wb")) == NULL) {
-    printf("  Error iSAC Cannot read file %s.\n", "bwe.pcm");
-    std::cout << std::flush;
-    exit(1);
-  }
-
-  starttime = clock() / (double)CLOCKS_PER_SEC; /* Runtime statistics */
-
-  /* Initialize the ISAC and BN structs */
-  if (testNum != 8) {
-    err = WebRtcIsac_Create(&ISAC_main_inst);
-    WebRtcIsac_SetEncSampRate(ISAC_main_inst, sampFreqKHz * 1000);
-    WebRtcIsac_SetDecSampRate(ISAC_main_inst,
-                              sampFreqKHz >= 32 ? 32000 : 16000);
-    /* Error check */
-    if (err < 0) {
-      printf("\n\n Error in create.\n\n");
-      std::cout << std::flush;
-      exit(EXIT_FAILURE);
-    }
-  }
-  BN_data.arrival_time = 0;
-  BN_data.sample_count = 0;
-  BN_data.rtp_number = 0;
-
-  /* Initialize encoder and decoder */
-  framecnt = 0;
-  endfile = 0;
-
-  if (doTransCoding) {
-    WebRtcIsac_Create(&decoderTransCoding);
-    WebRtcIsac_SetEncSampRate(decoderTransCoding, sampFreqKHz * 1000);
-    WebRtcIsac_SetDecSampRate(decoderTransCoding,
-                              sampFreqKHz >= 32 ? 32000 : 16000);
-    WebRtcIsac_DecoderInit(decoderTransCoding);
-    transCodingFile = fopen(transCodingFileName, "wb");
-    if (transCodingFile == NULL) {
-      printf("Could not open %s to output trans-coding.\n",
-             transCodingFileName);
-      exit(0);
-    }
-    strcat(transCodingFileName, ".bit");
-    transcodingBitstream = fopen(transCodingFileName, "wb");
-    if (transcodingBitstream == NULL) {
-      printf("Could not open %s to write the bit-stream of transcoder.\n",
-             transCodingFileName);
-      exit(0);
-    }
-  }
-
-  if (testNum != 1) {
-    if (WebRtcIsac_EncoderInit(ISAC_main_inst, CodingMode) < 0) {
-      printf("Error could not initialize the encoder \n");
-      std::cout << std::flush;
-      return 0;
-    }
-  }
-  if (testNum != 2)
-    WebRtcIsac_DecoderInit(ISAC_main_inst);
-  if (CodingMode == 1) {
-    err = WebRtcIsac_Control(ISAC_main_inst, bottleneck, framesize);
-    if (err < 0) {
-      /* exit if returned with error */
-      errtype = WebRtcIsac_GetErrorCode(ISAC_main_inst);
-      printf("\n\n Error in initialization (control): %d.\n\n", errtype);
-      std::cout << std::flush;
-      if (testNum == 0) {
-        exit(EXIT_FAILURE);
-      }
-    }
-  }
-
-  if ((setControlBWE) && (CodingMode == 0)) {
-    err = WebRtcIsac_ControlBwe(ISAC_main_inst, rateBPS, framesize, fixedFL);
-    if (err < 0) {
-      /* exit if returned with error */
-      errtype = WebRtcIsac_GetErrorCode(ISAC_main_inst);
-
-      printf("\n\n Error in Control BWE: %d.\n\n", errtype);
-      std::cout << std::flush;
-      exit(EXIT_FAILURE);
-    }
-  }
-
-  if (payloadSize != 0) {
-    err = WebRtcIsac_SetMaxPayloadSize(ISAC_main_inst, payloadSize);
-    if (err < 0) {
-      /* exit if returned with error */
-      errtype = WebRtcIsac_GetErrorCode(ISAC_main_inst);
-      printf("\n\n Error in SetMaxPayloadSize: %d.\n\n", errtype);
-      std::cout << std::flush;
-      exit(EXIT_FAILURE);
-    }
-  }
-  if (payloadRate != 0) {
-    err = WebRtcIsac_SetMaxRate(ISAC_main_inst, payloadRate);
-    if (err < 0) {
-      /* exit if returned with error */
-      errtype = WebRtcIsac_GetErrorCode(ISAC_main_inst);
-      printf("\n\n Error in SetMaxRateInBytes: %d.\n\n", errtype);
-      std::cout << std::flush;
-      exit(EXIT_FAILURE);
-    }
-  }
-
-  *speechType = 1;
-
-  std::cout << "\n" << std::flush;
-
-  length_file = 0;
-  int16_t bnIdxTC = 0;
-  int16_t jitterInfoTC = 0;
-  while (endfile == 0) {
-    /* Call init functions at random, fault test number 7 */
-    if (testNum == 7 && (rand() % 2 == 0)) {
-      err = WebRtcIsac_EncoderInit(ISAC_main_inst, CodingMode);
-      /* Error check */
-      if (err < 0) {
-        errtype = WebRtcIsac_GetErrorCode(ISAC_main_inst);
-        printf("\n\n Error in encoderinit: %d.\n\n", errtype);
-        std::cout << std::flush;
-      }
-
-      WebRtcIsac_DecoderInit(ISAC_main_inst);
-    }
-
-    cur_framesmpls = 0;
-    while (1) {
-      int stream_len_int = 0;
-
-      /* Read 10 ms speech block */
-      endfile = readframe(shortdata, inp, samplesIn10Ms);
-
-      if (endfile) {
-        numFileLoop++;
-        if (numFileLoop < totFileLoop) {
-          rewind(inp);
-          framecnt = 0;
-          fprintf(stderr, "\n");
-          endfile = readframe(shortdata, inp, samplesIn10Ms);
-        }
-      }
-
-      if (testNum == 7) {
-        srand((unsigned int)time(NULL));
-      }
-
-      /* iSAC encoding */
-      if (!(testNum == 3 && framecnt == 0)) {
-        stream_len_int =
-            WebRtcIsac_Encode(ISAC_main_inst, shortdata, (uint8_t*)streamdata);
-        if ((payloadSize != 0) && (stream_len_int > payloadSize)) {
-          if (testNum == 0) {
-            printf("\n\n");
-          }
-
-          printf("\nError: Streamsize out of range %d\n",
-                 stream_len_int - payloadSize);
-          std::cout << std::flush;
-        }
-
-        WebRtcIsac_GetUplinkBw(ISAC_main_inst, &sendBN);
-
-        if (stream_len_int > 0) {
-          if (doTransCoding) {
-            int16_t indexStream;
-            uint8_t auxUW8;
-
-            /******************** Main Transcoding stream ********************/
-            WebRtcIsac_GetDownLinkBwIndex(ISAC_main_inst, &bnIdxTC,
-                                          &jitterInfoTC);
-            int streamLenTransCoding_int = WebRtcIsac_GetNewBitStream(
-                ISAC_main_inst, bnIdxTC, jitterInfoTC, rateTransCoding,
-                streamDataTransCoding, false);
-            if (streamLenTransCoding_int < 0) {
-              fprintf(stderr, "Error in trans-coding\n");
-              exit(0);
-            }
-            streamLenTransCoding =
-                static_cast<size_t>(streamLenTransCoding_int);
-            auxUW8 = (uint8_t)(((streamLenTransCoding & 0xFF00) >> 8) & 0x00FF);
-            if (fwrite(&auxUW8, sizeof(uint8_t), 1, transcodingBitstream) !=
-                1) {
-              return -1;
-            }
-
-            auxUW8 = (uint8_t)(streamLenTransCoding & 0x00FF);
-            if (fwrite(&auxUW8, sizeof(uint8_t), 1, transcodingBitstream) !=
-                1) {
-              return -1;
-            }
-
-            if (fwrite(streamDataTransCoding, sizeof(uint8_t),
-                       streamLenTransCoding,
-                       transcodingBitstream) != streamLenTransCoding) {
-              return -1;
-            }
-
-            WebRtcIsac_ReadBwIndex(streamDataTransCoding, &indexStream);
-            if (indexStream != bnIdxTC) {
-              fprintf(stderr,
-                      "Error in inserting Bandwidth index into transcoding "
-                      "stream.\n");
-              exit(0);
-            }
-            numTransCodingBytes += streamLenTransCoding;
-          }
-        }
-      } else {
-        break;
-      }
-
-      if (stream_len_int < 0) {
-        /* exit if returned with error */
-        errtype = WebRtcIsac_GetErrorCode(ISAC_main_inst);
-        fprintf(stderr, "Error in encoder: %d.\n", errtype);
-        std::cout << std::flush;
-        exit(0);
-      }
-      stream_len = static_cast<size_t>(stream_len_int);
-
-      cur_framesmpls += samplesIn10Ms;
-      /* exit encoder loop if the encoder returned a bitstream */
-      if (stream_len != 0)
-        break;
-    }
-
-    /* read next bottleneck rate */
-    if (f_bn != NULL) {
-      if (fscanf(f_bn, "%d", &bottleneck) == EOF) {
-        /* Set pointer to beginning of file */
-        fseek(f_bn, 0L, SEEK_SET);
-        if (fscanf(f_bn, "%d", &bottleneck) == EOF) {
-          exit(0);
-        }
-      }
-      if (CodingMode == 1) {
-        WebRtcIsac_Control(ISAC_main_inst, bottleneck, framesize);
-      }
-    }
-
-    length_file += cur_framesmpls;
-    if (cur_framesmpls == (3 * samplesIn10Ms)) {
-      maxStreamLen30 =
-          (stream_len > maxStreamLen30) ? stream_len : maxStreamLen30;
-    } else {
-      maxStreamLen60 =
-          (stream_len > maxStreamLen60) ? stream_len : maxStreamLen60;
-    }
-
-    if (!lostFrame) {
-      lostFrame = ((rand() % 100) < packetLossPercent);
-    } else {
-      lostFrame = false;
-    }
-
-    // RED.
-    if (lostFrame) {
-      int stream_len_int = WebRtcIsac_GetRedPayload(
-          ISAC_main_inst, reinterpret_cast<uint8_t*>(streamdata));
-      if (stream_len_int < 0) {
-        fprintf(stderr, "Error getting RED payload\n");
-        exit(0);
-      }
-      stream_len = static_cast<size_t>(stream_len_int);
-
-      if (doTransCoding) {
-        int streamLenTransCoding_int = WebRtcIsac_GetNewBitStream(
-            ISAC_main_inst, bnIdxTC, jitterInfoTC, rateTransCoding,
-            streamDataTransCoding, true);
-        if (streamLenTransCoding_int < 0) {
-          fprintf(stderr, "Error in RED trans-coding\n");
-          exit(0);
-        }
-        streamLenTransCoding = static_cast<size_t>(streamLenTransCoding_int);
-      }
-    }
-
-    /* make coded sequence to short be inreasing */
-    /* the length the decoder expects */
-    if (testNum == 4) {
-      stream_len += 10;
-    }
-
-    /* make coded sequence to long be decreasing */
-    /* the length the decoder expects */
-    if (testNum == 5) {
-      stream_len -= 10;
-    }
-
-    if (testNum == 6) {
-      srand((unsigned int)time(NULL));
-      for (i = 0; i < stream_len; i++) {
-        streamdata[i] = rand();
-      }
-    }
-
-    if (VADusage) {
-      readframe(vaddata, vadp, samplesIn10Ms * 3);
-    }
-
-    /* simulate packet handling through NetEq and the modem */
-    if (!(testNum == 3 && framecnt == 0)) {
-      get_arrival_time(cur_framesmpls, stream_len, bottleneck, &BN_data,
-                       sampFreqKHz * 1000, sampFreqKHz * 1000);
-    }
-
-    if (VADusage && (framecnt > 10 && vaddata[0] == 0)) {
-      BN_data.rtp_number--;
-    } else {
-      /* Error test number 10, garbage data */
-      if (testNum == 10) {
-        /* Test to run decoder with garbage data */
-        for (i = 0; i < stream_len; i++) {
-          streamdata[i] = (short)(streamdata[i]) + (short)rand();
-        }
-      }
-
-      if (testNum != 9) {
-        err = WebRtcIsac_UpdateBwEstimate(
-            ISAC_main_inst, reinterpret_cast<const uint8_t*>(streamdata),
-            stream_len, BN_data.rtp_number, BN_data.sample_count,
-            BN_data.arrival_time);
-
-        if (err < 0) {
-          /* exit if returned with error */
-          errtype = WebRtcIsac_GetErrorCode(ISAC_main_inst);
-          if (testNum == 0) {
-            printf("\n\n");
-          }
-
-          printf("Error: in decoder: %d.", errtype);
-          std::cout << std::flush;
-          if (testNum == 0) {
-            printf("\n\n");
-          }
-        }
-      }
-
-      /* Call getFramelen, only used here for function test */
-      err = WebRtcIsac_ReadFrameLen(
-          ISAC_main_inst, reinterpret_cast<const uint8_t*>(streamdata), &FL);
-      if (err < 0) {
-        /* exit if returned with error */
-        errtype = WebRtcIsac_GetErrorCode(ISAC_main_inst);
-        if (testNum == 0) {
-          printf("\n\n");
-        }
-        printf("    Error: in getFrameLen %d.", errtype);
-        std::cout << std::flush;
-        if (testNum == 0) {
-          printf("\n\n");
-        }
-      }
-
-      // iSAC decoding
-
-      if (lostFrame) {
-        declen = WebRtcIsac_DecodeRcu(
-            ISAC_main_inst, reinterpret_cast<const uint8_t*>(streamdata),
-            stream_len, decoded, speechType);
-
-        if (doTransCoding) {
-          declenTC =
-              WebRtcIsac_DecodeRcu(decoderTransCoding, streamDataTransCoding,
-                                   streamLenTransCoding, decodedTC, speechType);
-        }
-      } else {
-        declen = WebRtcIsac_Decode(ISAC_main_inst,
-                                   reinterpret_cast<const uint8_t*>(streamdata),
-                                   stream_len, decoded, speechType);
-        if (doTransCoding) {
-          declenTC =
-              WebRtcIsac_Decode(decoderTransCoding, streamDataTransCoding,
-                                streamLenTransCoding, decodedTC, speechType);
-        }
-      }
-
-      if (declen < 0) {
-        /* exit if returned with error */
-        errtype = WebRtcIsac_GetErrorCode(ISAC_main_inst);
-        if (testNum == 0) {
-          printf("\n\n");
-        }
-        printf("    Error: in decoder %d.", errtype);
-        std::cout << std::flush;
-        if (testNum == 0) {
-          printf("\n\n");
-        }
-      }
-
-      if (declenTC < 0) {
-        if (testNum == 0) {
-          printf("\n\n");
-        }
-        printf("    Error: in decoding the transcoded stream");
-        std::cout << std::flush;
-        if (testNum == 0) {
-          printf("\n\n");
-        }
-      }
-    }
-    /* Write decoded speech frame to file */
-    if ((declen > 0) && (numFileLoop == 0)) {
-      if (fwrite(decoded, sizeof(int16_t), declen, outp) !=
-          static_cast<size_t>(declen)) {
-        return -1;
-      }
-    }
-
-    if ((declenTC > 0) && (numFileLoop == 0)) {
-      if (fwrite(decodedTC, sizeof(int16_t), declen, transCodingFile) !=
-          static_cast<size_t>(declen)) {
-        return -1;
-      }
-    }
-
-    fprintf(stderr, "\rframe = %5d  ", framecnt);
-    fflush(stderr);
-    framecnt++;
-
-    /* Error test number 10, garbage data */
-    // if (testNum == 10)
-    // {
-    //   /* Test to run decoder with garbage data */
-    //   if ((seedfile = fopen(SEED_FILE, "a+t")) == NULL) {
-    //     fprintf(stderr, "Error: Could not open file %s\n", SEED_FILE);
-    //   } else {
-    //     fprintf(seedfile, "ok\n\n");
-    //     fclose(seedfile);
-    //   }
-    // }
-    /* Error test number 10, garbage data */
-    // if (testNum == 10) {
-    //   /* Test to run decoder with garbage data */
-    //   for (i = 0; i < stream_len; i++) {
-    //     streamdata[i] = (short) (streamdata[i] + (short) rand());
-    //   }
-    // }
-
-    totalsmpls += declen;
-    totalbits += 8 * stream_len;
-#if !defined(NDEBUG)
-    kbps = ((double)sampFreqKHz * 1000.) / ((double)cur_framesmpls) * 8.0 *
-           stream_len / 1000.0;  // kbits/s
-    fy = fopen("bit_rate.dat", "a");
-    fprintf(fy, "Frame %i = %0.14f\n", framecnt, kbps);
-    fclose(fy);
-
-#endif
-  }
-  printf("\n");
-  printf("total bits               = %zu bits\n", totalbits);
-  printf("measured average bitrate = %0.3f kbits/s\n",
-         (double)totalbits * (sampFreqKHz) / totalsmpls);
-  if (doTransCoding) {
-    printf("Transcoding average bit-rate = %0.3f kbps\n",
-           (double)numTransCodingBytes * 8.0 * (sampFreqKHz) / totalsmpls);
-    fclose(transCodingFile);
-  }
-  printf("\n");
-
-  /* Runtime statistics */
-  runtime = (double)(clock() / (double)CLOCKS_PER_SEC - starttime);
-  length_file = length_file / (sampFreqKHz * 1000.);
-
-  printf("\n\nLength of speech file: %.1f s\n", length_file);
-  printf("Time to run iSAC:      %.2f s (%.2f %% of realtime)\n\n", runtime,
-         (100 * runtime / length_file));
-
-  if (maxStreamLen30 != 0) {
-    printf(
-        "Maximum payload size 30ms Frames %zu"
-        " bytes (%0.3f kbps)\n",
-        maxStreamLen30, maxStreamLen30 * 8 / 30.);
-  }
-  if (maxStreamLen60 != 0) {
-    printf(
-        "Maximum payload size 60ms Frames %zu"
-        " bytes (%0.3f kbps)\n",
-        maxStreamLen60, maxStreamLen60 * 8 / 60.);
-  }
-  // fprintf(stderr, "\n");
-
-  fprintf(stderr, "   %.1f s", length_file);
-  fprintf(stderr, "   %0.1f kbps",
-          (double)totalbits * (sampFreqKHz) / totalsmpls);
-  if (maxStreamLen30 != 0) {
-    fprintf(stderr, "   plmax-30ms %zu bytes (%0.0f kbps)", maxStreamLen30,
-            maxStreamLen30 * 8 / 30.);
-  }
-  if (maxStreamLen60 != 0) {
-    fprintf(stderr, "   plmax-60ms %zu bytes (%0.0f kbps)", maxStreamLen60,
-            maxStreamLen60 * 8 / 60.);
-  }
-  if (doTransCoding) {
-    fprintf(stderr, "  transcoding rate %.0f kbps",
-            (double)numTransCodingBytes * 8.0 * (sampFreqKHz) / totalsmpls);
-  }
-
-  fclose(inp);
-  fclose(outp);
-  WebRtcIsac_Free(ISAC_main_inst);
-
-  exit(0);
-}
diff --git a/modules/audio_coding/codecs/isac/main/test/SwitchingSampRate/SwitchingSampRate.cc b/modules/audio_coding/codecs/isac/main/test/SwitchingSampRate/SwitchingSampRate.cc
deleted file mode 100644
index 549163f..0000000
--- a/modules/audio_coding/codecs/isac/main/test/SwitchingSampRate/SwitchingSampRate.cc
+++ /dev/null
@@ -1,425 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-// SwitchingSampRate.cpp : Defines the entry point for the console
-// application.
-//
-
-#include <iostream>
-
-#include "common_audio/signal_processing/include/signal_processing_library.h"
-#include "modules/audio_coding/codecs/isac/main/include/isac.h"
-#include "modules/audio_coding/codecs/isac/main/util/utility.h"
-
-#define MAX_FILE_NAME 500
-#define MAX_NUM_CLIENTS 2
-
-#define NUM_CLIENTS 2
-
-int main(int argc, char* argv[]) {
-  char fileNameWB[MAX_FILE_NAME];
-  char fileNameSWB[MAX_FILE_NAME];
-
-  char outFileName[MAX_NUM_CLIENTS][MAX_FILE_NAME];
-
-  FILE* inFile[MAX_NUM_CLIENTS];
-  FILE* outFile[MAX_NUM_CLIENTS];
-
-  ISACStruct* codecInstance[MAX_NUM_CLIENTS];
-  int32_t resamplerState[MAX_NUM_CLIENTS][8];
-
-  int encoderSampRate[MAX_NUM_CLIENTS];
-
-  int minBn = 16000;
-  int maxBn = 56000;
-
-  int bnWB = 32000;
-  int bnSWB = 56000;
-
-  strcpy(outFileName[0], "switchSampRate_out1.pcm");
-  strcpy(outFileName[1], "switchSampRate_out2.pcm");
-
-  short clientCntr;
-
-  size_t lenEncodedInBytes[MAX_NUM_CLIENTS];
-  unsigned int lenAudioIn10ms[MAX_NUM_CLIENTS];
-  size_t lenEncodedInBytesTmp[MAX_NUM_CLIENTS];
-  unsigned int lenAudioIn10msTmp[MAX_NUM_CLIENTS];
-  BottleNeckModel* packetData[MAX_NUM_CLIENTS];
-
-  char versionNumber[100];
-  short samplesIn10ms[MAX_NUM_CLIENTS];
-  int bottleneck[MAX_NUM_CLIENTS];
-
-  printf("\n\n");
-  printf("____________________________________________\n\n");
-  WebRtcIsac_version(versionNumber);
-  printf("    iSAC-swb version %s\n", versionNumber);
-  printf("____________________________________________\n");
-
-  fileNameWB[0] = '\0';
-  fileNameSWB[0] = '\0';
-
-  char myFlag[20];
-  strcpy(myFlag, "-wb");
-  // READ THE WIDEBAND AND SUPER-WIDEBAND FILE NAMES
-  if (readParamString(argc, argv, myFlag, fileNameWB, MAX_FILE_NAME) <= 0) {
-    printf("No wideband file is specified");
-  }
-
-  strcpy(myFlag, "-swb");
-  if (readParamString(argc, argv, myFlag, fileNameSWB, MAX_FILE_NAME) <= 0) {
-    printf("No super-wideband file is specified");
-  }
-
-  // THE FIRST CLIENT STARTS IN WIDEBAND
-  encoderSampRate[0] = 16000;
-  OPEN_FILE_RB(inFile[0], fileNameWB);
-
-  // THE SECOND CLIENT STARTS IN SUPER-WIDEBAND
-  encoderSampRate[1] = 32000;
-  OPEN_FILE_RB(inFile[1], fileNameSWB);
-
-  strcpy(myFlag, "-I");
-  short codingMode = readSwitch(argc, argv, myFlag);
-
-  for (clientCntr = 0; clientCntr < NUM_CLIENTS; clientCntr++) {
-    codecInstance[clientCntr] = NULL;
-
-    printf("\n");
-    printf("Client %d\n", clientCntr + 1);
-    printf("---------\n");
-    printf("Starting %s", (encoderSampRate[clientCntr] == 16000)
-                              ? "wideband"
-                              : "super-wideband");
-
-    // Open output File Name
-    OPEN_FILE_WB(outFile[clientCntr], outFileName[clientCntr]);
-    printf("Output File...................... %s\n", outFileName[clientCntr]);
-
-    samplesIn10ms[clientCntr] = encoderSampRate[clientCntr] * 10;
-
-    if (codingMode == 1) {
-      bottleneck[clientCntr] = (clientCntr) ? bnSWB : bnWB;
-    } else {
-      bottleneck[clientCntr] = (clientCntr) ? minBn : maxBn;
-    }
-
-    printf("Bottleneck....................... %0.3f kbits/sec \n",
-           bottleneck[clientCntr] / 1000.0);
-
-    // coding-mode
-    printf(
-        "Encoding Mode.................... %s\n",
-        (codingMode == 1) ? "Channel-Independent (Instantaneous)" : "Adaptive");
-
-    lenEncodedInBytes[clientCntr] = 0;
-    lenAudioIn10ms[clientCntr] = 0;
-    lenEncodedInBytesTmp[clientCntr] = 0;
-    lenAudioIn10msTmp[clientCntr] = 0;
-
-    packetData[clientCntr] = (BottleNeckModel*)new (BottleNeckModel);
-    if (packetData[clientCntr] == NULL) {
-      printf("Could not allocate memory for packetData \n");
-      return -1;
-    }
-    memset(packetData[clientCntr], 0, sizeof(BottleNeckModel));
-    memset(resamplerState[clientCntr], 0, sizeof(int32_t) * 8);
-  }
-
-  for (clientCntr = 0; clientCntr < NUM_CLIENTS; clientCntr++) {
-    // Create
-    if (WebRtcIsac_Create(&codecInstance[clientCntr])) {
-      printf("Could not creat client %d\n", clientCntr + 1);
-      return -1;
-    }
-
-    WebRtcIsac_SetEncSampRate(codecInstance[clientCntr],
-                              encoderSampRate[clientCntr]);
-
-    WebRtcIsac_SetDecSampRate(
-        codecInstance[clientCntr],
-        encoderSampRate[clientCntr + (1 - ((clientCntr & 1) << 1))]);
-
-    // Initialize Encoder
-    if (WebRtcIsac_EncoderInit(codecInstance[clientCntr], codingMode) < 0) {
-      printf("Could not initialize client, %d\n", clientCntr + 1);
-      return -1;
-    }
-
-    WebRtcIsac_DecoderInit(codecInstance[clientCntr]);
-
-    // setup Rate if in Instantaneous mode
-    if (codingMode != 0) {
-      // ONLY Clients who are not in Adaptive mode
-      if (WebRtcIsac_Control(codecInstance[clientCntr], bottleneck[clientCntr],
-                             30) < 0) {
-        printf("Could not setup bottleneck and frame-size for client %d\n",
-               clientCntr + 1);
-        return -1;
-      }
-    }
-  }
-
-  size_t streamLen;
-  short numSamplesRead;
-  size_t lenDecodedAudio;
-  short senderIdx;
-  short receiverIdx;
-
-  printf("\n");
-  short num10ms[MAX_NUM_CLIENTS];
-  memset(num10ms, 0, sizeof(short) * MAX_NUM_CLIENTS);
-  FILE* arrivalTimeFile1 = fopen("arrivalTime1.dat", "wb");
-  FILE* arrivalTimeFile2 = fopen("arrivalTime2.dat", "wb");
-  short numPrint[MAX_NUM_CLIENTS];
-  memset(numPrint, 0, sizeof(short) * MAX_NUM_CLIENTS);
-
-  // Audio Buffers
-  short silence10ms[10 * 32];
-  memset(silence10ms, 0, 320 * sizeof(short));
-  short audioBuff10ms[10 * 32];
-  short audioBuff60ms[60 * 32];
-  short resampledAudio60ms[60 * 32];
-
-  unsigned short bitStream[600 + 600];
-  short speechType[1];
-
-  short numSampFreqChanged = 0;
-  while (numSampFreqChanged < 10) {
-    for (clientCntr = 0; clientCntr < NUM_CLIENTS; clientCntr++) {
-      // Encoding/decoding for this pair of clients, if there is
-      // audio for any of them
-      // if(audioLeft[clientCntr] || audioLeft[clientCntr + 1])
-      //{
-      // for(pairCntr = 0; pairCntr < 2; pairCntr++)
-      //{
-      senderIdx = clientCntr;        // + pairCntr;
-      receiverIdx = 1 - clientCntr;  //  + (1 - pairCntr);
-
-      // if(num10ms[senderIdx] > 6)
-      //{
-      //    printf("Too many frames read for client %d",
-      //        senderIdx + 1);
-      //    return -1;
-      //}
-
-      numSamplesRead =
-          (short)fread(audioBuff10ms, sizeof(short), samplesIn10ms[senderIdx],
-                       inFile[senderIdx]);
-      if (numSamplesRead != samplesIn10ms[senderIdx]) {
-        // file finished switch encoder sampling frequency.
-        printf("Changing Encoder Sampling frequency in client %d to ",
-               senderIdx + 1);
-        fclose(inFile[senderIdx]);
-        numSampFreqChanged++;
-        if (encoderSampRate[senderIdx] == 16000) {
-          printf("super-wideband.\n");
-          OPEN_FILE_RB(inFile[senderIdx], fileNameSWB);
-          encoderSampRate[senderIdx] = 32000;
-        } else {
-          printf("wideband.\n");
-          OPEN_FILE_RB(inFile[senderIdx], fileNameWB);
-          encoderSampRate[senderIdx] = 16000;
-        }
-        WebRtcIsac_SetEncSampRate(codecInstance[senderIdx],
-                                  encoderSampRate[senderIdx]);
-        WebRtcIsac_SetDecSampRate(codecInstance[receiverIdx],
-                                  encoderSampRate[senderIdx]);
-
-        samplesIn10ms[clientCntr] = encoderSampRate[clientCntr] * 10;
-
-        numSamplesRead =
-            (short)fread(audioBuff10ms, sizeof(short), samplesIn10ms[senderIdx],
-                         inFile[senderIdx]);
-        if (numSamplesRead != samplesIn10ms[senderIdx]) {
-          printf(" File %s for client %d has not enough audio\n",
-                 (encoderSampRate[senderIdx] == 16000) ? "wideband"
-                                                       : "super-wideband",
-                 senderIdx + 1);
-          return -1;
-        }
-      }
-      num10ms[senderIdx]++;
-
-      // sanity check
-      // if(num10ms[senderIdx] > 6)
-      //{
-      //    printf("Client %d has got more than 60 ms audio and encoded no
-      //    packet.\n",
-      //        senderIdx);
-      //    return -1;
-      //}
-
-      // Encode
-
-      int streamLen_int = WebRtcIsac_Encode(codecInstance[senderIdx],
-                                            audioBuff10ms, (uint8_t*)bitStream);
-      int16_t ggg;
-      if (streamLen_int > 0) {
-        if ((WebRtcIsac_ReadFrameLen(
-                codecInstance[receiverIdx],
-                reinterpret_cast<const uint8_t*>(bitStream), &ggg)) < 0)
-          printf("ERROR\n");
-      }
-
-      // Sanity check
-      if (streamLen_int < 0) {
-        printf(" Encoder error in client %d \n", senderIdx + 1);
-        return -1;
-      }
-      streamLen = static_cast<size_t>(streamLen_int);
-
-      if (streamLen > 0) {
-        // Packet generated; model sending through a channel, do bandwidth
-        // estimation at the receiver and decode.
-        lenEncodedInBytes[senderIdx] += streamLen;
-        lenAudioIn10ms[senderIdx] += (unsigned int)num10ms[senderIdx];
-        lenEncodedInBytesTmp[senderIdx] += streamLen;
-        lenAudioIn10msTmp[senderIdx] += (unsigned int)num10ms[senderIdx];
-
-        // Print after ~5 sec.
-        if (lenAudioIn10msTmp[senderIdx] >= 100) {
-          numPrint[senderIdx]++;
-          printf("  %d,  %6.3f => %6.3f ", senderIdx + 1,
-                 bottleneck[senderIdx] / 1000.0,
-                 lenEncodedInBytesTmp[senderIdx] * 0.8 /
-                     lenAudioIn10msTmp[senderIdx]);
-
-          if (codingMode == 0) {
-            int32_t bn;
-            WebRtcIsac_GetUplinkBw(codecInstance[senderIdx], &bn);
-            printf("[%d] ", bn);
-          }
-          // int16_t rateIndexLB;
-          // int16_t rateIndexUB;
-          // WebRtcIsac_GetDownLinkBwIndex(codecInstance[receiverIdx],
-          //    &rateIndexLB, &rateIndexUB);
-          // printf(" (%2d, %2d) ", rateIndexLB, rateIndexUB);
-
-          std::cout << std::flush;
-          lenEncodedInBytesTmp[senderIdx] = 0;
-          lenAudioIn10msTmp[senderIdx] = 0;
-          // if(senderIdx == (NUM_CLIENTS - 1))
-          //{
-          printf("  %0.1f \n", lenAudioIn10ms[senderIdx] * 10. / 1000);
-          //}
-
-          // After ~20 sec change the bottleneck.
-          //    if((numPrint[senderIdx] == 4) && (codingMode == 0))
-          //    {
-          //        numPrint[senderIdx] = 0;
-          //        if(codingMode == 0)
-          //        {
-          //            int newBottleneck = bottleneck[senderIdx] +
-          //                (bottleneckChange[senderIdx] * 1000);
-
-          //            if(bottleneckChange[senderIdx] > 0)
-          //            {
-          //                if(newBottleneck >maxBn)
-          //                {
-          //                    bottleneckChange[senderIdx] = -1;
-          //                    newBottleneck = bottleneck[senderIdx] +
-          //                        (bottleneckChange[senderIdx] * 1000);
-          //                    if(newBottleneck > minBn)
-          //                    {
-          //                        bottleneck[senderIdx] = newBottleneck;
-          //                    }
-          //                }
-          //                else
-          //                {
-          //                    bottleneck[senderIdx] = newBottleneck;
-          //                }
-          //            }
-          //            else
-          //            {
-          //                if(newBottleneck < minBn)
-          //                {
-          //                    bottleneckChange[senderIdx] = 1;
-          //                    newBottleneck = bottleneck[senderIdx] +
-          //                        (bottleneckChange[senderIdx] * 1000);
-          //                    if(newBottleneck < maxBn)
-          //                    {
-          //                        bottleneck[senderIdx] = newBottleneck;
-          //                    }
-          //                }
-          //                else
-          //                {
-          //                    bottleneck[senderIdx] = newBottleneck;
-          //                }
-          //            }
-          //        }
-          //    }
-        }
-
-        // model a channel of given bottleneck, to get the receive timestamp
-        get_arrival_time(num10ms[senderIdx] * samplesIn10ms[senderIdx],
-                         streamLen, bottleneck[senderIdx],
-                         packetData[senderIdx],
-                         encoderSampRate[senderIdx] * 1000,
-                         encoderSampRate[senderIdx] * 1000);
-
-        // Write the arrival time.
-        if (senderIdx == 0) {
-          if (fwrite(&(packetData[senderIdx]->arrival_time),
-                     sizeof(unsigned int), 1, arrivalTimeFile1) != 1) {
-            return -1;
-          }
-        } else {
-          if (fwrite(&(packetData[senderIdx]->arrival_time),
-                     sizeof(unsigned int), 1, arrivalTimeFile2) != 1) {
-            return -1;
-          }
-        }
-
-        // BWE
-        if (WebRtcIsac_UpdateBwEstimate(
-                codecInstance[receiverIdx],
-                reinterpret_cast<const uint8_t*>(bitStream), streamLen,
-                packetData[senderIdx]->rtp_number,
-                packetData[senderIdx]->sample_count,
-                packetData[senderIdx]->arrival_time) < 0) {
-          printf(" BWE Error at client %d \n", receiverIdx + 1);
-          return -1;
-        }
-        /**/
-        // Decode
-        int lenDecodedAudio_int =
-            WebRtcIsac_Decode(codecInstance[receiverIdx],
-                              reinterpret_cast<const uint8_t*>(bitStream),
-                              streamLen, audioBuff60ms, speechType);
-        if (lenDecodedAudio_int < 0) {
-          printf(" Decoder error in client %d \n", receiverIdx + 1);
-          return -1;
-        }
-        lenDecodedAudio = static_cast<size_t>(lenDecodedAudio_int);
-
-        if (encoderSampRate[senderIdx] == 16000) {
-          WebRtcSpl_UpsampleBy2(audioBuff60ms, lenDecodedAudio,
-                                resampledAudio60ms,
-                                resamplerState[receiverIdx]);
-          if (fwrite(resampledAudio60ms, sizeof(short), lenDecodedAudio << 1,
-                     outFile[receiverIdx]) != lenDecodedAudio << 1) {
-            return -1;
-          }
-        } else {
-          if (fwrite(audioBuff60ms, sizeof(short), lenDecodedAudio,
-                     outFile[receiverIdx]) != lenDecodedAudio) {
-            return -1;
-          }
-        }
-        num10ms[senderIdx] = 0;
-      }
-      //}
-      //}
-    }
-  }
-  return 0;
-}
diff --git a/modules/audio_coding/codecs/isac/main/test/simpleKenny.c b/modules/audio_coding/codecs/isac/main/test/simpleKenny.c
deleted file mode 100644
index 4446ff7..0000000
--- a/modules/audio_coding/codecs/isac/main/test/simpleKenny.c
+++ /dev/null
@@ -1,461 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-/* kenny.c  - Main function for the iSAC coder */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-
-#ifdef WIN32
-#include "windows.h"
-#ifndef CLOCKS_PER_SEC
-#define CLOCKS_PER_SEC 1000
-#endif
-#endif
-
-#include <math.h>
-
-/* include API */
-#include "modules/audio_coding/codecs/isac/main/include/isac.h"
-#include "modules/audio_coding/codecs/isac/main/util/utility.h"
-
-/* max number of samples per frame (= 60 ms frame) */
-#define MAX_FRAMESAMPLES_SWB 1920
-/* number of samples per 10ms frame */
-#define FRAMESAMPLES_SWB_10ms 320
-#define FRAMESAMPLES_WB_10ms 160
-
-/* sampling frequency (Hz) */
-#define FS_SWB 32000
-#define FS_WB 16000
-
-unsigned long framecnt = 0;
-
-int main(int argc, char* argv[]) {
-  //--- File IO ----
-  FILE* inp;
-  FILE* outp;
-  char inname[500];
-  char outname[500];
-
-  /* Runtime statistics */
-  double rate;
-  double rateRCU;
-  size_t totalbits = 0;
-  unsigned long totalBitsRCU = 0;
-  unsigned long totalsmpls = 0;
-
-  int32_t bottleneck = 39;
-  int frameSize = 30; /* ms */
-  int16_t codingMode = 1;
-  int16_t shortdata[FRAMESAMPLES_SWB_10ms];
-  int16_t decoded[MAX_FRAMESAMPLES_SWB];
-  int16_t speechType[1];
-  int16_t payloadLimit;
-  int32_t rateLimit;
-  ISACStruct* ISAC_main_inst;
-
-  size_t stream_len = 0;
-  int declen = 0;
-  int16_t err;
-  int cur_framesmpls;
-  int endfile;
-#ifdef WIN32
-  double length_file;
-  double runtime;
-  char outDrive[10];
-  char outPath[500];
-  char outPrefix[500];
-  char outSuffix[500];
-  char bitrateFileName[500];
-  FILE* bitrateFile;
-  double starttime;
-  double rateLB = 0;
-  double rateUB = 0;
-#endif
-  FILE* histFile;
-  FILE* averageFile;
-  int sampFreqKHz;
-  int samplesIn10Ms;
-  size_t maxStreamLen = 0;
-  char histFileName[500];
-  char averageFileName[500];
-  unsigned int hist[600];
-  double tmpSumStreamLen = 0;
-  unsigned int packetCntr = 0;
-  unsigned int lostPacketCntr = 0;
-  uint8_t payload[1200];
-  uint8_t payloadRCU[1200];
-  uint16_t packetLossPercent = 0;
-  int16_t rcuStreamLen = 0;
-  int onlyEncode;
-  int onlyDecode;
-
-  BottleNeckModel packetData;
-  packetData.arrival_time = 0;
-  packetData.sample_count = 0;
-  packetData.rtp_number = 0;
-  memset(hist, 0, sizeof(hist));
-
-  /* handling wrong input arguments in the command line */
-  if (argc < 5) {
-    printf("\n\nWrong number of arguments or flag values.\n\n");
-
-    printf("Usage:\n\n");
-    printf("%s infile outfile -bn bottleneck [options]\n\n", argv[0]);
-    printf("with:\n");
-    printf("-I.............. indicates encoding in instantaneous mode.\n");
-    printf("-bn bottleneck.. the value of the bottleneck in bit/sec, e.g.\n");
-    printf("                 39742, in instantaneous (channel-independent)\n");
-    printf("                 mode.\n\n");
-    printf("infile.......... Normal speech input file\n\n");
-    printf("outfile......... Speech output file\n\n");
-    printf("OPTIONS\n");
-    printf("-------\n");
-    printf("-fs sampFreq.... sampling frequency of codec 16 or 32 (default)\n");
-    printf("                 kHz.\n");
-    printf("-plim payloadLim payload limit in bytes, default is the maximum\n");
-    printf("                 possible.\n");
-    printf("-rlim rateLim... rate limit in bits/sec, default is the maximum\n");
-    printf("                 possible.\n");
-    printf("-h file......... record histogram and *append* to 'file'.\n");
-    printf("-ave file....... record average rate of 3 sec intervales and\n");
-    printf("                 *append* to 'file'.\n");
-    printf("-ploss.......... packet-loss percentage.\n");
-    printf("-enc............ do only encoding and store the bit-stream\n");
-    printf("-dec............ the input file is a bit-stream, decode it.\n\n");
-    printf("Example usage:\n\n");
-    printf("%s speechIn.pcm speechOut.pcm -B 40000 -fs 32\n\n", argv[0]);
-
-    exit(0);
-  }
-
-  /* Get Bottleneck value */
-  bottleneck = readParamInt(argc, argv, "-bn", 50000);
-  fprintf(stderr, "\nfixed bottleneck rate of %d bits/s\n\n", bottleneck);
-
-  /* Get Input and Output files */
-  sscanf(argv[1], "%s", inname);
-  sscanf(argv[2], "%s", outname);
-  codingMode = readSwitch(argc, argv, "-I");
-  sampFreqKHz = (int16_t)readParamInt(argc, argv, "-fs", 32);
-  if (readParamString(argc, argv, "-h", histFileName, 500) > 0) {
-    histFile = fopen(histFileName, "a");
-    if (histFile == NULL) {
-      printf("cannot open hist file %s", histFileName);
-      exit(0);
-    }
-  } else {
-    // NO recording of hitstogram
-    histFile = NULL;
-  }
-
-  packetLossPercent = readParamInt(argc, argv, "-ploss", 0);
-
-  if (readParamString(argc, argv, "-ave", averageFileName, 500) > 0) {
-    averageFile = fopen(averageFileName, "a");
-    if (averageFile == NULL) {
-      printf("cannot open file to write rate %s", averageFileName);
-      exit(0);
-    }
-  } else {
-    averageFile = NULL;
-  }
-
-  onlyEncode = readSwitch(argc, argv, "-enc");
-  onlyDecode = readSwitch(argc, argv, "-dec");
-
-  switch (sampFreqKHz) {
-    case 16: {
-      samplesIn10Ms = 160;
-      break;
-    }
-    case 32: {
-      samplesIn10Ms = 320;
-      break;
-    }
-    default:
-      printf("A sampling frequency of %d kHz is not supported, valid values are"
-             " 8 and 16.\n", sampFreqKHz);
-      exit(-1);
-  }
-  payloadLimit = (int16_t)readParamInt(argc, argv, "-plim", 400);
-  rateLimit = readParamInt(argc, argv, "-rlim", 106800);
-
-  if ((inp = fopen(inname, "rb")) == NULL) {
-    printf("  iSAC: Cannot read file %s.\n", inname);
-    exit(1);
-  }
-  if ((outp = fopen(outname, "wb")) == NULL) {
-    printf("  iSAC: Cannot write file %s.\n", outname);
-    exit(1);
-  }
-
-#ifdef WIN32
-  _splitpath(outname, outDrive, outPath, outPrefix, outSuffix);
-  _makepath(bitrateFileName, outDrive, outPath, "bitrate", ".txt");
-
-  bitrateFile = fopen(bitrateFileName, "a");
-  fprintf(bitrateFile, "%%  %s  \n", inname);
-#endif
-
-  printf("\n");
-  printf("Input.................... %s\n", inname);
-  printf("Output................... %s\n", outname);
-  printf("Encoding Mode............ %s\n",
-         (codingMode == 1) ? "Channel-Independent" : "Channel-Adaptive");
-  printf("Bottleneck............... %d bits/sec\n", bottleneck);
-  printf("Packet-loss Percentage... %d\n", packetLossPercent);
-  printf("\n");
-
-#ifdef WIN32
-  starttime = clock() / (double)CLOCKS_PER_SEC; /* Runtime statistics */
-#endif
-
-  /* Initialize the ISAC and BN structs */
-  err = WebRtcIsac_Create(&ISAC_main_inst);
-
-  WebRtcIsac_SetEncSampRate(ISAC_main_inst, sampFreqKHz * 1000);
-  WebRtcIsac_SetDecSampRate(ISAC_main_inst, sampFreqKHz >= 32 ? 32000 : 16000);
-  /* Error check */
-  if (err < 0) {
-    fprintf(stderr, "\n\n Error in create.\n\n");
-    exit(EXIT_FAILURE);
-  }
-
-  framecnt = 0;
-  endfile = 0;
-
-  /* Initialize encoder and decoder */
-  if (WebRtcIsac_EncoderInit(ISAC_main_inst, codingMode) < 0) {
-    printf("cannot initialize encoder\n");
-    return -1;
-  }
-  WebRtcIsac_DecoderInit(ISAC_main_inst);
-
-  if (codingMode == 1) {
-    if (WebRtcIsac_Control(ISAC_main_inst, bottleneck, frameSize) < 0) {
-      printf("cannot set bottleneck\n");
-      return -1;
-    }
-  } else {
-    if (WebRtcIsac_ControlBwe(ISAC_main_inst, 15000, 30, 1) < 0) {
-      printf("cannot configure BWE\n");
-      return -1;
-    }
-  }
-
-  if (WebRtcIsac_SetMaxPayloadSize(ISAC_main_inst, payloadLimit) < 0) {
-    printf("cannot set maximum payload size %d.\n", payloadLimit);
-    return -1;
-  }
-
-  if (rateLimit < 106800) {
-    if (WebRtcIsac_SetMaxRate(ISAC_main_inst, rateLimit) < 0) {
-      printf("cannot set the maximum rate %d.\n", rateLimit);
-      return -1;
-    }
-  }
-
-  while (endfile == 0) {
-    fprintf(stderr, "  \rframe = %7li", framecnt);
-
-    //============== Readind from the file and encoding =================
-    cur_framesmpls = 0;
-    stream_len = 0;
-
-    if (onlyDecode) {
-      uint8_t auxUW8;
-      if (fread(&auxUW8, sizeof(uint8_t), 1, inp) < 1) {
-        break;
-      }
-      stream_len = auxUW8 << 8;
-      if (fread(&auxUW8, sizeof(uint8_t), 1, inp) < 1) {
-        break;
-      }
-      stream_len |= auxUW8;
-      if (fread(payload, 1, stream_len, inp) < stream_len) {
-        printf("last payload is corrupted\n");
-        break;
-      }
-    } else {
-      while (stream_len == 0) {
-        int stream_len_int;
-
-        // Read 10 ms speech block
-        endfile = readframe(shortdata, inp, samplesIn10Ms);
-        if (endfile) {
-          break;
-        }
-        cur_framesmpls += samplesIn10Ms;
-
-        //-------- iSAC encoding ---------
-        stream_len_int = WebRtcIsac_Encode(ISAC_main_inst, shortdata, payload);
-
-        if (stream_len_int < 0) {
-          // exit if returned with error
-          // errType=WebRtcIsac_GetErrorCode(ISAC_main_inst);
-          fprintf(stderr, "\nError in encoder\n");
-          getc(stdin);
-          exit(EXIT_FAILURE);
-        }
-        stream_len = (size_t)stream_len_int;
-      }
-      //===================================================================
-      if (endfile) {
-        break;
-      }
-
-      rcuStreamLen = WebRtcIsac_GetRedPayload(ISAC_main_inst, payloadRCU);
-      if (rcuStreamLen < 0) {
-        fprintf(stderr, "\nError getting RED payload\n");
-        getc(stdin);
-        exit(EXIT_FAILURE);
-      }
-
-      get_arrival_time(cur_framesmpls, stream_len, bottleneck, &packetData,
-                       sampFreqKHz * 1000, sampFreqKHz * 1000);
-      if (WebRtcIsac_UpdateBwEstimate(
-              ISAC_main_inst, payload, stream_len, packetData.rtp_number,
-              packetData.sample_count, packetData.arrival_time) < 0) {
-        printf(" BWE Error at client\n");
-        return -1;
-      }
-    }
-
-    if (endfile) {
-      break;
-    }
-
-    maxStreamLen = (stream_len > maxStreamLen) ? stream_len : maxStreamLen;
-    packetCntr++;
-
-    hist[stream_len]++;
-    if (averageFile != NULL) {
-      tmpSumStreamLen += stream_len;
-      if (packetCntr == 100) {
-        // kbps
-        fprintf(averageFile, "%8.3f ",
-                tmpSumStreamLen * 8.0 / (30.0 * packetCntr));
-        packetCntr = 0;
-        tmpSumStreamLen = 0;
-      }
-    }
-
-    if (onlyEncode) {
-      uint8_t auxUW8;
-      auxUW8 = (uint8_t)(((stream_len & 0x7F00) >> 8) & 0xFF);
-      if (fwrite(&auxUW8, sizeof(uint8_t), 1, outp) != 1) {
-        return -1;
-      }
-
-      auxUW8 = (uint8_t)(stream_len & 0xFF);
-      if (fwrite(&auxUW8, sizeof(uint8_t), 1, outp) != 1) {
-        return -1;
-      }
-      if (fwrite(payload, 1, stream_len, outp) != stream_len) {
-        return -1;
-      }
-    } else {
-      //======================= iSAC decoding ===========================
-
-      if ((rand() % 100) < packetLossPercent) {
-        declen = WebRtcIsac_DecodeRcu(ISAC_main_inst, payloadRCU,
-                                      (size_t)rcuStreamLen, decoded,
-                                      speechType);
-        lostPacketCntr++;
-      } else {
-        declen = WebRtcIsac_Decode(ISAC_main_inst, payload, stream_len, decoded,
-                                   speechType);
-      }
-      if (declen <= 0) {
-        // errType=WebRtcIsac_GetErrorCode(ISAC_main_inst);
-        fprintf(stderr, "\nError in decoder.\n");
-        getc(stdin);
-        exit(1);
-      }
-
-      // Write decoded speech frame to file
-      if (fwrite(decoded, sizeof(int16_t), declen, outp) != (size_t)declen) {
-        return -1;
-      }
-      cur_framesmpls = declen;
-    }
-    // Update Statistics
-    framecnt++;
-    totalsmpls += cur_framesmpls;
-    if (stream_len > 0) {
-      totalbits += 8 * stream_len;
-    }
-    if (rcuStreamLen > 0) {
-      totalBitsRCU += 8 * rcuStreamLen;
-    }
-  }
-
-  rate = ((double)totalbits * (sampFreqKHz)) / (double)totalsmpls;
-  rateRCU = ((double)totalBitsRCU * (sampFreqKHz)) / (double)totalsmpls;
-
-  printf("\n\n");
-  printf("Sampling Rate............... %d kHz\n", sampFreqKHz);
-  printf("Payload Limit............... %d bytes \n", payloadLimit);
-  printf("Rate Limit.................. %d bits/sec \n", rateLimit);
-
-#ifdef WIN32
-  fprintf(bitrateFile, "%d  %10lu     %d     %6.3f  %6.3f    %6.3f\n",
-          sampFreqKHz, framecnt, bottleneck, rateLB, rateUB, rate);
-  fclose(bitrateFile);
-#endif  // WIN32
-
-  printf("\n");
-  printf("Measured bit-rate........... %0.3f kbps\n", rate);
-  printf("Measured RCU bit-ratre...... %0.3f kbps\n", rateRCU);
-  printf("Maximum bit-rate/payloadsize %0.3f / %zu\n",
-         maxStreamLen * 8 / 0.03, maxStreamLen);
-  printf("Measured packet-loss........ %0.1f%% \n",
-         100.0f * (float)lostPacketCntr / (float)packetCntr);
-
-  printf("\n");
-
-/* Runtime statistics */
-#ifdef WIN32
-  runtime = (double)(clock() / (double)CLOCKS_PER_SEC - starttime);
-  length_file = ((double)framecnt * (double)declen / (sampFreqKHz * 1000));
-  printf("Length of speech file....... %.1f s\n", length_file);
-  printf("Time to run iSAC............ %.2f s (%.2f %% of realtime)\n\n",
-         runtime, (100 * runtime / length_file));
-#endif
-  printf("\n\n_______________________________________________\n");
-
-  if (histFile != NULL) {
-    int n;
-    for (n = 0; n < 600; n++) {
-      fprintf(histFile, "%6d ", hist[n]);
-    }
-    fprintf(histFile, "\n");
-    fclose(histFile);
-  }
-  if (averageFile != NULL) {
-    if (packetCntr > 0) {
-      fprintf(averageFile, "%8.3f ",
-              tmpSumStreamLen * 8.0 / (30.0 * packetCntr));
-    }
-    fprintf(averageFile, "\n");
-    fclose(averageFile);
-  }
-
-  fclose(inp);
-  fclose(outp);
-
-  WebRtcIsac_Free(ISAC_main_inst);
-
-  exit(0);
-}
diff --git a/modules/audio_coding/codecs/isac/main/util/utility.c b/modules/audio_coding/codecs/isac/main/util/utility.c
deleted file mode 100644
index 56547b1..0000000
--- a/modules/audio_coding/codecs/isac/main/util/utility.c
+++ /dev/null
@@ -1,179 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <math.h>
-
-#include "modules/audio_coding/codecs/isac/main/util/utility.h"
-
-/* function for reading audio data from PCM file */
-int
-readframe(
-    short* data,
-    FILE*  inp,
-    int    length)
-{
-    short k, rlen, status = 0;
-	unsigned char* ptrUChar;
-	ptrUChar = (unsigned char*)data;
-
-    rlen = (short)fread(data, sizeof(short), length, inp);
-    if (rlen < length) {
-        for (k = rlen; k < length; k++)
-            data[k] = 0;
-        status = 1;
-    }
-
-	// Assuming that our PCM files are written in Intel machines
-	for(k = 0; k < length; k++)
-	{
-		data[k] = (short)ptrUChar[k<<1] | ((((short)ptrUChar[(k<<1) + 1]) << 8) & 0xFF00);
-	}
-
-    return status;
-}
-
-short
-readSwitch(
-    int   argc,
-    char* argv[],
-    char* strID)
-{
-    short n;
-    for(n = 0; n < argc; n++)
-    {
-        if(strcmp(argv[n], strID) == 0)
-        {
-            return 1;
-        }
-    }
-    return 0;
-}
-
-double
-readParamDouble(
-    int    argc,
-    char*  argv[],
-    char*  strID,
-    double defaultVal)
-{
-    double returnVal = defaultVal;
-    short n;
-    for(n = 0; n < argc; n++)
-    {
-        if(strcmp(argv[n], strID) == 0)
-        {
-            n++;
-            if(n < argc)
-            {
-                returnVal = atof(argv[n]);
-            }
-            break;
-        }
-    }
-    return returnVal;
-}
-
-int
-readParamInt(
-    int   argc,
-    char* argv[],
-    char* strID,
-    int   defaultVal)
-{
-    int returnVal = defaultVal;
-    short n;
-    for(n = 0; n < argc; n++)
-    {
-        if(strcmp(argv[n], strID) == 0)
-        {
-            n++;
-            if(n < argc)
-            {
-                returnVal = atoi(argv[n]);
-            }
-            break;
-        }
-    }
-    return returnVal;
-}
-
-int
-readParamString(
-    int   argc,
-    char* argv[],
-    char* strID,
-    char* stringParam,
-    int   maxSize)
-{
-    int paramLenght = 0;
-    short n;
-    for(n = 0; n < argc; n++)
-    {
-        if(strcmp(argv[n], strID) == 0)
-        {
-            n++;
-            if(n < argc)
-            {
-                strncpy(stringParam, argv[n], maxSize);
-                paramLenght = (int)strlen(argv[n]);
-            }
-            break;
-        }
-    }
-    return paramLenght;
-}
-
-void
-get_arrival_time(
-    int              current_framesamples,   /* samples */
-    size_t           packet_size,            /* bytes */
-    int              bottleneck,             /* excluding headers; bits/s */
-    BottleNeckModel* BN_data,
-    short            senderSampFreqHz,
-    short            receiverSampFreqHz)
-{
-    unsigned int travelTimeMs;
-	const int headerSizeByte = 35;
-
-	int headerRate;
-
-    BN_data->whenPackGeneratedMs += (current_framesamples / (senderSampFreqHz / 1000));
-
-	headerRate = headerSizeByte * 8 * senderSampFreqHz / current_framesamples;     /* bits/s */
-
-	/* everything in samples */
-	BN_data->sample_count = BN_data->sample_count + current_framesamples;
-
-    //travelTimeMs = ((packet_size + HeaderSize) * 8 * sampFreqHz) /
-    //    (bottleneck + HeaderRate)
-    travelTimeMs = (unsigned int)floor((double)((packet_size + headerSizeByte) * 8 * 1000)
-        / (double)(bottleneck + headerRate) + 0.5);
-
-    if(BN_data->whenPrevPackLeftMs > BN_data->whenPackGeneratedMs)
-    {
-        BN_data->whenPrevPackLeftMs += travelTimeMs;
-    }
-    else
-    {
-        BN_data->whenPrevPackLeftMs = BN_data->whenPackGeneratedMs +
-            travelTimeMs;
-    }
-
-    BN_data->arrival_time = (BN_data->whenPrevPackLeftMs *
-        (receiverSampFreqHz / 1000));
-
-//	if (BN_data->arrival_time < BN_data->sample_count)
-//		BN_data->arrival_time = BN_data->sample_count;
-
-	BN_data->rtp_number++;
-}
diff --git a/modules/audio_coding/codecs/isac/main/util/utility.h b/modules/audio_coding/codecs/isac/main/util/utility.h
deleted file mode 100644
index 1acc542..0000000
--- a/modules/audio_coding/codecs/isac/main/util/utility.h
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_UTIL_UTILITY_H_
-#define MODULES_AUDIO_CODING_CODECS_ISAC_MAIN_UTIL_UTILITY_H_
-
-#include <stdio.h>
-#include <stdlib.h>
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-
-#define OPEN_FILE_WB(filePtr, fullPath)                     \
-  do {                                                      \
-    if (fullPath != NULL) {                                 \
-      filePtr = fopen(fullPath, "wb");                      \
-      if (filePtr == NULL) {                                \
-        printf("could not open %s to write to.", fullPath); \
-        return -1;                                          \
-      }                                                     \
-    } else {                                                \
-      filePtr = NULL;                                       \
-    }                                                       \
-  } while (0)
-
-#define OPEN_FILE_AB(filePtr, fullPath)                     \
-  do {                                                      \
-    if (fullPath != NULL) {                                 \
-      filePtr = fopen(fullPath, "ab");                      \
-      if (filePtr == NULL) {                                \
-        printf("could not open %s to write to.", fullPath); \
-        return -1;                                          \
-      }                                                     \
-    } else {                                                \
-      filePtr = NULL;                                       \
-    }                                                       \
-  } while (0)
-
-#define OPEN_FILE_RB(filePtr, fullPath)                      \
-  do {                                                       \
-    if (fullPath != NULL) {                                  \
-      filePtr = fopen(fullPath, "rb");                       \
-      if (filePtr == NULL) {                                 \
-        printf("could not open %s to read from.", fullPath); \
-        return -1;                                           \
-      }                                                      \
-    } else {                                                 \
-      filePtr = NULL;                                        \
-    }                                                        \
-  } while (0)
-
-#define WRITE_FILE_D(bufferPtr, len, filePtr)      \
-  do {                                             \
-    if (filePtr != NULL) {                         \
-      double dummy[1000];                          \
-      int cntr;                                    \
-      for (cntr = 0; cntr < (len); cntr++) {       \
-        dummy[cntr] = (double)bufferPtr[cntr];     \
-      }                                            \
-      fwrite(dummy, sizeof(double), len, filePtr); \
-      fflush(filePtr);                             \
-    }                                              \
-  } while (0)
-
-typedef struct {
-  unsigned int whenPackGeneratedMs;
-  unsigned int whenPrevPackLeftMs;
-  unsigned int sendTimeMs;   /* milisecond */
-  unsigned int arrival_time; /* samples */
-  unsigned int sample_count; /* samples, also used as "send time stamp" */
-  unsigned int rtp_number;
-} BottleNeckModel;
-
-void get_arrival_time(int current_framesamples, /* samples */
-                      size_t packet_size,       /* bytes */
-                      int bottleneck,           /* excluding headers; bits/s */
-                      BottleNeckModel* BN_data,
-                      short senderSampFreqHz,
-                      short receiverSampFreqHz);
-
-/* function for reading audio data from PCM file */
-int readframe(short* data, FILE* inp, int length);
-
-short readSwitch(int argc, char* argv[], char* strID);
-
-double readParamDouble(int argc, char* argv[], char* strID, double defaultVal);
-
-int readParamInt(int argc, char* argv[], char* strID, int defaultVal);
-
-int readParamString(int argc,
-                    char* argv[],
-                    char* strID,
-                    char* stringParam,
-                    int maxSize);
-
-#if defined(__cplusplus)
-}
-#endif
-
-#endif
diff --git a/modules/audio_coding/neteq/audio_decoder_unittest.cc b/modules/audio_coding/neteq/audio_decoder_unittest.cc
index bb5c6d1..fef3c3c 100644
--- a/modules/audio_coding/neteq/audio_decoder_unittest.cc
+++ b/modules/audio_coding/neteq/audio_decoder_unittest.cc
@@ -22,10 +22,6 @@
 #include "modules/audio_coding/codecs/g722/audio_encoder_g722.h"
 #include "modules/audio_coding/codecs/ilbc/audio_decoder_ilbc.h"
 #include "modules/audio_coding/codecs/ilbc/audio_encoder_ilbc.h"
-#include "modules/audio_coding/codecs/isac/fix/include/audio_decoder_isacfix.h"
-#include "modules/audio_coding/codecs/isac/fix/include/audio_encoder_isacfix.h"
-#include "modules/audio_coding/codecs/isac/main/include/audio_decoder_isac.h"
-#include "modules/audio_coding/codecs/isac/main/include/audio_encoder_isac.h"
 #include "modules/audio_coding/codecs/opus/audio_decoder_opus.h"
 #include "modules/audio_coding/codecs/pcm16b/audio_decoder_pcm16b.h"
 #include "modules/audio_coding/codecs/pcm16b/audio_encoder_pcm16b.h"
@@ -195,8 +191,8 @@
       processed_samples += frame_size_;
     }
     // For some codecs it doesn't make sense to check expected number of bytes,
-    // since the number can vary for different platforms. Opus and iSAC are
-    // such codecs. In this case expected_bytes is set to 0.
+    // since the number can vary for different platforms. Opus is such a codec.
+    // In this case expected_bytes is set to 0.
     if (expected_bytes) {
       EXPECT_EQ(expected_bytes, encoded_bytes);
     }
@@ -347,66 +343,6 @@
   }
 };
 
-class AudioDecoderIsacFloatTest : public AudioDecoderTest {
- protected:
-  AudioDecoderIsacFloatTest() : AudioDecoderTest() {
-    codec_input_rate_hz_ = 16000;
-    frame_size_ = 480;
-    data_length_ = 10 * frame_size_;
-    AudioEncoderIsacFloatImpl::Config config;
-    config.payload_type = payload_type_;
-    config.sample_rate_hz = codec_input_rate_hz_;
-    config.frame_size_ms =
-        1000 * static_cast<int>(frame_size_) / codec_input_rate_hz_;
-    audio_encoder_.reset(new AudioEncoderIsacFloatImpl(config));
-    audio_encoder_->OnReceivedOverhead(kOverheadBytesPerPacket);
-
-    AudioDecoderIsacFloatImpl::Config decoder_config;
-    decoder_config.sample_rate_hz = codec_input_rate_hz_;
-    decoder_ = new AudioDecoderIsacFloatImpl(decoder_config);
-  }
-};
-
-class AudioDecoderIsacSwbTest : public AudioDecoderTest {
- protected:
-  AudioDecoderIsacSwbTest() : AudioDecoderTest() {
-    codec_input_rate_hz_ = 32000;
-    frame_size_ = 960;
-    data_length_ = 10 * frame_size_;
-    AudioEncoderIsacFloatImpl::Config config;
-    config.payload_type = payload_type_;
-    config.sample_rate_hz = codec_input_rate_hz_;
-    config.frame_size_ms =
-        1000 * static_cast<int>(frame_size_) / codec_input_rate_hz_;
-    audio_encoder_.reset(new AudioEncoderIsacFloatImpl(config));
-    audio_encoder_->OnReceivedOverhead(kOverheadBytesPerPacket);
-
-    AudioDecoderIsacFloatImpl::Config decoder_config;
-    decoder_config.sample_rate_hz = codec_input_rate_hz_;
-    decoder_ = new AudioDecoderIsacFloatImpl(decoder_config);
-  }
-};
-
-class AudioDecoderIsacFixTest : public AudioDecoderTest {
- protected:
-  AudioDecoderIsacFixTest() : AudioDecoderTest() {
-    codec_input_rate_hz_ = 16000;
-    frame_size_ = 480;
-    data_length_ = 10 * frame_size_;
-    AudioEncoderIsacFixImpl::Config config;
-    config.payload_type = payload_type_;
-    config.sample_rate_hz = codec_input_rate_hz_;
-    config.frame_size_ms =
-        1000 * static_cast<int>(frame_size_) / codec_input_rate_hz_;
-    audio_encoder_.reset(new AudioEncoderIsacFixImpl(config));
-    audio_encoder_->OnReceivedOverhead(kOverheadBytesPerPacket);
-
-    AudioDecoderIsacFixImpl::Config decoder_config;
-    decoder_config.sample_rate_hz = codec_input_rate_hz_;
-    decoder_ = new AudioDecoderIsacFixImpl(decoder_config);
-  }
-};
-
 class AudioDecoderG722Test : public AudioDecoderTest {
  protected:
   AudioDecoderG722Test() : AudioDecoderTest() {
@@ -533,94 +469,6 @@
   TestSetAndGetTargetBitratesWithFixedCodec(audio_encoder_.get(), 13333);
 }
 
-TEST_F(AudioDecoderIsacFloatTest, EncodeDecode) {
-  int tolerance = 3399;
-  double mse = 434951.0;
-  int delay = 48;  // Delay from input to output.
-  EncodeDecodeTest(0, tolerance, mse, delay);
-  ReInitTest();
-  EXPECT_FALSE(decoder_->HasDecodePlc());
-}
-
-TEST_F(AudioDecoderIsacFloatTest, SetTargetBitrate) {
-  const int overhead_rate =
-      8 * kOverheadBytesPerPacket * codec_input_rate_hz_ / frame_size_;
-  EXPECT_EQ(10000,
-            SetAndGetTargetBitrate(audio_encoder_.get(), 9999 + overhead_rate));
-  EXPECT_EQ(10000, SetAndGetTargetBitrate(audio_encoder_.get(),
-                                          10000 + overhead_rate));
-  EXPECT_EQ(23456, SetAndGetTargetBitrate(audio_encoder_.get(),
-                                          23456 + overhead_rate));
-  EXPECT_EQ(32000, SetAndGetTargetBitrate(audio_encoder_.get(),
-                                          32000 + overhead_rate));
-  EXPECT_EQ(32000, SetAndGetTargetBitrate(audio_encoder_.get(),
-                                          32001 + overhead_rate));
-}
-
-TEST_F(AudioDecoderIsacSwbTest, EncodeDecode) {
-  int tolerance = 19757;
-  double mse = 8.18e6;
-  int delay = 160;  // Delay from input to output.
-  EncodeDecodeTest(0, tolerance, mse, delay);
-  ReInitTest();
-  EXPECT_FALSE(decoder_->HasDecodePlc());
-}
-
-TEST_F(AudioDecoderIsacSwbTest, SetTargetBitrate) {
-  const int overhead_rate =
-      8 * kOverheadBytesPerPacket * codec_input_rate_hz_ / frame_size_;
-  EXPECT_EQ(10000,
-            SetAndGetTargetBitrate(audio_encoder_.get(), 9999 + overhead_rate));
-  EXPECT_EQ(10000, SetAndGetTargetBitrate(audio_encoder_.get(),
-                                          10000 + overhead_rate));
-  EXPECT_EQ(23456, SetAndGetTargetBitrate(audio_encoder_.get(),
-                                          23456 + overhead_rate));
-  EXPECT_EQ(56000, SetAndGetTargetBitrate(audio_encoder_.get(),
-                                          56000 + overhead_rate));
-  EXPECT_EQ(56000, SetAndGetTargetBitrate(audio_encoder_.get(),
-                                          56001 + overhead_rate));
-}
-
-// Run bit exactness test only for release builds.
-#if defined(NDEBUG)
-TEST_F(AudioDecoderIsacFixTest, EncodeDecode) {
-  int tolerance = 11034;
-  double mse = 3.46e6;
-  int delay = 54;  // Delay from input to output.
-#if defined(WEBRTC_ANDROID) && defined(WEBRTC_ARCH_ARM)
-  static const int kEncodedBytes = 685;
-#elif defined(WEBRTC_MAC) && defined(WEBRTC_ARCH_ARM64)  // M1 Mac
-  static const int kEncodedBytes = 673;
-#elif defined(WEBRTC_ARCH_ARM64)
-  static const int kEncodedBytes = 673;
-#elif defined(WEBRTC_WIN) && defined(_MSC_VER) && !defined(__clang__)
-  static const int kEncodedBytes = 671;
-#elif defined(WEBRTC_IOS) && defined(WEBRTC_ARCH_X86_64)
-  static const int kEncodedBytes = 671;
-#else
-  static const int kEncodedBytes = 671;
-#endif
-  EncodeDecodeTest(kEncodedBytes, tolerance, mse, delay);
-  ReInitTest();
-  EXPECT_FALSE(decoder_->HasDecodePlc());
-}
-#endif
-
-TEST_F(AudioDecoderIsacFixTest, SetTargetBitrate) {
-  const int overhead_rate =
-      8 * kOverheadBytesPerPacket * codec_input_rate_hz_ / frame_size_;
-  EXPECT_EQ(10000,
-            SetAndGetTargetBitrate(audio_encoder_.get(), 9999 + overhead_rate));
-  EXPECT_EQ(10000, SetAndGetTargetBitrate(audio_encoder_.get(),
-                                          10000 + overhead_rate));
-  EXPECT_EQ(23456, SetAndGetTargetBitrate(audio_encoder_.get(),
-                                          23456 + overhead_rate));
-  EXPECT_EQ(32000, SetAndGetTargetBitrate(audio_encoder_.get(),
-                                          32000 + overhead_rate));
-  EXPECT_EQ(32000, SetAndGetTargetBitrate(audio_encoder_.get(),
-                                          32001 + overhead_rate));
-}
-
 TEST_F(AudioDecoderG722Test, EncodeDecode) {
   int tolerance = 6176;
   double mse = 238630.0;
diff --git a/modules/audio_coding/neteq/test/neteq_isac_quality_test.cc b/modules/audio_coding/neteq/test/neteq_isac_quality_test.cc
deleted file mode 100644
index 6a096c3..0000000
--- a/modules/audio_coding/neteq/test/neteq_isac_quality_test.cc
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- *  Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "absl/flags/flag.h"
-#include "modules/audio_coding/codecs/isac/fix/include/isacfix.h"
-#include "modules/audio_coding/neteq/tools/neteq_quality_test.h"
-
-ABSL_FLAG(int, bit_rate_kbps, 32, "Target bit rate (kbps).");
-
-using ::testing::InitGoogleTest;
-
-namespace webrtc {
-namespace test {
-namespace {
-static const int kIsacBlockDurationMs = 30;
-static const int kIsacInputSamplingKhz = 16;
-static const int kIsacOutputSamplingKhz = 16;
-}  // namespace
-
-class NetEqIsacQualityTest : public NetEqQualityTest {
- protected:
-  NetEqIsacQualityTest();
-  void SetUp() override;
-  void TearDown() override;
-  int EncodeBlock(int16_t* in_data,
-                  size_t block_size_samples,
-                  rtc::Buffer* payload,
-                  size_t max_bytes) override;
-
- private:
-  ISACFIX_MainStruct* isac_encoder_;
-  int bit_rate_kbps_;
-};
-
-NetEqIsacQualityTest::NetEqIsacQualityTest()
-    : NetEqQualityTest(kIsacBlockDurationMs,
-                       kIsacInputSamplingKhz,
-                       kIsacOutputSamplingKhz,
-                       SdpAudioFormat("isac", 16000, 1)),
-      isac_encoder_(NULL),
-      bit_rate_kbps_(absl::GetFlag(FLAGS_bit_rate_kbps)) {
-  // Flag validation
-  RTC_CHECK(absl::GetFlag(FLAGS_bit_rate_kbps) >= 10 &&
-            absl::GetFlag(FLAGS_bit_rate_kbps) <= 32)
-      << "Invalid bit rate, should be between 10 and 32 kbps.";
-}
-
-void NetEqIsacQualityTest::SetUp() {
-  ASSERT_EQ(1u, channels_) << "iSAC supports only mono audio.";
-  // Create encoder memory.
-  WebRtcIsacfix_Create(&isac_encoder_);
-  ASSERT_TRUE(isac_encoder_ != NULL);
-  EXPECT_EQ(0, WebRtcIsacfix_EncoderInit(isac_encoder_, 1));
-  // Set bitrate and block length.
-  EXPECT_EQ(0, WebRtcIsacfix_Control(isac_encoder_, bit_rate_kbps_ * 1000,
-                                     kIsacBlockDurationMs));
-  NetEqQualityTest::SetUp();
-}
-
-void NetEqIsacQualityTest::TearDown() {
-  // Free memory.
-  EXPECT_EQ(0, WebRtcIsacfix_Free(isac_encoder_));
-  NetEqQualityTest::TearDown();
-}
-
-int NetEqIsacQualityTest::EncodeBlock(int16_t* in_data,
-                                      size_t block_size_samples,
-                                      rtc::Buffer* payload,
-                                      size_t max_bytes) {
-  // ISAC takes 10 ms for every call.
-  const int subblocks = kIsacBlockDurationMs / 10;
-  const int subblock_length = 10 * kIsacInputSamplingKhz;
-  int value = 0;
-
-  int pointer = 0;
-  for (int idx = 0; idx < subblocks; idx++, pointer += subblock_length) {
-    // The Isac encoder does not perform encoding (and returns 0) until it
-    // receives a sequence of sub-blocks that amount to the frame duration.
-    EXPECT_EQ(0, value);
-    payload->AppendData(max_bytes, [&](rtc::ArrayView<uint8_t> payload) {
-      value = WebRtcIsacfix_Encode(isac_encoder_, &in_data[pointer],
-                                   payload.data());
-      return (value >= 0) ? static_cast<size_t>(value) : 0;
-    });
-  }
-  EXPECT_GT(value, 0);
-  return value;
-}
-
-TEST_F(NetEqIsacQualityTest, Test) {
-  Simulate();
-}
-
-}  // namespace test
-}  // namespace webrtc
diff --git a/modules/audio_coding/neteq/tools/rtp_encode.cc b/modules/audio_coding/neteq/tools/rtp_encode.cc
index 6aeeb6d..8adca92 100644
--- a/modules/audio_coding/neteq/tools/rtp_encode.cc
+++ b/modules/audio_coding/neteq/tools/rtp_encode.cc
@@ -30,7 +30,6 @@
 #include "api/audio_codecs/g711/audio_encoder_g711.h"
 #include "api/audio_codecs/g722/audio_encoder_g722.h"
 #include "api/audio_codecs/ilbc/audio_encoder_ilbc.h"
-#include "api/audio_codecs/isac/audio_encoder_isac.h"
 #include "api/audio_codecs/opus/audio_encoder_opus.h"
 #include "modules/audio_coding/codecs/cng/audio_encoder_cng.h"
 #include "modules/audio_coding/include/audio_coding_module.h"
@@ -71,7 +70,6 @@
   kPcm16b32,
   kPcm16b48,
   kIlbc,
-  kIsac
 };
 
 struct CodecTypeAndInfo {
@@ -94,8 +92,7 @@
           {"pcm16b_16", {CodecType::kPcm16b16, 94, false}},
           {"pcm16b_32", {CodecType::kPcm16b32, 95, false}},
           {"pcm16b_48", {CodecType::kPcm16b48, 96, false}},
-          {"ilbc", {CodecType::kIlbc, 102, false}},
-          {"isac", {CodecType::kIsac, 103, false}}};
+          {"ilbc", {CodecType::kIlbc, 102, false}}};
   return *codec_list;
 }
 
@@ -236,11 +233,6 @@
       return AudioEncoderIlbc::MakeAudioEncoder(
           GetCodecConfig<AudioEncoderIlbc>(), payload_type);
     }
-
-    case CodecType::kIsac: {
-      return AudioEncoderIsac::MakeAudioEncoder(
-          GetCodecConfig<AudioEncoderIsac>(), payload_type);
-    }
   }
   RTC_DCHECK_NOTREACHED();
   return nullptr;
diff --git a/modules/audio_coding/test/EncodeDecodeTest.cc b/modules/audio_coding/test/EncodeDecodeTest.cc
index 8d4bcce..9f9c4aa 100644
--- a/modules/audio_coding/test/EncodeDecodeTest.cc
+++ b/modules/audio_coding/test/EncodeDecodeTest.cc
@@ -110,9 +110,7 @@
   EXPECT_EQ(0, acm->InitializeReceiver());
 
   if (channels == 1) {
-    acm->SetReceiveCodecs({{103, {"ISAC", 16000, 1}},
-                           {104, {"ISAC", 32000, 1}},
-                           {107, {"L16", 8000, 1}},
+    acm->SetReceiveCodecs({{107, {"L16", 8000, 1}},
                            {108, {"L16", 16000, 1}},
                            {109, {"L16", 32000, 1}},
                            {0, {"PCMU", 8000, 1}},
@@ -232,7 +230,6 @@
 
 void EncodeDecodeTest::Perform() {
   const std::map<int, SdpAudioFormat> send_codecs = {
-      {103, {"ISAC", 16000, 1}}, {104, {"ISAC", 32000, 1}},
       {107, {"L16", 8000, 1}},   {108, {"L16", 16000, 1}},
       {109, {"L16", 32000, 1}},  {0, {"PCMU", 8000, 1}},
       {8, {"PCMA", 8000, 1}},
diff --git a/modules/audio_coding/test/TestAllCodecs.cc b/modules/audio_coding/test/TestAllCodecs.cc
index e93df34..b44037d 100644
--- a/modules/audio_coding/test/TestAllCodecs.cc
+++ b/modules/audio_coding/test/TestAllCodecs.cc
@@ -130,9 +130,7 @@
   acm_a_->InitializeReceiver();
   acm_b_->InitializeReceiver();
 
-  acm_b_->SetReceiveCodecs({{103, {"ISAC", 16000, 1}},
-                            {104, {"ISAC", 32000, 1}},
-                            {107, {"L16", 8000, 1}},
+  acm_b_->SetReceiveCodecs({{107, {"L16", 8000, 1}},
                             {108, {"L16", 16000, 1}},
                             {109, {"L16", 32000, 1}},
                             {111, {"L16", 8000, 2}},
@@ -187,33 +185,6 @@
   Run(channel_a_to_b_);
   outfile_b_.Close();
 #endif
-#if (defined(WEBRTC_CODEC_ISAC) || defined(WEBRTC_CODEC_ISACFX))
-  test_count_++;
-  OpenOutFile(test_count_);
-  char codec_isac[] = "ISAC";
-  RegisterSendCodec('A', codec_isac, 16000, -1, 480, kVariableSize);
-  Run(channel_a_to_b_);
-  RegisterSendCodec('A', codec_isac, 16000, -1, 960, kVariableSize);
-  Run(channel_a_to_b_);
-  RegisterSendCodec('A', codec_isac, 16000, 15000, 480, kVariableSize);
-  Run(channel_a_to_b_);
-  RegisterSendCodec('A', codec_isac, 16000, 32000, 960, kVariableSize);
-  Run(channel_a_to_b_);
-  outfile_b_.Close();
-#endif
-#ifdef WEBRTC_CODEC_ISAC
-  test_count_++;
-  OpenOutFile(test_count_);
-  RegisterSendCodec('A', codec_isac, 32000, -1, 960, kVariableSize);
-  Run(channel_a_to_b_);
-  RegisterSendCodec('A', codec_isac, 32000, 56000, 960, kVariableSize);
-  Run(channel_a_to_b_);
-  RegisterSendCodec('A', codec_isac, 32000, 37000, 960, kVariableSize);
-  Run(channel_a_to_b_);
-  RegisterSendCodec('A', codec_isac, 32000, 32000, 960, kVariableSize);
-  Run(channel_a_to_b_);
-  outfile_b_.Close();
-#endif
   test_count_++;
   OpenOutFile(test_count_);
   char codec_l16[] = "L16";
@@ -319,15 +290,11 @@
   // Store packet-size in samples, used to validate the received packet.
   // If G.722, store half the size to compensate for the timestamp bug in the
   // RFC for G.722.
-  // If iSAC runs in adaptive mode, packet size in samples can change on the
-  // fly, so we exclude this test by setting `packet_size_samples_` to -1.
   int clockrate_hz = sampling_freq_hz;
   size_t num_channels = 1;
   if (absl::EqualsIgnoreCase(codec_name, "G722")) {
     packet_size_samples_ = packet_size / 2;
     clockrate_hz = sampling_freq_hz / 2;
-  } else if (absl::EqualsIgnoreCase(codec_name, "ISAC") && (rate == -1)) {
-    packet_size_samples_ = -1;
   } else if (absl::EqualsIgnoreCase(codec_name, "OPUS")) {
     packet_size_samples_ = packet_size;
     num_channels = 2;
diff --git a/modules/audio_coding/test/TestRedFec.cc b/modules/audio_coding/test/TestRedFec.cc
index 892fbc8..fff48b2 100644
--- a/modules/audio_coding/test/TestRedFec.cc
+++ b/modules/audio_coding/test/TestRedFec.cc
@@ -22,8 +22,6 @@
 #include "api/audio_codecs/g711/audio_encoder_g711.h"
 #include "api/audio_codecs/g722/audio_decoder_g722.h"
 #include "api/audio_codecs/g722/audio_encoder_g722.h"
-#include "api/audio_codecs/isac/audio_decoder_isac_float.h"
-#include "api/audio_codecs/isac/audio_encoder_isac_float.h"
 #include "api/audio_codecs/opus/audio_decoder_opus.h"
 #include "api/audio_codecs/opus/audio_encoder_opus.h"
 #include "modules/audio_coding/codecs/cng/audio_encoder_cng.h"
@@ -38,12 +36,10 @@
 TestRedFec::TestRedFec()
     : encoder_factory_(CreateAudioEncoderFactory<AudioEncoderG711,
                                                  AudioEncoderG722,
-                                                 AudioEncoderIsacFloat,
                                                  AudioEncoderL16,
                                                  AudioEncoderOpus>()),
       decoder_factory_(CreateAudioDecoderFactory<AudioDecoderG711,
                                                  AudioDecoderG722,
-                                                 AudioDecoderIsacFloat,
                                                  AudioDecoderL16,
                                                  AudioDecoderOpus>()),
       _acmA(AudioCodingModule::Create(
@@ -95,19 +91,6 @@
   Run();
   _outFileB.Close();
 
-  RegisterSendCodec(_acmA, {"ISAC", 16000, 1}, Vad::kVadVeryAggressive, false);
-  OpenOutFile(_testCntr);
-  Run();
-  _outFileB.Close();
-
-  // Switch to a 32 kHz codec; RED should be switched off.
-  RegisterSendCodec(_acmA, {"ISAC", 32000, 1}, Vad::kVadVeryAggressive, false);
-  OpenOutFile(_testCntr);
-  Run();
-  _outFileB.Close();
-
-  RegisterSendCodec(_acmA, {"ISAC", 32000, 1}, absl::nullopt, false);
-
   _channelA2B->SetFECTestWithPacketLoss(true);
   // Following tests are under packet losses.
 
@@ -118,22 +101,6 @@
   Run();
   _outFileB.Close();
 
-  // Switch to a 16 kHz codec, RED should have been switched off.
-  RegisterSendCodec(_acmA, {"ISAC", 16000, 1}, Vad::kVadVeryAggressive, false);
-
-  OpenOutFile(_testCntr);
-  Run();
-  _outFileB.Close();
-
-  // Switch to a 32 kHz codec, RED should have been switched off.
-  RegisterSendCodec(_acmA, {"ISAC", 32000, 1}, Vad::kVadVeryAggressive, false);
-
-  OpenOutFile(_testCntr);
-  Run();
-  _outFileB.Close();
-
-  RegisterSendCodec(_acmA, {"ISAC", 32000, 1}, absl::nullopt, false);
-
   RegisterSendCodec(_acmA, {"opus", 48000, 2}, absl::nullopt, false);
 
   // _channelA2B imposes 25% packet loss rate.
diff --git a/modules/audio_coding/test/TestVADDTX.cc b/modules/audio_coding/test/TestVADDTX.cc
index cb05deb..19367d9 100644
--- a/modules/audio_coding/test/TestVADDTX.cc
+++ b/modules/audio_coding/test/TestVADDTX.cc
@@ -18,8 +18,6 @@
 #include "api/audio_codecs/audio_encoder_factory_template.h"
 #include "api/audio_codecs/ilbc/audio_decoder_ilbc.h"
 #include "api/audio_codecs/ilbc/audio_encoder_ilbc.h"
-#include "api/audio_codecs/isac/audio_decoder_isac_float.h"
-#include "api/audio_codecs/isac/audio_encoder_isac_float.h"
 #include "api/audio_codecs/opus/audio_decoder_opus.h"
 #include "api/audio_codecs/opus/audio_encoder_opus.h"
 #include "modules/audio_coding/codecs/cng/audio_encoder_cng.h"
@@ -68,12 +66,10 @@
 }
 
 TestVadDtx::TestVadDtx()
-    : encoder_factory_(CreateAudioEncoderFactory<AudioEncoderIlbc,
-                                                 AudioEncoderIsacFloat,
-                                                 AudioEncoderOpus>()),
-      decoder_factory_(CreateAudioDecoderFactory<AudioDecoderIlbc,
-                                                 AudioDecoderIsacFloat,
-                                                 AudioDecoderOpus>()),
+    : encoder_factory_(
+          CreateAudioEncoderFactory<AudioEncoderIlbc, AudioEncoderOpus>()),
+      decoder_factory_(
+          CreateAudioDecoderFactory<AudioDecoderIlbc, AudioDecoderOpus>()),
       acm_send_(AudioCodingModule::Create(
           AudioCodingModule::Config(decoder_factory_))),
       acm_receive_(AudioCodingModule::Create(
@@ -182,8 +178,6 @@
 TestWebRtcVadDtx::TestWebRtcVadDtx() : output_file_num_(0) {}
 
 void TestWebRtcVadDtx::Perform() {
-  RunTestCases({"ISAC", 16000, 1});
-  RunTestCases({"ISAC", 32000, 1});
   RunTestCases({"ILBC", 8000, 1});
   RunTestCases({"opus", 48000, 2});
 }
diff --git a/modules/audio_coding/test/Tester.cc b/modules/audio_coding/test/Tester.cc
index 113dbe0..7612aa4 100644
--- a/modules/audio_coding/test/Tester.cc
+++ b/modules/audio_coding/test/Tester.cc
@@ -21,7 +21,6 @@
 #include "modules/audio_coding/test/TestStereo.h"
 #include "modules/audio_coding/test/TestVADDTX.h"
 #include "modules/audio_coding/test/TwoWayCommunication.h"
-#include "modules/audio_coding/test/iSACTest.h"
 #include "modules/audio_coding/test/opus_test.h"
 #include "test/gtest.h"
 #include "test/testsupport/file_utils.h"
@@ -42,25 +41,6 @@
   webrtc::TestRedFec().Perform();
 }
 
-#if defined(WEBRTC_ANDROID)
-TEST(AudioCodingModuleTest, DISABLED_TestIsac) {
-#else
-TEST(AudioCodingModuleTest, TestIsac) {
-#endif
-  webrtc::ISACTest().Perform();
-}
-
-#if (defined(WEBRTC_CODEC_ISAC) || defined(WEBRTC_CODEC_ISACFX)) && \
-    defined(WEBRTC_CODEC_ILBC)
-#if defined(WEBRTC_ANDROID)
-TEST(AudioCodingModuleTest, DISABLED_TwoWayCommunication) {
-#else
-TEST(AudioCodingModuleTest, TwoWayCommunication) {
-#endif
-  webrtc::TwoWayCommunication().Perform();
-}
-#endif
-
 // Disabled on ios as flaky, see https://crbug.com/webrtc/7057
 #if defined(WEBRTC_ANDROID) || defined(WEBRTC_IOS)
 TEST(AudioCodingModuleTest, DISABLED_TestStereo) {
diff --git a/modules/audio_coding/test/iSACTest.cc b/modules/audio_coding/test/iSACTest.cc
deleted file mode 100644
index 246c485..0000000
--- a/modules/audio_coding/test/iSACTest.cc
+++ /dev/null
@@ -1,273 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "modules/audio_coding/test/iSACTest.h"
-
-#include <stdio.h>
-#include <string.h>
-
-#include "absl/strings/match.h"
-#include "api/audio_codecs/builtin_audio_decoder_factory.h"
-#include "api/audio_codecs/isac/audio_encoder_isac_float.h"
-#include "rtc_base/strings/string_builder.h"
-#include "rtc_base/time_utils.h"
-#include "test/gmock.h"
-#include "test/gtest.h"
-#include "test/testsupport/file_utils.h"
-
-namespace webrtc {
-
-using ::testing::AnyOf;
-using ::testing::Eq;
-using ::testing::StrCaseEq;
-
-namespace {
-
-constexpr int kISAC16kPayloadType = 103;
-constexpr int kISAC32kPayloadType = 104;
-const SdpAudioFormat kISAC16kFormat = {"ISAC", 16000, 1};
-const SdpAudioFormat kISAC32kFormat = {"ISAC", 32000, 1};
-
-AudioEncoderIsacFloat::Config TweakConfig(
-    AudioEncoderIsacFloat::Config config,
-    const ACMTestISACConfig& test_config) {
-  if (test_config.currentRateBitPerSec > 0) {
-    config.bit_rate = test_config.currentRateBitPerSec;
-  }
-  if (test_config.currentFrameSizeMsec != 0) {
-    config.frame_size_ms = test_config.currentFrameSizeMsec;
-  }
-  EXPECT_THAT(config.IsOk(), Eq(true));
-  return config;
-}
-
-void SetISACConfigDefault(ACMTestISACConfig& isacConfig) {
-  isacConfig.currentRateBitPerSec = 0;
-  isacConfig.currentFrameSizeMsec = 0;
-  isacConfig.encodingMode = -1;
-  isacConfig.initRateBitPerSec = 0;
-  isacConfig.initFrameSizeInMsec = 0;
-  isacConfig.enforceFrameSize = false;
-}
-
-}  // namespace
-
-ISACTest::ISACTest()
-    : _acmA(AudioCodingModule::Create(
-          AudioCodingModule::Config(CreateBuiltinAudioDecoderFactory()))),
-      _acmB(AudioCodingModule::Create(
-          AudioCodingModule::Config(CreateBuiltinAudioDecoderFactory()))) {}
-
-ISACTest::~ISACTest() {}
-
-void ISACTest::Setup() {
-  // Register both iSAC-wb & iSAC-swb in both sides as receiver codecs.
-  std::map<int, SdpAudioFormat> receive_codecs = {
-      {kISAC16kPayloadType, kISAC16kFormat},
-      {kISAC32kPayloadType, kISAC32kFormat}};
-  _acmA->SetReceiveCodecs(receive_codecs);
-  _acmB->SetReceiveCodecs(receive_codecs);
-
-  //--- Set A-to-B channel
-  _channel_A2B.reset(new Channel);
-  EXPECT_EQ(0, _acmA->RegisterTransportCallback(_channel_A2B.get()));
-  _channel_A2B->RegisterReceiverACM(_acmB.get());
-
-  //--- Set B-to-A channel
-  _channel_B2A.reset(new Channel);
-  EXPECT_EQ(0, _acmB->RegisterTransportCallback(_channel_B2A.get()));
-  _channel_B2A->RegisterReceiverACM(_acmA.get());
-
-  file_name_swb_ =
-      webrtc::test::ResourcePath("audio_coding/testfile32kHz", "pcm");
-
-  _acmB->SetEncoder(AudioEncoderIsacFloat::MakeAudioEncoder(
-      *AudioEncoderIsacFloat::SdpToConfig(kISAC16kFormat),
-      kISAC16kPayloadType));
-  _acmA->SetEncoder(AudioEncoderIsacFloat::MakeAudioEncoder(
-      *AudioEncoderIsacFloat::SdpToConfig(kISAC32kFormat),
-      kISAC32kPayloadType));
-
-  _inFileA.Open(file_name_swb_, 32000, "rb");
-  // Set test length to 500 ms (50 blocks of 10 ms each).
-  _inFileA.SetNum10MsBlocksToRead(50);
-  // Fast-forward 1 second (100 blocks) since the files start with silence.
-  _inFileA.FastForward(100);
-  std::string fileNameA = webrtc::test::OutputPath() + "testisac_a.pcm";
-  std::string fileNameB = webrtc::test::OutputPath() + "testisac_b.pcm";
-  _outFileA.Open(fileNameA, 32000, "wb");
-  _outFileB.Open(fileNameB, 32000, "wb");
-
-  while (!_inFileA.EndOfFile()) {
-    Run10ms();
-  }
-
-  _inFileA.Close();
-  _outFileA.Close();
-  _outFileB.Close();
-}
-
-void ISACTest::Perform() {
-  Setup();
-
-  int16_t testNr = 0;
-  ACMTestISACConfig wbISACConfig;
-  ACMTestISACConfig swbISACConfig;
-
-  SetISACConfigDefault(wbISACConfig);
-  SetISACConfigDefault(swbISACConfig);
-
-  wbISACConfig.currentRateBitPerSec = -1;
-  swbISACConfig.currentRateBitPerSec = -1;
-  testNr++;
-  EncodeDecode(testNr, wbISACConfig, swbISACConfig);
-
-  SetISACConfigDefault(wbISACConfig);
-  SetISACConfigDefault(swbISACConfig);
-  testNr++;
-  EncodeDecode(testNr, wbISACConfig, swbISACConfig);
-
-  testNr++;
-  SwitchingSamplingRate(testNr, 4);
-}
-
-void ISACTest::Run10ms() {
-  AudioFrame audioFrame;
-  EXPECT_GT(_inFileA.Read10MsData(audioFrame), 0);
-  EXPECT_GE(_acmA->Add10MsData(audioFrame), 0);
-  EXPECT_GE(_acmB->Add10MsData(audioFrame), 0);
-  bool muted;
-  EXPECT_EQ(0, _acmA->PlayoutData10Ms(32000, &audioFrame, &muted));
-  ASSERT_FALSE(muted);
-  _outFileA.Write10MsData(audioFrame);
-  EXPECT_EQ(0, _acmB->PlayoutData10Ms(32000, &audioFrame, &muted));
-  ASSERT_FALSE(muted);
-  _outFileB.Write10MsData(audioFrame);
-}
-
-void ISACTest::EncodeDecode(int testNr,
-                            ACMTestISACConfig& wbISACConfig,
-                            ACMTestISACConfig& swbISACConfig) {
-  // Files in Side A and B
-  _inFileA.Open(file_name_swb_, 32000, "rb", true);
-  _inFileB.Open(file_name_swb_, 32000, "rb", true);
-
-  std::string file_name_out;
-  rtc::StringBuilder file_stream_a;
-  rtc::StringBuilder file_stream_b;
-  file_stream_a << webrtc::test::OutputPath();
-  file_stream_b << webrtc::test::OutputPath();
-  file_stream_a << "out_iSACTest_A_" << testNr << ".pcm";
-  file_stream_b << "out_iSACTest_B_" << testNr << ".pcm";
-  file_name_out = file_stream_a.str();
-  _outFileA.Open(file_name_out, 32000, "wb");
-  file_name_out = file_stream_b.str();
-  _outFileB.Open(file_name_out, 32000, "wb");
-
-  // Side A is sending super-wideband, and side B is sending wideband.
-  _acmA->SetEncoder(AudioEncoderIsacFloat::MakeAudioEncoder(
-      TweakConfig(*AudioEncoderIsacFloat::SdpToConfig(kISAC32kFormat),
-                  swbISACConfig),
-      kISAC32kPayloadType));
-  _acmB->SetEncoder(AudioEncoderIsacFloat::MakeAudioEncoder(
-      TweakConfig(*AudioEncoderIsacFloat::SdpToConfig(kISAC16kFormat),
-                  wbISACConfig),
-      kISAC16kPayloadType));
-
-  _channel_A2B->ResetStats();
-  _channel_B2A->ResetStats();
-
-  while (!(_inFileA.EndOfFile() || _inFileA.Rewinded())) {
-    Run10ms();
-  }
-
-  _channel_A2B->ResetStats();
-  _channel_B2A->ResetStats();
-
-  _outFileA.Close();
-  _outFileB.Close();
-  _inFileA.Close();
-  _inFileB.Close();
-}
-
-void ISACTest::SwitchingSamplingRate(int testNr, int maxSampRateChange) {
-  // Files in Side A
-  _inFileA.Open(file_name_swb_, 32000, "rb");
-  _inFileB.Open(file_name_swb_, 32000, "rb");
-
-  std::string file_name_out;
-  rtc::StringBuilder file_stream_a;
-  rtc::StringBuilder file_stream_b;
-  file_stream_a << webrtc::test::OutputPath();
-  file_stream_b << webrtc::test::OutputPath();
-  file_stream_a << "out_iSACTest_A_" << testNr << ".pcm";
-  file_stream_b << "out_iSACTest_B_" << testNr << ".pcm";
-  file_name_out = file_stream_a.str();
-  _outFileA.Open(file_name_out, 32000, "wb");
-  file_name_out = file_stream_b.str();
-  _outFileB.Open(file_name_out, 32000, "wb");
-
-  // Start with side A sending super-wideband and side B seding wideband.
-  // Toggle sending wideband/super-wideband in this test.
-  _acmA->SetEncoder(AudioEncoderIsacFloat::MakeAudioEncoder(
-      *AudioEncoderIsacFloat::SdpToConfig(kISAC32kFormat),
-      kISAC32kPayloadType));
-  _acmB->SetEncoder(AudioEncoderIsacFloat::MakeAudioEncoder(
-      *AudioEncoderIsacFloat::SdpToConfig(kISAC16kFormat),
-      kISAC16kPayloadType));
-
-  int numSendCodecChanged = 0;
-  while (numSendCodecChanged < (maxSampRateChange << 1)) {
-    Run10ms();
-    if (_inFileA.EndOfFile()) {
-      if (_inFileA.SamplingFrequency() == 16000) {
-        // Switch side A to send super-wideband.
-        _inFileA.Close();
-        _inFileA.Open(file_name_swb_, 32000, "rb");
-        _acmA->SetEncoder(AudioEncoderIsacFloat::MakeAudioEncoder(
-            *AudioEncoderIsacFloat::SdpToConfig(kISAC32kFormat),
-            kISAC32kPayloadType));
-      } else {
-        // Switch side A to send wideband.
-        _inFileA.Close();
-        _inFileA.Open(file_name_swb_, 32000, "rb");
-        _acmA->SetEncoder(AudioEncoderIsacFloat::MakeAudioEncoder(
-            *AudioEncoderIsacFloat::SdpToConfig(kISAC16kFormat),
-            kISAC16kPayloadType));
-      }
-      numSendCodecChanged++;
-    }
-
-    if (_inFileB.EndOfFile()) {
-      if (_inFileB.SamplingFrequency() == 16000) {
-        // Switch side B to send super-wideband.
-        _inFileB.Close();
-        _inFileB.Open(file_name_swb_, 32000, "rb");
-        _acmB->SetEncoder(AudioEncoderIsacFloat::MakeAudioEncoder(
-            *AudioEncoderIsacFloat::SdpToConfig(kISAC32kFormat),
-            kISAC32kPayloadType));
-      } else {
-        // Switch side B to send wideband.
-        _inFileB.Close();
-        _inFileB.Open(file_name_swb_, 32000, "rb");
-        _acmB->SetEncoder(AudioEncoderIsacFloat::MakeAudioEncoder(
-            *AudioEncoderIsacFloat::SdpToConfig(kISAC16kFormat),
-            kISAC16kPayloadType));
-      }
-      numSendCodecChanged++;
-    }
-  }
-  _outFileA.Close();
-  _outFileB.Close();
-  _inFileA.Close();
-  _inFileB.Close();
-}
-
-}  // namespace webrtc
diff --git a/modules/audio_coding/test/iSACTest.h b/modules/audio_coding/test/iSACTest.h
deleted file mode 100644
index f6efeea..0000000
--- a/modules/audio_coding/test/iSACTest.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef MODULES_AUDIO_CODING_TEST_ISACTEST_H_
-#define MODULES_AUDIO_CODING_TEST_ISACTEST_H_
-
-#include <string.h>
-
-#include <memory>
-
-#include "modules/audio_coding/include/audio_coding_module.h"
-#include "modules/audio_coding/test/Channel.h"
-#include "modules/audio_coding/test/PCMFile.h"
-
-namespace webrtc {
-
-struct ACMTestISACConfig {
-  int32_t currentRateBitPerSec;
-  int16_t currentFrameSizeMsec;
-  int16_t encodingMode;
-  uint32_t initRateBitPerSec;
-  int16_t initFrameSizeInMsec;
-  bool enforceFrameSize;
-};
-
-class ISACTest {
- public:
-  ISACTest();
-  ~ISACTest();
-
-  void Perform();
-
- private:
-  void Setup();
-
-  void Run10ms();
-
-  void EncodeDecode(int testNr,
-                    ACMTestISACConfig& wbISACConfig,
-                    ACMTestISACConfig& swbISACConfig);
-
-  void SwitchingSamplingRate(int testNr, int maxSampRateChange);
-
-  std::unique_ptr<AudioCodingModule> _acmA;
-  std::unique_ptr<AudioCodingModule> _acmB;
-
-  std::unique_ptr<Channel> _channel_A2B;
-  std::unique_ptr<Channel> _channel_B2A;
-
-  PCMFile _inFileA;
-  PCMFile _inFileB;
-
-  PCMFile _outFileA;
-  PCMFile _outFileB;
-
-  std::string file_name_swb_;
-};
-
-}  // namespace webrtc
-
-#endif  // MODULES_AUDIO_CODING_TEST_ISACTEST_H_