From c525262af62e397f18021722d3312911d1b134b1 Mon Sep 17 00:00:00 2001
From: lyblsgo <lyblsgo@163.com>
Date: 星期一, 27 三月 2023 17:17:47 +0800
Subject: [PATCH] rm webrtc

---
 /dev/null                                     |  149 -------------------------------------------------
 funasr/runtime/grpc/CMakeLists.txt            |    3 
 funasr/runtime/onnxruntime/src/CMakeLists.txt |    4 
 funasr/runtime/onnxruntime/src/Audio.cpp      |    3 
 funasr/runtime/onnxruntime/CMakeLists.txt     |    1 
 5 files changed, 5 insertions(+), 155 deletions(-)

diff --git a/funasr/runtime/grpc/CMakeLists.txt b/funasr/runtime/grpc/CMakeLists.txt
index 56e3074..1d5d9a9 100644
--- a/funasr/runtime/grpc/CMakeLists.txt
+++ b/funasr/runtime/grpc/CMakeLists.txt
@@ -48,7 +48,7 @@
 
 include_directories(../onnxruntime/include/)
 link_directories(../onnxruntime/build/src/)
-link_directories(../onnxruntime/build/third_party/webrtc/)
+link_directories(../onnxruntime/build/third_party/yaml-cpp/)
 
 link_directories(${ONNXRUNTIME_DIR}/lib)
 add_subdirectory("../onnxruntime/src" onnx_src)
@@ -75,7 +75,6 @@
   target_link_libraries(${_target}
     rg_grpc_proto
     rapidasr
-    webrtcvad
     ${EXTRA_LIBS}
     ${_REFLECTION}
     ${_GRPC_GRPCPP}
diff --git a/funasr/runtime/onnxruntime/CMakeLists.txt b/funasr/runtime/onnxruntime/CMakeLists.txt
index 11c1d35..4ffe0f3 100644
--- a/funasr/runtime/onnxruntime/CMakeLists.txt
+++ b/funasr/runtime/onnxruntime/CMakeLists.txt
@@ -22,7 +22,6 @@
 
 endif()
 
-add_subdirectory("./third_party/webrtc")
 add_subdirectory("./third_party/yaml-cpp")
 add_subdirectory(src)
 add_subdirectory(tester)
diff --git a/funasr/runtime/onnxruntime/include/webrtc_vad.h b/funasr/runtime/onnxruntime/include/webrtc_vad.h
deleted file mode 100644
index f5bbadf..0000000
--- a/funasr/runtime/onnxruntime/include/webrtc_vad.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.
- */
-
-/*
- * This header file includes the VAD API calls. Specific function calls are
- * given below.
- */
-
-#ifndef COMMON_AUDIO_VAD_INCLUDE_WEBRTC_VAD_H_  // NOLINT
-#define COMMON_AUDIO_VAD_INCLUDE_WEBRTC_VAD_H_
-
-#include <stddef.h>
-#include <stdint.h>
-
-typedef struct WebRtcVadInst VadInst;
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-// Creates an instance to the VAD structure.
-VadInst* WebRtcVad_Create(void);
-
-// Frees the dynamic memory of a specified VAD instance.
-//
-// - handle [i] : Pointer to VAD instance that should be freed.
-void WebRtcVad_Free(VadInst* handle);
-
-// Initializes a VAD instance.
-//
-// - handle [i/o] : Instance that should be initialized.
-//
-// returns        : 0 - (OK),
-//                 -1 - (null pointer or Default mode could not be set).
-int WebRtcVad_Init(VadInst* handle);
-
-// Sets the VAD operating mode. A more aggressive (higher mode) VAD is more
-// restrictive in reporting speech. Put in other words the probability of being
-// speech when the VAD returns 1 is increased with increasing mode. As a
-// consequence also the missed detection rate goes up.
-//
-// - handle [i/o] : VAD instance.
-// - mode   [i]   : Aggressiveness mode (0, 1, 2, or 3).
-//
-// returns        : 0 - (OK),
-//                 -1 - (null pointer, mode could not be set or the VAD instance
-//                       has not been initialized).
-int WebRtcVad_set_mode(VadInst* handle, int mode);
-
-// Calculates a VAD decision for the |audio_frame|. For valid sampling rates
-// frame lengths, see the description of WebRtcVad_ValidRatesAndFrameLengths().
-//
-// - handle       [i/o] : VAD Instance. Needs to be initialized by
-//                        WebRtcVad_Init() before call.
-// - fs           [i]   : Sampling frequency (Hz): 8000, 16000, or 32000
-// - audio_frame  [i]   : Audio frame buffer.
-// - frame_length [i]   : Length of audio frame buffer in number of samples.
-//
-// returns              : 1 - (Active Voice),
-//                        0 - (Non-active Voice),
-//                       -1 - (Error)
-int WebRtcVad_Process(VadInst* handle,
-                      int fs,
-                      const int16_t* audio_frame,
-                      size_t frame_length);
-
-// Checks for valid combinations of |rate| and |frame_length|. We support 10,
-// 20 and 30 ms frames and the rates 8000, 16000 and 32000 Hz.
-//
-// - rate         [i] : Sampling frequency (Hz).
-// - frame_length [i] : Speech frame buffer length in number of samples.
-//
-// returns            : 0 - (valid combination), -1 - (invalid combination)
-int WebRtcVad_ValidRateAndFrameLength(int rate, size_t frame_length);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif  // COMMON_AUDIO_VAD_INCLUDE_WEBRTC_VAD_H_  // NOLINT
diff --git a/funasr/runtime/onnxruntime/src/Audio.cpp b/funasr/runtime/onnxruntime/src/Audio.cpp
index f2dc956..bce3a90 100644
--- a/funasr/runtime/onnxruntime/src/Audio.cpp
+++ b/funasr/runtime/onnxruntime/src/Audio.cpp
@@ -3,7 +3,6 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#include <webrtc_vad.h>
 
 #include "Audio.h"
 
@@ -414,6 +413,7 @@
 #define SPEECH_LEN_20S (16000 * 20)
 #define SPEECH_LEN_30S (16000 * 30)
 
+/*
 void Audio::split()
 {
     VadInst *handle = WebRtcVad_Create();
@@ -472,3 +472,4 @@
     }
     WebRtcVad_Free(handle);
 }
+*/
\ No newline at end of file
diff --git a/funasr/runtime/onnxruntime/src/CMakeLists.txt b/funasr/runtime/onnxruntime/src/CMakeLists.txt
index 6ed9212..2a281eb 100644
--- a/funasr/runtime/onnxruntime/src/CMakeLists.txt
+++ b/funasr/runtime/onnxruntime/src/CMakeLists.txt
@@ -10,7 +10,7 @@
 
 if(WIN32)
 
-        set(EXTRA_LIBS libfftw3f-3 webrtcvad)
+        set(EXTRA_LIBS libfftw3f-3 yaml-cpp)
         if(CMAKE_CL_64)
             target_link_directories(rapidasr PUBLIC ${CMAKE_SOURCE_DIR}/win/lib/x64)
         else()
@@ -21,7 +21,7 @@
         target_compile_definitions(rapidasr PUBLIC -D_RPASR_API_EXPORT)
 else()
 
-    set(EXTRA_LIBS fftw3f webrtcvad pthread yaml-cpp)
+    set(EXTRA_LIBS fftw3f pthread yaml-cpp)
     target_include_directories(rapidasr PUBLIC "/usr/local/opt/fftw/include")
     target_link_directories(rapidasr PUBLIC "/usr/local/opt/fftw/lib")
 
diff --git a/funasr/runtime/onnxruntime/third_party/webrtc/CMakeLists.txt b/funasr/runtime/onnxruntime/third_party/webrtc/CMakeLists.txt
deleted file mode 100644
index 51812eb..0000000
--- a/funasr/runtime/onnxruntime/third_party/webrtc/CMakeLists.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-if(WIN32)
-    add_definitions(-DWEBRTC_WIN)
-else()
-    add_definitions(-DWEBRTC_POSIX)
-endif()
-
-
-include_directories("..")
-
-file(GLOB_RECURSE files "*.c" "rtc_base/checks.cc")
-
-message("${files}")
-
-add_library(webrtcvad ${files})
diff --git a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/complex_bit_reverse.c b/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/complex_bit_reverse.c
deleted file mode 100644
index c8bd2dc..0000000
--- a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/complex_bit_reverse.c
+++ /dev/null
@@ -1,108 +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 "webrtc/common_audio/signal_processing/include/signal_processing_library.h"
-
-/* Tables for data buffer indexes that are bit reversed and thus need to be
- * swapped. Note that, index_7[{0, 2, 4, ...}] are for the left side of the swap
- * operations, while index_7[{1, 3, 5, ...}] are for the right side of the
- * operation. Same for index_8.
- */
-
-/* Indexes for the case of stages == 7. */
-static const int16_t index_7[112] = {
-  1, 64, 2, 32, 3, 96, 4, 16, 5, 80, 6, 48, 7, 112, 9, 72, 10, 40, 11, 104,
-  12, 24, 13, 88, 14, 56, 15, 120, 17, 68, 18, 36, 19, 100, 21, 84, 22, 52,
-  23, 116, 25, 76, 26, 44, 27, 108, 29, 92, 30, 60, 31, 124, 33, 66, 35, 98,
-  37, 82, 38, 50, 39, 114, 41, 74, 43, 106, 45, 90, 46, 58, 47, 122, 49, 70,
-  51, 102, 53, 86, 55, 118, 57, 78, 59, 110, 61, 94, 63, 126, 67, 97, 69,
-  81, 71, 113, 75, 105, 77, 89, 79, 121, 83, 101, 87, 117, 91, 109, 95, 125,
-  103, 115, 111, 123
-};
-
-/* Indexes for the case of stages == 8. */
-static const int16_t index_8[240] = {
-  1, 128, 2, 64, 3, 192, 4, 32, 5, 160, 6, 96, 7, 224, 8, 16, 9, 144, 10, 80,
-  11, 208, 12, 48, 13, 176, 14, 112, 15, 240, 17, 136, 18, 72, 19, 200, 20,
-  40, 21, 168, 22, 104, 23, 232, 25, 152, 26, 88, 27, 216, 28, 56, 29, 184,
-  30, 120, 31, 248, 33, 132, 34, 68, 35, 196, 37, 164, 38, 100, 39, 228, 41,
-  148, 42, 84, 43, 212, 44, 52, 45, 180, 46, 116, 47, 244, 49, 140, 50, 76,
-  51, 204, 53, 172, 54, 108, 55, 236, 57, 156, 58, 92, 59, 220, 61, 188, 62,
-  124, 63, 252, 65, 130, 67, 194, 69, 162, 70, 98, 71, 226, 73, 146, 74, 82,
-  75, 210, 77, 178, 78, 114, 79, 242, 81, 138, 83, 202, 85, 170, 86, 106, 87,
-  234, 89, 154, 91, 218, 93, 186, 94, 122, 95, 250, 97, 134, 99, 198, 101,
-  166, 103, 230, 105, 150, 107, 214, 109, 182, 110, 118, 111, 246, 113, 142,
-  115, 206, 117, 174, 119, 238, 121, 158, 123, 222, 125, 190, 127, 254, 131,
-  193, 133, 161, 135, 225, 137, 145, 139, 209, 141, 177, 143, 241, 147, 201,
-  149, 169, 151, 233, 155, 217, 157, 185, 159, 249, 163, 197, 167, 229, 171,
-  213, 173, 181, 175, 245, 179, 205, 183, 237, 187, 221, 191, 253, 199, 227,
-  203, 211, 207, 243, 215, 235, 223, 251, 239, 247
-};
-
-void WebRtcSpl_ComplexBitReverse(int16_t* __restrict complex_data, int stages) {
-  /* For any specific value of stages, we know exactly the indexes that are
-   * bit reversed. Currently (Feb. 2012) in WebRTC the only possible values of
-   * stages are 7 and 8, so we use tables to save unnecessary iterations and
-   * calculations for these two cases.
-   */
-  if (stages == 7 || stages == 8) {
-    int m = 0;
-    int length = 112;
-    const int16_t* index = index_7;
-
-    if (stages == 8) {
-      length = 240;
-      index = index_8;
-    }
-
-    /* Decimation in time. Swap the elements with bit-reversed indexes. */
-    for (m = 0; m < length; m += 2) {
-      /* We declare a int32_t* type pointer, to load both the 16-bit real
-       * and imaginary elements from complex_data in one instruction, reducing
-       * complexity.
-       */
-      int32_t* complex_data_ptr = (int32_t*)complex_data;
-      int32_t temp = 0;
-
-      temp = complex_data_ptr[index[m]];  /* Real and imaginary */
-      complex_data_ptr[index[m]] = complex_data_ptr[index[m + 1]];
-      complex_data_ptr[index[m + 1]] = temp;
-    }
-  }
-  else {
-    int m = 0, mr = 0, l = 0;
-    int n = 1 << stages;
-    int nn = n - 1;
-
-    /* Decimation in time - re-order data */
-    for (m = 1; m <= nn; ++m) {
-      int32_t* complex_data_ptr = (int32_t*)complex_data;
-      int32_t temp = 0;
-
-      /* Find out indexes that are bit-reversed. */
-      l = n;
-      do {
-        l >>= 1;
-      } while (l > nn - mr);
-      mr = (mr & (l - 1)) + l;
-
-      if (mr <= m) {
-        continue;
-      }
-
-      /* Swap the elements with bit-reversed indexes.
-       * This is similar to the loop in the stages == 7 or 8 cases.
-       */
-      temp = complex_data_ptr[m];  /* Real and imaginary */
-      complex_data_ptr[m] = complex_data_ptr[mr];
-      complex_data_ptr[mr] = temp;
-    }
-  }
-}
diff --git a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/complex_fft.c b/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/complex_fft.c
deleted file mode 100644
index 3280872..0000000
--- a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/complex_fft.c
+++ /dev/null
@@ -1,299 +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.
- */
-
-
-/*
- * This file contains the function WebRtcSpl_ComplexFFT().
- * The description header can be found in signal_processing_library.h
- *
- */
-
-#include "webrtc/common_audio/signal_processing/complex_fft_tables.h"
-#include "webrtc/common_audio/signal_processing/include/signal_processing_library.h"
-#include "webrtc/rtc_base/system/arch.h"
-
-#define CFFTSFT 14
-#define CFFTRND 1
-#define CFFTRND2 16384
-
-#define CIFFTSFT 14
-#define CIFFTRND 1
-
-
-int WebRtcSpl_ComplexFFT(int16_t frfi[], int stages, int mode)
-{
-    int i, j, l, k, istep, n, m;
-    int16_t wr, wi;
-    int32_t tr32, ti32, qr32, qi32;
-
-    /* The 1024-value is a constant given from the size of kSinTable1024[],
-     * and should not be changed depending on the input parameter 'stages'
-     */
-    n = 1 << stages;
-    if (n > 1024)
-        return -1;
-
-    l = 1;
-    k = 10 - 1; /* Constant for given kSinTable1024[]. Do not change
-         depending on the input parameter 'stages' */
-
-    if (mode == 0)
-    {
-        // mode==0: Low-complexity and Low-accuracy mode
-        while (l < n)
-        {
-            istep = l << 1;
-
-            for (m = 0; m < l; ++m)
-            {
-                j = m << k;
-
-                /* The 256-value is a constant given as 1/4 of the size of
-                 * kSinTable1024[], and should not be changed depending on the input
-                 * parameter 'stages'. It will result in 0 <= j < N_SINE_WAVE/2
-                 */
-                wr = kSinTable1024[j + 256];
-                wi = -kSinTable1024[j];
-
-                for (i = m; i < n; i += istep)
-                {
-                    j = i + l;
-
-                    tr32 = (wr * frfi[2 * j] - wi * frfi[2 * j + 1]) >> 15;
-
-                    ti32 = (wr * frfi[2 * j + 1] + wi * frfi[2 * j]) >> 15;
-
-                    qr32 = (int32_t)frfi[2 * i];
-                    qi32 = (int32_t)frfi[2 * i + 1];
-                    frfi[2 * j] = (int16_t)((qr32 - tr32) >> 1);
-                    frfi[2 * j + 1] = (int16_t)((qi32 - ti32) >> 1);
-                    frfi[2 * i] = (int16_t)((qr32 + tr32) >> 1);
-                    frfi[2 * i + 1] = (int16_t)((qi32 + ti32) >> 1);
-                }
-            }
-
-            --k;
-            l = istep;
-
-        }
-
-    } else
-    {
-        // mode==1: High-complexity and High-accuracy mode
-        while (l < n)
-        {
-            istep = l << 1;
-
-            for (m = 0; m < l; ++m)
-            {
-                j = m << k;
-
-                /* The 256-value is a constant given as 1/4 of the size of
-                 * kSinTable1024[], and should not be changed depending on the input
-                 * parameter 'stages'. It will result in 0 <= j < N_SINE_WAVE/2
-                 */
-                wr = kSinTable1024[j + 256];
-                wi = -kSinTable1024[j];
-
-#ifdef WEBRTC_ARCH_ARM_V7
-                int32_t wri = 0;
-                __asm __volatile("pkhbt %0, %1, %2, lsl #16" : "=r"(wri) :
-                    "r"((int32_t)wr), "r"((int32_t)wi));
-#endif
-
-                for (i = m; i < n; i += istep)
-                {
-                    j = i + l;
-
-#ifdef WEBRTC_ARCH_ARM_V7
-                    register int32_t frfi_r;
-                    __asm __volatile(
-                        "pkhbt %[frfi_r], %[frfi_even], %[frfi_odd],"
-                        " lsl #16\n\t"
-                        "smlsd %[tr32], %[wri], %[frfi_r], %[cfftrnd]\n\t"
-                        "smladx %[ti32], %[wri], %[frfi_r], %[cfftrnd]\n\t"
-                        :[frfi_r]"=&r"(frfi_r),
-                         [tr32]"=&r"(tr32),
-                         [ti32]"=r"(ti32)
-                        :[frfi_even]"r"((int32_t)frfi[2*j]),
-                         [frfi_odd]"r"((int32_t)frfi[2*j +1]),
-                         [wri]"r"(wri),
-                         [cfftrnd]"r"(CFFTRND));
-#else
-                    tr32 = wr * frfi[2 * j] - wi * frfi[2 * j + 1] + CFFTRND;
-
-                    ti32 = wr * frfi[2 * j + 1] + wi * frfi[2 * j] + CFFTRND;
-#endif
-
-                    tr32 >>= 15 - CFFTSFT;
-                    ti32 >>= 15 - CFFTSFT;
-
-                    qr32 = ((int32_t)frfi[2 * i]) * (1 << CFFTSFT);
-                    qi32 = ((int32_t)frfi[2 * i + 1]) * (1 << CFFTSFT);
-
-                    frfi[2 * j] = (int16_t)(
-                        (qr32 - tr32 + CFFTRND2) >> (1 + CFFTSFT));
-                    frfi[2 * j + 1] = (int16_t)(
-                        (qi32 - ti32 + CFFTRND2) >> (1 + CFFTSFT));
-                    frfi[2 * i] = (int16_t)(
-                        (qr32 + tr32 + CFFTRND2) >> (1 + CFFTSFT));
-                    frfi[2 * i + 1] = (int16_t)(
-                        (qi32 + ti32 + CFFTRND2) >> (1 + CFFTSFT));
-                }
-            }
-
-            --k;
-            l = istep;
-        }
-    }
-    return 0;
-}
-
-int WebRtcSpl_ComplexIFFT(int16_t frfi[], int stages, int mode)
-{
-    size_t i, j, l, istep, n, m;
-    int k, scale, shift;
-    int16_t wr, wi;
-    int32_t tr32, ti32, qr32, qi32;
-    int32_t tmp32, round2;
-
-    /* The 1024-value is a constant given from the size of kSinTable1024[],
-     * and should not be changed depending on the input parameter 'stages'
-     */
-    n = ((size_t)1) << stages;
-    if (n > 1024)
-        return -1;
-
-    scale = 0;
-
-    l = 1;
-    k = 10 - 1; /* Constant for given kSinTable1024[]. Do not change
-         depending on the input parameter 'stages' */
-
-    while (l < n)
-    {
-        // variable scaling, depending upon data
-        shift = 0;
-        round2 = 8192;
-
-        tmp32 = WebRtcSpl_MaxAbsValueW16(frfi, 2 * n);
-        if (tmp32 > 13573)
-        {
-            shift++;
-            scale++;
-            round2 <<= 1;
-        }
-        if (tmp32 > 27146)
-        {
-            shift++;
-            scale++;
-            round2 <<= 1;
-        }
-
-        istep = l << 1;
-
-        if (mode == 0)
-        {
-            // mode==0: Low-complexity and Low-accuracy mode
-            for (m = 0; m < l; ++m)
-            {
-                j = m << k;
-
-                /* The 256-value is a constant given as 1/4 of the size of
-                 * kSinTable1024[], and should not be changed depending on the input
-                 * parameter 'stages'. It will result in 0 <= j < N_SINE_WAVE/2
-                 */
-                wr = kSinTable1024[j + 256];
-                wi = kSinTable1024[j];
-
-                for (i = m; i < n; i += istep)
-                {
-                    j = i + l;
-
-                    tr32 = (wr * frfi[2 * j] - wi * frfi[2 * j + 1]) >> 15;
-
-                    ti32 = (wr * frfi[2 * j + 1] + wi * frfi[2 * j]) >> 15;
-
-                    qr32 = (int32_t)frfi[2 * i];
-                    qi32 = (int32_t)frfi[2 * i + 1];
-                    frfi[2 * j] = (int16_t)((qr32 - tr32) >> shift);
-                    frfi[2 * j + 1] = (int16_t)((qi32 - ti32) >> shift);
-                    frfi[2 * i] = (int16_t)((qr32 + tr32) >> shift);
-                    frfi[2 * i + 1] = (int16_t)((qi32 + ti32) >> shift);
-                }
-            }
-        } else
-        {
-            // mode==1: High-complexity and High-accuracy mode
-
-            for (m = 0; m < l; ++m)
-            {
-                j = m << k;
-
-                /* The 256-value is a constant given as 1/4 of the size of
-                 * kSinTable1024[], and should not be changed depending on the input
-                 * parameter 'stages'. It will result in 0 <= j < N_SINE_WAVE/2
-                 */
-                wr = kSinTable1024[j + 256];
-                wi = kSinTable1024[j];
-
-#ifdef WEBRTC_ARCH_ARM_V7
-                int32_t wri = 0;
-                __asm __volatile("pkhbt %0, %1, %2, lsl #16" : "=r"(wri) :
-                    "r"((int32_t)wr), "r"((int32_t)wi));
-#endif
-
-                for (i = m; i < n; i += istep)
-                {
-                    j = i + l;
-
-#ifdef WEBRTC_ARCH_ARM_V7
-                    register int32_t frfi_r;
-                    __asm __volatile(
-                      "pkhbt %[frfi_r], %[frfi_even], %[frfi_odd], lsl #16\n\t"
-                      "smlsd %[tr32], %[wri], %[frfi_r], %[cifftrnd]\n\t"
-                      "smladx %[ti32], %[wri], %[frfi_r], %[cifftrnd]\n\t"
-                      :[frfi_r]"=&r"(frfi_r),
-                       [tr32]"=&r"(tr32),
-                       [ti32]"=r"(ti32)
-                      :[frfi_even]"r"((int32_t)frfi[2*j]),
-                       [frfi_odd]"r"((int32_t)frfi[2*j +1]),
-                       [wri]"r"(wri),
-                       [cifftrnd]"r"(CIFFTRND)
-                    );
-#else
-
-                    tr32 = wr * frfi[2 * j] - wi * frfi[2 * j + 1] + CIFFTRND;
-
-                    ti32 = wr * frfi[2 * j + 1] + wi * frfi[2 * j] + CIFFTRND;
-#endif
-                    tr32 >>= 15 - CIFFTSFT;
-                    ti32 >>= 15 - CIFFTSFT;
-
-                    qr32 = ((int32_t)frfi[2 * i]) * (1 << CIFFTSFT);
-                    qi32 = ((int32_t)frfi[2 * i + 1]) * (1 << CIFFTSFT);
-
-                    frfi[2 * j] = (int16_t)(
-                        (qr32 - tr32 + round2) >> (shift + CIFFTSFT));
-                    frfi[2 * j + 1] = (int16_t)(
-                        (qi32 - ti32 + round2) >> (shift + CIFFTSFT));
-                    frfi[2 * i] = (int16_t)(
-                        (qr32 + tr32 + round2) >> (shift + CIFFTSFT));
-                    frfi[2 * i + 1] = (int16_t)(
-                        (qi32 + ti32 + round2) >> (shift + CIFFTSFT));
-                }
-            }
-
-        }
-        --k;
-        l = istep;
-    }
-    return scale;
-}
diff --git a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/complex_fft_tables.h b/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/complex_fft_tables.h
deleted file mode 100644
index 90fac07..0000000
--- a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/complex_fft_tables.h
+++ /dev/null
@@ -1,132 +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.
- */
-
-#ifndef COMMON_AUDIO_SIGNAL_PROCESSING_COMPLEX_FFT_TABLES_H_
-#define COMMON_AUDIO_SIGNAL_PROCESSING_COMPLEX_FFT_TABLES_H_
-
-#include <stdint.h>
-
-static const int16_t kSinTable1024[] = {
-    0,      201,    402,    603,    804,    1005,   1206,   1406,   1607,
-    1808,   2009,   2209,   2410,   2610,   2811,   3011,   3211,   3411,
-    3611,   3811,   4011,   4210,   4409,   4608,   4807,   5006,   5205,
-    5403,   5601,   5799,   5997,   6195,   6392,   6589,   6786,   6982,
-    7179,   7375,   7571,   7766,   7961,   8156,   8351,   8545,   8739,
-    8932,   9126,   9319,   9511,   9703,   9895,   10087,  10278,  10469,
-    10659,  10849,  11038,  11227,  11416,  11604,  11792,  11980,  12166,
-    12353,  12539,  12724,  12909,  13094,  13278,  13462,  13645,  13827,
-    14009,  14191,  14372,  14552,  14732,  14911,  15090,  15268,  15446,
-    15623,  15799,  15975,  16150,  16325,  16499,  16672,  16845,  17017,
-    17189,  17360,  17530,  17699,  17868,  18036,  18204,  18371,  18537,
-    18702,  18867,  19031,  19194,  19357,  19519,  19680,  19840,  20000,
-    20159,  20317,  20474,  20631,  20787,  20942,  21096,  21249,  21402,
-    21554,  21705,  21855,  22004,  22153,  22301,  22448,  22594,  22739,
-    22883,  23027,  23169,  23311,  23452,  23592,  23731,  23869,  24006,
-    24143,  24278,  24413,  24546,  24679,  24811,  24942,  25072,  25201,
-    25329,  25456,  25582,  25707,  25831,  25954,  26077,  26198,  26318,
-    26437,  26556,  26673,  26789,  26905,  27019,  27132,  27244,  27355,
-    27466,  27575,  27683,  27790,  27896,  28001,  28105,  28208,  28309,
-    28410,  28510,  28608,  28706,  28802,  28897,  28992,  29085,  29177,
-    29268,  29358,  29446,  29534,  29621,  29706,  29790,  29873,  29955,
-    30036,  30116,  30195,  30272,  30349,  30424,  30498,  30571,  30643,
-    30713,  30783,  30851,  30918,  30984,  31049,  31113,  31175,  31236,
-    31297,  31356,  31413,  31470,  31525,  31580,  31633,  31684,  31735,
-    31785,  31833,  31880,  31926,  31970,  32014,  32056,  32097,  32137,
-    32176,  32213,  32249,  32284,  32318,  32350,  32382,  32412,  32441,
-    32468,  32495,  32520,  32544,  32567,  32588,  32609,  32628,  32646,
-    32662,  32678,  32692,  32705,  32717,  32727,  32736,  32744,  32751,
-    32757,  32761,  32764,  32766,  32767,  32766,  32764,  32761,  32757,
-    32751,  32744,  32736,  32727,  32717,  32705,  32692,  32678,  32662,
-    32646,  32628,  32609,  32588,  32567,  32544,  32520,  32495,  32468,
-    32441,  32412,  32382,  32350,  32318,  32284,  32249,  32213,  32176,
-    32137,  32097,  32056,  32014,  31970,  31926,  31880,  31833,  31785,
-    31735,  31684,  31633,  31580,  31525,  31470,  31413,  31356,  31297,
-    31236,  31175,  31113,  31049,  30984,  30918,  30851,  30783,  30713,
-    30643,  30571,  30498,  30424,  30349,  30272,  30195,  30116,  30036,
-    29955,  29873,  29790,  29706,  29621,  29534,  29446,  29358,  29268,
-    29177,  29085,  28992,  28897,  28802,  28706,  28608,  28510,  28410,
-    28309,  28208,  28105,  28001,  27896,  27790,  27683,  27575,  27466,
-    27355,  27244,  27132,  27019,  26905,  26789,  26673,  26556,  26437,
-    26318,  26198,  26077,  25954,  25831,  25707,  25582,  25456,  25329,
-    25201,  25072,  24942,  24811,  24679,  24546,  24413,  24278,  24143,
-    24006,  23869,  23731,  23592,  23452,  23311,  23169,  23027,  22883,
-    22739,  22594,  22448,  22301,  22153,  22004,  21855,  21705,  21554,
-    21402,  21249,  21096,  20942,  20787,  20631,  20474,  20317,  20159,
-    20000,  19840,  19680,  19519,  19357,  19194,  19031,  18867,  18702,
-    18537,  18371,  18204,  18036,  17868,  17699,  17530,  17360,  17189,
-    17017,  16845,  16672,  16499,  16325,  16150,  15975,  15799,  15623,
-    15446,  15268,  15090,  14911,  14732,  14552,  14372,  14191,  14009,
-    13827,  13645,  13462,  13278,  13094,  12909,  12724,  12539,  12353,
-    12166,  11980,  11792,  11604,  11416,  11227,  11038,  10849,  10659,
-    10469,  10278,  10087,  9895,   9703,   9511,   9319,   9126,   8932,
-    8739,   8545,   8351,   8156,   7961,   7766,   7571,   7375,   7179,
-    6982,   6786,   6589,   6392,   6195,   5997,   5799,   5601,   5403,
-    5205,   5006,   4807,   4608,   4409,   4210,   4011,   3811,   3611,
-    3411,   3211,   3011,   2811,   2610,   2410,   2209,   2009,   1808,
-    1607,   1406,   1206,   1005,   804,    603,    402,    201,    0,
-    -201,   -402,   -603,   -804,   -1005,  -1206,  -1406,  -1607,  -1808,
-    -2009,  -2209,  -2410,  -2610,  -2811,  -3011,  -3211,  -3411,  -3611,
-    -3811,  -4011,  -4210,  -4409,  -4608,  -4807,  -5006,  -5205,  -5403,
-    -5601,  -5799,  -5997,  -6195,  -6392,  -6589,  -6786,  -6982,  -7179,
-    -7375,  -7571,  -7766,  -7961,  -8156,  -8351,  -8545,  -8739,  -8932,
-    -9126,  -9319,  -9511,  -9703,  -9895,  -10087, -10278, -10469, -10659,
-    -10849, -11038, -11227, -11416, -11604, -11792, -11980, -12166, -12353,
-    -12539, -12724, -12909, -13094, -13278, -13462, -13645, -13827, -14009,
-    -14191, -14372, -14552, -14732, -14911, -15090, -15268, -15446, -15623,
-    -15799, -15975, -16150, -16325, -16499, -16672, -16845, -17017, -17189,
-    -17360, -17530, -17699, -17868, -18036, -18204, -18371, -18537, -18702,
-    -18867, -19031, -19194, -19357, -19519, -19680, -19840, -20000, -20159,
-    -20317, -20474, -20631, -20787, -20942, -21096, -21249, -21402, -21554,
-    -21705, -21855, -22004, -22153, -22301, -22448, -22594, -22739, -22883,
-    -23027, -23169, -23311, -23452, -23592, -23731, -23869, -24006, -24143,
-    -24278, -24413, -24546, -24679, -24811, -24942, -25072, -25201, -25329,
-    -25456, -25582, -25707, -25831, -25954, -26077, -26198, -26318, -26437,
-    -26556, -26673, -26789, -26905, -27019, -27132, -27244, -27355, -27466,
-    -27575, -27683, -27790, -27896, -28001, -28105, -28208, -28309, -28410,
-    -28510, -28608, -28706, -28802, -28897, -28992, -29085, -29177, -29268,
-    -29358, -29446, -29534, -29621, -29706, -29790, -29873, -29955, -30036,
-    -30116, -30195, -30272, -30349, -30424, -30498, -30571, -30643, -30713,
-    -30783, -30851, -30918, -30984, -31049, -31113, -31175, -31236, -31297,
-    -31356, -31413, -31470, -31525, -31580, -31633, -31684, -31735, -31785,
-    -31833, -31880, -31926, -31970, -32014, -32056, -32097, -32137, -32176,
-    -32213, -32249, -32284, -32318, -32350, -32382, -32412, -32441, -32468,
-    -32495, -32520, -32544, -32567, -32588, -32609, -32628, -32646, -32662,
-    -32678, -32692, -32705, -32717, -32727, -32736, -32744, -32751, -32757,
-    -32761, -32764, -32766, -32767, -32766, -32764, -32761, -32757, -32751,
-    -32744, -32736, -32727, -32717, -32705, -32692, -32678, -32662, -32646,
-    -32628, -32609, -32588, -32567, -32544, -32520, -32495, -32468, -32441,
-    -32412, -32382, -32350, -32318, -32284, -32249, -32213, -32176, -32137,
-    -32097, -32056, -32014, -31970, -31926, -31880, -31833, -31785, -31735,
-    -31684, -31633, -31580, -31525, -31470, -31413, -31356, -31297, -31236,
-    -31175, -31113, -31049, -30984, -30918, -30851, -30783, -30713, -30643,
-    -30571, -30498, -30424, -30349, -30272, -30195, -30116, -30036, -29955,
-    -29873, -29790, -29706, -29621, -29534, -29446, -29358, -29268, -29177,
-    -29085, -28992, -28897, -28802, -28706, -28608, -28510, -28410, -28309,
-    -28208, -28105, -28001, -27896, -27790, -27683, -27575, -27466, -27355,
-    -27244, -27132, -27019, -26905, -26789, -26673, -26556, -26437, -26318,
-    -26198, -26077, -25954, -25831, -25707, -25582, -25456, -25329, -25201,
-    -25072, -24942, -24811, -24679, -24546, -24413, -24278, -24143, -24006,
-    -23869, -23731, -23592, -23452, -23311, -23169, -23027, -22883, -22739,
-    -22594, -22448, -22301, -22153, -22004, -21855, -21705, -21554, -21402,
-    -21249, -21096, -20942, -20787, -20631, -20474, -20317, -20159, -20000,
-    -19840, -19680, -19519, -19357, -19194, -19031, -18867, -18702, -18537,
-    -18371, -18204, -18036, -17868, -17699, -17530, -17360, -17189, -17017,
-    -16845, -16672, -16499, -16325, -16150, -15975, -15799, -15623, -15446,
-    -15268, -15090, -14911, -14732, -14552, -14372, -14191, -14009, -13827,
-    -13645, -13462, -13278, -13094, -12909, -12724, -12539, -12353, -12166,
-    -11980, -11792, -11604, -11416, -11227, -11038, -10849, -10659, -10469,
-    -10278, -10087, -9895,  -9703,  -9511,  -9319,  -9126,  -8932,  -8739,
-    -8545,  -8351,  -8156,  -7961,  -7766,  -7571,  -7375,  -7179,  -6982,
-    -6786,  -6589,  -6392,  -6195,  -5997,  -5799,  -5601,  -5403,  -5205,
-    -5006,  -4807,  -4608,  -4409,  -4210,  -4011,  -3811,  -3611,  -3411,
-    -3211,  -3011,  -2811,  -2610,  -2410,  -2209,  -2009,  -1808,  -1607,
-    -1406,  -1206,  -1005,  -804,   -603,   -402,   -201};
-
-#endif  // COMMON_AUDIO_SIGNAL_PROCESSING_COMPLEX_FFT_TABLES_H_
diff --git a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/cross_correlation.c b/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/cross_correlation.c
deleted file mode 100644
index d7c9f2b..0000000
--- a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/cross_correlation.c
+++ /dev/null
@@ -1,30 +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 "webrtc/common_audio/signal_processing/include/signal_processing_library.h"
-
-/* C version of WebRtcSpl_CrossCorrelation() for generic platforms. */
-void WebRtcSpl_CrossCorrelationC(int32_t* cross_correlation,
-                                 const int16_t* seq1,
-                                 const int16_t* seq2,
-                                 size_t dim_seq,
-                                 size_t dim_cross_correlation,
-                                 int right_shifts,
-                                 int step_seq2) {
-  size_t i = 0, j = 0;
-
-  for (i = 0; i < dim_cross_correlation; i++) {
-    int32_t corr = 0;
-    for (j = 0; j < dim_seq; j++)
-      corr += (seq1[j] * seq2[j]) >> right_shifts;
-    seq2 += step_seq2;
-    *cross_correlation++ = corr;
-  }
-}
diff --git a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/division_operations.c b/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/division_operations.c
deleted file mode 100644
index 2d42052..0000000
--- a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/division_operations.c
+++ /dev/null
@@ -1,141 +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.
- */
-
-
-/*
- * This file contains implementations of the divisions
- * WebRtcSpl_DivU32U16()
- * WebRtcSpl_DivW32W16()
- * WebRtcSpl_DivW32W16ResW16()
- * WebRtcSpl_DivResultInQ31()
- * WebRtcSpl_DivW32HiLow()
- *
- * The description header can be found in signal_processing_library.h
- *
- */
-
-#include "webrtc/common_audio/signal_processing/include/signal_processing_library.h"
-#include "webrtc/rtc_base/sanitizer.h"
-
-uint32_t WebRtcSpl_DivU32U16(uint32_t num, uint16_t den)
-{
-    // Guard against division with 0
-    if (den != 0)
-    {
-        return (uint32_t)(num / den);
-    } else
-    {
-        return (uint32_t)0xFFFFFFFF;
-    }
-}
-
-int32_t WebRtcSpl_DivW32W16(int32_t num, int16_t den)
-{
-    // Guard against division with 0
-    if (den != 0)
-    {
-        return (int32_t)(num / den);
-    } else
-    {
-        return (int32_t)0x7FFFFFFF;
-    }
-}
-
-int16_t WebRtcSpl_DivW32W16ResW16(int32_t num, int16_t den)
-{
-    // Guard against division with 0
-    if (den != 0)
-    {
-        return (int16_t)(num / den);
-    } else
-    {
-        return (int16_t)0x7FFF;
-    }
-}
-
-int32_t WebRtcSpl_DivResultInQ31(int32_t num, int32_t den)
-{
-    int32_t L_num = num;
-    int32_t L_den = den;
-    int32_t div = 0;
-    int k = 31;
-    int change_sign = 0;
-
-    if (num == 0)
-        return 0;
-
-    if (num < 0)
-    {
-        change_sign++;
-        L_num = -num;
-    }
-    if (den < 0)
-    {
-        change_sign++;
-        L_den = -den;
-    }
-    while (k--)
-    {
-        div <<= 1;
-        L_num <<= 1;
-        if (L_num >= L_den)
-        {
-            L_num -= L_den;
-            div++;
-        }
-    }
-    if (change_sign == 1)
-    {
-        div = -div;
-    }
-    return div;
-}
-
-int32_t RTC_NO_SANITIZE("signed-integer-overflow")  // bugs.webrtc.org/5486
-WebRtcSpl_DivW32HiLow(int32_t num, int16_t den_hi, int16_t den_low)
-{
-    int16_t approx, tmp_hi, tmp_low, num_hi, num_low;
-    int32_t tmpW32;
-
-    approx = (int16_t)WebRtcSpl_DivW32W16((int32_t)0x1FFFFFFF, den_hi);
-    // result in Q14 (Note: 3FFFFFFF = 0.5 in Q30)
-
-    // tmpW32 = 1/den = approx * (2.0 - den * approx) (in Q30)
-    tmpW32 = (den_hi * approx << 1) + ((den_low * approx >> 15) << 1);
-    // tmpW32 = den * approx
-
-    tmpW32 = (int32_t)0x7fffffffL - tmpW32; // result in Q30 (tmpW32 = 2.0-(den*approx))
-    // UBSan: 2147483647 - -2 cannot be represented in type 'int'
-
-    // Store tmpW32 in hi and low format
-    tmp_hi = (int16_t)(tmpW32 >> 16);
-    tmp_low = (int16_t)((tmpW32 - ((int32_t)tmp_hi << 16)) >> 1);
-
-    // tmpW32 = 1/den in Q29
-    tmpW32 = (tmp_hi * approx + (tmp_low * approx >> 15)) << 1;
-
-    // 1/den in hi and low format
-    tmp_hi = (int16_t)(tmpW32 >> 16);
-    tmp_low = (int16_t)((tmpW32 - ((int32_t)tmp_hi << 16)) >> 1);
-
-    // Store num in hi and low format
-    num_hi = (int16_t)(num >> 16);
-    num_low = (int16_t)((num - ((int32_t)num_hi << 16)) >> 1);
-
-    // num * (1/den) by 32 bit multiplication (result in Q28)
-
-    tmpW32 = num_hi * tmp_hi + (num_hi * tmp_low >> 15) +
-        (num_low * tmp_hi >> 15);
-
-    // Put result in Q31 (convert from Q28)
-    tmpW32 = WEBRTC_SPL_LSHIFT_W32(tmpW32, 3);
-
-    return tmpW32;
-}
diff --git a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/dot_product_with_scale.cc b/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/dot_product_with_scale.cc
deleted file mode 100644
index d9661af..0000000
--- a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/dot_product_with_scale.cc
+++ /dev/null
@@ -1,34 +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 "webrtc/common_audio/signal_processing/dot_product_with_scale.h"
-
-#include "webrtc/rtc_base/numerics/safe_conversions.h"
-
-int32_t WebRtcSpl_DotProductWithScale(const int16_t* vector1,
-                                      const int16_t* vector2,
-                                      size_t length,
-                                      int scaling) {
-  int64_t sum = 0;
-  size_t i = 0;
-
-  /* Unroll the loop to improve performance. */
-  for (i = 0; i + 3 < length; i += 4) {
-    sum += (vector1[i + 0] * vector2[i + 0]) >> scaling;
-    sum += (vector1[i + 1] * vector2[i + 1]) >> scaling;
-    sum += (vector1[i + 2] * vector2[i + 2]) >> scaling;
-    sum += (vector1[i + 3] * vector2[i + 3]) >> scaling;
-  }
-  for (; i < length; i++) {
-    sum += (vector1[i] * vector2[i]) >> scaling;
-  }
-
-  return rtc::saturated_cast<int32_t>(sum);
-}
diff --git a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/dot_product_with_scale.h b/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/dot_product_with_scale.h
deleted file mode 100644
index bb892d4..0000000
--- a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/dot_product_with_scale.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- *  Copyright (c) 2017 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 COMMON_AUDIO_SIGNAL_PROCESSING_DOT_PRODUCT_WITH_SCALE_H_
-#define COMMON_AUDIO_SIGNAL_PROCESSING_DOT_PRODUCT_WITH_SCALE_H_
-
-#include <stdint.h>
-#include <string.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-// Calculates the dot product between two (int16_t) vectors.
-//
-// Input:
-//      - vector1       : Vector 1
-//      - vector2       : Vector 2
-//      - vector_length : Number of samples used in the dot product
-//      - scaling       : The number of right bit shifts to apply on each term
-//                        during calculation to avoid overflow, i.e., the
-//                        output will be in Q(-|scaling|)
-//
-// Return value         : The dot product in Q(-scaling)
-int32_t WebRtcSpl_DotProductWithScale(const int16_t* vector1,
-                                      const int16_t* vector2,
-                                      size_t length,
-                                      int scaling);
-
-#ifdef __cplusplus
-}
-#endif  // __cplusplus
-#endif  // COMMON_AUDIO_SIGNAL_PROCESSING_DOT_PRODUCT_WITH_SCALE_H_
diff --git a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/downsample_fast.c b/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/downsample_fast.c
deleted file mode 100644
index e575861..0000000
--- a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/downsample_fast.c
+++ /dev/null
@@ -1,65 +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 "webrtc/common_audio/signal_processing/include/signal_processing_library.h"
-
-#include "webrtc/rtc_base/checks.h"
-#include "webrtc/rtc_base/sanitizer.h"
-
-// TODO(Bjornv): Change the function parameter order to WebRTC code style.
-// C version of WebRtcSpl_DownsampleFast() for generic platforms.
-int WebRtcSpl_DownsampleFastC(const int16_t* data_in,
-                              size_t data_in_length,
-                              int16_t* data_out,
-                              size_t data_out_length,
-                              const int16_t* __restrict coefficients,
-                              size_t coefficients_length,
-                              int factor,
-                              size_t delay) {
-  int16_t* const original_data_out = data_out;
-  size_t i = 0;
-  size_t j = 0;
-  int32_t out_s32 = 0;
-  size_t endpos = delay + factor * (data_out_length - 1) + 1;
-
-  // Return error if any of the running conditions doesn't meet.
-  if (data_out_length == 0 || coefficients_length == 0
-                           || data_in_length < endpos) {
-    return -1;
-  }
-
-  rtc_MsanCheckInitialized(coefficients, sizeof(coefficients[0]),
-                           coefficients_length);
-
-  for (i = delay; i < endpos; i += factor) {
-    out_s32 = 2048;  // Round value, 0.5 in Q12.
-
-    for (j = 0; j < coefficients_length; j++) {
-      // Negative overflow is permitted here, because this is
-      // auto-regressive filters, and the state for each batch run is
-      // stored in the "negative" positions of the output vector.
-      rtc_MsanCheckInitialized(&data_in[(ptrdiff_t) i - (ptrdiff_t) j],
-          sizeof(data_in[0]), 1);
-      // out_s32 is in Q12 domain.
-      out_s32 += coefficients[j] * data_in[(ptrdiff_t) i - (ptrdiff_t) j];
-    }
-
-    out_s32 >>= 12;  // Q0.
-
-    // Saturate and store the output.
-    *data_out++ = WebRtcSpl_SatW32ToW16(out_s32);
-  }
-
-  RTC_DCHECK_EQ(original_data_out + data_out_length, data_out);
-  rtc_MsanCheckInitialized(original_data_out, sizeof(original_data_out[0]),
-                           data_out_length);
-
-  return 0;
-}
diff --git a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/energy.c b/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/energy.c
deleted file mode 100644
index e83f1a6..0000000
--- a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/energy.c
+++ /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.
- */
-
-
-/*
- * This file contains the function WebRtcSpl_Energy().
- * The description header can be found in signal_processing_library.h
- *
- */
-
-#include "webrtc/common_audio/signal_processing/include/signal_processing_library.h"
-
-int32_t WebRtcSpl_Energy(int16_t* vector,
-                         size_t vector_length,
-                         int* scale_factor)
-{
-    int32_t en = 0;
-    size_t i;
-    int scaling =
-        WebRtcSpl_GetScalingSquare(vector, vector_length, vector_length);
-    size_t looptimes = vector_length;
-    int16_t *vectorptr = vector;
-
-    for (i = 0; i < looptimes; i++)
-    {
-      en += (*vectorptr * *vectorptr) >> scaling;
-      vectorptr++;
-    }
-    *scale_factor = scaling;
-
-    return en;
-}
diff --git a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/get_scaling_square.c b/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/get_scaling_square.c
deleted file mode 100644
index 82e3c8b..0000000
--- a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/get_scaling_square.c
+++ /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.
- */
-
-
-/*
- * This file contains the function WebRtcSpl_GetScalingSquare().
- * The description header can be found in signal_processing_library.h
- *
- */
-
-#include "webrtc/common_audio/signal_processing/include/signal_processing_library.h"
-
-int16_t WebRtcSpl_GetScalingSquare(int16_t* in_vector,
-                                   size_t in_vector_length,
-                                   size_t times)
-{
-    int16_t nbits = WebRtcSpl_GetSizeInBits((uint32_t)times);
-    size_t i;
-    int16_t smax = -1;
-    int16_t sabs;
-    int16_t *sptr = in_vector;
-    int16_t t;
-    size_t looptimes = in_vector_length;
-
-    for (i = looptimes; i > 0; i--)
-    {
-        sabs = (*sptr > 0 ? *sptr++ : -*sptr++);
-        smax = (sabs > smax ? sabs : smax);
-    }
-    t = WebRtcSpl_NormW32(WEBRTC_SPL_MUL(smax, smax));
-
-    if (smax == 0)
-    {
-        return 0; // Since norm(0) returns 0
-    } else
-    {
-        return (t > nbits) ? 0 : nbits - t;
-    }
-}
diff --git a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/include/real_fft.h b/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/include/real_fft.h
deleted file mode 100644
index 8445066..0000000
--- a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/include/real_fft.h
+++ /dev/null
@@ -1,96 +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 COMMON_AUDIO_SIGNAL_PROCESSING_INCLUDE_REAL_FFT_H_
-#define COMMON_AUDIO_SIGNAL_PROCESSING_INCLUDE_REAL_FFT_H_
-
-#include <stdint.h>
-
-// For ComplexFFT(), the maximum fft order is 10;
-// WebRTC APM uses orders of only 7 and 8.
-enum { kMaxFFTOrder = 10 };
-
-struct RealFFT;
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct RealFFT* WebRtcSpl_CreateRealFFT(int order);
-void WebRtcSpl_FreeRealFFT(struct RealFFT* self);
-
-// Compute an FFT for a real-valued signal of length of 2^order,
-// where 1 < order <= MAX_FFT_ORDER. Transform length is determined by the
-// specification structure, which must be initialized prior to calling the FFT
-// function with WebRtcSpl_CreateRealFFT().
-// The relationship between the input and output sequences can
-// be expressed in terms of the DFT, i.e.:
-//     x[n] = (2^(-scalefactor)/N)  . SUM[k=0,...,N-1] X[k].e^(jnk.2.pi/N)
-//     n=0,1,2,...N-1
-//     N=2^order.
-// The conjugate-symmetric output sequence is represented using a CCS vector,
-// which is of length N+2, and is organized as follows:
-//     Index:      0  1  2  3  4  5   . . .   N-2       N-1       N       N+1
-//     Component:  R0 0  R1 I1 R2 I2  . . .   R[N/2-1]  I[N/2-1]  R[N/2]  0
-// where R[n] and I[n], respectively, denote the real and imaginary components
-// for FFT bin 'n'. Bins  are numbered from 0 to N/2, where N is the FFT length.
-// Bin index 0 corresponds to the DC component, and bin index N/2 corresponds to
-// the foldover frequency.
-//
-// Input Arguments:
-//   self - pointer to preallocated and initialized FFT specification structure.
-//   real_data_in - the input signal. For an ARM Neon platform, it must be
-//                  aligned on a 32-byte boundary.
-//
-// Output Arguments:
-//   complex_data_out - the output complex signal with (2^order + 2) 16-bit
-//                      elements. For an ARM Neon platform, it must be different
-//                      from real_data_in, and aligned on a 32-byte boundary.
-//
-// Return Value:
-//   0  - FFT calculation is successful.
-//   -1 - Error with bad arguments (null pointers).
-int WebRtcSpl_RealForwardFFT(struct RealFFT* self,
-                             const int16_t* real_data_in,
-                             int16_t* complex_data_out);
-
-// Compute the inverse FFT for a conjugate-symmetric input sequence of length of
-// 2^order, where 1 < order <= MAX_FFT_ORDER. Transform length is determined by
-// the specification structure, which must be initialized prior to calling the
-// FFT function with WebRtcSpl_CreateRealFFT().
-// For a transform of length M, the input sequence is represented using a packed
-// CCS vector of length M+2, which is explained in the comments for
-// WebRtcSpl_RealForwardFFTC above.
-//
-// Input Arguments:
-//   self - pointer to preallocated and initialized FFT specification structure.
-//   complex_data_in - the input complex signal with (2^order + 2) 16-bit
-//                     elements. For an ARM Neon platform, it must be aligned on
-//                     a 32-byte boundary.
-//
-// Output Arguments:
-//   real_data_out - the output real signal. For an ARM Neon platform, it must
-//                   be different to complex_data_in, and aligned on a 32-byte
-//                   boundary.
-//
-// Return Value:
-//   0 or a positive number - a value that the elements in the |real_data_out|
-//                            should be shifted left with in order to get
-//                            correct physical values.
-//   -1 - Error with bad arguments (null pointers).
-int WebRtcSpl_RealInverseFFT(struct RealFFT* self,
-                             const int16_t* complex_data_in,
-                             int16_t* real_data_out);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif  // COMMON_AUDIO_SIGNAL_PROCESSING_INCLUDE_REAL_FFT_H_
diff --git a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/include/signal_processing_library.h b/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/include/signal_processing_library.h
deleted file mode 100644
index ccbb306..0000000
--- a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/include/signal_processing_library.h
+++ /dev/null
@@ -1,1612 +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.
- */
-
-/*
- * This header file includes all of the fix point signal processing library
- * (SPL) function descriptions and declarations. For specific function calls,
- * see bottom of file.
- */
-
-#ifndef COMMON_AUDIO_SIGNAL_PROCESSING_INCLUDE_SIGNAL_PROCESSING_LIBRARY_H_
-#define COMMON_AUDIO_SIGNAL_PROCESSING_INCLUDE_SIGNAL_PROCESSING_LIBRARY_H_
-
-#include <string.h>
-#include "webrtc/common_audio/signal_processing/dot_product_with_scale.h"
-
-// Macros specific for the fixed point implementation
-#define WEBRTC_SPL_WORD16_MAX 32767
-#define WEBRTC_SPL_WORD16_MIN -32768
-#define WEBRTC_SPL_WORD32_MAX (int32_t)0x7fffffff
-#define WEBRTC_SPL_WORD32_MIN (int32_t)0x80000000
-#define WEBRTC_SPL_MAX_LPC_ORDER 14
-#define WEBRTC_SPL_MIN(A, B) (A < B ? A : B)  // Get min value
-#define WEBRTC_SPL_MAX(A, B) (A > B ? A : B)  // Get max value
-// TODO(kma/bjorn): For the next two macros, investigate how to correct the code
-// for inputs of a = WEBRTC_SPL_WORD16_MIN or WEBRTC_SPL_WORD32_MIN.
-#define WEBRTC_SPL_ABS_W16(a) (((int16_t)a >= 0) ? ((int16_t)a) : -((int16_t)a))
-#define WEBRTC_SPL_ABS_W32(a) (((int32_t)a >= 0) ? ((int32_t)a) : -((int32_t)a))
-
-#define WEBRTC_SPL_MUL(a, b) ((int32_t)((int32_t)(a) * (int32_t)(b)))
-#define WEBRTC_SPL_UMUL(a, b) ((uint32_t)((uint32_t)(a) * (uint32_t)(b)))
-#define WEBRTC_SPL_UMUL_32_16(a, b) ((uint32_t)((uint32_t)(a) * (uint16_t)(b)))
-#define WEBRTC_SPL_MUL_16_U16(a, b) ((int32_t)(int16_t)(a) * (uint16_t)(b))
-
-// clang-format off
-// clang-format would choose some identation
-// leading to presubmit error (cpplint.py)
-#ifndef WEBRTC_ARCH_ARM_V7
-// For ARMv7 platforms, these are inline functions in spl_inl_armv7.h
-#ifndef MIPS32_LE
-// For MIPS platforms, these are inline functions in spl_inl_mips.h
-#define WEBRTC_SPL_MUL_16_16(a, b) ((int32_t)(((int16_t)(a)) * ((int16_t)(b))))
-#define WEBRTC_SPL_MUL_16_32_RSFT16(a, b) \
-        (WEBRTC_SPL_MUL_16_16(a, b >> 16) +     \
-        ((WEBRTC_SPL_MUL_16_16(a, (b & 0xffff) >> 1) + 0x4000) >> 15))
-#endif
-#endif
-
-#define WEBRTC_SPL_MUL_16_32_RSFT11(a, b)          \
-        (WEBRTC_SPL_MUL_16_16(a, (b) >> 16) * (1 << 5) + \
-        (((WEBRTC_SPL_MUL_16_U16(a, (uint16_t)(b)) >> 1) + 0x0200) >> 10))
-#define WEBRTC_SPL_MUL_16_32_RSFT14(a, b)          \
-        (WEBRTC_SPL_MUL_16_16(a, (b) >> 16) * (1 << 2) + \
-        (((WEBRTC_SPL_MUL_16_U16(a, (uint16_t)(b)) >> 1) + 0x1000) >> 13))
-#define WEBRTC_SPL_MUL_16_32_RSFT15(a, b)            \
-        ((WEBRTC_SPL_MUL_16_16(a, (b) >> 16) * (1 << 1)) + \
-        (((WEBRTC_SPL_MUL_16_U16(a, (uint16_t)(b)) >> 1) + 0x2000) >> 14))
-// clang-format on
-
-#define WEBRTC_SPL_MUL_16_16_RSFT(a, b, c) (WEBRTC_SPL_MUL_16_16(a, b) >> (c))
-
-#define WEBRTC_SPL_MUL_16_16_RSFT_WITH_ROUND(a, b, c) \
-  ((WEBRTC_SPL_MUL_16_16(a, b) + ((int32_t)(((int32_t)1) << ((c)-1)))) >> (c))
-
-// C + the 32 most significant bits of A * B
-#define WEBRTC_SPL_SCALEDIFF32(A, B, C) \
-  (C + (B >> 16) * A + (((uint32_t)(B & 0x0000FFFF) * A) >> 16))
-
-#define WEBRTC_SPL_SAT(a, b, c) (b > a ? a : b < c ? c : b)
-
-// Shifting with negative numbers allowed
-// Positive means left shift
-#define WEBRTC_SPL_SHIFT_W32(x, c) ((c) >= 0 ? (x) * (1 << (c)) : (x) >> -(c))
-
-// Shifting with negative numbers not allowed
-// We cannot do casting here due to signed/unsigned problem
-#define WEBRTC_SPL_LSHIFT_W32(x, c) ((x) << (c))
-
-#define WEBRTC_SPL_RSHIFT_U32(x, c) ((uint32_t)(x) >> (c))
-
-#define WEBRTC_SPL_RAND(a) ((int16_t)((((int16_t)a * 18816) >> 7) & 0x00007fff))
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define WEBRTC_SPL_MEMCPY_W16(v1, v2, length) \
-  memcpy(v1, v2, (length) * sizeof(int16_t))
-
-// inline functions:
-#include "webrtc/common_audio/signal_processing/include/spl_inl.h"
-
-// third party math functions
-#include "webrtc/common_audio/third_party/spl_sqrt_floor/spl_sqrt_floor.h"
-
-// Initialize SPL. Currently it contains only function pointer initialization.
-// If the underlying platform is known to be ARM-Neon (WEBRTC_HAS_NEON defined),
-// the pointers will be assigned to code optimized for Neon; otherwise, generic
-// C code will be assigned.
-// Note that this function MUST be called in any application that uses SPL
-// functions.
-void WebRtcSpl_Init(void);
-
-int16_t WebRtcSpl_GetScalingSquare(int16_t* in_vector,
-                                   size_t in_vector_length,
-                                   size_t times);
-
-// Copy and set operations. Implementation in copy_set_operations.c.
-// Descriptions at bottom of file.
-void WebRtcSpl_MemSetW16(int16_t* vector,
-                         int16_t set_value,
-                         size_t vector_length);
-void WebRtcSpl_MemSetW32(int32_t* vector,
-                         int32_t set_value,
-                         size_t vector_length);
-void WebRtcSpl_MemCpyReversedOrder(int16_t* out_vector,
-                                   int16_t* in_vector,
-                                   size_t vector_length);
-void WebRtcSpl_CopyFromEndW16(const int16_t* in_vector,
-                              size_t in_vector_length,
-                              size_t samples,
-                              int16_t* out_vector);
-void WebRtcSpl_ZerosArrayW16(int16_t* vector, size_t vector_length);
-void WebRtcSpl_ZerosArrayW32(int32_t* vector, size_t vector_length);
-// End: Copy and set operations.
-
-// Minimum and maximum operation functions and their pointers.
-// Implementation in min_max_operations.c.
-
-// Returns the largest absolute value in a signed 16-bit vector.
-//
-// Input:
-//      - vector : 16-bit input vector.
-//      - length : Number of samples in vector.
-//
-// Return value  : Maximum absolute value in vector.
-typedef int16_t (*MaxAbsValueW16)(const int16_t* vector, size_t length);
-extern MaxAbsValueW16 WebRtcSpl_MaxAbsValueW16;
-int16_t WebRtcSpl_MaxAbsValueW16C(const int16_t* vector, size_t length);
-#if defined(WEBRTC_HAS_NEON)
-int16_t WebRtcSpl_MaxAbsValueW16Neon(const int16_t* vector, size_t length);
-#endif
-#if defined(MIPS32_LE)
-int16_t WebRtcSpl_MaxAbsValueW16_mips(const int16_t* vector, size_t length);
-#endif
-
-// Returns the largest absolute value in a signed 32-bit vector.
-//
-// Input:
-//      - vector : 32-bit input vector.
-//      - length : Number of samples in vector.
-//
-// Return value  : Maximum absolute value in vector.
-typedef int32_t (*MaxAbsValueW32)(const int32_t* vector, size_t length);
-extern MaxAbsValueW32 WebRtcSpl_MaxAbsValueW32;
-int32_t WebRtcSpl_MaxAbsValueW32C(const int32_t* vector, size_t length);
-#if defined(WEBRTC_HAS_NEON)
-int32_t WebRtcSpl_MaxAbsValueW32Neon(const int32_t* vector, size_t length);
-#endif
-#if defined(MIPS_DSP_R1_LE)
-int32_t WebRtcSpl_MaxAbsValueW32_mips(const int32_t* vector, size_t length);
-#endif
-
-// Returns the maximum value of a 16-bit vector.
-//
-// Input:
-//      - vector : 16-bit input vector.
-//      - length : Number of samples in vector.
-//
-// Return value  : Maximum sample value in |vector|.
-typedef int16_t (*MaxValueW16)(const int16_t* vector, size_t length);
-extern MaxValueW16 WebRtcSpl_MaxValueW16;
-int16_t WebRtcSpl_MaxValueW16C(const int16_t* vector, size_t length);
-#if defined(WEBRTC_HAS_NEON)
-int16_t WebRtcSpl_MaxValueW16Neon(const int16_t* vector, size_t length);
-#endif
-#if defined(MIPS32_LE)
-int16_t WebRtcSpl_MaxValueW16_mips(const int16_t* vector, size_t length);
-#endif
-
-// Returns the maximum value of a 32-bit vector.
-//
-// Input:
-//      - vector : 32-bit input vector.
-//      - length : Number of samples in vector.
-//
-// Return value  : Maximum sample value in |vector|.
-typedef int32_t (*MaxValueW32)(const int32_t* vector, size_t length);
-extern MaxValueW32 WebRtcSpl_MaxValueW32;
-int32_t WebRtcSpl_MaxValueW32C(const int32_t* vector, size_t length);
-#if defined(WEBRTC_HAS_NEON)
-int32_t WebRtcSpl_MaxValueW32Neon(const int32_t* vector, size_t length);
-#endif
-#if defined(MIPS32_LE)
-int32_t WebRtcSpl_MaxValueW32_mips(const int32_t* vector, size_t length);
-#endif
-
-// Returns the minimum value of a 16-bit vector.
-//
-// Input:
-//      - vector : 16-bit input vector.
-//      - length : Number of samples in vector.
-//
-// Return value  : Minimum sample value in |vector|.
-typedef int16_t (*MinValueW16)(const int16_t* vector, size_t length);
-extern MinValueW16 WebRtcSpl_MinValueW16;
-int16_t WebRtcSpl_MinValueW16C(const int16_t* vector, size_t length);
-#if defined(WEBRTC_HAS_NEON)
-int16_t WebRtcSpl_MinValueW16Neon(const int16_t* vector, size_t length);
-#endif
-#if defined(MIPS32_LE)
-int16_t WebRtcSpl_MinValueW16_mips(const int16_t* vector, size_t length);
-#endif
-
-// Returns the minimum value of a 32-bit vector.
-//
-// Input:
-//      - vector : 32-bit input vector.
-//      - length : Number of samples in vector.
-//
-// Return value  : Minimum sample value in |vector|.
-typedef int32_t (*MinValueW32)(const int32_t* vector, size_t length);
-extern MinValueW32 WebRtcSpl_MinValueW32;
-int32_t WebRtcSpl_MinValueW32C(const int32_t* vector, size_t length);
-#if defined(WEBRTC_HAS_NEON)
-int32_t WebRtcSpl_MinValueW32Neon(const int32_t* vector, size_t length);
-#endif
-#if defined(MIPS32_LE)
-int32_t WebRtcSpl_MinValueW32_mips(const int32_t* vector, size_t length);
-#endif
-
-// Returns the vector index to the largest absolute value of a 16-bit vector.
-//
-// Input:
-//      - vector : 16-bit input vector.
-//      - length : Number of samples in vector.
-//
-// Return value  : Index to the maximum absolute value in vector.
-//                 If there are multiple equal maxima, return the index of the
-//                 first. -32768 will always have precedence over 32767 (despite
-//                 -32768 presenting an int16 absolute value of 32767).
-size_t WebRtcSpl_MaxAbsIndexW16(const int16_t* vector, size_t length);
-
-// Returns the vector index to the maximum sample value of a 16-bit vector.
-//
-// Input:
-//      - vector : 16-bit input vector.
-//      - length : Number of samples in vector.
-//
-// Return value  : Index to the maximum value in vector (if multiple
-//                 indexes have the maximum, return the first).
-size_t WebRtcSpl_MaxIndexW16(const int16_t* vector, size_t length);
-
-// Returns the vector index to the maximum sample value of a 32-bit vector.
-//
-// Input:
-//      - vector : 32-bit input vector.
-//      - length : Number of samples in vector.
-//
-// Return value  : Index to the maximum value in vector (if multiple
-//                 indexes have the maximum, return the first).
-size_t WebRtcSpl_MaxIndexW32(const int32_t* vector, size_t length);
-
-// Returns the vector index to the minimum sample value of a 16-bit vector.
-//
-// Input:
-//      - vector : 16-bit input vector.
-//      - length : Number of samples in vector.
-//
-// Return value  : Index to the mimimum value in vector  (if multiple
-//                 indexes have the minimum, return the first).
-size_t WebRtcSpl_MinIndexW16(const int16_t* vector, size_t length);
-
-// Returns the vector index to the minimum sample value of a 32-bit vector.
-//
-// Input:
-//      - vector : 32-bit input vector.
-//      - length : Number of samples in vector.
-//
-// Return value  : Index to the mimimum value in vector  (if multiple
-//                 indexes have the minimum, return the first).
-size_t WebRtcSpl_MinIndexW32(const int32_t* vector, size_t length);
-
-// End: Minimum and maximum operations.
-
-// Vector scaling operations. Implementation in vector_scaling_operations.c.
-// Description at bottom of file.
-void WebRtcSpl_VectorBitShiftW16(int16_t* out_vector,
-                                 size_t vector_length,
-                                 const int16_t* in_vector,
-                                 int16_t right_shifts);
-void WebRtcSpl_VectorBitShiftW32(int32_t* out_vector,
-                                 size_t vector_length,
-                                 const int32_t* in_vector,
-                                 int16_t right_shifts);
-void WebRtcSpl_VectorBitShiftW32ToW16(int16_t* out_vector,
-                                      size_t vector_length,
-                                      const int32_t* in_vector,
-                                      int right_shifts);
-void WebRtcSpl_ScaleVector(const int16_t* in_vector,
-                           int16_t* out_vector,
-                           int16_t gain,
-                           size_t vector_length,
-                           int16_t right_shifts);
-void WebRtcSpl_ScaleVectorWithSat(const int16_t* in_vector,
-                                  int16_t* out_vector,
-                                  int16_t gain,
-                                  size_t vector_length,
-                                  int16_t right_shifts);
-void WebRtcSpl_ScaleAndAddVectors(const int16_t* in_vector1,
-                                  int16_t gain1,
-                                  int right_shifts1,
-                                  const int16_t* in_vector2,
-                                  int16_t gain2,
-                                  int right_shifts2,
-                                  int16_t* out_vector,
-                                  size_t vector_length);
-
-// The functions (with related pointer) perform the vector operation:
-//   out_vector[k] = ((scale1 * in_vector1[k]) + (scale2 * in_vector2[k])
-//        + round_value) >> right_shifts,
-//   where  round_value = (1 << right_shifts) >> 1.
-//
-// Input:
-//      - in_vector1       : Input vector 1
-//      - in_vector1_scale : Gain to be used for vector 1
-//      - in_vector2       : Input vector 2
-//      - in_vector2_scale : Gain to be used for vector 2
-//      - right_shifts     : Number of right bit shifts to be applied
-//      - length           : Number of elements in the input vectors
-//
-// Output:
-//      - out_vector       : Output vector
-// Return value            : 0 if OK, -1 if (in_vector1 == null
-//                           || in_vector2 == null || out_vector == null
-//                           || length <= 0 || right_shift < 0).
-typedef int (*ScaleAndAddVectorsWithRound)(const int16_t* in_vector1,
-                                           int16_t in_vector1_scale,
-                                           const int16_t* in_vector2,
-                                           int16_t in_vector2_scale,
-                                           int right_shifts,
-                                           int16_t* out_vector,
-                                           size_t length);
-extern ScaleAndAddVectorsWithRound WebRtcSpl_ScaleAndAddVectorsWithRound;
-int WebRtcSpl_ScaleAndAddVectorsWithRoundC(const int16_t* in_vector1,
-                                           int16_t in_vector1_scale,
-                                           const int16_t* in_vector2,
-                                           int16_t in_vector2_scale,
-                                           int right_shifts,
-                                           int16_t* out_vector,
-                                           size_t length);
-#if defined(MIPS_DSP_R1_LE)
-int WebRtcSpl_ScaleAndAddVectorsWithRound_mips(const int16_t* in_vector1,
-                                               int16_t in_vector1_scale,
-                                               const int16_t* in_vector2,
-                                               int16_t in_vector2_scale,
-                                               int right_shifts,
-                                               int16_t* out_vector,
-                                               size_t length);
-#endif
-// End: Vector scaling operations.
-
-// iLBC specific functions. Implementations in ilbc_specific_functions.c.
-// Description at bottom of file.
-void WebRtcSpl_ReverseOrderMultArrayElements(int16_t* out_vector,
-                                             const int16_t* in_vector,
-                                             const int16_t* window,
-                                             size_t vector_length,
-                                             int16_t right_shifts);
-void WebRtcSpl_ElementwiseVectorMult(int16_t* out_vector,
-                                     const int16_t* in_vector,
-                                     const int16_t* window,
-                                     size_t vector_length,
-                                     int16_t right_shifts);
-void WebRtcSpl_AddVectorsAndShift(int16_t* out_vector,
-                                  const int16_t* in_vector1,
-                                  const int16_t* in_vector2,
-                                  size_t vector_length,
-                                  int16_t right_shifts);
-void WebRtcSpl_AddAffineVectorToVector(int16_t* out_vector,
-                                       int16_t* in_vector,
-                                       int16_t gain,
-                                       int32_t add_constant,
-                                       int16_t right_shifts,
-                                       size_t vector_length);
-void WebRtcSpl_AffineTransformVector(int16_t* out_vector,
-                                     int16_t* in_vector,
-                                     int16_t gain,
-                                     int32_t add_constant,
-                                     int16_t right_shifts,
-                                     size_t vector_length);
-// End: iLBC specific functions.
-
-// Signal processing operations.
-
-// A 32-bit fix-point implementation of auto-correlation computation
-//
-// Input:
-//      - in_vector        : Vector to calculate autocorrelation upon
-//      - in_vector_length : Length (in samples) of |vector|
-//      - order            : The order up to which the autocorrelation should be
-//                           calculated
-//
-// Output:
-//      - result           : auto-correlation values (values should be seen
-//                           relative to each other since the absolute values
-//                           might have been down shifted to avoid overflow)
-//
-//      - scale            : The number of left shifts required to obtain the
-//                           auto-correlation in Q0
-//
-// Return value            : Number of samples in |result|, i.e. (order+1)
-size_t WebRtcSpl_AutoCorrelation(const int16_t* in_vector,
-                                 size_t in_vector_length,
-                                 size_t order,
-                                 int32_t* result,
-                                 int* scale);
-
-// A 32-bit fix-point implementation of the Levinson-Durbin algorithm that
-// does NOT use the 64 bit class
-//
-// Input:
-//      - auto_corr : Vector with autocorrelation values of length >= |order|+1
-//      - order     : The LPC filter order (support up to order 20)
-//
-// Output:
-//      - lpc_coef  : lpc_coef[0..order] LPC coefficients in Q12
-//      - refl_coef : refl_coef[0...order-1]| Reflection coefficients in Q15
-//
-// Return value     : 1 for stable 0 for unstable
-int16_t WebRtcSpl_LevinsonDurbin(const int32_t* auto_corr,
-                                 int16_t* lpc_coef,
-                                 int16_t* refl_coef,
-                                 size_t order);
-
-// Converts reflection coefficients |refl_coef| to LPC coefficients |lpc_coef|.
-// This version is a 16 bit operation.
-//
-// NOTE: The 16 bit refl_coef -> lpc_coef conversion might result in a
-// "slightly unstable" filter (i.e., a pole just outside the unit circle) in
-// "rare" cases even if the reflection coefficients are stable.
-//
-// Input:
-//      - refl_coef : Reflection coefficients in Q15 that should be converted
-//                    to LPC coefficients
-//      - use_order : Number of coefficients in |refl_coef|
-//
-// Output:
-//      - lpc_coef  : LPC coefficients in Q12
-void WebRtcSpl_ReflCoefToLpc(const int16_t* refl_coef,
-                             int use_order,
-                             int16_t* lpc_coef);
-
-// Converts LPC coefficients |lpc_coef| to reflection coefficients |refl_coef|.
-// This version is a 16 bit operation.
-// The conversion is implemented by the step-down algorithm.
-//
-// Input:
-//      - lpc_coef  : LPC coefficients in Q12, that should be converted to
-//                    reflection coefficients
-//      - use_order : Number of coefficients in |lpc_coef|
-//
-// Output:
-//      - refl_coef : Reflection coefficients in Q15.
-void WebRtcSpl_LpcToReflCoef(int16_t* lpc_coef,
-                             int use_order,
-                             int16_t* refl_coef);
-
-// Calculates reflection coefficients (16 bit) from auto-correlation values
-//
-// Input:
-//      - auto_corr : Auto-correlation values
-//      - use_order : Number of coefficients wanted be calculated
-//
-// Output:
-//      - refl_coef : Reflection coefficients in Q15.
-void WebRtcSpl_AutoCorrToReflCoef(const int32_t* auto_corr,
-                                  int use_order,
-                                  int16_t* refl_coef);
-
-// The functions (with related pointer) calculate the cross-correlation between
-// two sequences |seq1| and |seq2|.
-// |seq1| is fixed and |seq2| slides as the pointer is increased with the
-// amount |step_seq2|. Note the arguments should obey the relationship:
-// |dim_seq| - 1 + |step_seq2| * (|dim_cross_correlation| - 1) <
-//      buffer size of |seq2|
-//
-// Input:
-//      - seq1           : First sequence (fixed throughout the correlation)
-//      - seq2           : Second sequence (slides |step_vector2| for each
-//                            new correlation)
-//      - dim_seq        : Number of samples to use in the cross-correlation
-//      - dim_cross_correlation : Number of cross-correlations to calculate (the
-//                            start position for |vector2| is updated for each
-//                            new one)
-//      - right_shifts   : Number of right bit shifts to use. This will
-//                            become the output Q-domain.
-//      - step_seq2      : How many (positive or negative) steps the
-//                            |vector2| pointer should be updated for each new
-//                            cross-correlation value.
-//
-// Output:
-//      - cross_correlation : The cross-correlation in Q(-right_shifts)
-typedef void (*CrossCorrelation)(int32_t* cross_correlation,
-                                 const int16_t* seq1,
-                                 const int16_t* seq2,
-                                 size_t dim_seq,
-                                 size_t dim_cross_correlation,
-                                 int right_shifts,
-                                 int step_seq2);
-extern CrossCorrelation WebRtcSpl_CrossCorrelation;
-void WebRtcSpl_CrossCorrelationC(int32_t* cross_correlation,
-                                 const int16_t* seq1,
-                                 const int16_t* seq2,
-                                 size_t dim_seq,
-                                 size_t dim_cross_correlation,
-                                 int right_shifts,
-                                 int step_seq2);
-#if defined(WEBRTC_HAS_NEON)
-void WebRtcSpl_CrossCorrelationNeon(int32_t* cross_correlation,
-                                    const int16_t* seq1,
-                                    const int16_t* seq2,
-                                    size_t dim_seq,
-                                    size_t dim_cross_correlation,
-                                    int right_shifts,
-                                    int step_seq2);
-#endif
-#if defined(MIPS32_LE)
-void WebRtcSpl_CrossCorrelation_mips(int32_t* cross_correlation,
-                                     const int16_t* seq1,
-                                     const int16_t* seq2,
-                                     size_t dim_seq,
-                                     size_t dim_cross_correlation,
-                                     int right_shifts,
-                                     int step_seq2);
-#endif
-
-// Creates (the first half of) a Hanning window. Size must be at least 1 and
-// at most 512.
-//
-// Input:
-//      - size      : Length of the requested Hanning window (1 to 512)
-//
-// Output:
-//      - window    : Hanning vector in Q14.
-void WebRtcSpl_GetHanningWindow(int16_t* window, size_t size);
-
-// Calculates y[k] = sqrt(1 - x[k]^2) for each element of the input vector
-// |in_vector|. Input and output values are in Q15.
-//
-// Inputs:
-//      - in_vector     : Values to calculate sqrt(1 - x^2) of
-//      - vector_length : Length of vector |in_vector|
-//
-// Output:
-//      - out_vector    : Output values in Q15
-void WebRtcSpl_SqrtOfOneMinusXSquared(int16_t* in_vector,
-                                      size_t vector_length,
-                                      int16_t* out_vector);
-// End: Signal processing operations.
-
-// Randomization functions. Implementations collected in
-// randomization_functions.c and descriptions at bottom of this file.
-int16_t WebRtcSpl_RandU(uint32_t* seed);
-int16_t WebRtcSpl_RandN(uint32_t* seed);
-int16_t WebRtcSpl_RandUArray(int16_t* vector,
-                             int16_t vector_length,
-                             uint32_t* seed);
-// End: Randomization functions.
-
-// Math functions
-int32_t WebRtcSpl_Sqrt(int32_t value);
-
-// Divisions. Implementations collected in division_operations.c and
-// descriptions at bottom of this file.
-uint32_t WebRtcSpl_DivU32U16(uint32_t num, uint16_t den);
-int32_t WebRtcSpl_DivW32W16(int32_t num, int16_t den);
-int16_t WebRtcSpl_DivW32W16ResW16(int32_t num, int16_t den);
-int32_t WebRtcSpl_DivResultInQ31(int32_t num, int32_t den);
-int32_t WebRtcSpl_DivW32HiLow(int32_t num, int16_t den_hi, int16_t den_low);
-// End: Divisions.
-
-int32_t WebRtcSpl_Energy(int16_t* vector,
-                         size_t vector_length,
-                         int* scale_factor);
-
-// Filter operations.
-size_t WebRtcSpl_FilterAR(const int16_t* ar_coef,
-                          size_t ar_coef_length,
-                          const int16_t* in_vector,
-                          size_t in_vector_length,
-                          int16_t* filter_state,
-                          size_t filter_state_length,
-                          int16_t* filter_state_low,
-                          size_t filter_state_low_length,
-                          int16_t* out_vector,
-                          int16_t* out_vector_low,
-                          size_t out_vector_low_length);
-
-// WebRtcSpl_FilterMAFastQ12(...)
-//
-// Performs a MA filtering on a vector in Q12
-//
-// Input:
-//      - in_vector         : Input samples (state in positions
-//                            in_vector[-order] .. in_vector[-1])
-//      - ma_coef           : Filter coefficients (in Q12)
-//      - ma_coef_length    : Number of B coefficients (order+1)
-//      - vector_length     : Number of samples to be filtered
-//
-// Output:
-//      - out_vector        : Filtered samples
-//
-void WebRtcSpl_FilterMAFastQ12(const int16_t* in_vector,
-                               int16_t* out_vector,
-                               const int16_t* ma_coef,
-                               size_t ma_coef_length,
-                               size_t vector_length);
-
-// Performs a AR filtering on a vector in Q12
-// Input:
-//      - data_in            : Input samples
-//      - data_out           : State information in positions
-//                               data_out[-order] .. data_out[-1]
-//      - coefficients       : Filter coefficients (in Q12)
-//      - coefficients_length: Number of coefficients (order+1)
-//      - data_length        : Number of samples to be filtered
-// Output:
-//      - data_out           : Filtered samples
-void WebRtcSpl_FilterARFastQ12(const int16_t* data_in,
-                               int16_t* data_out,
-                               const int16_t* __restrict coefficients,
-                               size_t coefficients_length,
-                               size_t data_length);
-
-// The functions (with related pointer) perform a MA down sampling filter
-// on a vector.
-// Input:
-//      - data_in            : Input samples (state in positions
-//                               data_in[-order] .. data_in[-1])
-//      - data_in_length     : Number of samples in |data_in| to be filtered.
-//                               This must be at least
-//                               |delay| + |factor|*(|out_vector_length|-1) + 1)
-//      - data_out_length    : Number of down sampled samples desired
-//      - coefficients       : Filter coefficients (in Q12)
-//      - coefficients_length: Number of coefficients (order+1)
-//      - factor             : Decimation factor
-//      - delay              : Delay of filter (compensated for in out_vector)
-// Output:
-//      - data_out           : Filtered samples
-// Return value              : 0 if OK, -1 if |in_vector| is too short
-typedef int (*DownsampleFast)(const int16_t* data_in,
-                              size_t data_in_length,
-                              int16_t* data_out,
-                              size_t data_out_length,
-                              const int16_t* __restrict coefficients,
-                              size_t coefficients_length,
-                              int factor,
-                              size_t delay);
-extern DownsampleFast WebRtcSpl_DownsampleFast;
-int WebRtcSpl_DownsampleFastC(const int16_t* data_in,
-                              size_t data_in_length,
-                              int16_t* data_out,
-                              size_t data_out_length,
-                              const int16_t* __restrict coefficients,
-                              size_t coefficients_length,
-                              int factor,
-                              size_t delay);
-#if defined(WEBRTC_HAS_NEON)
-int WebRtcSpl_DownsampleFastNeon(const int16_t* data_in,
-                                 size_t data_in_length,
-                                 int16_t* data_out,
-                                 size_t data_out_length,
-                                 const int16_t* __restrict coefficients,
-                                 size_t coefficients_length,
-                                 int factor,
-                                 size_t delay);
-#endif
-#if defined(MIPS32_LE)
-int WebRtcSpl_DownsampleFast_mips(const int16_t* data_in,
-                                  size_t data_in_length,
-                                  int16_t* data_out,
-                                  size_t data_out_length,
-                                  const int16_t* __restrict coefficients,
-                                  size_t coefficients_length,
-                                  int factor,
-                                  size_t delay);
-#endif
-
-// End: Filter operations.
-
-// FFT operations
-
-int WebRtcSpl_ComplexFFT(int16_t vector[], int stages, int mode);
-int WebRtcSpl_ComplexIFFT(int16_t vector[], int stages, int mode);
-
-// Treat a 16-bit complex data buffer |complex_data| as an array of 32-bit
-// values, and swap elements whose indexes are bit-reverses of each other.
-//
-// Input:
-//      - complex_data  : Complex data buffer containing 2^|stages| real
-//                        elements interleaved with 2^|stages| imaginary
-//                        elements: [Re Im Re Im Re Im....]
-//      - stages        : Number of FFT stages. Must be at least 3 and at most
-//                        10, since the table WebRtcSpl_kSinTable1024[] is 1024
-//                        elements long.
-//
-// Output:
-//      - complex_data  : The complex data buffer.
-
-void WebRtcSpl_ComplexBitReverse(int16_t* __restrict complex_data, int stages);
-
-// End: FFT operations
-
-/************************************************************
- *
- * RESAMPLING FUNCTIONS AND THEIR STRUCTS ARE DEFINED BELOW
- *
- ************************************************************/
-
-/*******************************************************************
- * resample.c
- *
- * Includes the following resampling combinations
- * 22 kHz -> 16 kHz
- * 16 kHz -> 22 kHz
- * 22 kHz ->  8 kHz
- *  8 kHz -> 22 kHz
- *
- ******************************************************************/
-
-// state structure for 22 -> 16 resampler
-typedef struct {
-  int32_t S_22_44[8];
-  int32_t S_44_32[8];
-  int32_t S_32_16[8];
-} WebRtcSpl_State22khzTo16khz;
-
-void WebRtcSpl_Resample22khzTo16khz(const int16_t* in,
-                                    int16_t* out,
-                                    WebRtcSpl_State22khzTo16khz* state,
-                                    int32_t* tmpmem);
-
-void WebRtcSpl_ResetResample22khzTo16khz(WebRtcSpl_State22khzTo16khz* state);
-
-// state structure for 16 -> 22 resampler
-typedef struct {
-  int32_t S_16_32[8];
-  int32_t S_32_22[8];
-} WebRtcSpl_State16khzTo22khz;
-
-void WebRtcSpl_Resample16khzTo22khz(const int16_t* in,
-                                    int16_t* out,
-                                    WebRtcSpl_State16khzTo22khz* state,
-                                    int32_t* tmpmem);
-
-void WebRtcSpl_ResetResample16khzTo22khz(WebRtcSpl_State16khzTo22khz* state);
-
-// state structure for 22 -> 8 resampler
-typedef struct {
-  int32_t S_22_22[16];
-  int32_t S_22_16[8];
-  int32_t S_16_8[8];
-} WebRtcSpl_State22khzTo8khz;
-
-void WebRtcSpl_Resample22khzTo8khz(const int16_t* in,
-                                   int16_t* out,
-                                   WebRtcSpl_State22khzTo8khz* state,
-                                   int32_t* tmpmem);
-
-void WebRtcSpl_ResetResample22khzTo8khz(WebRtcSpl_State22khzTo8khz* state);
-
-// state structure for 8 -> 22 resampler
-typedef struct {
-  int32_t S_8_16[8];
-  int32_t S_16_11[8];
-  int32_t S_11_22[8];
-} WebRtcSpl_State8khzTo22khz;
-
-void WebRtcSpl_Resample8khzTo22khz(const int16_t* in,
-                                   int16_t* out,
-                                   WebRtcSpl_State8khzTo22khz* state,
-                                   int32_t* tmpmem);
-
-void WebRtcSpl_ResetResample8khzTo22khz(WebRtcSpl_State8khzTo22khz* state);
-
-/*******************************************************************
- * resample_fractional.c
- * Functions for internal use in the other resample functions
- *
- * Includes the following resampling combinations
- * 48 kHz -> 32 kHz
- * 32 kHz -> 24 kHz
- * 44 kHz -> 32 kHz
- *
- ******************************************************************/
-
-void WebRtcSpl_Resample48khzTo32khz(const int32_t* In, int32_t* Out, size_t K);
-
-void WebRtcSpl_Resample32khzTo24khz(const int32_t* In, int32_t* Out, size_t K);
-
-void WebRtcSpl_Resample44khzTo32khz(const int32_t* In, int32_t* Out, size_t K);
-
-/*******************************************************************
- * resample_48khz.c
- *
- * Includes the following resampling combinations
- * 48 kHz -> 16 kHz
- * 16 kHz -> 48 kHz
- * 48 kHz ->  8 kHz
- *  8 kHz -> 48 kHz
- *
- ******************************************************************/
-
-typedef struct {
-  int32_t S_48_48[16];
-  int32_t S_48_32[8];
-  int32_t S_32_16[8];
-} WebRtcSpl_State48khzTo16khz;
-
-void WebRtcSpl_Resample48khzTo16khz(const int16_t* in,
-                                    int16_t* out,
-                                    WebRtcSpl_State48khzTo16khz* state,
-                                    int32_t* tmpmem);
-
-void WebRtcSpl_ResetResample48khzTo16khz(WebRtcSpl_State48khzTo16khz* state);
-
-typedef struct {
-  int32_t S_16_32[8];
-  int32_t S_32_24[8];
-  int32_t S_24_48[8];
-} WebRtcSpl_State16khzTo48khz;
-
-void WebRtcSpl_Resample16khzTo48khz(const int16_t* in,
-                                    int16_t* out,
-                                    WebRtcSpl_State16khzTo48khz* state,
-                                    int32_t* tmpmem);
-
-void WebRtcSpl_ResetResample16khzTo48khz(WebRtcSpl_State16khzTo48khz* state);
-
-typedef struct {
-  int32_t S_48_24[8];
-  int32_t S_24_24[16];
-  int32_t S_24_16[8];
-  int32_t S_16_8[8];
-} WebRtcSpl_State48khzTo8khz;
-
-void WebRtcSpl_Resample48khzTo8khz(const int16_t* in,
-                                   int16_t* out,
-                                   WebRtcSpl_State48khzTo8khz* state,
-                                   int32_t* tmpmem);
-
-void WebRtcSpl_ResetResample48khzTo8khz(WebRtcSpl_State48khzTo8khz* state);
-
-typedef struct {
-  int32_t S_8_16[8];
-  int32_t S_16_12[8];
-  int32_t S_12_24[8];
-  int32_t S_24_48[8];
-} WebRtcSpl_State8khzTo48khz;
-
-void WebRtcSpl_Resample8khzTo48khz(const int16_t* in,
-                                   int16_t* out,
-                                   WebRtcSpl_State8khzTo48khz* state,
-                                   int32_t* tmpmem);
-
-void WebRtcSpl_ResetResample8khzTo48khz(WebRtcSpl_State8khzTo48khz* state);
-
-/*******************************************************************
- * resample_by_2.c
- *
- * Includes down and up sampling by a factor of two.
- *
- ******************************************************************/
-
-void WebRtcSpl_DownsampleBy2(const int16_t* in,
-                             size_t len,
-                             int16_t* out,
-                             int32_t* filtState);
-
-void WebRtcSpl_UpsampleBy2(const int16_t* in,
-                           size_t len,
-                           int16_t* out,
-                           int32_t* filtState);
-
-/************************************************************
- * END OF RESAMPLING FUNCTIONS
- ************************************************************/
-void WebRtcSpl_AnalysisQMF(const int16_t* in_data,
-                           size_t in_data_length,
-                           int16_t* low_band,
-                           int16_t* high_band,
-                           int32_t* filter_state1,
-                           int32_t* filter_state2);
-void WebRtcSpl_SynthesisQMF(const int16_t* low_band,
-                            const int16_t* high_band,
-                            size_t band_length,
-                            int16_t* out_data,
-                            int32_t* filter_state1,
-                            int32_t* filter_state2);
-
-#ifdef __cplusplus
-}
-#endif  // __cplusplus
-#endif  // COMMON_AUDIO_SIGNAL_PROCESSING_INCLUDE_SIGNAL_PROCESSING_LIBRARY_H_
-
-//
-// WebRtcSpl_AddSatW16(...)
-// WebRtcSpl_AddSatW32(...)
-//
-// Returns the result of a saturated 16-bit, respectively 32-bit, addition of
-// the numbers specified by the |var1| and |var2| parameters.
-//
-// Input:
-//      - var1      : Input variable 1
-//      - var2      : Input variable 2
-//
-// Return value     : Added and saturated value
-//
-
-//
-// WebRtcSpl_SubSatW16(...)
-// WebRtcSpl_SubSatW32(...)
-//
-// Returns the result of a saturated 16-bit, respectively 32-bit, subtraction
-// of the numbers specified by the |var1| and |var2| parameters.
-//
-// Input:
-//      - var1      : Input variable 1
-//      - var2      : Input variable 2
-//
-// Returned value   : Subtracted and saturated value
-//
-
-//
-// WebRtcSpl_GetSizeInBits(...)
-//
-// Returns the # of bits that are needed at the most to represent the number
-// specified by the |value| parameter.
-//
-// Input:
-//      - value     : Input value
-//
-// Return value     : Number of bits needed to represent |value|
-//
-
-//
-// WebRtcSpl_NormW32(...)
-//
-// Norm returns the # of left shifts required to 32-bit normalize the 32-bit
-// signed number specified by the |value| parameter.
-//
-// Input:
-//      - value     : Input value
-//
-// Return value     : Number of bit shifts needed to 32-bit normalize |value|
-//
-
-//
-// WebRtcSpl_NormW16(...)
-//
-// Norm returns the # of left shifts required to 16-bit normalize the 16-bit
-// signed number specified by the |value| parameter.
-//
-// Input:
-//      - value     : Input value
-//
-// Return value     : Number of bit shifts needed to 32-bit normalize |value|
-//
-
-//
-// WebRtcSpl_NormU32(...)
-//
-// Norm returns the # of left shifts required to 32-bit normalize the unsigned
-// 32-bit number specified by the |value| parameter.
-//
-// Input:
-//      - value     : Input value
-//
-// Return value     : Number of bit shifts needed to 32-bit normalize |value|
-//
-
-//
-// WebRtcSpl_GetScalingSquare(...)
-//
-// Returns the # of bits required to scale the samples specified in the
-// |in_vector| parameter so that, if the squares of the samples are added the
-// # of times specified by the |times| parameter, the 32-bit addition will not
-// overflow (result in int32_t).
-//
-// Input:
-//      - in_vector         : Input vector to check scaling on
-//      - in_vector_length  : Samples in |in_vector|
-//      - times             : Number of additions to be performed
-//
-// Return value             : Number of right bit shifts needed to avoid
-//                            overflow in the addition calculation
-//
-
-//
-// WebRtcSpl_MemSetW16(...)
-//
-// Sets all the values in the int16_t vector |vector| of length
-// |vector_length| to the specified value |set_value|
-//
-// Input:
-//      - vector        : Pointer to the int16_t vector
-//      - set_value     : Value specified
-//      - vector_length : Length of vector
-//
-
-//
-// WebRtcSpl_MemSetW32(...)
-//
-// Sets all the values in the int32_t vector |vector| of length
-// |vector_length| to the specified value |set_value|
-//
-// Input:
-//      - vector        : Pointer to the int16_t vector
-//      - set_value     : Value specified
-//      - vector_length : Length of vector
-//
-
-//
-// WebRtcSpl_MemCpyReversedOrder(...)
-//
-// Copies all the values from the source int16_t vector |in_vector| to a
-// destination int16_t vector |out_vector|. It is done in reversed order,
-// meaning that the first sample of |in_vector| is copied to the last sample of
-// the |out_vector|. The procedure continues until the last sample of
-// |in_vector| has been copied to the first sample of |out_vector|. This
-// creates a reversed vector. Used in e.g. prediction in iLBC.
-//
-// Input:
-//      - in_vector     : Pointer to the first sample in a int16_t vector
-//                        of length |length|
-//      - vector_length : Number of elements to copy
-//
-// Output:
-//      - out_vector    : Pointer to the last sample in a int16_t vector
-//                        of length |length|
-//
-
-//
-// WebRtcSpl_CopyFromEndW16(...)
-//
-// Copies the rightmost |samples| of |in_vector| (of length |in_vector_length|)
-// to the vector |out_vector|.
-//
-// Input:
-//      - in_vector         : Input vector
-//      - in_vector_length  : Number of samples in |in_vector|
-//      - samples           : Number of samples to extract (from right side)
-//                            from |in_vector|
-//
-// Output:
-//      - out_vector        : Vector with the requested samples
-//
-
-//
-// WebRtcSpl_ZerosArrayW16(...)
-// WebRtcSpl_ZerosArrayW32(...)
-//
-// Inserts the value "zero" in all positions of a w16 and a w32 vector
-// respectively.
-//
-// Input:
-//      - vector_length : Number of samples in vector
-//
-// Output:
-//      - vector        : Vector containing all zeros
-//
-
-//
-// WebRtcSpl_VectorBitShiftW16(...)
-// WebRtcSpl_VectorBitShiftW32(...)
-//
-// Bit shifts all the values in a vector up or downwards. Different calls for
-// int16_t and int32_t vectors respectively.
-//
-// Input:
-//      - vector_length : Length of vector
-//      - in_vector     : Pointer to the vector that should be bit shifted
-//      - right_shifts  : Number of right bit shifts (negative value gives left
-//                        shifts)
-//
-// Output:
-//      - out_vector    : Pointer to the result vector (can be the same as
-//                        |in_vector|)
-//
-
-//
-// WebRtcSpl_VectorBitShiftW32ToW16(...)
-//
-// Bit shifts all the values in a int32_t vector up or downwards and
-// stores the result as an int16_t vector. The function will saturate the
-// signal if needed, before storing in the output vector.
-//
-// Input:
-//      - vector_length : Length of vector
-//      - in_vector     : Pointer to the vector that should be bit shifted
-//      - right_shifts  : Number of right bit shifts (negative value gives left
-//                        shifts)
-//
-// Output:
-//      - out_vector    : Pointer to the result vector (can be the same as
-//                        |in_vector|)
-//
-
-//
-// WebRtcSpl_ScaleVector(...)
-//
-// Performs the vector operation:
-//  out_vector[k] = (gain*in_vector[k])>>right_shifts
-//
-// Input:
-//      - in_vector     : Input vector
-//      - gain          : Scaling gain
-//      - vector_length : Elements in the |in_vector|
-//      - right_shifts  : Number of right bit shifts applied
-//
-// Output:
-//      - out_vector    : Output vector (can be the same as |in_vector|)
-//
-
-//
-// WebRtcSpl_ScaleVectorWithSat(...)
-//
-// Performs the vector operation:
-//  out_vector[k] = SATURATE( (gain*in_vector[k])>>right_shifts )
-//
-// Input:
-//      - in_vector     : Input vector
-//      - gain          : Scaling gain
-//      - vector_length : Elements in the |in_vector|
-//      - right_shifts  : Number of right bit shifts applied
-//
-// Output:
-//      - out_vector    : Output vector (can be the same as |in_vector|)
-//
-
-//
-// WebRtcSpl_ScaleAndAddVectors(...)
-//
-// Performs the vector operation:
-//  out_vector[k] = (gain1*in_vector1[k])>>right_shifts1
-//                  + (gain2*in_vector2[k])>>right_shifts2
-//
-// Input:
-//      - in_vector1    : Input vector 1
-//      - gain1         : Gain to be used for vector 1
-//      - right_shifts1 : Right bit shift to be used for vector 1
-//      - in_vector2    : Input vector 2
-//      - gain2         : Gain to be used for vector 2
-//      - right_shifts2 : Right bit shift to be used for vector 2
-//      - vector_length : Elements in the input vectors
-//
-// Output:
-//      - out_vector    : Output vector
-//
-
-//
-// WebRtcSpl_ReverseOrderMultArrayElements(...)
-//
-// Performs the vector operation:
-//  out_vector[n] = (in_vector[n]*window[-n])>>right_shifts
-//
-// Input:
-//      - in_vector     : Input vector
-//      - window        : Window vector (should be reversed). The pointer
-//                        should be set to the last value in the vector
-//      - right_shifts  : Number of right bit shift to be applied after the
-//                        multiplication
-//      - vector_length : Number of elements in |in_vector|
-//
-// Output:
-//      - out_vector    : Output vector (can be same as |in_vector|)
-//
-
-//
-// WebRtcSpl_ElementwiseVectorMult(...)
-//
-// Performs the vector operation:
-//  out_vector[n] = (in_vector[n]*window[n])>>right_shifts
-//
-// Input:
-//      - in_vector     : Input vector
-//      - window        : Window vector.
-//      - right_shifts  : Number of right bit shift to be applied after the
-//                        multiplication
-//      - vector_length : Number of elements in |in_vector|
-//
-// Output:
-//      - out_vector    : Output vector (can be same as |in_vector|)
-//
-
-//
-// WebRtcSpl_AddVectorsAndShift(...)
-//
-// Performs the vector operation:
-//  out_vector[k] = (in_vector1[k] + in_vector2[k])>>right_shifts
-//
-// Input:
-//      - in_vector1    : Input vector 1
-//      - in_vector2    : Input vector 2
-//      - right_shifts  : Number of right bit shift to be applied after the
-//                        multiplication
-//      - vector_length : Number of elements in |in_vector1| and |in_vector2|
-//
-// Output:
-//      - out_vector    : Output vector (can be same as |in_vector1|)
-//
-
-//
-// WebRtcSpl_AddAffineVectorToVector(...)
-//
-// Adds an affine transformed vector to another vector |out_vector|, i.e,
-// performs
-//  out_vector[k] += (in_vector[k]*gain+add_constant)>>right_shifts
-//
-// Input:
-//      - in_vector     : Input vector
-//      - gain          : Gain value, used to multiply the in vector with
-//      - add_constant  : Constant value to add (usually 1<<(right_shifts-1),
-//                        but others can be used as well
-//      - right_shifts  : Number of right bit shifts (0-16)
-//      - vector_length : Number of samples in |in_vector| and |out_vector|
-//
-// Output:
-//      - out_vector    : Vector with the output
-//
-
-//
-// WebRtcSpl_AffineTransformVector(...)
-//
-// Affine transforms a vector, i.e, performs
-//  out_vector[k] = (in_vector[k]*gain+add_constant)>>right_shifts
-//
-// Input:
-//      - in_vector     : Input vector
-//      - gain          : Gain value, used to multiply the in vector with
-//      - add_constant  : Constant value to add (usually 1<<(right_shifts-1),
-//                        but others can be used as well
-//      - right_shifts  : Number of right bit shifts (0-16)
-//      - vector_length : Number of samples in |in_vector| and |out_vector|
-//
-// Output:
-//      - out_vector    : Vector with the output
-//
-
-//
-// WebRtcSpl_IncreaseSeed(...)
-//
-// Increases the seed (and returns the new value)
-//
-// Input:
-//      - seed      : Seed for random calculation
-//
-// Output:
-//      - seed      : Updated seed value
-//
-// Return value     : The new seed value
-//
-
-//
-// WebRtcSpl_RandU(...)
-//
-// Produces a uniformly distributed value in the int16_t range
-//
-// Input:
-//      - seed      : Seed for random calculation
-//
-// Output:
-//      - seed      : Updated seed value
-//
-// Return value     : Uniformly distributed value in the range
-//                    [Word16_MIN...Word16_MAX]
-//
-
-//
-// WebRtcSpl_RandN(...)
-//
-// Produces a normal distributed value in the int16_t range
-//
-// Input:
-//      - seed      : Seed for random calculation
-//
-// Output:
-//      - seed      : Updated seed value
-//
-// Return value     : N(0,1) value in the Q13 domain
-//
-
-//
-// WebRtcSpl_RandUArray(...)
-//
-// Produces a uniformly distributed vector with elements in the int16_t
-// range
-//
-// Input:
-//      - vector_length : Samples wanted in the vector
-//      - seed          : Seed for random calculation
-//
-// Output:
-//      - vector        : Vector with the uniform values
-//      - seed          : Updated seed value
-//
-// Return value         : Number of samples in vector, i.e., |vector_length|
-//
-
-//
-// WebRtcSpl_Sqrt(...)
-//
-// Returns the square root of the input value |value|. The precision of this
-// function is integer precision, i.e., sqrt(8) gives 2 as answer.
-// If |value| is a negative number then 0 is returned.
-//
-// Algorithm:
-//
-// A sixth order Taylor Series expansion is used here to compute the square
-// root of a number y^0.5 = (1+x)^0.5
-// where
-// x = y-1
-//   = 1+(x/2)-0.5*((x/2)^2+0.5*((x/2)^3-0.625*((x/2)^4+0.875*((x/2)^5)
-// 0.5 <= x < 1
-//
-// Input:
-//      - value     : Value to calculate sqrt of
-//
-// Return value     : Result of the sqrt calculation
-//
-
-//
-// WebRtcSpl_DivU32U16(...)
-//
-// Divides a uint32_t |num| by a uint16_t |den|.
-//
-// If |den|==0, (uint32_t)0xFFFFFFFF is returned.
-//
-// Input:
-//      - num       : Numerator
-//      - den       : Denominator
-//
-// Return value     : Result of the division (as a uint32_t), i.e., the
-//                    integer part of num/den.
-//
-
-//
-// WebRtcSpl_DivW32W16(...)
-//
-// Divides a int32_t |num| by a int16_t |den|.
-//
-// If |den|==0, (int32_t)0x7FFFFFFF is returned.
-//
-// Input:
-//      - num       : Numerator
-//      - den       : Denominator
-//
-// Return value     : Result of the division (as a int32_t), i.e., the
-//                    integer part of num/den.
-//
-
-//
-// WebRtcSpl_DivW32W16ResW16(...)
-//
-// Divides a int32_t |num| by a int16_t |den|, assuming that the
-// result is less than 32768, otherwise an unpredictable result will occur.
-//
-// If |den|==0, (int16_t)0x7FFF is returned.
-//
-// Input:
-//      - num       : Numerator
-//      - den       : Denominator
-//
-// Return value     : Result of the division (as a int16_t), i.e., the
-//                    integer part of num/den.
-//
-
-//
-// WebRtcSpl_DivResultInQ31(...)
-//
-// Divides a int32_t |num| by a int16_t |den|, assuming that the
-// absolute value of the denominator is larger than the numerator, otherwise
-// an unpredictable result will occur.
-//
-// Input:
-//      - num       : Numerator
-//      - den       : Denominator
-//
-// Return value     : Result of the division in Q31.
-//
-
-//
-// WebRtcSpl_DivW32HiLow(...)
-//
-// Divides a int32_t |num| by a denominator in hi, low format. The
-// absolute value of the denominator has to be larger (or equal to) the
-// numerator.
-//
-// Input:
-//      - num       : Numerator
-//      - den_hi    : High part of denominator
-//      - den_low   : Low part of denominator
-//
-// Return value     : Divided value in Q31
-//
-
-//
-// WebRtcSpl_Energy(...)
-//
-// Calculates the energy of a vector
-//
-// Input:
-//      - vector        : Vector which the energy should be calculated on
-//      - vector_length : Number of samples in vector
-//
-// Output:
-//      - scale_factor  : Number of left bit shifts needed to get the physical
-//                        energy value, i.e, to get the Q0 value
-//
-// Return value         : Energy value in Q(-|scale_factor|)
-//
-
-//
-// WebRtcSpl_FilterAR(...)
-//
-// Performs a 32-bit AR filtering on a vector in Q12
-//
-// Input:
-//  - ar_coef                   : AR-coefficient vector (values in Q12),
-//                                ar_coef[0] must be 4096.
-//  - ar_coef_length            : Number of coefficients in |ar_coef|.
-//  - in_vector                 : Vector to be filtered.
-//  - in_vector_length          : Number of samples in |in_vector|.
-//  - filter_state              : Current state (higher part) of the filter.
-//  - filter_state_length       : Length (in samples) of |filter_state|.
-//  - filter_state_low          : Current state (lower part) of the filter.
-//  - filter_state_low_length   : Length (in samples) of |filter_state_low|.
-//  - out_vector_low_length     : Maximum length (in samples) of
-//                                |out_vector_low|.
-//
-// Output:
-//  - filter_state              : Updated state (upper part) vector.
-//  - filter_state_low          : Updated state (lower part) vector.
-//  - out_vector                : Vector containing the upper part of the
-//                                filtered values.
-//  - out_vector_low            : Vector containing the lower part of the
-//                                filtered values.
-//
-// Return value                 : Number of samples in the |out_vector|.
-//
-
-//
-// WebRtcSpl_ComplexIFFT(...)
-//
-// Complex Inverse FFT
-//
-// Computes an inverse complex 2^|stages|-point FFT on the input vector, which
-// is in bit-reversed order. The original content of the vector is destroyed in
-// the process, since the input is overwritten by the output, normal-ordered,
-// FFT vector. With X as the input complex vector, y as the output complex
-// vector and with M = 2^|stages|, the following is computed:
-//
-//        M-1
-// y(k) = sum[X(i)*[cos(2*pi*i*k/M) + j*sin(2*pi*i*k/M)]]
-//        i=0
-//
-// The implementations are optimized for speed, not for code size. It uses the
-// decimation-in-time algorithm with radix-2 butterfly technique.
-//
-// Input:
-//      - vector    : In pointer to complex vector containing 2^|stages|
-//                    real elements interleaved with 2^|stages| imaginary
-//                    elements.
-//                    [ReImReImReIm....]
-//                    The elements are in Q(-scale) domain, see more on Return
-//                    Value below.
-//
-//      - stages    : Number of FFT stages. Must be at least 3 and at most 10,
-//                    since the table WebRtcSpl_kSinTable1024[] is 1024
-//                    elements long.
-//
-//      - mode      : This parameter gives the user to choose how the FFT
-//                    should work.
-//                    mode==0: Low-complexity and Low-accuracy mode
-//                    mode==1: High-complexity and High-accuracy mode
-//
-// Output:
-//      - vector    : Out pointer to the FFT vector (the same as input).
-//
-// Return Value     : The scale value that tells the number of left bit shifts
-//                    that the elements in the |vector| should be shifted with
-//                    in order to get Q0 values, i.e. the physically correct
-//                    values. The scale parameter is always 0 or positive,
-//                    except if N>1024 (|stages|>10), which returns a scale
-//                    value of -1, indicating error.
-//
-
-//
-// WebRtcSpl_ComplexFFT(...)
-//
-// Complex FFT
-//
-// Computes a complex 2^|stages|-point FFT on the input vector, which is in
-// bit-reversed order. The original content of the vector is destroyed in
-// the process, since the input is overwritten by the output, normal-ordered,
-// FFT vector. With x as the input complex vector, Y as the output complex
-// vector and with M = 2^|stages|, the following is computed:
-//
-//              M-1
-// Y(k) = 1/M * sum[x(i)*[cos(2*pi*i*k/M) + j*sin(2*pi*i*k/M)]]
-//              i=0
-//
-// The implementations are optimized for speed, not for code size. It uses the
-// decimation-in-time algorithm with radix-2 butterfly technique.
-//
-// This routine prevents overflow by scaling by 2 before each FFT stage. This is
-// a fixed scaling, for proper normalization - there will be log2(n) passes, so
-// this results in an overall factor of 1/n, distributed to maximize arithmetic
-// accuracy.
-//
-// Input:
-//      - vector    : In pointer to complex vector containing 2^|stages| real
-//                    elements interleaved with 2^|stages| imaginary elements.
-//                    [ReImReImReIm....]
-//                    The output is in the Q0 domain.
-//
-//      - stages    : Number of FFT stages. Must be at least 3 and at most 10,
-//                    since the table WebRtcSpl_kSinTable1024[] is 1024
-//                    elements long.
-//
-//      - mode      : This parameter gives the user to choose how the FFT
-//                    should work.
-//                    mode==0: Low-complexity and Low-accuracy mode
-//                    mode==1: High-complexity and High-accuracy mode
-//
-// Output:
-//      - vector    : The output FFT vector is in the Q0 domain.
-//
-// Return value     : The scale parameter is always 0, except if N>1024,
-//                    which returns a scale value of -1, indicating error.
-//
-
-//
-// WebRtcSpl_AnalysisQMF(...)
-//
-// Splits a 0-2*F Hz signal into two sub bands: 0-F Hz and F-2*F Hz. The
-// current version has F = 8000, therefore, a super-wideband audio signal is
-// split to lower-band 0-8 kHz and upper-band 8-16 kHz.
-//
-// Input:
-//      - in_data       : Wide band speech signal, 320 samples (10 ms)
-//
-// Input & Output:
-//      - filter_state1 : Filter state for first All-pass filter
-//      - filter_state2 : Filter state for second All-pass filter
-//
-// Output:
-//      - low_band      : Lower-band signal 0-8 kHz band, 160 samples (10 ms)
-//      - high_band     : Upper-band signal 8-16 kHz band (flipped in frequency
-//                        domain), 160 samples (10 ms)
-//
-
-//
-// WebRtcSpl_SynthesisQMF(...)
-//
-// Combines the two sub bands (0-F and F-2*F Hz) into a signal of 0-2*F
-// Hz, (current version has F = 8000 Hz). So the filter combines lower-band
-// (0-8 kHz) and upper-band (8-16 kHz) channels to obtain super-wideband 0-16
-// kHz audio.
-//
-// Input:
-//      - low_band      : The signal with the 0-8 kHz band, 160 samples (10 ms)
-//      - high_band     : The signal with the 8-16 kHz band, 160 samples (10 ms)
-//
-// Input & Output:
-//      - filter_state1 : Filter state for first All-pass filter
-//      - filter_state2 : Filter state for second All-pass filter
-//
-// Output:
-//      - out_data      : Super-wideband speech signal, 0-16 kHz
-//
-
-// int16_t WebRtcSpl_SatW32ToW16(...)
-//
-// This function saturates a 32-bit word into a 16-bit word.
-//
-// Input:
-//      - value32   : The value of a 32-bit word.
-//
-// Output:
-//      - out16     : the saturated 16-bit word.
-//
-
-// int32_t WebRtc_MulAccumW16(...)
-//
-// This function multiply a 16-bit word by a 16-bit word, and accumulate this
-// value to a 32-bit integer.
-//
-// Input:
-//      - a    : The value of the first 16-bit word.
-//      - b    : The value of the second 16-bit word.
-//      - c    : The value of an 32-bit integer.
-//
-// Return Value: The value of a * b + c.
-//
diff --git a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/include/spl_inl.h b/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/include/spl_inl.h
deleted file mode 100644
index d24b3a5..0000000
--- a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/include/spl_inl.h
+++ /dev/null
@@ -1,153 +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.
- */
-
-// This header file includes the inline functions in
-// the fix point signal processing library.
-
-#ifndef COMMON_AUDIO_SIGNAL_PROCESSING_INCLUDE_SPL_INL_H_
-#define COMMON_AUDIO_SIGNAL_PROCESSING_INCLUDE_SPL_INL_H_
-
-#include "webrtc/rtc_base/compile_assert_c.h"
-
-extern const int8_t kWebRtcSpl_CountLeadingZeros32_Table[64];
-
-// Don't call this directly except in tests!
-static __inline int WebRtcSpl_CountLeadingZeros32_NotBuiltin(uint32_t n) {
-  // Normalize n by rounding up to the nearest number that is a sequence of 0
-  // bits followed by a sequence of 1 bits. This number has the same number of
-  // leading zeros as the original n. There are exactly 33 such values.
-  n |= n >> 1;
-  n |= n >> 2;
-  n |= n >> 4;
-  n |= n >> 8;
-  n |= n >> 16;
-
-  // Multiply the modified n with a constant selected (by exhaustive search)
-  // such that each of the 33 possible values of n give a product whose 6 most
-  // significant bits are unique. Then look up the answer in the table.
-  return kWebRtcSpl_CountLeadingZeros32_Table[(n * 0x8c0b2891) >> 26];
-}
-
-// Don't call this directly except in tests!
-static __inline int WebRtcSpl_CountLeadingZeros64_NotBuiltin(uint64_t n) {
-  const int leading_zeros = n >> 32 == 0 ? 32 : 0;
-  return leading_zeros + WebRtcSpl_CountLeadingZeros32_NotBuiltin(
-                             (uint32_t)(n >> (32 - leading_zeros)));
-}
-
-// Returns the number of leading zero bits in the argument.
-static __inline int WebRtcSpl_CountLeadingZeros32(uint32_t n) {
-#ifdef __GNUC__
-  RTC_COMPILE_ASSERT(sizeof(unsigned int) == sizeof(uint32_t));
-  return n == 0 ? 32 : __builtin_clz(n);
-#else
-  return WebRtcSpl_CountLeadingZeros32_NotBuiltin(n);
-#endif
-}
-
-// Returns the number of leading zero bits in the argument.
-static __inline int WebRtcSpl_CountLeadingZeros64(uint64_t n) {
-#ifdef __GNUC__
-  RTC_COMPILE_ASSERT(sizeof(unsigned long long) == sizeof(uint64_t));  // NOLINT
-  return n == 0 ? 64 : __builtin_clzll(n);
-#else
-  return WebRtcSpl_CountLeadingZeros64_NotBuiltin(n);
-#endif
-}
-
-#ifdef WEBRTC_ARCH_ARM_V7
-#include "webrtc/common_audio/signal_processing/include/spl_inl_armv7.h"
-#else
-
-#if defined(MIPS32_LE)
-#include "webrtc/common_audio/signal_processing/include/spl_inl_mips.h"
-#endif
-
-#if !defined(MIPS_DSP_R1_LE)
-static __inline int16_t WebRtcSpl_SatW32ToW16(int32_t value32) {
-  int16_t out16 = (int16_t)value32;
-
-  if (value32 > 32767)
-    out16 = 32767;
-  else if (value32 < -32768)
-    out16 = -32768;
-
-  return out16;
-}
-
-static __inline int32_t WebRtcSpl_AddSatW32(int32_t a, int32_t b) {
-  // Do the addition in unsigned numbers, since signed overflow is undefined
-  // behavior.
-  const int32_t sum = (int32_t)((uint32_t)a + (uint32_t)b);
-
-  // a + b can't overflow if a and b have different signs. If they have the
-  // same sign, a + b also has the same sign iff it didn't overflow.
-  if ((a < 0) == (b < 0) && (a < 0) != (sum < 0)) {
-    // The direction of the overflow is obvious from the sign of a + b.
-    return sum < 0 ? INT32_MAX : INT32_MIN;
-  }
-  return sum;
-}
-
-static __inline int32_t WebRtcSpl_SubSatW32(int32_t a, int32_t b) {
-  // Do the subtraction in unsigned numbers, since signed overflow is undefined
-  // behavior.
-  const int32_t diff = (int32_t)((uint32_t)a - (uint32_t)b);
-
-  // a - b can't overflow if a and b have the same sign. If they have different
-  // signs, a - b has the same sign as a iff it didn't overflow.
-  if ((a < 0) != (b < 0) && (a < 0) != (diff < 0)) {
-    // The direction of the overflow is obvious from the sign of a - b.
-    return diff < 0 ? INT32_MAX : INT32_MIN;
-  }
-  return diff;
-}
-
-static __inline int16_t WebRtcSpl_AddSatW16(int16_t a, int16_t b) {
-  return WebRtcSpl_SatW32ToW16((int32_t)a + (int32_t)b);
-}
-
-static __inline int16_t WebRtcSpl_SubSatW16(int16_t var1, int16_t var2) {
-  return WebRtcSpl_SatW32ToW16((int32_t)var1 - (int32_t)var2);
-}
-#endif  // #if !defined(MIPS_DSP_R1_LE)
-
-#if !defined(MIPS32_LE)
-static __inline int16_t WebRtcSpl_GetSizeInBits(uint32_t n) {
-  return 32 - WebRtcSpl_CountLeadingZeros32(n);
-}
-
-// Return the number of steps a can be left-shifted without overflow,
-// or 0 if a == 0.
-static __inline int16_t WebRtcSpl_NormW32(int32_t a) {
-  return a == 0 ? 0 : WebRtcSpl_CountLeadingZeros32(a < 0 ? ~a : a) - 1;
-}
-
-// Return the number of steps a can be left-shifted without overflow,
-// or 0 if a == 0.
-static __inline int16_t WebRtcSpl_NormU32(uint32_t a) {
-  return a == 0 ? 0 : WebRtcSpl_CountLeadingZeros32(a);
-}
-
-// Return the number of steps a can be left-shifted without overflow,
-// or 0 if a == 0.
-static __inline int16_t WebRtcSpl_NormW16(int16_t a) {
-  const int32_t a32 = a;
-  return a == 0 ? 0 : WebRtcSpl_CountLeadingZeros32(a < 0 ? ~a32 : a32) - 17;
-}
-
-static __inline int32_t WebRtc_MulAccumW16(int16_t a, int16_t b, int32_t c) {
-  return (a * b + c);
-}
-#endif  // #if !defined(MIPS32_LE)
-
-#endif  // WEBRTC_ARCH_ARM_V7
-
-#endif  // COMMON_AUDIO_SIGNAL_PROCESSING_INCLUDE_SPL_INL_H_
diff --git a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/min_max_operations.c b/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/min_max_operations.c
deleted file mode 100644
index 75975bb..0000000
--- a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/min_max_operations.c
+++ /dev/null
@@ -1,224 +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.
- */
-
-/*
- * This file contains the implementation of functions
- * WebRtcSpl_MaxAbsValueW16C()
- * WebRtcSpl_MaxAbsValueW32C()
- * WebRtcSpl_MaxValueW16C()
- * WebRtcSpl_MaxValueW32C()
- * WebRtcSpl_MinValueW16C()
- * WebRtcSpl_MinValueW32C()
- * WebRtcSpl_MaxAbsIndexW16()
- * WebRtcSpl_MaxIndexW16()
- * WebRtcSpl_MaxIndexW32()
- * WebRtcSpl_MinIndexW16()
- * WebRtcSpl_MinIndexW32()
- *
- */
-
-#include <stdlib.h>
-
-#include "webrtc/rtc_base/checks.h"
-#include "webrtc/common_audio/signal_processing/include/signal_processing_library.h"
-
-// TODO(bjorn/kma): Consolidate function pairs (e.g. combine
-//   WebRtcSpl_MaxAbsValueW16C and WebRtcSpl_MaxAbsIndexW16 into a single one.)
-// TODO(kma): Move the next six functions into min_max_operations_c.c.
-
-// Maximum absolute value of word16 vector. C version for generic platforms.
-int16_t WebRtcSpl_MaxAbsValueW16C(const int16_t* vector, size_t length) {
-  size_t i = 0;
-  int absolute = 0, maximum = 0;
-
-  RTC_DCHECK_GT(length, 0);
-
-  for (i = 0; i < length; i++) {
-    absolute = abs((int)vector[i]);
-
-    if (absolute > maximum) {
-      maximum = absolute;
-    }
-  }
-
-  // Guard the case for abs(-32768).
-  if (maximum > WEBRTC_SPL_WORD16_MAX) {
-    maximum = WEBRTC_SPL_WORD16_MAX;
-  }
-
-  return (int16_t)maximum;
-}
-
-// Maximum absolute value of word32 vector. C version for generic platforms.
-int32_t WebRtcSpl_MaxAbsValueW32C(const int32_t* vector, size_t length) {
-  // Use uint32_t for the local variables, to accommodate the return value
-  // of abs(0x80000000), which is 0x80000000.
-
-  uint32_t absolute = 0, maximum = 0;
-  size_t i = 0;
-
-  RTC_DCHECK_GT(length, 0);
-
-  for (i = 0; i < length; i++) {
-    absolute = abs((int)vector[i]);
-    if (absolute > maximum) {
-      maximum = absolute;
-    }
-  }
-
-  maximum = WEBRTC_SPL_MIN(maximum, WEBRTC_SPL_WORD32_MAX);
-
-  return (int32_t)maximum;
-}
-
-// Maximum value of word16 vector. C version for generic platforms.
-int16_t WebRtcSpl_MaxValueW16C(const int16_t* vector, size_t length) {
-  int16_t maximum = WEBRTC_SPL_WORD16_MIN;
-  size_t i = 0;
-
-  RTC_DCHECK_GT(length, 0);
-
-  for (i = 0; i < length; i++) {
-    if (vector[i] > maximum)
-      maximum = vector[i];
-  }
-  return maximum;
-}
-
-// Maximum value of word32 vector. C version for generic platforms.
-int32_t WebRtcSpl_MaxValueW32C(const int32_t* vector, size_t length) {
-  int32_t maximum = WEBRTC_SPL_WORD32_MIN;
-  size_t i = 0;
-
-  RTC_DCHECK_GT(length, 0);
-
-  for (i = 0; i < length; i++) {
-    if (vector[i] > maximum)
-      maximum = vector[i];
-  }
-  return maximum;
-}
-
-// Minimum value of word16 vector. C version for generic platforms.
-int16_t WebRtcSpl_MinValueW16C(const int16_t* vector, size_t length) {
-  int16_t minimum = WEBRTC_SPL_WORD16_MAX;
-  size_t i = 0;
-
-  RTC_DCHECK_GT(length, 0);
-
-  for (i = 0; i < length; i++) {
-    if (vector[i] < minimum)
-      minimum = vector[i];
-  }
-  return minimum;
-}
-
-// Minimum value of word32 vector. C version for generic platforms.
-int32_t WebRtcSpl_MinValueW32C(const int32_t* vector, size_t length) {
-  int32_t minimum = WEBRTC_SPL_WORD32_MAX;
-  size_t i = 0;
-
-  RTC_DCHECK_GT(length, 0);
-
-  for (i = 0; i < length; i++) {
-    if (vector[i] < minimum)
-      minimum = vector[i];
-  }
-  return minimum;
-}
-
-// Index of maximum absolute value in a word16 vector.
-size_t WebRtcSpl_MaxAbsIndexW16(const int16_t* vector, size_t length) {
-  // Use type int for local variables, to accomodate the value of abs(-32768).
-
-  size_t i = 0, index = 0;
-  int absolute = 0, maximum = 0;
-
-  RTC_DCHECK_GT(length, 0);
-
-  for (i = 0; i < length; i++) {
-    absolute = abs((int)vector[i]);
-
-    if (absolute > maximum) {
-      maximum = absolute;
-      index = i;
-    }
-  }
-
-  return index;
-}
-
-// Index of maximum value in a word16 vector.
-size_t WebRtcSpl_MaxIndexW16(const int16_t* vector, size_t length) {
-  size_t i = 0, index = 0;
-  int16_t maximum = WEBRTC_SPL_WORD16_MIN;
-
-  RTC_DCHECK_GT(length, 0);
-
-  for (i = 0; i < length; i++) {
-    if (vector[i] > maximum) {
-      maximum = vector[i];
-      index = i;
-    }
-  }
-
-  return index;
-}
-
-// Index of maximum value in a word32 vector.
-size_t WebRtcSpl_MaxIndexW32(const int32_t* vector, size_t length) {
-  size_t i = 0, index = 0;
-  int32_t maximum = WEBRTC_SPL_WORD32_MIN;
-
-  RTC_DCHECK_GT(length, 0);
-
-  for (i = 0; i < length; i++) {
-    if (vector[i] > maximum) {
-      maximum = vector[i];
-      index = i;
-    }
-  }
-
-  return index;
-}
-
-// Index of minimum value in a word16 vector.
-size_t WebRtcSpl_MinIndexW16(const int16_t* vector, size_t length) {
-  size_t i = 0, index = 0;
-  int16_t minimum = WEBRTC_SPL_WORD16_MAX;
-
-  RTC_DCHECK_GT(length, 0);
-
-  for (i = 0; i < length; i++) {
-    if (vector[i] < minimum) {
-      minimum = vector[i];
-      index = i;
-    }
-  }
-
-  return index;
-}
-
-// Index of minimum value in a word32 vector.
-size_t WebRtcSpl_MinIndexW32(const int32_t* vector, size_t length) {
-  size_t i = 0, index = 0;
-  int32_t minimum = WEBRTC_SPL_WORD32_MAX;
-
-  RTC_DCHECK_GT(length, 0);
-
-  for (i = 0; i < length; i++) {
-    if (vector[i] < minimum) {
-      minimum = vector[i];
-      index = i;
-    }
-  }
-
-  return index;
-}
diff --git a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/resample_48khz.c b/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/resample_48khz.c
deleted file mode 100644
index 2220cc3..0000000
--- a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/resample_48khz.c
+++ /dev/null
@@ -1,186 +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.
- */
-
-
-/*
- * This file contains resampling functions between 48 kHz and nb/wb.
- * The description header can be found in signal_processing_library.h
- *
- */
-
-#include <string.h>
-#include "webrtc/common_audio/signal_processing/include/signal_processing_library.h"
-#include "webrtc/common_audio/signal_processing/resample_by_2_internal.h"
-
-////////////////////////////
-///// 48 kHz -> 16 kHz /////
-////////////////////////////
-
-// 48 -> 16 resampler
-void WebRtcSpl_Resample48khzTo16khz(const int16_t* in, int16_t* out,
-                                    WebRtcSpl_State48khzTo16khz* state, int32_t* tmpmem)
-{
-    ///// 48 --> 48(LP) /////
-    // int16_t  in[480]
-    // int32_t out[480]
-    /////
-    WebRtcSpl_LPBy2ShortToInt(in, 480, tmpmem + 16, state->S_48_48);
-
-    ///// 48 --> 32 /////
-    // int32_t  in[480]
-    // int32_t out[320]
-    /////
-    // copy state to and from input array
-    memcpy(tmpmem + 8, state->S_48_32, 8 * sizeof(int32_t));
-    memcpy(state->S_48_32, tmpmem + 488, 8 * sizeof(int32_t));
-    WebRtcSpl_Resample48khzTo32khz(tmpmem + 8, tmpmem, 160);
-
-    ///// 32 --> 16 /////
-    // int32_t  in[320]
-    // int16_t out[160]
-    /////
-    WebRtcSpl_DownBy2IntToShort(tmpmem, 320, out, state->S_32_16);
-}
-
-// initialize state of 48 -> 16 resampler
-void WebRtcSpl_ResetResample48khzTo16khz(WebRtcSpl_State48khzTo16khz* state)
-{
-    memset(state->S_48_48, 0, 16 * sizeof(int32_t));
-    memset(state->S_48_32, 0, 8 * sizeof(int32_t));
-    memset(state->S_32_16, 0, 8 * sizeof(int32_t));
-}
-
-////////////////////////////
-///// 16 kHz -> 48 kHz /////
-////////////////////////////
-
-// 16 -> 48 resampler
-void WebRtcSpl_Resample16khzTo48khz(const int16_t* in, int16_t* out,
-                                    WebRtcSpl_State16khzTo48khz* state, int32_t* tmpmem)
-{
-    ///// 16 --> 32 /////
-    // int16_t  in[160]
-    // int32_t out[320]
-    /////
-    WebRtcSpl_UpBy2ShortToInt(in, 160, tmpmem + 16, state->S_16_32);
-
-    ///// 32 --> 24 /////
-    // int32_t  in[320]
-    // int32_t out[240]
-    // copy state to and from input array
-    /////
-    memcpy(tmpmem + 8, state->S_32_24, 8 * sizeof(int32_t));
-    memcpy(state->S_32_24, tmpmem + 328, 8 * sizeof(int32_t));
-    WebRtcSpl_Resample32khzTo24khz(tmpmem + 8, tmpmem, 80);
-
-    ///// 24 --> 48 /////
-    // int32_t  in[240]
-    // int16_t out[480]
-    /////
-    WebRtcSpl_UpBy2IntToShort(tmpmem, 240, out, state->S_24_48);
-}
-
-// initialize state of 16 -> 48 resampler
-void WebRtcSpl_ResetResample16khzTo48khz(WebRtcSpl_State16khzTo48khz* state)
-{
-    memset(state->S_16_32, 0, 8 * sizeof(int32_t));
-    memset(state->S_32_24, 0, 8 * sizeof(int32_t));
-    memset(state->S_24_48, 0, 8 * sizeof(int32_t));
-}
-
-////////////////////////////
-///// 48 kHz ->  8 kHz /////
-////////////////////////////
-
-// 48 -> 8 resampler
-void WebRtcSpl_Resample48khzTo8khz(const int16_t* in, int16_t* out,
-                                   WebRtcSpl_State48khzTo8khz* state, int32_t* tmpmem)
-{
-    ///// 48 --> 24 /////
-    // int16_t  in[480]
-    // int32_t out[240]
-    /////
-    WebRtcSpl_DownBy2ShortToInt(in, 480, tmpmem + 256, state->S_48_24);
-
-    ///// 24 --> 24(LP) /////
-    // int32_t  in[240]
-    // int32_t out[240]
-    /////
-    WebRtcSpl_LPBy2IntToInt(tmpmem + 256, 240, tmpmem + 16, state->S_24_24);
-
-    ///// 24 --> 16 /////
-    // int32_t  in[240]
-    // int32_t out[160]
-    /////
-    // copy state to and from input array
-    memcpy(tmpmem + 8, state->S_24_16, 8 * sizeof(int32_t));
-    memcpy(state->S_24_16, tmpmem + 248, 8 * sizeof(int32_t));
-    WebRtcSpl_Resample48khzTo32khz(tmpmem + 8, tmpmem, 80);
-
-    ///// 16 --> 8 /////
-    // int32_t  in[160]
-    // int16_t out[80]
-    /////
-    WebRtcSpl_DownBy2IntToShort(tmpmem, 160, out, state->S_16_8);
-}
-
-// initialize state of 48 -> 8 resampler
-void WebRtcSpl_ResetResample48khzTo8khz(WebRtcSpl_State48khzTo8khz* state)
-{
-    memset(state->S_48_24, 0, 8 * sizeof(int32_t));
-    memset(state->S_24_24, 0, 16 * sizeof(int32_t));
-    memset(state->S_24_16, 0, 8 * sizeof(int32_t));
-    memset(state->S_16_8, 0, 8 * sizeof(int32_t));
-}
-
-////////////////////////////
-/////  8 kHz -> 48 kHz /////
-////////////////////////////
-
-// 8 -> 48 resampler
-void WebRtcSpl_Resample8khzTo48khz(const int16_t* in, int16_t* out,
-                                   WebRtcSpl_State8khzTo48khz* state, int32_t* tmpmem)
-{
-    ///// 8 --> 16 /////
-    // int16_t  in[80]
-    // int32_t out[160]
-    /////
-    WebRtcSpl_UpBy2ShortToInt(in, 80, tmpmem + 264, state->S_8_16);
-
-    ///// 16 --> 12 /////
-    // int32_t  in[160]
-    // int32_t out[120]
-    /////
-    // copy state to and from input array
-    memcpy(tmpmem + 256, state->S_16_12, 8 * sizeof(int32_t));
-    memcpy(state->S_16_12, tmpmem + 416, 8 * sizeof(int32_t));
-    WebRtcSpl_Resample32khzTo24khz(tmpmem + 256, tmpmem + 240, 40);
-
-    ///// 12 --> 24 /////
-    // int32_t  in[120]
-    // int16_t out[240]
-    /////
-    WebRtcSpl_UpBy2IntToInt(tmpmem + 240, 120, tmpmem, state->S_12_24);
-
-    ///// 24 --> 48 /////
-    // int32_t  in[240]
-    // int16_t out[480]
-    /////
-    WebRtcSpl_UpBy2IntToShort(tmpmem, 240, out, state->S_24_48);
-}
-
-// initialize state of 8 -> 48 resampler
-void WebRtcSpl_ResetResample8khzTo48khz(WebRtcSpl_State8khzTo48khz* state)
-{
-    memset(state->S_8_16, 0, 8 * sizeof(int32_t));
-    memset(state->S_16_12, 0, 8 * sizeof(int32_t));
-    memset(state->S_12_24, 0, 8 * sizeof(int32_t));
-    memset(state->S_24_48, 0, 8 * sizeof(int32_t));
-}
diff --git a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/resample_by_2_internal.c b/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/resample_by_2_internal.c
deleted file mode 100644
index 72bc0f9..0000000
--- a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/resample_by_2_internal.c
+++ /dev/null
@@ -1,689 +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.
- */
-
-
-/*
- * This header file contains some internal resampling functions.
- *
- */
-
-#include "webrtc/common_audio/signal_processing/resample_by_2_internal.h"
-#include "webrtc/rtc_base/sanitizer.h"
-
-// allpass filter coefficients.
-static const int16_t kResampleAllpass[2][3] = {
-        {821, 6110, 12382},
-        {3050, 9368, 15063}
-};
-
-//
-//   decimator
-// input:  int32_t (shifted 15 positions to the left, + offset 16384) OVERWRITTEN!
-// output: int16_t (saturated) (of length len/2)
-// state:  filter state array; length = 8
-
-void RTC_NO_SANITIZE("signed-integer-overflow")  // bugs.webrtc.org/5486
-WebRtcSpl_DownBy2IntToShort(int32_t *in, int32_t len, int16_t *out,
-                            int32_t *state)
-{
-    int32_t tmp0, tmp1, diff;
-    int32_t i;
-
-    len >>= 1;
-
-    // lower allpass filter (operates on even input samples)
-    for (i = 0; i < len; i++)
-    {
-        tmp0 = in[i << 1];
-        diff = tmp0 - state[1];
-        // UBSan: -1771017321 - 999586185 cannot be represented in type 'int'
-
-        // scale down and round
-        diff = (diff + (1 << 13)) >> 14;
-        tmp1 = state[0] + diff * kResampleAllpass[1][0];
-        state[0] = tmp0;
-        diff = tmp1 - state[2];
-        // scale down and truncate
-        diff = diff >> 14;
-        if (diff < 0)
-            diff += 1;
-        tmp0 = state[1] + diff * kResampleAllpass[1][1];
-        state[1] = tmp1;
-        diff = tmp0 - state[3];
-        // scale down and truncate
-        diff = diff >> 14;
-        if (diff < 0)
-            diff += 1;
-        state[3] = state[2] + diff * kResampleAllpass[1][2];
-        state[2] = tmp0;
-
-        // divide by two and store temporarily
-        in[i << 1] = (state[3] >> 1);
-    }
-
-    in++;
-
-    // upper allpass filter (operates on odd input samples)
-    for (i = 0; i < len; i++)
-    {
-        tmp0 = in[i << 1];
-        diff = tmp0 - state[5];
-        // scale down and round
-        diff = (diff + (1 << 13)) >> 14;
-        tmp1 = state[4] + diff * kResampleAllpass[0][0];
-        state[4] = tmp0;
-        diff = tmp1 - state[6];
-        // scale down and round
-        diff = diff >> 14;
-        if (diff < 0)
-            diff += 1;
-        tmp0 = state[5] + diff * kResampleAllpass[0][1];
-        state[5] = tmp1;
-        diff = tmp0 - state[7];
-        // scale down and truncate
-        diff = diff >> 14;
-        if (diff < 0)
-            diff += 1;
-        state[7] = state[6] + diff * kResampleAllpass[0][2];
-        state[6] = tmp0;
-
-        // divide by two and store temporarily
-        in[i << 1] = (state[7] >> 1);
-    }
-
-    in--;
-
-    // combine allpass outputs
-    for (i = 0; i < len; i += 2)
-    {
-        // divide by two, add both allpass outputs and round
-        tmp0 = (in[i << 1] + in[(i << 1) + 1]) >> 15;
-        tmp1 = (in[(i << 1) + 2] + in[(i << 1) + 3]) >> 15;
-        if (tmp0 > (int32_t)0x00007FFF)
-            tmp0 = 0x00007FFF;
-        if (tmp0 < (int32_t)0xFFFF8000)
-            tmp0 = 0xFFFF8000;
-        out[i] = (int16_t)tmp0;
-        if (tmp1 > (int32_t)0x00007FFF)
-            tmp1 = 0x00007FFF;
-        if (tmp1 < (int32_t)0xFFFF8000)
-            tmp1 = 0xFFFF8000;
-        out[i + 1] = (int16_t)tmp1;
-    }
-}
-
-//
-//   decimator
-// input:  int16_t
-// output: int32_t (shifted 15 positions to the left, + offset 16384) (of length len/2)
-// state:  filter state array; length = 8
-
-void RTC_NO_SANITIZE("signed-integer-overflow")  // bugs.webrtc.org/5486
-WebRtcSpl_DownBy2ShortToInt(const int16_t *in,
-                            int32_t len,
-                            int32_t *out,
-                            int32_t *state)
-{
-    int32_t tmp0, tmp1, diff;
-    int32_t i;
-
-    len >>= 1;
-
-    // lower allpass filter (operates on even input samples)
-    for (i = 0; i < len; i++)
-    {
-        tmp0 = ((int32_t)in[i << 1] << 15) + (1 << 14);
-        diff = tmp0 - state[1];
-        // scale down and round
-        diff = (diff + (1 << 13)) >> 14;
-        tmp1 = state[0] + diff * kResampleAllpass[1][0];
-        state[0] = tmp0;
-        diff = tmp1 - state[2];
-        // UBSan: -1379909682 - 834099714 cannot be represented in type 'int'
-
-        // scale down and truncate
-        diff = diff >> 14;
-        if (diff < 0)
-            diff += 1;
-        tmp0 = state[1] + diff * kResampleAllpass[1][1];
-        state[1] = tmp1;
-        diff = tmp0 - state[3];
-        // scale down and truncate
-        diff = diff >> 14;
-        if (diff < 0)
-            diff += 1;
-        state[3] = state[2] + diff * kResampleAllpass[1][2];
-        state[2] = tmp0;
-
-        // divide by two and store temporarily
-        out[i] = (state[3] >> 1);
-    }
-
-    in++;
-
-    // upper allpass filter (operates on odd input samples)
-    for (i = 0; i < len; i++)
-    {
-        tmp0 = ((int32_t)in[i << 1] << 15) + (1 << 14);
-        diff = tmp0 - state[5];
-        // scale down and round
-        diff = (diff + (1 << 13)) >> 14;
-        tmp1 = state[4] + diff * kResampleAllpass[0][0];
-        state[4] = tmp0;
-        diff = tmp1 - state[6];
-        // scale down and round
-        diff = diff >> 14;
-        if (diff < 0)
-            diff += 1;
-        tmp0 = state[5] + diff * kResampleAllpass[0][1];
-        state[5] = tmp1;
-        diff = tmp0 - state[7];
-        // scale down and truncate
-        diff = diff >> 14;
-        if (diff < 0)
-            diff += 1;
-        state[7] = state[6] + diff * kResampleAllpass[0][2];
-        state[6] = tmp0;
-
-        // divide by two and store temporarily
-        out[i] += (state[7] >> 1);
-    }
-
-    in--;
-}
-
-//
-//   interpolator
-// input:  int16_t
-// output: int32_t (normalized, not saturated) (of length len*2)
-// state:  filter state array; length = 8
-void WebRtcSpl_UpBy2ShortToInt(const int16_t *in, int32_t len, int32_t *out,
-                               int32_t *state)
-{
-    int32_t tmp0, tmp1, diff;
-    int32_t i;
-
-    // upper allpass filter (generates odd output samples)
-    for (i = 0; i < len; i++)
-    {
-        tmp0 = ((int32_t)in[i] << 15) + (1 << 14);
-        diff = tmp0 - state[5];
-        // scale down and round
-        diff = (diff + (1 << 13)) >> 14;
-        tmp1 = state[4] + diff * kResampleAllpass[0][0];
-        state[4] = tmp0;
-        diff = tmp1 - state[6];
-        // scale down and truncate
-        diff = diff >> 14;
-        if (diff < 0)
-            diff += 1;
-        tmp0 = state[5] + diff * kResampleAllpass[0][1];
-        state[5] = tmp1;
-        diff = tmp0 - state[7];
-        // scale down and truncate
-        diff = diff >> 14;
-        if (diff < 0)
-            diff += 1;
-        state[7] = state[6] + diff * kResampleAllpass[0][2];
-        state[6] = tmp0;
-
-        // scale down, round and store
-        out[i << 1] = state[7] >> 15;
-    }
-
-    out++;
-
-    // lower allpass filter (generates even output samples)
-    for (i = 0; i < len; i++)
-    {
-        tmp0 = ((int32_t)in[i] << 15) + (1 << 14);
-        diff = tmp0 - state[1];
-        // scale down and round
-        diff = (diff + (1 << 13)) >> 14;
-        tmp1 = state[0] + diff * kResampleAllpass[1][0];
-        state[0] = tmp0;
-        diff = tmp1 - state[2];
-        // scale down and truncate
-        diff = diff >> 14;
-        if (diff < 0)
-            diff += 1;
-        tmp0 = state[1] + diff * kResampleAllpass[1][1];
-        state[1] = tmp1;
-        diff = tmp0 - state[3];
-        // scale down and truncate
-        diff = diff >> 14;
-        if (diff < 0)
-            diff += 1;
-        state[3] = state[2] + diff * kResampleAllpass[1][2];
-        state[2] = tmp0;
-
-        // scale down, round and store
-        out[i << 1] = state[3] >> 15;
-    }
-}
-
-//
-//   interpolator
-// input:  int32_t (shifted 15 positions to the left, + offset 16384)
-// output: int32_t (shifted 15 positions to the left, + offset 16384) (of length len*2)
-// state:  filter state array; length = 8
-void WebRtcSpl_UpBy2IntToInt(const int32_t *in, int32_t len, int32_t *out,
-                             int32_t *state)
-{
-    int32_t tmp0, tmp1, diff;
-    int32_t i;
-
-    // upper allpass filter (generates odd output samples)
-    for (i = 0; i < len; i++)
-    {
-        tmp0 = in[i];
-        diff = tmp0 - state[5];
-        // scale down and round
-        diff = (diff + (1 << 13)) >> 14;
-        tmp1 = state[4] + diff * kResampleAllpass[0][0];
-        state[4] = tmp0;
-        diff = tmp1 - state[6];
-        // scale down and truncate
-        diff = diff >> 14;
-        if (diff < 0)
-            diff += 1;
-        tmp0 = state[5] + diff * kResampleAllpass[0][1];
-        state[5] = tmp1;
-        diff = tmp0 - state[7];
-        // scale down and truncate
-        diff = diff >> 14;
-        if (diff < 0)
-            diff += 1;
-        state[7] = state[6] + diff * kResampleAllpass[0][2];
-        state[6] = tmp0;
-
-        // scale down, round and store
-        out[i << 1] = state[7];
-    }
-
-    out++;
-
-    // lower allpass filter (generates even output samples)
-    for (i = 0; i < len; i++)
-    {
-        tmp0 = in[i];
-        diff = tmp0 - state[1];
-        // scale down and round
-        diff = (diff + (1 << 13)) >> 14;
-        tmp1 = state[0] + diff * kResampleAllpass[1][0];
-        state[0] = tmp0;
-        diff = tmp1 - state[2];
-        // scale down and truncate
-        diff = diff >> 14;
-        if (diff < 0)
-            diff += 1;
-        tmp0 = state[1] + diff * kResampleAllpass[1][1];
-        state[1] = tmp1;
-        diff = tmp0 - state[3];
-        // scale down and truncate
-        diff = diff >> 14;
-        if (diff < 0)
-            diff += 1;
-        state[3] = state[2] + diff * kResampleAllpass[1][2];
-        state[2] = tmp0;
-
-        // scale down, round and store
-        out[i << 1] = state[3];
-    }
-}
-
-//
-//   interpolator
-// input:  int32_t (shifted 15 positions to the left, + offset 16384)
-// output: int16_t (saturated) (of length len*2)
-// state:  filter state array; length = 8
-void WebRtcSpl_UpBy2IntToShort(const int32_t *in, int32_t len, int16_t *out,
-                               int32_t *state)
-{
-    int32_t tmp0, tmp1, diff;
-    int32_t i;
-
-    // upper allpass filter (generates odd output samples)
-    for (i = 0; i < len; i++)
-    {
-        tmp0 = in[i];
-        diff = tmp0 - state[5];
-        // scale down and round
-        diff = (diff + (1 << 13)) >> 14;
-        tmp1 = state[4] + diff * kResampleAllpass[0][0];
-        state[4] = tmp0;
-        diff = tmp1 - state[6];
-        // scale down and round
-        diff = diff >> 14;
-        if (diff < 0)
-            diff += 1;
-        tmp0 = state[5] + diff * kResampleAllpass[0][1];
-        state[5] = tmp1;
-        diff = tmp0 - state[7];
-        // scale down and truncate
-        diff = diff >> 14;
-        if (diff < 0)
-            diff += 1;
-        state[7] = state[6] + diff * kResampleAllpass[0][2];
-        state[6] = tmp0;
-
-        // scale down, saturate and store
-        tmp1 = state[7] >> 15;
-        if (tmp1 > (int32_t)0x00007FFF)
-            tmp1 = 0x00007FFF;
-        if (tmp1 < (int32_t)0xFFFF8000)
-            tmp1 = 0xFFFF8000;
-        out[i << 1] = (int16_t)tmp1;
-    }
-
-    out++;
-
-    // lower allpass filter (generates even output samples)
-    for (i = 0; i < len; i++)
-    {
-        tmp0 = in[i];
-        diff = tmp0 - state[1];
-        // scale down and round
-        diff = (diff + (1 << 13)) >> 14;
-        tmp1 = state[0] + diff * kResampleAllpass[1][0];
-        state[0] = tmp0;
-        diff = tmp1 - state[2];
-        // scale down and truncate
-        diff = diff >> 14;
-        if (diff < 0)
-            diff += 1;
-        tmp0 = state[1] + diff * kResampleAllpass[1][1];
-        state[1] = tmp1;
-        diff = tmp0 - state[3];
-        // scale down and truncate
-        diff = diff >> 14;
-        if (diff < 0)
-            diff += 1;
-        state[3] = state[2] + diff * kResampleAllpass[1][2];
-        state[2] = tmp0;
-
-        // scale down, saturate and store
-        tmp1 = state[3] >> 15;
-        if (tmp1 > (int32_t)0x00007FFF)
-            tmp1 = 0x00007FFF;
-        if (tmp1 < (int32_t)0xFFFF8000)
-            tmp1 = 0xFFFF8000;
-        out[i << 1] = (int16_t)tmp1;
-    }
-}
-
-//   lowpass filter
-// input:  int16_t
-// output: int32_t (normalized, not saturated)
-// state:  filter state array; length = 8
-void WebRtcSpl_LPBy2ShortToInt(const int16_t* in, int32_t len, int32_t* out,
-                               int32_t* state)
-{
-    int32_t tmp0, tmp1, diff;
-    int32_t i;
-
-    len >>= 1;
-
-    // lower allpass filter: odd input -> even output samples
-    in++;
-    // initial state of polyphase delay element
-    tmp0 = state[12];
-    for (i = 0; i < len; i++)
-    {
-        diff = tmp0 - state[1];
-        // scale down and round
-        diff = (diff + (1 << 13)) >> 14;
-        tmp1 = state[0] + diff * kResampleAllpass[1][0];
-        state[0] = tmp0;
-        diff = tmp1 - state[2];
-        // scale down and truncate
-        diff = diff >> 14;
-        if (diff < 0)
-            diff += 1;
-        tmp0 = state[1] + diff * kResampleAllpass[1][1];
-        state[1] = tmp1;
-        diff = tmp0 - state[3];
-        // scale down and truncate
-        diff = diff >> 14;
-        if (diff < 0)
-            diff += 1;
-        state[3] = state[2] + diff * kResampleAllpass[1][2];
-        state[2] = tmp0;
-
-        // scale down, round and store
-        out[i << 1] = state[3] >> 1;
-        tmp0 = ((int32_t)in[i << 1] << 15) + (1 << 14);
-    }
-    in--;
-
-    // upper allpass filter: even input -> even output samples
-    for (i = 0; i < len; i++)
-    {
-        tmp0 = ((int32_t)in[i << 1] << 15) + (1 << 14);
-        diff = tmp0 - state[5];
-        // scale down and round
-        diff = (diff + (1 << 13)) >> 14;
-        tmp1 = state[4] + diff * kResampleAllpass[0][0];
-        state[4] = tmp0;
-        diff = tmp1 - state[6];
-        // scale down and round
-        diff = diff >> 14;
-        if (diff < 0)
-            diff += 1;
-        tmp0 = state[5] + diff * kResampleAllpass[0][1];
-        state[5] = tmp1;
-        diff = tmp0 - state[7];
-        // scale down and truncate
-        diff = diff >> 14;
-        if (diff < 0)
-            diff += 1;
-        state[7] = state[6] + diff * kResampleAllpass[0][2];
-        state[6] = tmp0;
-
-        // average the two allpass outputs, scale down and store
-        out[i << 1] = (out[i << 1] + (state[7] >> 1)) >> 15;
-    }
-
-    // switch to odd output samples
-    out++;
-
-    // lower allpass filter: even input -> odd output samples
-    for (i = 0; i < len; i++)
-    {
-        tmp0 = ((int32_t)in[i << 1] << 15) + (1 << 14);
-        diff = tmp0 - state[9];
-        // scale down and round
-        diff = (diff + (1 << 13)) >> 14;
-        tmp1 = state[8] + diff * kResampleAllpass[1][0];
-        state[8] = tmp0;
-        diff = tmp1 - state[10];
-        // scale down and truncate
-        diff = diff >> 14;
-        if (diff < 0)
-            diff += 1;
-        tmp0 = state[9] + diff * kResampleAllpass[1][1];
-        state[9] = tmp1;
-        diff = tmp0 - state[11];
-        // scale down and truncate
-        diff = diff >> 14;
-        if (diff < 0)
-            diff += 1;
-        state[11] = state[10] + diff * kResampleAllpass[1][2];
-        state[10] = tmp0;
-
-        // scale down, round and store
-        out[i << 1] = state[11] >> 1;
-    }
-
-    // upper allpass filter: odd input -> odd output samples
-    in++;
-    for (i = 0; i < len; i++)
-    {
-        tmp0 = ((int32_t)in[i << 1] << 15) + (1 << 14);
-        diff = tmp0 - state[13];
-        // scale down and round
-        diff = (diff + (1 << 13)) >> 14;
-        tmp1 = state[12] + diff * kResampleAllpass[0][0];
-        state[12] = tmp0;
-        diff = tmp1 - state[14];
-        // scale down and round
-        diff = diff >> 14;
-        if (diff < 0)
-            diff += 1;
-        tmp0 = state[13] + diff * kResampleAllpass[0][1];
-        state[13] = tmp1;
-        diff = tmp0 - state[15];
-        // scale down and truncate
-        diff = diff >> 14;
-        if (diff < 0)
-            diff += 1;
-        state[15] = state[14] + diff * kResampleAllpass[0][2];
-        state[14] = tmp0;
-
-        // average the two allpass outputs, scale down and store
-        out[i << 1] = (out[i << 1] + (state[15] >> 1)) >> 15;
-    }
-}
-
-//   lowpass filter
-// input:  int32_t (shifted 15 positions to the left, + offset 16384)
-// output: int32_t (normalized, not saturated)
-// state:  filter state array; length = 8
-void RTC_NO_SANITIZE("signed-integer-overflow")  // bugs.webrtc.org/5486
-WebRtcSpl_LPBy2IntToInt(const int32_t* in, int32_t len, int32_t* out,
-                        int32_t* state)
-{
-    int32_t tmp0, tmp1, diff;
-    int32_t i;
-
-    len >>= 1;
-
-    // lower allpass filter: odd input -> even output samples
-    in++;
-    // initial state of polyphase delay element
-    tmp0 = state[12];
-    for (i = 0; i < len; i++)
-    {
-        diff = tmp0 - state[1];
-        // scale down and round
-        diff = (diff + (1 << 13)) >> 14;
-        tmp1 = state[0] + diff * kResampleAllpass[1][0];
-        state[0] = tmp0;
-        diff = tmp1 - state[2];
-        // scale down and truncate
-        diff = diff >> 14;
-        if (diff < 0)
-            diff += 1;
-        tmp0 = state[1] + diff * kResampleAllpass[1][1];
-        state[1] = tmp1;
-        diff = tmp0 - state[3];
-        // scale down and truncate
-        diff = diff >> 14;
-        if (diff < 0)
-            diff += 1;
-        state[3] = state[2] + diff * kResampleAllpass[1][2];
-        state[2] = tmp0;
-
-        // scale down, round and store
-        out[i << 1] = state[3] >> 1;
-        tmp0 = in[i << 1];
-    }
-    in--;
-
-    // upper allpass filter: even input -> even output samples
-    for (i = 0; i < len; i++)
-    {
-        tmp0 = in[i << 1];
-        diff = tmp0 - state[5];
-        // UBSan: -794814117 - 1566149201 cannot be represented in type 'int'
-
-        // scale down and round
-        diff = (diff + (1 << 13)) >> 14;
-        tmp1 = state[4] + diff * kResampleAllpass[0][0];
-        state[4] = tmp0;
-        diff = tmp1 - state[6];
-        // scale down and round
-        diff = diff >> 14;
-        if (diff < 0)
-            diff += 1;
-        tmp0 = state[5] + diff * kResampleAllpass[0][1];
-        state[5] = tmp1;
-        diff = tmp0 - state[7];
-        // scale down and truncate
-        diff = diff >> 14;
-        if (diff < 0)
-            diff += 1;
-        state[7] = state[6] + diff * kResampleAllpass[0][2];
-        state[6] = tmp0;
-
-        // average the two allpass outputs, scale down and store
-        out[i << 1] = (out[i << 1] + (state[7] >> 1)) >> 15;
-    }
-
-    // switch to odd output samples
-    out++;
-
-    // lower allpass filter: even input -> odd output samples
-    for (i = 0; i < len; i++)
-    {
-        tmp0 = in[i << 1];
-        diff = tmp0 - state[9];
-        // scale down and round
-        diff = (diff + (1 << 13)) >> 14;
-        tmp1 = state[8] + diff * kResampleAllpass[1][0];
-        state[8] = tmp0;
-        diff = tmp1 - state[10];
-        // scale down and truncate
-        diff = diff >> 14;
-        if (diff < 0)
-            diff += 1;
-        tmp0 = state[9] + diff * kResampleAllpass[1][1];
-        state[9] = tmp1;
-        diff = tmp0 - state[11];
-        // scale down and truncate
-        diff = diff >> 14;
-        if (diff < 0)
-            diff += 1;
-        state[11] = state[10] + diff * kResampleAllpass[1][2];
-        state[10] = tmp0;
-
-        // scale down, round and store
-        out[i << 1] = state[11] >> 1;
-    }
-
-    // upper allpass filter: odd input -> odd output samples
-    in++;
-    for (i = 0; i < len; i++)
-    {
-        tmp0 = in[i << 1];
-        diff = tmp0 - state[13];
-        // scale down and round
-        diff = (diff + (1 << 13)) >> 14;
-        tmp1 = state[12] + diff * kResampleAllpass[0][0];
-        state[12] = tmp0;
-        diff = tmp1 - state[14];
-        // scale down and round
-        diff = diff >> 14;
-        if (diff < 0)
-            diff += 1;
-        tmp0 = state[13] + diff * kResampleAllpass[0][1];
-        state[13] = tmp1;
-        diff = tmp0 - state[15];
-        // scale down and truncate
-        diff = diff >> 14;
-        if (diff < 0)
-            diff += 1;
-        state[15] = state[14] + diff * kResampleAllpass[0][2];
-        state[14] = tmp0;
-
-        // average the two allpass outputs, scale down and store
-        out[i << 1] = (out[i << 1] + (state[15] >> 1)) >> 15;
-    }
-}
diff --git a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/resample_by_2_internal.h b/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/resample_by_2_internal.h
deleted file mode 100644
index 145395a..0000000
--- a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/resample_by_2_internal.h
+++ /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.
- */
-
-/*
- * This header file contains some internal resampling functions.
- *
- */
-
-#ifndef COMMON_AUDIO_SIGNAL_PROCESSING_RESAMPLE_BY_2_INTERNAL_H_
-#define COMMON_AUDIO_SIGNAL_PROCESSING_RESAMPLE_BY_2_INTERNAL_H_
-
-#include <stdint.h>
-
-/*******************************************************************
- * resample_by_2_fast.c
- * Functions for internal use in the other resample functions
- ******************************************************************/
-void WebRtcSpl_DownBy2IntToShort(int32_t* in,
-                                 int32_t len,
-                                 int16_t* out,
-                                 int32_t* state);
-
-void WebRtcSpl_DownBy2ShortToInt(const int16_t* in,
-                                 int32_t len,
-                                 int32_t* out,
-                                 int32_t* state);
-
-void WebRtcSpl_UpBy2ShortToInt(const int16_t* in,
-                               int32_t len,
-                               int32_t* out,
-                               int32_t* state);
-
-void WebRtcSpl_UpBy2IntToInt(const int32_t* in,
-                             int32_t len,
-                             int32_t* out,
-                             int32_t* state);
-
-void WebRtcSpl_UpBy2IntToShort(const int32_t* in,
-                               int32_t len,
-                               int16_t* out,
-                               int32_t* state);
-
-void WebRtcSpl_LPBy2ShortToInt(const int16_t* in,
-                               int32_t len,
-                               int32_t* out,
-                               int32_t* state);
-
-void WebRtcSpl_LPBy2IntToInt(const int32_t* in,
-                             int32_t len,
-                             int32_t* out,
-                             int32_t* state);
-
-#endif  // COMMON_AUDIO_SIGNAL_PROCESSING_RESAMPLE_BY_2_INTERNAL_H_
diff --git a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/resample_fractional.c b/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/resample_fractional.c
deleted file mode 100644
index 6409fba..0000000
--- a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/resample_fractional.c
+++ /dev/null
@@ -1,239 +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.
- */
-
-
-/*
- * This file contains the resampling functions between 48, 44, 32 and 24 kHz.
- * The description headers can be found in signal_processing_library.h
- *
- */
-
-#include "webrtc/common_audio/signal_processing/include/signal_processing_library.h"
-
-// interpolation coefficients
-static const int16_t kCoefficients48To32[2][8] = {
-        {778, -2050, 1087, 23285, 12903, -3783, 441, 222},
-        {222, 441, -3783, 12903, 23285, 1087, -2050, 778}
-};
-
-static const int16_t kCoefficients32To24[3][8] = {
-        {767, -2362, 2434, 24406, 10620, -3838, 721, 90},
-        {386, -381, -2646, 19062, 19062, -2646, -381, 386},
-        {90, 721, -3838, 10620, 24406, 2434, -2362, 767}
-};
-
-static const int16_t kCoefficients44To32[4][9] = {
-        {117, -669, 2245, -6183, 26267, 13529, -3245, 845, -138},
-        {-101, 612, -2283, 8532, 29790, -5138, 1789, -524, 91},
-        {50, -292, 1016, -3064, 32010, 3933, -1147, 315, -53},
-        {-156, 974, -3863, 18603, 21691, -6246, 2353, -712, 126}
-};
-
-//   Resampling ratio: 2/3
-// input:  int32_t (normalized, not saturated) :: size 3 * K
-// output: int32_t (shifted 15 positions to the left, + offset 16384) :: size 2 * K
-//      K: number of blocks
-
-void WebRtcSpl_Resample48khzTo32khz(const int32_t *In, int32_t *Out, size_t K)
-{
-    /////////////////////////////////////////////////////////////
-    // Filter operation:
-    //
-    // Perform resampling (3 input samples -> 2 output samples);
-    // process in sub blocks of size 3 samples.
-    int32_t tmp;
-    size_t m;
-
-    for (m = 0; m < K; m++)
-    {
-        tmp = 1 << 14;
-        tmp += kCoefficients48To32[0][0] * In[0];
-        tmp += kCoefficients48To32[0][1] * In[1];
-        tmp += kCoefficients48To32[0][2] * In[2];
-        tmp += kCoefficients48To32[0][3] * In[3];
-        tmp += kCoefficients48To32[0][4] * In[4];
-        tmp += kCoefficients48To32[0][5] * In[5];
-        tmp += kCoefficients48To32[0][6] * In[6];
-        tmp += kCoefficients48To32[0][7] * In[7];
-        Out[0] = tmp;
-
-        tmp = 1 << 14;
-        tmp += kCoefficients48To32[1][0] * In[1];
-        tmp += kCoefficients48To32[1][1] * In[2];
-        tmp += kCoefficients48To32[1][2] * In[3];
-        tmp += kCoefficients48To32[1][3] * In[4];
-        tmp += kCoefficients48To32[1][4] * In[5];
-        tmp += kCoefficients48To32[1][5] * In[6];
-        tmp += kCoefficients48To32[1][6] * In[7];
-        tmp += kCoefficients48To32[1][7] * In[8];
-        Out[1] = tmp;
-
-        // update pointers
-        In += 3;
-        Out += 2;
-    }
-}
-
-//   Resampling ratio: 3/4
-// input:  int32_t (normalized, not saturated) :: size 4 * K
-// output: int32_t (shifted 15 positions to the left, + offset 16384) :: size 3 * K
-//      K: number of blocks
-
-void WebRtcSpl_Resample32khzTo24khz(const int32_t *In, int32_t *Out, size_t K)
-{
-    /////////////////////////////////////////////////////////////
-    // Filter operation:
-    //
-    // Perform resampling (4 input samples -> 3 output samples);
-    // process in sub blocks of size 4 samples.
-    size_t m;
-    int32_t tmp;
-
-    for (m = 0; m < K; m++)
-    {
-        tmp = 1 << 14;
-        tmp += kCoefficients32To24[0][0] * In[0];
-        tmp += kCoefficients32To24[0][1] * In[1];
-        tmp += kCoefficients32To24[0][2] * In[2];
-        tmp += kCoefficients32To24[0][3] * In[3];
-        tmp += kCoefficients32To24[0][4] * In[4];
-        tmp += kCoefficients32To24[0][5] * In[5];
-        tmp += kCoefficients32To24[0][6] * In[6];
-        tmp += kCoefficients32To24[0][7] * In[7];
-        Out[0] = tmp;
-
-        tmp = 1 << 14;
-        tmp += kCoefficients32To24[1][0] * In[1];
-        tmp += kCoefficients32To24[1][1] * In[2];
-        tmp += kCoefficients32To24[1][2] * In[3];
-        tmp += kCoefficients32To24[1][3] * In[4];
-        tmp += kCoefficients32To24[1][4] * In[5];
-        tmp += kCoefficients32To24[1][5] * In[6];
-        tmp += kCoefficients32To24[1][6] * In[7];
-        tmp += kCoefficients32To24[1][7] * In[8];
-        Out[1] = tmp;
-
-        tmp = 1 << 14;
-        tmp += kCoefficients32To24[2][0] * In[2];
-        tmp += kCoefficients32To24[2][1] * In[3];
-        tmp += kCoefficients32To24[2][2] * In[4];
-        tmp += kCoefficients32To24[2][3] * In[5];
-        tmp += kCoefficients32To24[2][4] * In[6];
-        tmp += kCoefficients32To24[2][5] * In[7];
-        tmp += kCoefficients32To24[2][6] * In[8];
-        tmp += kCoefficients32To24[2][7] * In[9];
-        Out[2] = tmp;
-
-        // update pointers
-        In += 4;
-        Out += 3;
-    }
-}
-
-//
-// fractional resampling filters
-//   Fout = 11/16 * Fin
-//   Fout =  8/11 * Fin
-//
-
-// compute two inner-products and store them to output array
-static void WebRtcSpl_ResampDotProduct(const int32_t *in1, const int32_t *in2,
-                                       const int16_t *coef_ptr, int32_t *out1,
-                                       int32_t *out2)
-{
-    int32_t tmp1 = 16384;
-    int32_t tmp2 = 16384;
-    int16_t coef;
-
-    coef = coef_ptr[0];
-    tmp1 += coef * in1[0];
-    tmp2 += coef * in2[-0];
-
-    coef = coef_ptr[1];
-    tmp1 += coef * in1[1];
-    tmp2 += coef * in2[-1];
-
-    coef = coef_ptr[2];
-    tmp1 += coef * in1[2];
-    tmp2 += coef * in2[-2];
-
-    coef = coef_ptr[3];
-    tmp1 += coef * in1[3];
-    tmp2 += coef * in2[-3];
-
-    coef = coef_ptr[4];
-    tmp1 += coef * in1[4];
-    tmp2 += coef * in2[-4];
-
-    coef = coef_ptr[5];
-    tmp1 += coef * in1[5];
-    tmp2 += coef * in2[-5];
-
-    coef = coef_ptr[6];
-    tmp1 += coef * in1[6];
-    tmp2 += coef * in2[-6];
-
-    coef = coef_ptr[7];
-    tmp1 += coef * in1[7];
-    tmp2 += coef * in2[-7];
-
-    coef = coef_ptr[8];
-    *out1 = tmp1 + coef * in1[8];
-    *out2 = tmp2 + coef * in2[-8];
-}
-
-//   Resampling ratio: 8/11
-// input:  int32_t (normalized, not saturated) :: size 11 * K
-// output: int32_t (shifted 15 positions to the left, + offset 16384) :: size  8 * K
-//      K: number of blocks
-
-void WebRtcSpl_Resample44khzTo32khz(const int32_t *In, int32_t *Out, size_t K)
-{
-    /////////////////////////////////////////////////////////////
-    // Filter operation:
-    //
-    // Perform resampling (11 input samples -> 8 output samples);
-    // process in sub blocks of size 11 samples.
-    int32_t tmp;
-    size_t m;
-
-    for (m = 0; m < K; m++)
-    {
-        tmp = 1 << 14;
-
-        // first output sample
-        Out[0] = ((int32_t)In[3] << 15) + tmp;
-
-        // sum and accumulate filter coefficients and input samples
-        tmp += kCoefficients44To32[3][0] * In[5];
-        tmp += kCoefficients44To32[3][1] * In[6];
-        tmp += kCoefficients44To32[3][2] * In[7];
-        tmp += kCoefficients44To32[3][3] * In[8];
-        tmp += kCoefficients44To32[3][4] * In[9];
-        tmp += kCoefficients44To32[3][5] * In[10];
-        tmp += kCoefficients44To32[3][6] * In[11];
-        tmp += kCoefficients44To32[3][7] * In[12];
-        tmp += kCoefficients44To32[3][8] * In[13];
-        Out[4] = tmp;
-
-        // sum and accumulate filter coefficients and input samples
-        WebRtcSpl_ResampDotProduct(&In[0], &In[17], kCoefficients44To32[0], &Out[1], &Out[7]);
-
-        // sum and accumulate filter coefficients and input samples
-        WebRtcSpl_ResampDotProduct(&In[2], &In[15], kCoefficients44To32[1], &Out[2], &Out[6]);
-
-        // sum and accumulate filter coefficients and input samples
-        WebRtcSpl_ResampDotProduct(&In[3], &In[14], kCoefficients44To32[2], &Out[3], &Out[5]);
-
-        // update pointers
-        In += 11;
-        Out += 8;
-    }
-}
diff --git a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/spl_init.c b/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/spl_init.c
deleted file mode 100644
index 82fba1d..0000000
--- a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/spl_init.c
+++ /dev/null
@@ -1,133 +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.
- */
-
-/* The global function contained in this file initializes SPL function
- * pointers, currently only for ARM platforms.
- *
- * Some code came from common/rtcd.c in the WebM project.
- */
-
-#include "webrtc/common_audio/signal_processing/include/signal_processing_library.h"
-#include "webrtc/system_wrappers/include/cpu_features_wrapper.h"
-
-/* Declare function pointers. */
-MaxAbsValueW16 WebRtcSpl_MaxAbsValueW16;
-MaxAbsValueW32 WebRtcSpl_MaxAbsValueW32;
-MaxValueW16 WebRtcSpl_MaxValueW16;
-MaxValueW32 WebRtcSpl_MaxValueW32;
-MinValueW16 WebRtcSpl_MinValueW16;
-MinValueW32 WebRtcSpl_MinValueW32;
-CrossCorrelation WebRtcSpl_CrossCorrelation;
-DownsampleFast WebRtcSpl_DownsampleFast;
-ScaleAndAddVectorsWithRound WebRtcSpl_ScaleAndAddVectorsWithRound;
-
-#if (!defined(WEBRTC_HAS_NEON)) && !defined(MIPS32_LE)
-/* Initialize function pointers to the generic C version. */
-static void InitPointersToC(void) {
-  WebRtcSpl_MaxAbsValueW16 = WebRtcSpl_MaxAbsValueW16C;
-  WebRtcSpl_MaxAbsValueW32 = WebRtcSpl_MaxAbsValueW32C;
-  WebRtcSpl_MaxValueW16 = WebRtcSpl_MaxValueW16C;
-  WebRtcSpl_MaxValueW32 = WebRtcSpl_MaxValueW32C;
-  WebRtcSpl_MinValueW16 = WebRtcSpl_MinValueW16C;
-  WebRtcSpl_MinValueW32 = WebRtcSpl_MinValueW32C;
-  WebRtcSpl_CrossCorrelation = WebRtcSpl_CrossCorrelationC;
-  WebRtcSpl_DownsampleFast = WebRtcSpl_DownsampleFastC;
-  WebRtcSpl_ScaleAndAddVectorsWithRound =
-      WebRtcSpl_ScaleAndAddVectorsWithRoundC;
-}
-#endif
-
-#if defined(WEBRTC_HAS_NEON)
-/* Initialize function pointers to the Neon version. */
-static void InitPointersToNeon(void) {
-  WebRtcSpl_MaxAbsValueW16 = WebRtcSpl_MaxAbsValueW16Neon;
-  WebRtcSpl_MaxAbsValueW32 = WebRtcSpl_MaxAbsValueW32Neon;
-  WebRtcSpl_MaxValueW16 = WebRtcSpl_MaxValueW16Neon;
-  WebRtcSpl_MaxValueW32 = WebRtcSpl_MaxValueW32Neon;
-  WebRtcSpl_MinValueW16 = WebRtcSpl_MinValueW16Neon;
-  WebRtcSpl_MinValueW32 = WebRtcSpl_MinValueW32Neon;
-  WebRtcSpl_CrossCorrelation = WebRtcSpl_CrossCorrelationNeon;
-  WebRtcSpl_DownsampleFast = WebRtcSpl_DownsampleFastNeon;
-  WebRtcSpl_ScaleAndAddVectorsWithRound =
-      WebRtcSpl_ScaleAndAddVectorsWithRoundC;
-}
-#endif
-
-#if defined(MIPS32_LE)
-/* Initialize function pointers to the MIPS version. */
-static void InitPointersToMIPS(void) {
-  WebRtcSpl_MaxAbsValueW16 = WebRtcSpl_MaxAbsValueW16_mips;
-  WebRtcSpl_MaxValueW16 = WebRtcSpl_MaxValueW16_mips;
-  WebRtcSpl_MaxValueW32 = WebRtcSpl_MaxValueW32_mips;
-  WebRtcSpl_MinValueW16 = WebRtcSpl_MinValueW16_mips;
-  WebRtcSpl_MinValueW32 = WebRtcSpl_MinValueW32_mips;
-  WebRtcSpl_CrossCorrelation = WebRtcSpl_CrossCorrelation_mips;
-  WebRtcSpl_DownsampleFast = WebRtcSpl_DownsampleFast_mips;
-#if defined(MIPS_DSP_R1_LE)
-  WebRtcSpl_MaxAbsValueW32 = WebRtcSpl_MaxAbsValueW32_mips;
-  WebRtcSpl_ScaleAndAddVectorsWithRound =
-      WebRtcSpl_ScaleAndAddVectorsWithRound_mips;
-#else
-  WebRtcSpl_MaxAbsValueW32 = WebRtcSpl_MaxAbsValueW32C;
-  WebRtcSpl_ScaleAndAddVectorsWithRound =
-      WebRtcSpl_ScaleAndAddVectorsWithRoundC;
-#endif
-}
-#endif
-
-static void InitFunctionPointers(void) {
-#if defined(WEBRTC_HAS_NEON)
-  InitPointersToNeon();
-#elif defined(MIPS32_LE)
-  InitPointersToMIPS();
-#else
-  InitPointersToC();
-#endif  /* WEBRTC_HAS_NEON */
-}
-
-#if defined(WEBRTC_POSIX)
-#include <pthread.h>
-
-static void once(void (*func)(void)) {
-  static pthread_once_t lock = PTHREAD_ONCE_INIT;
-  pthread_once(&lock, func);
-}
-
-#elif defined(_WIN32)
-#include <windows.h>
-
-static void once(void (*func)(void)) {
-  /* Didn't use InitializeCriticalSection() since there's no race-free context
-   * in which to execute it.
-   *
-   * TODO(kma): Change to different implementation (e.g.
-   * InterlockedCompareExchangePointer) to avoid issues similar to
-   * http://code.google.com/p/webm/issues/detail?id=467.
-   */
-  static CRITICAL_SECTION lock = {(void *)((size_t)-1), -1, 0, 0, 0, 0};
-  static int done = 0;
-
-  EnterCriticalSection(&lock);
-  if (!done) {
-    func();
-    done = 1;
-  }
-  LeaveCriticalSection(&lock);
-}
-
-/* There's no fallback version as an #else block here to ensure thread safety.
- * In case of neither pthread for WEBRTC_POSIX nor _WIN32 is present, build
- * system should pick it up.
- */
-#endif  /* WEBRTC_POSIX */
-
-void WebRtcSpl_Init(void) {
-  once(InitFunctionPointers);
-}
diff --git a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/spl_inl.c b/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/spl_inl.c
deleted file mode 100644
index efa6a65..0000000
--- a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/spl_inl.c
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- *  Copyright (c) 2016 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 <stdint.h>
-
-#include "webrtc/common_audio/signal_processing/include/spl_inl.h"
-
-// Table used by WebRtcSpl_CountLeadingZeros32_NotBuiltin. For each uint32_t n
-// that's a sequence of 0 bits followed by a sequence of 1 bits, the entry at
-// index (n * 0x8c0b2891) >> 26 in this table gives the number of zero bits in
-// n.
-const int8_t kWebRtcSpl_CountLeadingZeros32_Table[64] = {
-    32, 8,  17, -1, -1, 14, -1, -1, -1, 20, -1, -1, -1, 28, -1, 18,
-    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0,  26, 25, 24,
-    4,  11, 23, 31, 3,  7,  10, 16, 22, 30, -1, -1, 2,  6,  13, 9,
-    -1, 15, -1, 21, -1, 29, 19, -1, -1, -1, -1, -1, 1,  27, 5,  12,
-};
diff --git a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/spl_sqrt.c b/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/spl_sqrt.c
deleted file mode 100644
index f79ac9f..0000000
--- a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/spl_sqrt.c
+++ /dev/null
@@ -1,194 +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.
- */
-
-
-/*
- * This file contains the function WebRtcSpl_Sqrt().
- * The description header can be found in signal_processing_library.h
- *
- */
-
-#include "webrtc/rtc_base/checks.h"
-#include "webrtc/common_audio/signal_processing/include/signal_processing_library.h"
-
-int32_t WebRtcSpl_SqrtLocal(int32_t in);
-
-int32_t WebRtcSpl_SqrtLocal(int32_t in)
-{
-
-    int16_t x_half, t16;
-    int32_t A, B, x2;
-
-    /* The following block performs:
-     y=in/2
-     x=y-2^30
-     x_half=x/2^31
-     t = 1 + (x_half) - 0.5*((x_half)^2) + 0.5*((x_half)^3) - 0.625*((x_half)^4)
-         + 0.875*((x_half)^5)
-     */
-
-    B = in / 2;
-
-    B = B - ((int32_t)0x40000000); // B = in/2 - 1/2
-    x_half = (int16_t)(B >> 16);  // x_half = x/2 = (in-1)/2
-    B = B + ((int32_t)0x40000000); // B = 1 + x/2
-    B = B + ((int32_t)0x40000000); // Add 0.5 twice (since 1.0 does not exist in Q31)
-
-    x2 = ((int32_t)x_half) * ((int32_t)x_half) * 2; // A = (x/2)^2
-    A = -x2; // A = -(x/2)^2
-    B = B + (A >> 1); // B = 1 + x/2 - 0.5*(x/2)^2
-
-    A >>= 16;
-    A = A * A * 2; // A = (x/2)^4
-    t16 = (int16_t)(A >> 16);
-    B += -20480 * t16 * 2;  // B = B - 0.625*A
-    // After this, B = 1 + x/2 - 0.5*(x/2)^2 - 0.625*(x/2)^4
-
-    A = x_half * t16 * 2;  // A = (x/2)^5
-    t16 = (int16_t)(A >> 16);
-    B += 28672 * t16 * 2;  // B = B + 0.875*A
-    // After this, B = 1 + x/2 - 0.5*(x/2)^2 - 0.625*(x/2)^4 + 0.875*(x/2)^5
-
-    t16 = (int16_t)(x2 >> 16);
-    A = x_half * t16 * 2;  // A = x/2^3
-
-    B = B + (A >> 1); // B = B + 0.5*A
-    // After this, B = 1 + x/2 - 0.5*(x/2)^2 + 0.5*(x/2)^3 - 0.625*(x/2)^4 + 0.875*(x/2)^5
-
-    B = B + ((int32_t)32768); // Round off bit
-
-    return B;
-}
-
-int32_t WebRtcSpl_Sqrt(int32_t value)
-{
-    /*
-     Algorithm:
-
-     Six term Taylor Series is used here to compute the square root of a number
-     y^0.5 = (1+x)^0.5 where x = y-1
-     = 1+(x/2)-0.5*((x/2)^2+0.5*((x/2)^3-0.625*((x/2)^4+0.875*((x/2)^5)
-     0.5 <= x < 1
-
-     Example of how the algorithm works, with ut=sqrt(in), and
-     with in=73632 and ut=271 (even shift value case):
-
-     in=73632
-     y= in/131072
-     x=y-1
-     t = 1 + (x/2) - 0.5*((x/2)^2) + 0.5*((x/2)^3) - 0.625*((x/2)^4) + 0.875*((x/2)^5)
-     ut=t*(1/sqrt(2))*512
-
-     or:
-
-     in=73632
-     in2=73632*2^14
-     y= in2/2^31
-     x=y-1
-     t = 1 + (x/2) - 0.5*((x/2)^2) + 0.5*((x/2)^3) - 0.625*((x/2)^4) + 0.875*((x/2)^5)
-     ut=t*(1/sqrt(2))
-     ut2=ut*2^9
-
-     which gives:
-
-     in  = 73632
-     in2 = 1206386688
-     y   = 0.56176757812500
-     x   = -0.43823242187500
-     t   = 0.74973506527313
-     ut  = 0.53014274874797
-     ut2 = 2.714330873589594e+002
-
-     or:
-
-     in=73632
-     in2=73632*2^14
-     y=in2/2
-     x=y-2^30
-     x_half=x/2^31
-     t = 1 + (x_half) - 0.5*((x_half)^2) + 0.5*((x_half)^3) - 0.625*((x_half)^4)
-         + 0.875*((x_half)^5)
-     ut=t*(1/sqrt(2))
-     ut2=ut*2^9
-
-     which gives:
-
-     in  = 73632
-     in2 = 1206386688
-     y   = 603193344
-     x   = -470548480
-     x_half =  -0.21911621093750
-     t   = 0.74973506527313
-     ut  = 0.53014274874797
-     ut2 = 2.714330873589594e+002
-
-     */
-
-    int16_t x_norm, nshift, t16, sh;
-    int32_t A;
-
-    int16_t k_sqrt_2 = 23170; // 1/sqrt2 (==5a82)
-
-    A = value;
-
-    // The convention in this function is to calculate sqrt(abs(A)). Negate the
-    // input if it is negative.
-    if (A < 0) {
-        if (A == WEBRTC_SPL_WORD32_MIN) {
-            // This number cannot be held in an int32_t after negating.
-            // Map it to the maximum positive value.
-            A = WEBRTC_SPL_WORD32_MAX;
-        } else {
-            A = -A;
-        }
-    } else if (A == 0) {
-        return 0;  // sqrt(0) = 0
-    }
-
-    sh = WebRtcSpl_NormW32(A); // # shifts to normalize A
-    A = WEBRTC_SPL_LSHIFT_W32(A, sh); // Normalize A
-    if (A < (WEBRTC_SPL_WORD32_MAX - 32767))
-    {
-        A = A + ((int32_t)32768); // Round off bit
-    } else
-    {
-        A = WEBRTC_SPL_WORD32_MAX;
-    }
-
-    x_norm = (int16_t)(A >> 16);  // x_norm = AH
-
-    nshift = (sh / 2);
-    RTC_DCHECK_GE(nshift, 0);
-
-    A = (int32_t)WEBRTC_SPL_LSHIFT_W32((int32_t)x_norm, 16);
-    A = WEBRTC_SPL_ABS_W32(A); // A = abs(x_norm<<16)
-    A = WebRtcSpl_SqrtLocal(A); // A = sqrt(A)
-
-    if (2 * nshift == sh) {
-        // Even shift value case
-
-        t16 = (int16_t)(A >> 16);  // t16 = AH
-
-        A = k_sqrt_2 * t16 * 2;  // A = 1/sqrt(2)*t16
-        A = A + ((int32_t)32768); // Round off
-        A = A & ((int32_t)0x7fff0000); // Round off
-
-        A >>= 15;  // A = A>>16
-
-    } else
-    {
-        A >>= 16;  // A = A>>16
-    }
-
-    A = A & ((int32_t)0x0000ffff);
-    A >>= nshift;  // De-normalize the result.
-
-    return A;
-}
diff --git a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/vector_scaling_operations.c b/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/vector_scaling_operations.c
deleted file mode 100644
index e1f391d..0000000
--- a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/signal_processing/vector_scaling_operations.c
+++ /dev/null
@@ -1,165 +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.
- */
-
-
-/*
- * This file contains implementations of the functions
- * WebRtcSpl_VectorBitShiftW16()
- * WebRtcSpl_VectorBitShiftW32()
- * WebRtcSpl_VectorBitShiftW32ToW16()
- * WebRtcSpl_ScaleVector()
- * WebRtcSpl_ScaleVectorWithSat()
- * WebRtcSpl_ScaleAndAddVectors()
- * WebRtcSpl_ScaleAndAddVectorsWithRoundC()
- */
-
-#include "webrtc/common_audio/signal_processing/include/signal_processing_library.h"
-
-void WebRtcSpl_VectorBitShiftW16(int16_t *res, size_t length,
-                                 const int16_t *in, int16_t right_shifts)
-{
-    size_t i;
-
-    if (right_shifts > 0)
-    {
-        for (i = length; i > 0; i--)
-        {
-            (*res++) = ((*in++) >> right_shifts);
-        }
-    } else
-    {
-        for (i = length; i > 0; i--)
-        {
-            (*res++) = ((*in++) * (1 << (-right_shifts)));
-        }
-    }
-}
-
-void WebRtcSpl_VectorBitShiftW32(int32_t *out_vector,
-                                 size_t vector_length,
-                                 const int32_t *in_vector,
-                                 int16_t right_shifts)
-{
-    size_t i;
-
-    if (right_shifts > 0)
-    {
-        for (i = vector_length; i > 0; i--)
-        {
-            (*out_vector++) = ((*in_vector++) >> right_shifts);
-        }
-    } else
-    {
-        for (i = vector_length; i > 0; i--)
-        {
-            (*out_vector++) = ((*in_vector++) << (-right_shifts));
-        }
-    }
-}
-
-void WebRtcSpl_VectorBitShiftW32ToW16(int16_t* out, size_t length,
-                                      const int32_t* in, int right_shifts) {
-  size_t i;
-  int32_t tmp_w32;
-
-  if (right_shifts >= 0) {
-    for (i = length; i > 0; i--) {
-      tmp_w32 = (*in++) >> right_shifts;
-      (*out++) = WebRtcSpl_SatW32ToW16(tmp_w32);
-    }
-  } else {
-    int left_shifts = -right_shifts;
-    for (i = length; i > 0; i--) {
-      tmp_w32 = (*in++) << left_shifts;
-      (*out++) = WebRtcSpl_SatW32ToW16(tmp_w32);
-    }
-  }
-}
-
-void WebRtcSpl_ScaleVector(const int16_t *in_vector, int16_t *out_vector,
-                           int16_t gain, size_t in_vector_length,
-                           int16_t right_shifts)
-{
-    // Performs vector operation: out_vector = (gain*in_vector)>>right_shifts
-    size_t i;
-    const int16_t *inptr;
-    int16_t *outptr;
-
-    inptr = in_vector;
-    outptr = out_vector;
-
-    for (i = 0; i < in_vector_length; i++)
-    {
-      *outptr++ = (int16_t)((*inptr++ * gain) >> right_shifts);
-    }
-}
-
-void WebRtcSpl_ScaleVectorWithSat(const int16_t *in_vector, int16_t *out_vector,
-                                 int16_t gain, size_t in_vector_length,
-                                 int16_t right_shifts)
-{
-    // Performs vector operation: out_vector = (gain*in_vector)>>right_shifts
-    size_t i;
-    const int16_t *inptr;
-    int16_t *outptr;
-
-    inptr = in_vector;
-    outptr = out_vector;
-
-    for (i = 0; i < in_vector_length; i++) {
-      *outptr++ = WebRtcSpl_SatW32ToW16((*inptr++ * gain) >> right_shifts);
-    }
-}
-
-void WebRtcSpl_ScaleAndAddVectors(const int16_t *in1, int16_t gain1, int shift1,
-                                  const int16_t *in2, int16_t gain2, int shift2,
-                                  int16_t *out, size_t vector_length)
-{
-    // Performs vector operation: out = (gain1*in1)>>shift1 + (gain2*in2)>>shift2
-    size_t i;
-    const int16_t *in1ptr;
-    const int16_t *in2ptr;
-    int16_t *outptr;
-
-    in1ptr = in1;
-    in2ptr = in2;
-    outptr = out;
-
-    for (i = 0; i < vector_length; i++)
-    {
-      *outptr++ = (int16_t)((gain1 * *in1ptr++) >> shift1) +
-          (int16_t)((gain2 * *in2ptr++) >> shift2);
-    }
-}
-
-// C version of WebRtcSpl_ScaleAndAddVectorsWithRound() for generic platforms.
-int WebRtcSpl_ScaleAndAddVectorsWithRoundC(const int16_t* in_vector1,
-                                           int16_t in_vector1_scale,
-                                           const int16_t* in_vector2,
-                                           int16_t in_vector2_scale,
-                                           int right_shifts,
-                                           int16_t* out_vector,
-                                           size_t length) {
-  size_t i = 0;
-  int round_value = (1 << right_shifts) >> 1;
-
-  if (in_vector1 == NULL || in_vector2 == NULL || out_vector == NULL ||
-      length == 0 || right_shifts < 0) {
-    return -1;
-  }
-
-  for (i = 0; i < length; i++) {
-    out_vector[i] = (int16_t)((
-        in_vector1[i] * in_vector1_scale + in_vector2[i] * in_vector2_scale +
-        round_value) >> right_shifts);
-  }
-
-  return 0;
-}
diff --git a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/third_party/spl_sqrt_floor/spl_sqrt_floor.c b/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/third_party/spl_sqrt_floor/spl_sqrt_floor.c
deleted file mode 100644
index 25bb0a1..0000000
--- a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/third_party/spl_sqrt_floor/spl_sqrt_floor.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Written by Wilco Dijkstra, 1996. The following email exchange establishes the
- * license.
- *
- * From: Wilco Dijkstra <Wilco.Dijkstra@ntlworld.com>
- * Date: Fri, Jun 24, 2011 at 3:20 AM
- * Subject: Re: sqrt routine
- * To: Kevin Ma <kma@google.com>
- * Hi Kevin,
- * Thanks for asking. Those routines are public domain (originally posted to
- * comp.sys.arm a long time ago), so you can use them freely for any purpose.
- * Cheers,
- * Wilco
- *
- * ----- Original Message -----
- * From: "Kevin Ma" <kma@google.com>
- * To: <Wilco.Dijkstra@ntlworld.com>
- * Sent: Thursday, June 23, 2011 11:44 PM
- * Subject: Fwd: sqrt routine
- * Hi Wilco,
- * I saw your sqrt routine from several web sites, including
- * http://www.finesse.demon.co.uk/steven/sqrt.html.
- * Just wonder if there's any copyright information with your Successive
- * approximation routines, or if I can freely use it for any purpose.
- * Thanks.
- * Kevin
- */
-
-// Minor modifications in code style for WebRTC, 2012.
-
-#include "webrtc/common_audio/third_party/spl_sqrt_floor/spl_sqrt_floor.h"
-
-/*
- * Algorithm:
- * Successive approximation of the equation (root + delta) ^ 2 = N
- * until delta < 1. If delta < 1 we have the integer part of SQRT (N).
- * Use delta = 2^i for i = 15 .. 0.
- *
- * Output precision is 16 bits. Note for large input values (close to
- * 0x7FFFFFFF), bit 15 (the highest bit of the low 16-bit half word)
- * contains the MSB information (a non-sign value). Do with caution
- * if you need to cast the output to int16_t type.
- *
- * If the input value is negative, it returns 0.
- */
-
-#define WEBRTC_SPL_SQRT_ITER(N)                 \
-  try1 = root + (1 << (N));                     \
-  if (value >= try1 << (N))                     \
-  {                                             \
-    value -= try1 << (N);                       \
-    root |= 2 << (N);                           \
-  }
-
-int32_t WebRtcSpl_SqrtFloor(int32_t value)
-{
-  int32_t root = 0, try1;
-
-  WEBRTC_SPL_SQRT_ITER (15);
-  WEBRTC_SPL_SQRT_ITER (14);
-  WEBRTC_SPL_SQRT_ITER (13);
-  WEBRTC_SPL_SQRT_ITER (12);
-  WEBRTC_SPL_SQRT_ITER (11);
-  WEBRTC_SPL_SQRT_ITER (10);
-  WEBRTC_SPL_SQRT_ITER ( 9);
-  WEBRTC_SPL_SQRT_ITER ( 8);
-  WEBRTC_SPL_SQRT_ITER ( 7);
-  WEBRTC_SPL_SQRT_ITER ( 6);
-  WEBRTC_SPL_SQRT_ITER ( 5);
-  WEBRTC_SPL_SQRT_ITER ( 4);
-  WEBRTC_SPL_SQRT_ITER ( 3);
-  WEBRTC_SPL_SQRT_ITER ( 2);
-  WEBRTC_SPL_SQRT_ITER ( 1);
-  WEBRTC_SPL_SQRT_ITER ( 0);
-
-  return root >> 1;
-}
diff --git a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/third_party/spl_sqrt_floor/spl_sqrt_floor.h b/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/third_party/spl_sqrt_floor/spl_sqrt_floor.h
deleted file mode 100644
index eaa58e3..0000000
--- a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/third_party/spl_sqrt_floor/spl_sqrt_floor.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- *  Copyright (c) 2018 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 <stdint.h>
-
-//
-// WebRtcSpl_SqrtFloor(...)
-//
-// Returns the square root of the input value |value|. The precision of this
-// function is rounding down integer precision, i.e., sqrt(8) gives 2 as answer.
-// If |value| is a negative number then 0 is returned.
-//
-// Algorithm:
-//
-// An iterative 4 cylce/bit routine
-//
-// Input:
-//      - value     : Value to calculate sqrt of
-//
-// Return value     : Result of the sqrt calculation
-//
-int32_t WebRtcSpl_SqrtFloor(int32_t value);
diff --git a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/vad/include/webrtc_vad.h b/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/vad/include/webrtc_vad.h
deleted file mode 100644
index f5bbadf..0000000
--- a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/vad/include/webrtc_vad.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.
- */
-
-/*
- * This header file includes the VAD API calls. Specific function calls are
- * given below.
- */
-
-#ifndef COMMON_AUDIO_VAD_INCLUDE_WEBRTC_VAD_H_  // NOLINT
-#define COMMON_AUDIO_VAD_INCLUDE_WEBRTC_VAD_H_
-
-#include <stddef.h>
-#include <stdint.h>
-
-typedef struct WebRtcVadInst VadInst;
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-// Creates an instance to the VAD structure.
-VadInst* WebRtcVad_Create(void);
-
-// Frees the dynamic memory of a specified VAD instance.
-//
-// - handle [i] : Pointer to VAD instance that should be freed.
-void WebRtcVad_Free(VadInst* handle);
-
-// Initializes a VAD instance.
-//
-// - handle [i/o] : Instance that should be initialized.
-//
-// returns        : 0 - (OK),
-//                 -1 - (null pointer or Default mode could not be set).
-int WebRtcVad_Init(VadInst* handle);
-
-// Sets the VAD operating mode. A more aggressive (higher mode) VAD is more
-// restrictive in reporting speech. Put in other words the probability of being
-// speech when the VAD returns 1 is increased with increasing mode. As a
-// consequence also the missed detection rate goes up.
-//
-// - handle [i/o] : VAD instance.
-// - mode   [i]   : Aggressiveness mode (0, 1, 2, or 3).
-//
-// returns        : 0 - (OK),
-//                 -1 - (null pointer, mode could not be set or the VAD instance
-//                       has not been initialized).
-int WebRtcVad_set_mode(VadInst* handle, int mode);
-
-// Calculates a VAD decision for the |audio_frame|. For valid sampling rates
-// frame lengths, see the description of WebRtcVad_ValidRatesAndFrameLengths().
-//
-// - handle       [i/o] : VAD Instance. Needs to be initialized by
-//                        WebRtcVad_Init() before call.
-// - fs           [i]   : Sampling frequency (Hz): 8000, 16000, or 32000
-// - audio_frame  [i]   : Audio frame buffer.
-// - frame_length [i]   : Length of audio frame buffer in number of samples.
-//
-// returns              : 1 - (Active Voice),
-//                        0 - (Non-active Voice),
-//                       -1 - (Error)
-int WebRtcVad_Process(VadInst* handle,
-                      int fs,
-                      const int16_t* audio_frame,
-                      size_t frame_length);
-
-// Checks for valid combinations of |rate| and |frame_length|. We support 10,
-// 20 and 30 ms frames and the rates 8000, 16000 and 32000 Hz.
-//
-// - rate         [i] : Sampling frequency (Hz).
-// - frame_length [i] : Speech frame buffer length in number of samples.
-//
-// returns            : 0 - (valid combination), -1 - (invalid combination)
-int WebRtcVad_ValidRateAndFrameLength(int rate, size_t frame_length);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif  // COMMON_AUDIO_VAD_INCLUDE_WEBRTC_VAD_H_  // NOLINT
diff --git a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/vad/vad_core.c b/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/vad/vad_core.c
deleted file mode 100644
index eb336f9..0000000
--- a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/vad/vad_core.c
+++ /dev/null
@@ -1,685 +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 "webrtc/common_audio/vad/vad_core.h"
-
-#include "webrtc/rtc_base/sanitizer.h"
-#include "webrtc/common_audio/signal_processing/include/signal_processing_library.h"
-#include "webrtc/common_audio/vad/vad_filterbank.h"
-#include "webrtc/common_audio/vad/vad_gmm.h"
-#include "webrtc/common_audio/vad/vad_sp.h"
-
-// Spectrum Weighting
-static const int16_t kSpectrumWeight[kNumChannels] = { 6, 8, 10, 12, 14, 16 };
-static const int16_t kNoiseUpdateConst = 655; // Q15
-static const int16_t kSpeechUpdateConst = 6554; // Q15
-static const int16_t kBackEta = 154; // Q8
-// Minimum difference between the two models, Q5
-static const int16_t kMinimumDifference[kNumChannels] = {
-    544, 544, 576, 576, 576, 576 };
-// Upper limit of mean value for speech model, Q7
-static const int16_t kMaximumSpeech[kNumChannels] = {
-    11392, 11392, 11520, 11520, 11520, 11520 };
-// Minimum value for mean value
-static const int16_t kMinimumMean[kNumGaussians] = { 640, 768 };
-// Upper limit of mean value for noise model, Q7
-static const int16_t kMaximumNoise[kNumChannels] = {
-    9216, 9088, 8960, 8832, 8704, 8576 };
-// Start values for the Gaussian models, Q7
-// Weights for the two Gaussians for the six channels (noise)
-static const int16_t kNoiseDataWeights[kTableSize] = {
-    34, 62, 72, 66, 53, 25, 94, 66, 56, 62, 75, 103 };
-// Weights for the two Gaussians for the six channels (speech)
-static const int16_t kSpeechDataWeights[kTableSize] = {
-    48, 82, 45, 87, 50, 47, 80, 46, 83, 41, 78, 81 };
-// Means for the two Gaussians for the six channels (noise)
-static const int16_t kNoiseDataMeans[kTableSize] = {
-    6738, 4892, 7065, 6715, 6771, 3369, 7646, 3863, 7820, 7266, 5020, 4362 };
-// Means for the two Gaussians for the six channels (speech)
-static const int16_t kSpeechDataMeans[kTableSize] = {
-    8306, 10085, 10078, 11823, 11843, 6309, 9473, 9571, 10879, 7581, 8180, 7483
-};
-// Stds for the two Gaussians for the six channels (noise)
-static const int16_t kNoiseDataStds[kTableSize] = {
-    378, 1064, 493, 582, 688, 593, 474, 697, 475, 688, 421, 455 };
-// Stds for the two Gaussians for the six channels (speech)
-static const int16_t kSpeechDataStds[kTableSize] = {
-    555, 505, 567, 524, 585, 1231, 509, 828, 492, 1540, 1079, 850 };
-
-// Constants used in GmmProbability().
-//
-// Maximum number of counted speech (VAD = 1) frames in a row.
-static const int16_t kMaxSpeechFrames = 6;
-// Minimum standard deviation for both speech and noise.
-static const int16_t kMinStd = 384;
-
-// Constants in WebRtcVad_InitCore().
-// Default aggressiveness mode.
-static const short kDefaultMode = 0;
-static const int kInitCheck = 42;
-
-// Constants used in WebRtcVad_set_mode_core().
-//
-// Thresholds for different frame lengths (10 ms, 20 ms and 30 ms).
-//
-// Mode 0, Quality.
-static const int16_t kOverHangMax1Q[3] = { 8, 4, 3 };
-static const int16_t kOverHangMax2Q[3] = { 14, 7, 5 };
-static const int16_t kLocalThresholdQ[3] = { 24, 21, 24 };
-static const int16_t kGlobalThresholdQ[3] = { 57, 48, 57 };
-// Mode 1, Low bitrate.
-static const int16_t kOverHangMax1LBR[3] = { 8, 4, 3 };
-static const int16_t kOverHangMax2LBR[3] = { 14, 7, 5 };
-static const int16_t kLocalThresholdLBR[3] = { 37, 32, 37 };
-static const int16_t kGlobalThresholdLBR[3] = { 100, 80, 100 };
-// Mode 2, Aggressive.
-static const int16_t kOverHangMax1AGG[3] = { 6, 3, 2 };
-static const int16_t kOverHangMax2AGG[3] = { 9, 5, 3 };
-static const int16_t kLocalThresholdAGG[3] = { 82, 78, 82 };
-static const int16_t kGlobalThresholdAGG[3] = { 285, 260, 285 };
-// Mode 3, Very aggressive.
-static const int16_t kOverHangMax1VAG[3] = { 6, 3, 2 };
-static const int16_t kOverHangMax2VAG[3] = { 9, 5, 3 };
-static const int16_t kLocalThresholdVAG[3] = { 94, 94, 94 };
-static const int16_t kGlobalThresholdVAG[3] = { 1100, 1050, 1100 };
-
-// Calculates the weighted average w.r.t. number of Gaussians. The |data| are
-// updated with an |offset| before averaging.
-//
-// - data     [i/o] : Data to average.
-// - offset   [i]   : An offset added to |data|.
-// - weights  [i]   : Weights used for averaging.
-//
-// returns          : The weighted average.
-static int32_t WeightedAverage(int16_t* data, int16_t offset,
-                               const int16_t* weights) {
-  int k;
-  int32_t weighted_average = 0;
-
-  for (k = 0; k < kNumGaussians; k++) {
-    data[k * kNumChannels] += offset;
-    weighted_average += data[k * kNumChannels] * weights[k * kNumChannels];
-  }
-  return weighted_average;
-}
-
-// An s16 x s32 -> s32 multiplication 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("signed-integer-overflow")
-    OverflowingMulS16ByS32ToS32(int16_t a, int32_t b) {
-  return a * b;
-}
-
-// Calculates the probabilities for both speech and background noise using
-// Gaussian Mixture Models (GMM). A hypothesis-test is performed to decide which
-// type of signal is most probable.
-//
-// - self           [i/o] : Pointer to VAD instance
-// - features       [i]   : Feature vector of length |kNumChannels|
-//                          = log10(energy in frequency band)
-// - total_power    [i]   : Total power in audio frame.
-// - frame_length   [i]   : Number of input samples
-//
-// - returns              : the VAD decision (0 - noise, 1 - speech).
-static int16_t GmmProbability(VadInstT* self, int16_t* features,
-                              int16_t total_power, size_t frame_length) {
-  int channel, k;
-  int16_t feature_minimum;
-  int16_t h0, h1;
-  int16_t log_likelihood_ratio;
-  int16_t vadflag = 0;
-  int16_t shifts_h0, shifts_h1;
-  int16_t tmp_s16, tmp1_s16, tmp2_s16;
-  int16_t diff;
-  int gaussian;
-  int16_t nmk, nmk2, nmk3, smk, smk2, nsk, ssk;
-  int16_t delt, ndelt;
-  int16_t maxspe, maxmu;
-  int16_t deltaN[kTableSize], deltaS[kTableSize];
-  int16_t ngprvec[kTableSize] = { 0 };  // Conditional probability = 0.
-  int16_t sgprvec[kTableSize] = { 0 };  // Conditional probability = 0.
-  int32_t h0_test, h1_test;
-  int32_t tmp1_s32, tmp2_s32;
-  int32_t sum_log_likelihood_ratios = 0;
-  int32_t noise_global_mean, speech_global_mean;
-  int32_t noise_probability[kNumGaussians], speech_probability[kNumGaussians];
-  int16_t overhead1, overhead2, individualTest, totalTest;
-
-  // Set various thresholds based on frame lengths (80, 160 or 240 samples).
-  if (frame_length == 80) {
-    overhead1 = self->over_hang_max_1[0];
-    overhead2 = self->over_hang_max_2[0];
-    individualTest = self->individual[0];
-    totalTest = self->total[0];
-  } else if (frame_length == 160) {
-    overhead1 = self->over_hang_max_1[1];
-    overhead2 = self->over_hang_max_2[1];
-    individualTest = self->individual[1];
-    totalTest = self->total[1];
-  } else {
-    overhead1 = self->over_hang_max_1[2];
-    overhead2 = self->over_hang_max_2[2];
-    individualTest = self->individual[2];
-    totalTest = self->total[2];
-  }
-
-  if (total_power > kMinEnergy) {
-    // The signal power of current frame is large enough for processing. The
-    // processing consists of two parts:
-    // 1) Calculating the likelihood of speech and thereby a VAD decision.
-    // 2) Updating the underlying model, w.r.t., the decision made.
-
-    // The detection scheme is an LRT with hypothesis
-    // H0: Noise
-    // H1: Speech
-    //
-    // We combine a global LRT with local tests, for each frequency sub-band,
-    // here defined as |channel|.
-    for (channel = 0; channel < kNumChannels; channel++) {
-      // For each channel we model the probability with a GMM consisting of
-      // |kNumGaussians|, with different means and standard deviations depending
-      // on H0 or H1.
-      h0_test = 0;
-      h1_test = 0;
-      for (k = 0; k < kNumGaussians; k++) {
-        gaussian = channel + k * kNumChannels;
-        // Probability under H0, that is, probability of frame being noise.
-        // Value given in Q27 = Q7 * Q20.
-        tmp1_s32 = WebRtcVad_GaussianProbability(features[channel],
-                                                 self->noise_means[gaussian],
-                                                 self->noise_stds[gaussian],
-                                                 &deltaN[gaussian]);
-        noise_probability[k] = kNoiseDataWeights[gaussian] * tmp1_s32;
-        h0_test += noise_probability[k];  // Q27
-
-        // Probability under H1, that is, probability of frame being speech.
-        // Value given in Q27 = Q7 * Q20.
-        tmp1_s32 = WebRtcVad_GaussianProbability(features[channel],
-                                                 self->speech_means[gaussian],
-                                                 self->speech_stds[gaussian],
-                                                 &deltaS[gaussian]);
-        speech_probability[k] = kSpeechDataWeights[gaussian] * tmp1_s32;
-        h1_test += speech_probability[k];  // Q27
-      }
-
-      // Calculate the log likelihood ratio: log2(Pr{X|H1} / Pr{X|H1}).
-      // Approximation:
-      // log2(Pr{X|H1} / Pr{X|H1}) = log2(Pr{X|H1}*2^Q) - log2(Pr{X|H1}*2^Q)
-      //                           = log2(h1_test) - log2(h0_test)
-      //                           = log2(2^(31-shifts_h1)*(1+b1))
-      //                             - log2(2^(31-shifts_h0)*(1+b0))
-      //                           = shifts_h0 - shifts_h1
-      //                             + log2(1+b1) - log2(1+b0)
-      //                          ~= shifts_h0 - shifts_h1
-      //
-      // Note that b0 and b1 are values less than 1, hence, 0 <= log2(1+b0) < 1.
-      // Further, b0 and b1 are independent and on the average the two terms
-      // cancel.
-      shifts_h0 = WebRtcSpl_NormW32(h0_test);
-      shifts_h1 = WebRtcSpl_NormW32(h1_test);
-      if (h0_test == 0) {
-        shifts_h0 = 31;
-      }
-      if (h1_test == 0) {
-        shifts_h1 = 31;
-      }
-      log_likelihood_ratio = shifts_h0 - shifts_h1;
-
-      // Update |sum_log_likelihood_ratios| with spectrum weighting. This is
-      // used for the global VAD decision.
-      sum_log_likelihood_ratios +=
-          (int32_t) (log_likelihood_ratio * kSpectrumWeight[channel]);
-
-      // Local VAD decision.
-      if ((log_likelihood_ratio * 4) > individualTest) {
-        vadflag = 1;
-      }
-
-      // TODO(bjornv): The conditional probabilities below are applied on the
-      // hard coded number of Gaussians set to two. Find a way to generalize.
-      // Calculate local noise probabilities used later when updating the GMM.
-      h0 = (int16_t) (h0_test >> 12);  // Q15
-      if (h0 > 0) {
-        // High probability of noise. Assign conditional probabilities for each
-        // Gaussian in the GMM.
-        tmp1_s32 = (noise_probability[0] & 0xFFFFF000) << 2;  // Q29
-        ngprvec[channel] = (int16_t) WebRtcSpl_DivW32W16(tmp1_s32, h0);  // Q14
-        ngprvec[channel + kNumChannels] = 16384 - ngprvec[channel];
-      } else {
-        // Low noise probability. Assign conditional probability 1 to the first
-        // Gaussian and 0 to the rest (which is already set at initialization).
-        ngprvec[channel] = 16384;
-      }
-
-      // Calculate local speech probabilities used later when updating the GMM.
-      h1 = (int16_t) (h1_test >> 12);  // Q15
-      if (h1 > 0) {
-        // High probability of speech. Assign conditional probabilities for each
-        // Gaussian in the GMM. Otherwise use the initialized values, i.e., 0.
-        tmp1_s32 = (speech_probability[0] & 0xFFFFF000) << 2;  // Q29
-        sgprvec[channel] = (int16_t) WebRtcSpl_DivW32W16(tmp1_s32, h1);  // Q14
-        sgprvec[channel + kNumChannels] = 16384 - sgprvec[channel];
-      }
-    }
-
-    // Make a global VAD decision.
-    vadflag |= (sum_log_likelihood_ratios >= totalTest);
-
-    // Update the model parameters.
-    maxspe = 12800;
-    for (channel = 0; channel < kNumChannels; channel++) {
-
-      // Get minimum value in past which is used for long term correction in Q4.
-      feature_minimum = WebRtcVad_FindMinimum(self, features[channel], channel);
-
-      // Compute the "global" mean, that is the sum of the two means weighted.
-      noise_global_mean = WeightedAverage(&self->noise_means[channel], 0,
-                                          &kNoiseDataWeights[channel]);
-      tmp1_s16 = (int16_t) (noise_global_mean >> 6);  // Q8
-
-      for (k = 0; k < kNumGaussians; k++) {
-        gaussian = channel + k * kNumChannels;
-
-        nmk = self->noise_means[gaussian];
-        smk = self->speech_means[gaussian];
-        nsk = self->noise_stds[gaussian];
-        ssk = self->speech_stds[gaussian];
-
-        // Update noise mean vector if the frame consists of noise only.
-        nmk2 = nmk;
-        if (!vadflag) {
-          // deltaN = (x-mu)/sigma^2
-          // ngprvec[k] = |noise_probability[k]| /
-          //   (|noise_probability[0]| + |noise_probability[1]|)
-
-          // (Q14 * Q11 >> 11) = Q14.
-          delt = (int16_t)((ngprvec[gaussian] * deltaN[gaussian]) >> 11);
-          // Q7 + (Q14 * Q15 >> 22) = Q7.
-          nmk2 = nmk + (int16_t)((delt * kNoiseUpdateConst) >> 22);
-        }
-
-        // Long term correction of the noise mean.
-        // Q8 - Q8 = Q8.
-        ndelt = (feature_minimum << 4) - tmp1_s16;
-        // Q7 + (Q8 * Q8) >> 9 = Q7.
-        nmk3 = nmk2 + (int16_t)((ndelt * kBackEta) >> 9);
-
-        // Control that the noise mean does not drift to much.
-        tmp_s16 = (int16_t) ((k + 5) << 7);
-        if (nmk3 < tmp_s16) {
-          nmk3 = tmp_s16;
-        }
-        tmp_s16 = (int16_t) ((72 + k - channel) << 7);
-        if (nmk3 > tmp_s16) {
-          nmk3 = tmp_s16;
-        }
-        self->noise_means[gaussian] = nmk3;
-
-        if (vadflag) {
-          // Update speech mean vector:
-          // |deltaS| = (x-mu)/sigma^2
-          // sgprvec[k] = |speech_probability[k]| /
-          //   (|speech_probability[0]| + |speech_probability[1]|)
-
-          // (Q14 * Q11) >> 11 = Q14.
-          delt = (int16_t)((sgprvec[gaussian] * deltaS[gaussian]) >> 11);
-          // Q14 * Q15 >> 21 = Q8.
-          tmp_s16 = (int16_t)((delt * kSpeechUpdateConst) >> 21);
-          // Q7 + (Q8 >> 1) = Q7. With rounding.
-          smk2 = smk + ((tmp_s16 + 1) >> 1);
-
-          // Control that the speech mean does not drift to much.
-          maxmu = maxspe + 640;
-          if (smk2 < kMinimumMean[k]) {
-            smk2 = kMinimumMean[k];
-          }
-          if (smk2 > maxmu) {
-            smk2 = maxmu;
-          }
-          self->speech_means[gaussian] = smk2;  // Q7.
-
-          // (Q7 >> 3) = Q4. With rounding.
-          tmp_s16 = ((smk + 4) >> 3);
-
-          tmp_s16 = features[channel] - tmp_s16;  // Q4
-          // (Q11 * Q4 >> 3) = Q12.
-          tmp1_s32 = (deltaS[gaussian] * tmp_s16) >> 3;
-          tmp2_s32 = tmp1_s32 - 4096;
-          tmp_s16 = sgprvec[gaussian] >> 2;
-          // (Q14 >> 2) * Q12 = Q24.
-          tmp1_s32 = tmp_s16 * tmp2_s32;
-
-          tmp2_s32 = tmp1_s32 >> 4;  // Q20
-
-          // 0.1 * Q20 / Q7 = Q13.
-          if (tmp2_s32 > 0) {
-            tmp_s16 = (int16_t) WebRtcSpl_DivW32W16(tmp2_s32, ssk * 10);
-          } else {
-            tmp_s16 = (int16_t) WebRtcSpl_DivW32W16(-tmp2_s32, ssk * 10);
-            tmp_s16 = -tmp_s16;
-          }
-          // Divide by 4 giving an update factor of 0.025 (= 0.1 / 4).
-          // Note that division by 4 equals shift by 2, hence,
-          // (Q13 >> 8) = (Q13 >> 6) / 4 = Q7.
-          tmp_s16 += 128;  // Rounding.
-          ssk += (tmp_s16 >> 8);
-          if (ssk < kMinStd) {
-            ssk = kMinStd;
-          }
-          self->speech_stds[gaussian] = ssk;
-        } else {
-          // Update GMM variance vectors.
-          // deltaN * (features[channel] - nmk) - 1
-          // Q4 - (Q7 >> 3) = Q4.
-          tmp_s16 = features[channel] - (nmk >> 3);
-          // (Q11 * Q4 >> 3) = Q12.
-          tmp1_s32 = (deltaN[gaussian] * tmp_s16) >> 3;
-          tmp1_s32 -= 4096;
-
-          // (Q14 >> 2) * Q12 = Q24.
-          tmp_s16 = (ngprvec[gaussian] + 2) >> 2;
-          tmp2_s32 = OverflowingMulS16ByS32ToS32(tmp_s16, tmp1_s32);
-          // Q20  * approx 0.001 (2^-10=0.0009766), hence,
-          // (Q24 >> 14) = (Q24 >> 4) / 2^10 = Q20.
-          tmp1_s32 = tmp2_s32 >> 14;
-
-          // Q20 / Q7 = Q13.
-          if (tmp1_s32 > 0) {
-            tmp_s16 = (int16_t) WebRtcSpl_DivW32W16(tmp1_s32, nsk);
-          } else {
-            tmp_s16 = (int16_t) WebRtcSpl_DivW32W16(-tmp1_s32, nsk);
-            tmp_s16 = -tmp_s16;
-          }
-          tmp_s16 += 32;  // Rounding
-          nsk += tmp_s16 >> 6;  // Q13 >> 6 = Q7.
-          if (nsk < kMinStd) {
-            nsk = kMinStd;
-          }
-          self->noise_stds[gaussian] = nsk;
-        }
-      }
-
-      // Separate models if they are too close.
-      // |noise_global_mean| in Q14 (= Q7 * Q7).
-      noise_global_mean = WeightedAverage(&self->noise_means[channel], 0,
-                                          &kNoiseDataWeights[channel]);
-
-      // |speech_global_mean| in Q14 (= Q7 * Q7).
-      speech_global_mean = WeightedAverage(&self->speech_means[channel], 0,
-                                           &kSpeechDataWeights[channel]);
-
-      // |diff| = "global" speech mean - "global" noise mean.
-      // (Q14 >> 9) - (Q14 >> 9) = Q5.
-      diff = (int16_t) (speech_global_mean >> 9) -
-          (int16_t) (noise_global_mean >> 9);
-      if (diff < kMinimumDifference[channel]) {
-        tmp_s16 = kMinimumDifference[channel] - diff;
-
-        // |tmp1_s16| = ~0.8 * (kMinimumDifference - diff) in Q7.
-        // |tmp2_s16| = ~0.2 * (kMinimumDifference - diff) in Q7.
-        tmp1_s16 = (int16_t)((13 * tmp_s16) >> 2);
-        tmp2_s16 = (int16_t)((3 * tmp_s16) >> 2);
-
-        // Move Gaussian means for speech model by |tmp1_s16| and update
-        // |speech_global_mean|. Note that |self->speech_means[channel]| is
-        // changed after the call.
-        speech_global_mean = WeightedAverage(&self->speech_means[channel],
-                                             tmp1_s16,
-                                             &kSpeechDataWeights[channel]);
-
-        // Move Gaussian means for noise model by -|tmp2_s16| and update
-        // |noise_global_mean|. Note that |self->noise_means[channel]| is
-        // changed after the call.
-        noise_global_mean = WeightedAverage(&self->noise_means[channel],
-                                            -tmp2_s16,
-                                            &kNoiseDataWeights[channel]);
-      }
-
-      // Control that the speech & noise means do not drift to much.
-      maxspe = kMaximumSpeech[channel];
-      tmp2_s16 = (int16_t) (speech_global_mean >> 7);
-      if (tmp2_s16 > maxspe) {
-        // Upper limit of speech model.
-        tmp2_s16 -= maxspe;
-
-        for (k = 0; k < kNumGaussians; k++) {
-          self->speech_means[channel + k * kNumChannels] -= tmp2_s16;
-        }
-      }
-
-      tmp2_s16 = (int16_t) (noise_global_mean >> 7);
-      if (tmp2_s16 > kMaximumNoise[channel]) {
-        tmp2_s16 -= kMaximumNoise[channel];
-
-        for (k = 0; k < kNumGaussians; k++) {
-          self->noise_means[channel + k * kNumChannels] -= tmp2_s16;
-        }
-      }
-    }
-    self->frame_counter++;
-  }
-
-  // Smooth with respect to transition hysteresis.
-  if (!vadflag) {
-    if (self->over_hang > 0) {
-      vadflag = 2 + self->over_hang;
-      self->over_hang--;
-    }
-    self->num_of_speech = 0;
-  } else {
-    self->num_of_speech++;
-    if (self->num_of_speech > kMaxSpeechFrames) {
-      self->num_of_speech = kMaxSpeechFrames;
-      self->over_hang = overhead2;
-    } else {
-      self->over_hang = overhead1;
-    }
-  }
-  return vadflag;
-}
-
-// Initialize the VAD. Set aggressiveness mode to default value.
-int WebRtcVad_InitCore(VadInstT* self) {
-  int i;
-
-  if (self == NULL) {
-    return -1;
-  }
-
-  // Initialization of general struct variables.
-  self->vad = 1;  // Speech active (=1).
-  self->frame_counter = 0;
-  self->over_hang = 0;
-  self->num_of_speech = 0;
-
-  // Initialization of downsampling filter state.
-  memset(self->downsampling_filter_states, 0,
-         sizeof(self->downsampling_filter_states));
-
-  // Initialization of 48 to 8 kHz downsampling.
-  WebRtcSpl_ResetResample48khzTo8khz(&self->state_48_to_8);
-
-  // Read initial PDF parameters.
-  for (i = 0; i < kTableSize; i++) {
-    self->noise_means[i] = kNoiseDataMeans[i];
-    self->speech_means[i] = kSpeechDataMeans[i];
-    self->noise_stds[i] = kNoiseDataStds[i];
-    self->speech_stds[i] = kSpeechDataStds[i];
-  }
-
-  // Initialize Index and Minimum value vectors.
-  for (i = 0; i < 16 * kNumChannels; i++) {
-    self->low_value_vector[i] = 10000;
-    self->index_vector[i] = 0;
-  }
-
-  // Initialize splitting filter states.
-  memset(self->upper_state, 0, sizeof(self->upper_state));
-  memset(self->lower_state, 0, sizeof(self->lower_state));
-
-  // Initialize high pass filter states.
-  memset(self->hp_filter_state, 0, sizeof(self->hp_filter_state));
-
-  // Initialize mean value memory, for WebRtcVad_FindMinimum().
-  for (i = 0; i < kNumChannels; i++) {
-    self->mean_value[i] = 1600;
-  }
-
-  // Set aggressiveness mode to default (=|kDefaultMode|).
-  if (WebRtcVad_set_mode_core(self, kDefaultMode) != 0) {
-    return -1;
-  }
-
-  self->init_flag = kInitCheck;
-
-  return 0;
-}
-
-// Set aggressiveness mode
-int WebRtcVad_set_mode_core(VadInstT* self, int mode) {
-  int return_value = 0;
-
-  switch (mode) {
-    case 0:
-      // Quality mode.
-      memcpy(self->over_hang_max_1, kOverHangMax1Q,
-             sizeof(self->over_hang_max_1));
-      memcpy(self->over_hang_max_2, kOverHangMax2Q,
-             sizeof(self->over_hang_max_2));
-      memcpy(self->individual, kLocalThresholdQ,
-             sizeof(self->individual));
-      memcpy(self->total, kGlobalThresholdQ,
-             sizeof(self->total));
-      break;
-    case 1:
-      // Low bitrate mode.
-      memcpy(self->over_hang_max_1, kOverHangMax1LBR,
-             sizeof(self->over_hang_max_1));
-      memcpy(self->over_hang_max_2, kOverHangMax2LBR,
-             sizeof(self->over_hang_max_2));
-      memcpy(self->individual, kLocalThresholdLBR,
-             sizeof(self->individual));
-      memcpy(self->total, kGlobalThresholdLBR,
-             sizeof(self->total));
-      break;
-    case 2:
-      // Aggressive mode.
-      memcpy(self->over_hang_max_1, kOverHangMax1AGG,
-             sizeof(self->over_hang_max_1));
-      memcpy(self->over_hang_max_2, kOverHangMax2AGG,
-             sizeof(self->over_hang_max_2));
-      memcpy(self->individual, kLocalThresholdAGG,
-             sizeof(self->individual));
-      memcpy(self->total, kGlobalThresholdAGG,
-             sizeof(self->total));
-      break;
-    case 3:
-      // Very aggressive mode.
-      memcpy(self->over_hang_max_1, kOverHangMax1VAG,
-             sizeof(self->over_hang_max_1));
-      memcpy(self->over_hang_max_2, kOverHangMax2VAG,
-             sizeof(self->over_hang_max_2));
-      memcpy(self->individual, kLocalThresholdVAG,
-             sizeof(self->individual));
-      memcpy(self->total, kGlobalThresholdVAG,
-             sizeof(self->total));
-      break;
-    default:
-      return_value = -1;
-      break;
-  }
-
-  return return_value;
-}
-
-// Calculate VAD decision by first extracting feature values and then calculate
-// probability for both speech and background noise.
-
-int WebRtcVad_CalcVad48khz(VadInstT* inst, const int16_t* speech_frame,
-                           size_t frame_length) {
-  int vad;
-  size_t i;
-  int16_t speech_nb[240];  // 30 ms in 8 kHz.
-  // |tmp_mem| is a temporary memory used by resample function, length is
-  // frame length in 10 ms (480 samples) + 256 extra.
-  int32_t tmp_mem[480 + 256] = { 0 };
-  const size_t kFrameLen10ms48khz = 480;
-  const size_t kFrameLen10ms8khz = 80;
-  size_t num_10ms_frames = frame_length / kFrameLen10ms48khz;
-
-  for (i = 0; i < num_10ms_frames; i++) {
-    WebRtcSpl_Resample48khzTo8khz(speech_frame,
-                                  &speech_nb[i * kFrameLen10ms8khz],
-                                  &inst->state_48_to_8,
-                                  tmp_mem);
-  }
-
-  // Do VAD on an 8 kHz signal
-  vad = WebRtcVad_CalcVad8khz(inst, speech_nb, frame_length / 6);
-
-  return vad;
-}
-
-int WebRtcVad_CalcVad32khz(VadInstT* inst, const int16_t* speech_frame,
-                           size_t frame_length)
-{
-    size_t len;
-    int vad;
-    int16_t speechWB[480]; // Downsampled speech frame: 960 samples (30ms in SWB)
-    int16_t speechNB[240]; // Downsampled speech frame: 480 samples (30ms in WB)
-
-
-    // Downsample signal 32->16->8 before doing VAD
-    WebRtcVad_Downsampling(speech_frame, speechWB, &(inst->downsampling_filter_states[2]),
-                           frame_length);
-    len = frame_length / 2;
-
-    WebRtcVad_Downsampling(speechWB, speechNB, inst->downsampling_filter_states, len);
-    len /= 2;
-
-    // Do VAD on an 8 kHz signal
-    vad = WebRtcVad_CalcVad8khz(inst, speechNB, len);
-
-    return vad;
-}
-
-int WebRtcVad_CalcVad16khz(VadInstT* inst, const int16_t* speech_frame,
-                           size_t frame_length)
-{
-    size_t len;
-    int vad;
-    int16_t speechNB[240]; // Downsampled speech frame: 480 samples (30ms in WB)
-
-    // Wideband: Downsample signal before doing VAD
-    WebRtcVad_Downsampling(speech_frame, speechNB, inst->downsampling_filter_states,
-                           frame_length);
-
-    len = frame_length / 2;
-    vad = WebRtcVad_CalcVad8khz(inst, speechNB, len);
-
-    return vad;
-}
-
-int WebRtcVad_CalcVad8khz(VadInstT* inst, const int16_t* speech_frame,
-                          size_t frame_length)
-{
-    int16_t feature_vector[kNumChannels], total_power;
-
-    // Get power in the bands
-    total_power = WebRtcVad_CalculateFeatures(inst, speech_frame, frame_length,
-                                              feature_vector);
-
-    // Make a VAD
-    inst->vad = GmmProbability(inst, feature_vector, total_power, frame_length);
-
-    return inst->vad;
-}
diff --git a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/vad/vad_core.h b/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/vad/vad_core.h
deleted file mode 100644
index 8f0cfc0..0000000
--- a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/vad/vad_core.h
+++ /dev/null
@@ -1,114 +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.
- */
-
-/*
- * This header file includes the descriptions of the core VAD calls.
- */
-
-#ifndef COMMON_AUDIO_VAD_VAD_CORE_H_
-#define COMMON_AUDIO_VAD_VAD_CORE_H_
-
-#include "webrtc/common_audio/signal_processing/include/signal_processing_library.h"
-
-enum { kNumChannels = 6 };   // Number of frequency bands (named channels).
-enum { kNumGaussians = 2 };  // Number of Gaussians per channel in the GMM.
-enum { kTableSize = kNumChannels * kNumGaussians };
-enum { kMinEnergy = 10 };  // Minimum energy required to trigger audio signal.
-
-typedef struct VadInstT_ {
-  int vad;
-  int32_t downsampling_filter_states[4];
-  WebRtcSpl_State48khzTo8khz state_48_to_8;
-  int16_t noise_means[kTableSize];
-  int16_t speech_means[kTableSize];
-  int16_t noise_stds[kTableSize];
-  int16_t speech_stds[kTableSize];
-  // TODO(bjornv): Change to |frame_count|.
-  int32_t frame_counter;
-  int16_t over_hang;  // Over Hang
-  int16_t num_of_speech;
-  // TODO(bjornv): Change to |age_vector|.
-  int16_t index_vector[16 * kNumChannels];
-  int16_t low_value_vector[16 * kNumChannels];
-  // TODO(bjornv): Change to |median|.
-  int16_t mean_value[kNumChannels];
-  int16_t upper_state[5];
-  int16_t lower_state[5];
-  int16_t hp_filter_state[4];
-  int16_t over_hang_max_1[3];
-  int16_t over_hang_max_2[3];
-  int16_t individual[3];
-  int16_t total[3];
-
-  int init_flag;
-} VadInstT;
-
-// Initializes the core VAD component. The default aggressiveness mode is
-// controlled by |kDefaultMode| in vad_core.c.
-//
-// - self [i/o] : Instance that should be initialized
-//
-// returns      : 0 (OK), -1 (null pointer in or if the default mode can't be
-//                set)
-int WebRtcVad_InitCore(VadInstT* self);
-
-/****************************************************************************
- * WebRtcVad_set_mode_core(...)
- *
- * This function changes the VAD settings
- *
- * Input:
- *      - inst      : VAD instance
- *      - mode      : Aggressiveness degree
- *                    0 (High quality) - 3 (Highly aggressive)
- *
- * Output:
- *      - inst      : Changed  instance
- *
- * Return value     :  0 - Ok
- *                    -1 - Error
- */
-
-int WebRtcVad_set_mode_core(VadInstT* self, int mode);
-
-/****************************************************************************
- * WebRtcVad_CalcVad48khz(...)
- * WebRtcVad_CalcVad32khz(...)
- * WebRtcVad_CalcVad16khz(...)
- * WebRtcVad_CalcVad8khz(...)
- *
- * Calculate probability for active speech and make VAD decision.
- *
- * Input:
- *      - inst          : Instance that should be initialized
- *      - speech_frame  : Input speech frame
- *      - frame_length  : Number of input samples
- *
- * Output:
- *      - inst          : Updated filter states etc.
- *
- * Return value         : VAD decision
- *                        0 - No active speech
- *                        1-6 - Active speech
- */
-int WebRtcVad_CalcVad48khz(VadInstT* inst,
-                           const int16_t* speech_frame,
-                           size_t frame_length);
-int WebRtcVad_CalcVad32khz(VadInstT* inst,
-                           const int16_t* speech_frame,
-                           size_t frame_length);
-int WebRtcVad_CalcVad16khz(VadInstT* inst,
-                           const int16_t* speech_frame,
-                           size_t frame_length);
-int WebRtcVad_CalcVad8khz(VadInstT* inst,
-                          const int16_t* speech_frame,
-                          size_t frame_length);
-
-#endif  // COMMON_AUDIO_VAD_VAD_CORE_H_
diff --git a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/vad/vad_filterbank.c b/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/vad/vad_filterbank.c
deleted file mode 100644
index 7d25e2a..0000000
--- a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/vad/vad_filterbank.c
+++ /dev/null
@@ -1,329 +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 "webrtc/common_audio/vad/vad_filterbank.h"
-
-#include "webrtc/rtc_base/checks.h"
-#include "webrtc/common_audio/signal_processing/include/signal_processing_library.h"
-
-// Constants used in LogOfEnergy().
-static const int16_t kLogConst = 24660;  // 160*log10(2) in Q9.
-static const int16_t kLogEnergyIntPart = 14336;  // 14 in Q10
-
-// Coefficients used by HighPassFilter, Q14.
-static const int16_t kHpZeroCoefs[3] = { 6631, -13262, 6631 };
-static const int16_t kHpPoleCoefs[3] = { 16384, -7756, 5620 };
-
-// Allpass filter coefficients, upper and lower, in Q15.
-// Upper: 0.64, Lower: 0.17
-static const int16_t kAllPassCoefsQ15[2] = { 20972, 5571 };
-
-// Adjustment for division with two in SplitFilter.
-static const int16_t kOffsetVector[6] = { 368, 368, 272, 176, 176, 176 };
-
-// High pass filtering, with a cut-off frequency at 80 Hz, if the |data_in| is
-// sampled at 500 Hz.
-//
-// - data_in      [i]   : Input audio data sampled at 500 Hz.
-// - data_length  [i]   : Length of input and output data.
-// - filter_state [i/o] : State of the filter.
-// - data_out     [o]   : Output audio data in the frequency interval
-//                        80 - 250 Hz.
-static void HighPassFilter(const int16_t* data_in, size_t data_length,
-                           int16_t* filter_state, int16_t* data_out) {
-  size_t i;
-  const int16_t* in_ptr = data_in;
-  int16_t* out_ptr = data_out;
-  int32_t tmp32 = 0;
-
-
-  // The sum of the absolute values of the impulse response:
-  // The zero/pole-filter has a max amplification of a single sample of: 1.4546
-  // Impulse response: 0.4047 -0.6179 -0.0266  0.1993  0.1035  -0.0194
-  // The all-zero section has a max amplification of a single sample of: 1.6189
-  // Impulse response: 0.4047 -0.8094  0.4047  0       0        0
-  // The all-pole section has a max amplification of a single sample of: 1.9931
-  // Impulse response: 1.0000  0.4734 -0.1189 -0.2187 -0.0627   0.04532
-
-  for (i = 0; i < data_length; i++) {
-    // All-zero section (filter coefficients in Q14).
-    tmp32 = kHpZeroCoefs[0] * *in_ptr;
-    tmp32 += kHpZeroCoefs[1] * filter_state[0];
-    tmp32 += kHpZeroCoefs[2] * filter_state[1];
-    filter_state[1] = filter_state[0];
-    filter_state[0] = *in_ptr++;
-
-    // All-pole section (filter coefficients in Q14).
-    tmp32 -= kHpPoleCoefs[1] * filter_state[2];
-    tmp32 -= kHpPoleCoefs[2] * filter_state[3];
-    filter_state[3] = filter_state[2];
-    filter_state[2] = (int16_t) (tmp32 >> 14);
-    *out_ptr++ = filter_state[2];
-  }
-}
-
-// All pass filtering of |data_in|, used before splitting the signal into two
-// frequency bands (low pass vs high pass).
-// Note that |data_in| and |data_out| can NOT correspond to the same address.
-//
-// - data_in            [i]   : Input audio signal given in Q0.
-// - data_length        [i]   : Length of input and output data.
-// - filter_coefficient [i]   : Given in Q15.
-// - filter_state       [i/o] : State of the filter given in Q(-1).
-// - data_out           [o]   : Output audio signal given in Q(-1).
-static void AllPassFilter(const int16_t* data_in, size_t data_length,
-                          int16_t filter_coefficient, int16_t* filter_state,
-                          int16_t* data_out) {
-  // The filter can only cause overflow (in the w16 output variable)
-  // if more than 4 consecutive input numbers are of maximum value and
-  // has the the same sign as the impulse responses first taps.
-  // First 6 taps of the impulse response:
-  // 0.6399 0.5905 -0.3779 0.2418 -0.1547 0.0990
-
-  size_t i;
-  int16_t tmp16 = 0;
-  int32_t tmp32 = 0;
-  int32_t state32 = ((int32_t) (*filter_state) * (1 << 16));  // Q15
-
-  for (i = 0; i < data_length; i++) {
-    tmp32 = state32 + filter_coefficient * *data_in;
-    tmp16 = (int16_t) (tmp32 >> 16);  // Q(-1)
-    *data_out++ = tmp16;
-    state32 = (*data_in * (1 << 14)) - filter_coefficient * tmp16;  // Q14
-    state32 *= 2;  // Q15.
-    data_in += 2;
-  }
-
-  *filter_state = (int16_t) (state32 >> 16);  // Q(-1)
-}
-
-// Splits |data_in| into |hp_data_out| and |lp_data_out| corresponding to
-// an upper (high pass) part and a lower (low pass) part respectively.
-//
-// - data_in      [i]   : Input audio data to be split into two frequency bands.
-// - data_length  [i]   : Length of |data_in|.
-// - upper_state  [i/o] : State of the upper filter, given in Q(-1).
-// - lower_state  [i/o] : State of the lower filter, given in Q(-1).
-// - hp_data_out  [o]   : Output audio data of the upper half of the spectrum.
-//                        The length is |data_length| / 2.
-// - lp_data_out  [o]   : Output audio data of the lower half of the spectrum.
-//                        The length is |data_length| / 2.
-static void SplitFilter(const int16_t* data_in, size_t data_length,
-                        int16_t* upper_state, int16_t* lower_state,
-                        int16_t* hp_data_out, int16_t* lp_data_out) {
-  size_t i;
-  size_t half_length = data_length >> 1;  // Downsampling by 2.
-  int16_t tmp_out;
-
-  // All-pass filtering upper branch.
-  AllPassFilter(&data_in[0], half_length, kAllPassCoefsQ15[0], upper_state,
-                hp_data_out);
-
-  // All-pass filtering lower branch.
-  AllPassFilter(&data_in[1], half_length, kAllPassCoefsQ15[1], lower_state,
-                lp_data_out);
-
-  // Make LP and HP signals.
-  for (i = 0; i < half_length; i++) {
-    tmp_out = *hp_data_out;
-    *hp_data_out++ -= *lp_data_out;
-    *lp_data_out++ += tmp_out;
-  }
-}
-
-// Calculates the energy of |data_in| in dB, and also updates an overall
-// |total_energy| if necessary.
-//
-// - data_in      [i]   : Input audio data for energy calculation.
-// - data_length  [i]   : Length of input data.
-// - offset       [i]   : Offset value added to |log_energy|.
-// - total_energy [i/o] : An external energy updated with the energy of
-//                        |data_in|.
-//                        NOTE: |total_energy| is only updated if
-//                        |total_energy| <= |kMinEnergy|.
-// - log_energy   [o]   : 10 * log10("energy of |data_in|") given in Q4.
-static void LogOfEnergy(const int16_t* data_in, size_t data_length,
-                        int16_t offset, int16_t* total_energy,
-                        int16_t* log_energy) {
-  // |tot_rshifts| accumulates the number of right shifts performed on |energy|.
-  int tot_rshifts = 0;
-  // The |energy| will be normalized to 15 bits. We use unsigned integer because
-  // we eventually will mask out the fractional part.
-  uint32_t energy = 0;
-
-  RTC_DCHECK(data_in);
-  RTC_DCHECK_GT(data_length, 0);
-
-  energy = (uint32_t) WebRtcSpl_Energy((int16_t*) data_in, data_length,
-                                       &tot_rshifts);
-
-  if (energy != 0) {
-    // By construction, normalizing to 15 bits is equivalent with 17 leading
-    // zeros of an unsigned 32 bit value.
-    int normalizing_rshifts = 17 - WebRtcSpl_NormU32(energy);
-    // In a 15 bit representation the leading bit is 2^14. log2(2^14) in Q10 is
-    // (14 << 10), which is what we initialize |log2_energy| with. For a more
-    // detailed derivations, see below.
-    int16_t log2_energy = kLogEnergyIntPart;
-
-    tot_rshifts += normalizing_rshifts;
-    // Normalize |energy| to 15 bits.
-    // |tot_rshifts| is now the total number of right shifts performed on
-    // |energy| after normalization. This means that |energy| is in
-    // Q(-tot_rshifts).
-    if (normalizing_rshifts < 0) {
-      energy <<= -normalizing_rshifts;
-    } else {
-      energy >>= normalizing_rshifts;
-    }
-
-    // Calculate the energy of |data_in| in dB, in Q4.
-    //
-    // 10 * log10("true energy") in Q4 = 2^4 * 10 * log10("true energy") =
-    // 160 * log10(|energy| * 2^|tot_rshifts|) =
-    // 160 * log10(2) * log2(|energy| * 2^|tot_rshifts|) =
-    // 160 * log10(2) * (log2(|energy|) + log2(2^|tot_rshifts|)) =
-    // (160 * log10(2)) * (log2(|energy|) + |tot_rshifts|) =
-    // |kLogConst| * (|log2_energy| + |tot_rshifts|)
-    //
-    // We know by construction that |energy| is normalized to 15 bits. Hence,
-    // |energy| = 2^14 + frac_Q15, where frac_Q15 is a fractional part in Q15.
-    // Further, we'd like |log2_energy| in Q10
-    // log2(|energy|) in Q10 = 2^10 * log2(2^14 + frac_Q15) =
-    // 2^10 * log2(2^14 * (1 + frac_Q15 * 2^-14)) =
-    // 2^10 * (14 + log2(1 + frac_Q15 * 2^-14)) ~=
-    // (14 << 10) + 2^10 * (frac_Q15 * 2^-14) =
-    // (14 << 10) + (frac_Q15 * 2^-4) = (14 << 10) + (frac_Q15 >> 4)
-    //
-    // Note that frac_Q15 = (|energy| & 0x00003FFF)
-
-    // Calculate and add the fractional part to |log2_energy|.
-    log2_energy += (int16_t) ((energy & 0x00003FFF) >> 4);
-
-    // |kLogConst| is in Q9, |log2_energy| in Q10 and |tot_rshifts| in Q0.
-    // Note that we in our derivation above have accounted for an output in Q4.
-    *log_energy = (int16_t)(((kLogConst * log2_energy) >> 19) +
-        ((tot_rshifts * kLogConst) >> 9));
-
-    if (*log_energy < 0) {
-      *log_energy = 0;
-    }
-  } else {
-    *log_energy = offset;
-    return;
-  }
-
-  *log_energy += offset;
-
-  // Update the approximate |total_energy| with the energy of |data_in|, if
-  // |total_energy| has not exceeded |kMinEnergy|. |total_energy| is used as an
-  // energy indicator in WebRtcVad_GmmProbability() in vad_core.c.
-  if (*total_energy <= kMinEnergy) {
-    if (tot_rshifts >= 0) {
-      // We know by construction that the |energy| > |kMinEnergy| in Q0, so add
-      // an arbitrary value such that |total_energy| exceeds |kMinEnergy|.
-      *total_energy += kMinEnergy + 1;
-    } else {
-      // By construction |energy| is represented by 15 bits, hence any number of
-      // right shifted |energy| will fit in an int16_t. In addition, adding the
-      // value to |total_energy| is wrap around safe as long as
-      // |kMinEnergy| < 8192.
-      *total_energy += (int16_t) (energy >> -tot_rshifts);  // Q0.
-    }
-  }
-}
-
-int16_t WebRtcVad_CalculateFeatures(VadInstT* self, const int16_t* data_in,
-                                    size_t data_length, int16_t* features) {
-  int16_t total_energy = 0;
-  // We expect |data_length| to be 80, 160 or 240 samples, which corresponds to
-  // 10, 20 or 30 ms in 8 kHz. Therefore, the intermediate downsampled data will
-  // have at most 120 samples after the first split and at most 60 samples after
-  // the second split.
-  int16_t hp_120[120], lp_120[120];
-  int16_t hp_60[60], lp_60[60];
-  const size_t half_data_length = data_length >> 1;
-  size_t length = half_data_length;  // |data_length| / 2, corresponds to
-                                     // bandwidth = 2000 Hz after downsampling.
-
-  // Initialize variables for the first SplitFilter().
-  int frequency_band = 0;
-  const int16_t* in_ptr = data_in;  // [0 - 4000] Hz.
-  int16_t* hp_out_ptr = hp_120;  // [2000 - 4000] Hz.
-  int16_t* lp_out_ptr = lp_120;  // [0 - 2000] Hz.
-
-  RTC_DCHECK_LE(data_length, 240);
-  RTC_DCHECK_LT(4, kNumChannels - 1);  // Checking maximum |frequency_band|.
-
-  // Split at 2000 Hz and downsample.
-  SplitFilter(in_ptr, data_length, &self->upper_state[frequency_band],
-              &self->lower_state[frequency_band], hp_out_ptr, lp_out_ptr);
-
-  // For the upper band (2000 Hz - 4000 Hz) split at 3000 Hz and downsample.
-  frequency_band = 1;
-  in_ptr = hp_120;  // [2000 - 4000] Hz.
-  hp_out_ptr = hp_60;  // [3000 - 4000] Hz.
-  lp_out_ptr = lp_60;  // [2000 - 3000] Hz.
-  SplitFilter(in_ptr, length, &self->upper_state[frequency_band],
-              &self->lower_state[frequency_band], hp_out_ptr, lp_out_ptr);
-
-  // Energy in 3000 Hz - 4000 Hz.
-  length >>= 1;  // |data_length| / 4 <=> bandwidth = 1000 Hz.
-
-  LogOfEnergy(hp_60, length, kOffsetVector[5], &total_energy, &features[5]);
-
-  // Energy in 2000 Hz - 3000 Hz.
-  LogOfEnergy(lp_60, length, kOffsetVector[4], &total_energy, &features[4]);
-
-  // For the lower band (0 Hz - 2000 Hz) split at 1000 Hz and downsample.
-  frequency_band = 2;
-  in_ptr = lp_120;  // [0 - 2000] Hz.
-  hp_out_ptr = hp_60;  // [1000 - 2000] Hz.
-  lp_out_ptr = lp_60;  // [0 - 1000] Hz.
-  length = half_data_length;  // |data_length| / 2 <=> bandwidth = 2000 Hz.
-  SplitFilter(in_ptr, length, &self->upper_state[frequency_band],
-              &self->lower_state[frequency_band], hp_out_ptr, lp_out_ptr);
-
-  // Energy in 1000 Hz - 2000 Hz.
-  length >>= 1;  // |data_length| / 4 <=> bandwidth = 1000 Hz.
-  LogOfEnergy(hp_60, length, kOffsetVector[3], &total_energy, &features[3]);
-
-  // For the lower band (0 Hz - 1000 Hz) split at 500 Hz and downsample.
-  frequency_band = 3;
-  in_ptr = lp_60;  // [0 - 1000] Hz.
-  hp_out_ptr = hp_120;  // [500 - 1000] Hz.
-  lp_out_ptr = lp_120;  // [0 - 500] Hz.
-  SplitFilter(in_ptr, length, &self->upper_state[frequency_band],
-              &self->lower_state[frequency_band], hp_out_ptr, lp_out_ptr);
-
-  // Energy in 500 Hz - 1000 Hz.
-  length >>= 1;  // |data_length| / 8 <=> bandwidth = 500 Hz.
-  LogOfEnergy(hp_120, length, kOffsetVector[2], &total_energy, &features[2]);
-
-  // For the lower band (0 Hz - 500 Hz) split at 250 Hz and downsample.
-  frequency_band = 4;
-  in_ptr = lp_120;  // [0 - 500] Hz.
-  hp_out_ptr = hp_60;  // [250 - 500] Hz.
-  lp_out_ptr = lp_60;  // [0 - 250] Hz.
-  SplitFilter(in_ptr, length, &self->upper_state[frequency_band],
-              &self->lower_state[frequency_band], hp_out_ptr, lp_out_ptr);
-
-  // Energy in 250 Hz - 500 Hz.
-  length >>= 1;  // |data_length| / 16 <=> bandwidth = 250 Hz.
-  LogOfEnergy(hp_60, length, kOffsetVector[1], &total_energy, &features[1]);
-
-  // Remove 0 Hz - 80 Hz, by high pass filtering the lower band.
-  HighPassFilter(lp_60, length, self->hp_filter_state, hp_120);
-
-  // Energy in 80 Hz - 250 Hz.
-  LogOfEnergy(hp_120, length, kOffsetVector[0], &total_energy, &features[0]);
-
-  return total_energy;
-}
diff --git a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/vad/vad_filterbank.h b/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/vad/vad_filterbank.h
deleted file mode 100644
index b400505..0000000
--- a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/vad/vad_filterbank.h
+++ /dev/null
@@ -1,45 +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.
- */
-
-/*
- * This file includes feature calculating functionality used in vad_core.c.
- */
-
-#ifndef COMMON_AUDIO_VAD_VAD_FILTERBANK_H_
-#define COMMON_AUDIO_VAD_VAD_FILTERBANK_H_
-
-#include "webrtc/common_audio/vad/vad_core.h"
-
-// Takes |data_length| samples of |data_in| and calculates the logarithm of the
-// energy of each of the |kNumChannels| = 6 frequency bands used by the VAD:
-//        80 Hz - 250 Hz
-//        250 Hz - 500 Hz
-//        500 Hz - 1000 Hz
-//        1000 Hz - 2000 Hz
-//        2000 Hz - 3000 Hz
-//        3000 Hz - 4000 Hz
-//
-// The values are given in Q4 and written to |features|. Further, an approximate
-// overall energy is returned. The return value is used in
-// WebRtcVad_GmmProbability() as a signal indicator, hence it is arbitrary above
-// the threshold |kMinEnergy|.
-//
-// - self         [i/o] : State information of the VAD.
-// - data_in      [i]   : Input audio data, for feature extraction.
-// - data_length  [i]   : Audio data size, in number of samples.
-// - features     [o]   : 10 * log10(energy in each frequency band), Q4.
-// - returns            : Total energy of the signal (NOTE! This value is not
-//                        exact. It is only used in a comparison.)
-int16_t WebRtcVad_CalculateFeatures(VadInstT* self,
-                                    const int16_t* data_in,
-                                    size_t data_length,
-                                    int16_t* features);
-
-#endif  // COMMON_AUDIO_VAD_VAD_FILTERBANK_H_
diff --git a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/vad/vad_gmm.c b/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/vad/vad_gmm.c
deleted file mode 100644
index 176270c..0000000
--- a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/vad/vad_gmm.c
+++ /dev/null
@@ -1,82 +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 "webrtc/common_audio/vad/vad_gmm.h"
-
-#include "webrtc/common_audio/signal_processing/include/signal_processing_library.h"
-
-static const int32_t kCompVar = 22005;
-static const int16_t kLog2Exp = 5909;  // log2(exp(1)) in Q12.
-
-// For a normal distribution, the probability of |input| is calculated and
-// returned (in Q20). The formula for normal distributed probability is
-//
-// 1 / s * exp(-(x - m)^2 / (2 * s^2))
-//
-// where the parameters are given in the following Q domains:
-// m = |mean| (Q7)
-// s = |std| (Q7)
-// x = |input| (Q4)
-// in addition to the probability we output |delta| (in Q11) used when updating
-// the noise/speech model.
-int32_t WebRtcVad_GaussianProbability(int16_t input,
-                                      int16_t mean,
-                                      int16_t std,
-                                      int16_t* delta) {
-  int16_t tmp16, inv_std, inv_std2, exp_value = 0;
-  int32_t tmp32;
-
-  // Calculate |inv_std| = 1 / s, in Q10.
-  // 131072 = 1 in Q17, and (|std| >> 1) is for rounding instead of truncation.
-  // Q-domain: Q17 / Q7 = Q10.
-  tmp32 = (int32_t) 131072 + (int32_t) (std >> 1);
-  inv_std = (int16_t) WebRtcSpl_DivW32W16(tmp32, std);
-
-  // Calculate |inv_std2| = 1 / s^2, in Q14.
-  tmp16 = (inv_std >> 2);  // Q10 -> Q8.
-  // Q-domain: (Q8 * Q8) >> 2 = Q14.
-  inv_std2 = (int16_t)((tmp16 * tmp16) >> 2);
-  // TODO(bjornv): Investigate if changing to
-  // inv_std2 = (int16_t)((inv_std * inv_std) >> 6);
-  // gives better accuracy.
-
-  tmp16 = (input << 3);  // Q4 -> Q7
-  tmp16 = tmp16 - mean;  // Q7 - Q7 = Q7
-
-  // To be used later, when updating noise/speech model.
-  // |delta| = (x - m) / s^2, in Q11.
-  // Q-domain: (Q14 * Q7) >> 10 = Q11.
-  *delta = (int16_t)((inv_std2 * tmp16) >> 10);
-
-  // Calculate the exponent |tmp32| = (x - m)^2 / (2 * s^2), in Q10. Replacing
-  // division by two with one shift.
-  // Q-domain: (Q11 * Q7) >> 8 = Q10.
-  tmp32 = (*delta * tmp16) >> 9;
-
-  // If the exponent is small enough to give a non-zero probability we calculate
-  // |exp_value| ~= exp(-(x - m)^2 / (2 * s^2))
-  //             ~= exp2(-log2(exp(1)) * |tmp32|).
-  if (tmp32 < kCompVar) {
-    // Calculate |tmp16| = log2(exp(1)) * |tmp32|, in Q10.
-    // Q-domain: (Q12 * Q10) >> 12 = Q10.
-    tmp16 = (int16_t)((kLog2Exp * tmp32) >> 12);
-    tmp16 = -tmp16;
-    exp_value = (0x0400 | (tmp16 & 0x03FF));
-    tmp16 ^= 0xFFFF;
-    tmp16 >>= 10;
-    tmp16 += 1;
-    // Get |exp_value| = exp(-|tmp32|) in Q10.
-    exp_value >>= tmp16;
-  }
-
-  // Calculate and return (1 / s) * exp(-(x - m)^2 / (2 * s^2)), in Q20.
-  // Q-domain: Q10 * Q10 = Q20.
-  return inv_std * exp_value;
-}
diff --git a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/vad/vad_gmm.h b/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/vad/vad_gmm.h
deleted file mode 100644
index 6b2d11b..0000000
--- a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/vad/vad_gmm.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.
- */
-
-// Gaussian probability calculations internally used in vad_core.c.
-
-#ifndef COMMON_AUDIO_VAD_VAD_GMM_H_
-#define COMMON_AUDIO_VAD_VAD_GMM_H_
-
-#include <stdint.h>
-
-// Calculates the probability for |input|, given that |input| comes from a
-// normal distribution with mean and standard deviation (|mean|, |std|).
-//
-// Inputs:
-//      - input         : input sample in Q4.
-//      - mean          : mean input in the statistical model, Q7.
-//      - std           : standard deviation, Q7.
-//
-// Output:
-//
-//      - delta         : input used when updating the model, Q11.
-//                        |delta| = (|input| - |mean|) / |std|^2.
-//
-// Return:
-//   (probability for |input|) =
-//    1 / |std| * exp(-(|input| - |mean|)^2 / (2 * |std|^2));
-int32_t WebRtcVad_GaussianProbability(int16_t input,
-                                      int16_t mean,
-                                      int16_t std,
-                                      int16_t* delta);
-
-#endif  // COMMON_AUDIO_VAD_VAD_GMM_H_
diff --git a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/vad/vad_sp.c b/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/vad/vad_sp.c
deleted file mode 100644
index 97d5d6c..0000000
--- a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/vad/vad_sp.c
+++ /dev/null
@@ -1,176 +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 "webrtc/common_audio/vad/vad_sp.h"
-
-#include "webrtc/rtc_base/checks.h"
-#include "webrtc/common_audio/signal_processing/include/signal_processing_library.h"
-#include "webrtc/common_audio/vad/vad_core.h"
-
-// Allpass filter coefficients, upper and lower, in Q13.
-// Upper: 0.64, Lower: 0.17.
-static const int16_t kAllPassCoefsQ13[2] = { 5243, 1392 };  // Q13.
-static const int16_t kSmoothingDown = 6553;  // 0.2 in Q15.
-static const int16_t kSmoothingUp = 32439;  // 0.99 in Q15.
-
-// TODO(bjornv): Move this function to vad_filterbank.c.
-// Downsampling filter based on splitting filter and allpass functions.
-void WebRtcVad_Downsampling(const int16_t* signal_in,
-                            int16_t* signal_out,
-                            int32_t* filter_state,
-                            size_t in_length) {
-  int16_t tmp16_1 = 0, tmp16_2 = 0;
-  int32_t tmp32_1 = filter_state[0];
-  int32_t tmp32_2 = filter_state[1];
-  size_t n = 0;
-  // Downsampling by 2 gives half length.
-  size_t half_length = (in_length >> 1);
-
-  // Filter coefficients in Q13, filter state in Q0.
-  for (n = 0; n < half_length; n++) {
-    // All-pass filtering upper branch.
-    tmp16_1 = (int16_t) ((tmp32_1 >> 1) +
-        ((kAllPassCoefsQ13[0] * *signal_in) >> 14));
-    *signal_out = tmp16_1;
-    tmp32_1 = (int32_t)(*signal_in++) - ((kAllPassCoefsQ13[0] * tmp16_1) >> 12);
-
-    // All-pass filtering lower branch.
-    tmp16_2 = (int16_t) ((tmp32_2 >> 1) +
-        ((kAllPassCoefsQ13[1] * *signal_in) >> 14));
-    *signal_out++ += tmp16_2;
-    tmp32_2 = (int32_t)(*signal_in++) - ((kAllPassCoefsQ13[1] * tmp16_2) >> 12);
-  }
-  // Store the filter states.
-  filter_state[0] = tmp32_1;
-  filter_state[1] = tmp32_2;
-}
-
-// Inserts |feature_value| into |low_value_vector|, if it is one of the 16
-// smallest values the last 100 frames. Then calculates and returns the median
-// of the five smallest values.
-int16_t WebRtcVad_FindMinimum(VadInstT* self,
-                              int16_t feature_value,
-                              int channel) {
-  int i = 0, j = 0;
-  int position = -1;
-  // Offset to beginning of the 16 minimum values in memory.
-  const int offset = (channel << 4);
-  int16_t current_median = 1600;
-  int16_t alpha = 0;
-  int32_t tmp32 = 0;
-  // Pointer to memory for the 16 minimum values and the age of each value of
-  // the |channel|.
-  int16_t* age = &self->index_vector[offset];
-  int16_t* smallest_values = &self->low_value_vector[offset];
-
-  RTC_DCHECK_LT(channel, kNumChannels);
-
-  // Each value in |smallest_values| is getting 1 loop older. Update |age|, and
-  // remove old values.
-  for (i = 0; i < 16; i++) {
-    if (age[i] != 100) {
-      age[i]++;
-    } else {
-      // Too old value. Remove from memory and shift larger values downwards.
-      for (j = i; j < 15; j++) {
-        smallest_values[j] = smallest_values[j + 1];
-        age[j] = age[j + 1];
-      }
-      age[15] = 101;
-      smallest_values[15] = 10000;
-    }
-  }
-
-  // Check if |feature_value| is smaller than any of the values in
-  // |smallest_values|. If so, find the |position| where to insert the new value
-  // (|feature_value|).
-  if (feature_value < smallest_values[7]) {
-    if (feature_value < smallest_values[3]) {
-      if (feature_value < smallest_values[1]) {
-        if (feature_value < smallest_values[0]) {
-          position = 0;
-        } else {
-          position = 1;
-        }
-      } else if (feature_value < smallest_values[2]) {
-        position = 2;
-      } else {
-        position = 3;
-      }
-    } else if (feature_value < smallest_values[5]) {
-      if (feature_value < smallest_values[4]) {
-        position = 4;
-      } else {
-        position = 5;
-      }
-    } else if (feature_value < smallest_values[6]) {
-      position = 6;
-    } else {
-      position = 7;
-    }
-  } else if (feature_value < smallest_values[15]) {
-    if (feature_value < smallest_values[11]) {
-      if (feature_value < smallest_values[9]) {
-        if (feature_value < smallest_values[8]) {
-          position = 8;
-        } else {
-          position = 9;
-        }
-      } else if (feature_value < smallest_values[10]) {
-        position = 10;
-      } else {
-        position = 11;
-      }
-    } else if (feature_value < smallest_values[13]) {
-      if (feature_value < smallest_values[12]) {
-        position = 12;
-      } else {
-        position = 13;
-      }
-    } else if (feature_value < smallest_values[14]) {
-      position = 14;
-    } else {
-      position = 15;
-    }
-  }
-
-  // If we have detected a new small value, insert it at the correct position
-  // and shift larger values up.
-  if (position > -1) {
-    for (i = 15; i > position; i--) {
-      smallest_values[i] = smallest_values[i - 1];
-      age[i] = age[i - 1];
-    }
-    smallest_values[position] = feature_value;
-    age[position] = 1;
-  }
-
-  // Get |current_median|.
-  if (self->frame_counter > 2) {
-    current_median = smallest_values[2];
-  } else if (self->frame_counter > 0) {
-    current_median = smallest_values[0];
-  }
-
-  // Smooth the median value.
-  if (self->frame_counter > 0) {
-    if (current_median < self->mean_value[channel]) {
-      alpha = kSmoothingDown;  // 0.2 in Q15.
-    } else {
-      alpha = kSmoothingUp;  // 0.99 in Q15.
-    }
-  }
-  tmp32 = (alpha + 1) * self->mean_value[channel];
-  tmp32 += (WEBRTC_SPL_WORD16_MAX - alpha) * current_median;
-  tmp32 += 16384;
-  self->mean_value[channel] = (int16_t) (tmp32 >> 15);
-
-  return self->mean_value[channel];
-}
diff --git a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/vad/vad_sp.h b/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/vad/vad_sp.h
deleted file mode 100644
index 002fcd8..0000000
--- a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/vad/vad_sp.h
+++ /dev/null
@@ -1,54 +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.
- */
-
-// This file includes specific signal processing tools used in vad_core.c.
-
-#ifndef COMMON_AUDIO_VAD_VAD_SP_H_
-#define COMMON_AUDIO_VAD_VAD_SP_H_
-
-#include "webrtc/common_audio/vad/vad_core.h"
-
-// Downsamples the signal by a factor 2, eg. 32->16 or 16->8.
-//
-// Inputs:
-//      - signal_in     : Input signal.
-//      - in_length     : Length of input signal in samples.
-//
-// Input & Output:
-//      - filter_state  : Current filter states of the two all-pass filters. The
-//                        |filter_state| is updated after all samples have been
-//                        processed.
-//
-// Output:
-//      - signal_out    : Downsampled signal (of length |in_length| / 2).
-void WebRtcVad_Downsampling(const int16_t* signal_in,
-                            int16_t* signal_out,
-                            int32_t* filter_state,
-                            size_t in_length);
-
-// Updates and returns the smoothed feature minimum. As minimum we use the
-// median of the five smallest feature values in a 100 frames long window.
-// As long as |handle->frame_counter| is zero, that is, we haven't received any
-// "valid" data, FindMinimum() outputs the default value of 1600.
-//
-// Inputs:
-//      - feature_value : New feature value to update with.
-//      - channel       : Channel number.
-//
-// Input & Output:
-//      - handle        : State information of the VAD.
-//
-// Returns:
-//                      : Smoothed minimum value for a moving window.
-int16_t WebRtcVad_FindMinimum(VadInstT* handle,
-                              int16_t feature_value,
-                              int channel);
-
-#endif  // COMMON_AUDIO_VAD_VAD_SP_H_
diff --git a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/vad/webrtc_vad.c b/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/vad/webrtc_vad.c
deleted file mode 100644
index 4315b09..0000000
--- a/funasr/runtime/onnxruntime/third_party/webrtc/common_audio/vad/webrtc_vad.c
+++ /dev/null
@@ -1,115 +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 "webrtc/common_audio/vad/include/webrtc_vad.h"
-
-#include <stdlib.h>
-#include <string.h>
-
-#include "webrtc/common_audio/signal_processing/include/signal_processing_library.h"
-#include "webrtc/common_audio/vad/vad_core.h"
-
-static const int kInitCheck = 42;
-static const int kValidRates[] = { 8000, 16000, 32000, 48000 };
-static const size_t kRatesSize = sizeof(kValidRates) / sizeof(*kValidRates);
-static const int kMaxFrameLengthMs = 30;
-
-VadInst* WebRtcVad_Create() {
-  VadInstT* self = (VadInstT*)malloc(sizeof(VadInstT));
-
-  WebRtcSpl_Init();
-  self->init_flag = 0;
-
-  return (VadInst*)self;
-}
-
-void WebRtcVad_Free(VadInst* handle) {
-  free(handle);
-}
-
-// TODO(bjornv): Move WebRtcVad_InitCore() code here.
-int WebRtcVad_Init(VadInst* handle) {
-  // Initialize the core VAD component.
-  return WebRtcVad_InitCore((VadInstT*) handle);
-}
-
-// TODO(bjornv): Move WebRtcVad_set_mode_core() code here.
-int WebRtcVad_set_mode(VadInst* handle, int mode) {
-  VadInstT* self = (VadInstT*) handle;
-
-  if (handle == NULL) {
-    return -1;
-  }
-  if (self->init_flag != kInitCheck) {
-    return -1;
-  }
-
-  return WebRtcVad_set_mode_core(self, mode);
-}
-
-int WebRtcVad_Process(VadInst* handle, int fs, const int16_t* audio_frame,
-                      size_t frame_length) {
-  int vad = -1;
-  VadInstT* self = (VadInstT*) handle;
-
-  if (handle == NULL) {
-    return -1;
-  }
-
-  if (self->init_flag != kInitCheck) {
-    return -1;
-  }
-  if (audio_frame == NULL) {
-    return -1;
-  }
-  if (WebRtcVad_ValidRateAndFrameLength(fs, frame_length) != 0) {
-    return -1;
-  }
-
-  if (fs == 48000) {
-      vad = WebRtcVad_CalcVad48khz(self, audio_frame, frame_length);
-  } else if (fs == 32000) {
-    vad = WebRtcVad_CalcVad32khz(self, audio_frame, frame_length);
-  } else if (fs == 16000) {
-    vad = WebRtcVad_CalcVad16khz(self, audio_frame, frame_length);
-  } else if (fs == 8000) {
-    vad = WebRtcVad_CalcVad8khz(self, audio_frame, frame_length);
-  }
-
-  if (vad > 0) {
-    vad = 1;
-  }
-  return vad;
-}
-
-int WebRtcVad_ValidRateAndFrameLength(int rate, size_t frame_length) {
-  int return_value = -1;
-  size_t i;
-  int valid_length_ms;
-  size_t valid_length;
-
-  // We only allow 10, 20 or 30 ms frames. Loop through valid frame rates and
-  // see if we have a matching pair.
-  for (i = 0; i < kRatesSize; i++) {
-    if (kValidRates[i] == rate) {
-      for (valid_length_ms = 10; valid_length_ms <= kMaxFrameLengthMs;
-          valid_length_ms += 10) {
-        valid_length = (size_t)(kValidRates[i] / 1000 * valid_length_ms);
-        if (frame_length == valid_length) {
-          return_value = 0;
-          break;
-        }
-      }
-      break;
-    }
-  }
-
-  return return_value;
-}
diff --git a/funasr/runtime/onnxruntime/third_party/webrtc/rtc_base/checks.cc b/funasr/runtime/onnxruntime/third_party/webrtc/rtc_base/checks.cc
deleted file mode 100644
index 03baf31..0000000
--- a/funasr/runtime/onnxruntime/third_party/webrtc/rtc_base/checks.cc
+++ /dev/null
@@ -1,167 +0,0 @@
-/*
- *  Copyright 2006 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.
- */
-
-// Most of this was borrowed (with minor modifications) from V8's and Chromium's
-// src/base/logging.cc.
-
-#include <cstdarg>
-#include <cstdio>
-#include <cstdlib>
-
-#if defined(WEBRTC_ANDROID)
-#define RTC_LOG_TAG_ANDROID "rtc"
-#include <android/log.h>  // NOLINT
-#endif
-
-#if defined(WEBRTC_WIN)
-#include <windows.h>
-#endif
-
-#if defined(WEBRTC_WIN)
-#define LAST_SYSTEM_ERROR (::GetLastError())
-#elif defined(__native_client__) && __native_client__
-#define LAST_SYSTEM_ERROR (0)
-#elif defined(WEBRTC_POSIX)
-#include <errno.h>
-#define LAST_SYSTEM_ERROR (errno)
-#endif  // WEBRTC_WIN
-
-#include "webrtc/rtc_base/checks.h"
-
-namespace {
-#if defined(__GNUC__)
-__attribute__((__format__(__printf__, 2, 3)))
-#endif
-  void AppendFormat(std::string* s, const char* fmt, ...) {
-  va_list args, copy;
-  va_start(args, fmt);
-  va_copy(copy, args);
-  const int predicted_length = std::vsnprintf(nullptr, 0, fmt, copy);
-  va_end(copy);
-
-  if (predicted_length > 0) {
-    const size_t size = s->size();
-    s->resize(size + predicted_length);
-    // Pass "+ 1" to vsnprintf to include space for the '\0'.
-    std::vsnprintf(&((*s)[size]), predicted_length + 1, fmt, args);
-  }
-  va_end(args);
-}
-}
-
-namespace rtc {
-namespace webrtc_checks_impl {
-
-// Reads one argument from args, appends it to s and advances fmt.
-// Returns true iff an argument was sucessfully parsed.
-bool ParseArg(va_list* args, const CheckArgType** fmt, std::string* s) {
-  if (**fmt == CheckArgType::kEnd)
-    return false;
-
-  switch (**fmt) {
-    case CheckArgType::kInt:
-      AppendFormat(s, "%d", va_arg(*args, int));
-      break;
-    case CheckArgType::kLong:
-      AppendFormat(s, "%ld", va_arg(*args, long));
-      break;
-    case CheckArgType::kLongLong:
-      AppendFormat(s, "%lld", va_arg(*args, long long));
-      break;
-    case CheckArgType::kUInt:
-      AppendFormat(s, "%u", va_arg(*args, unsigned));
-      break;
-    case CheckArgType::kULong:
-      AppendFormat(s, "%lu", va_arg(*args, unsigned long));
-      break;
-    case CheckArgType::kULongLong:
-      AppendFormat(s, "%llu", va_arg(*args, unsigned long long));
-      break;
-    case CheckArgType::kDouble:
-      AppendFormat(s, "%g", va_arg(*args, double));
-      break;
-    case CheckArgType::kLongDouble:
-      AppendFormat(s, "%Lg", va_arg(*args, long double));
-      break;
-    case CheckArgType::kCharP:
-      s->append(va_arg(*args, const char*));
-      break;
-    case CheckArgType::kStdString:
-      s->append(*va_arg(*args, const std::string*));
-      break;
-    case CheckArgType::kVoidP:
-      AppendFormat(s, "%p", va_arg(*args, const void*));
-      break;
-    default:
-      s->append("[Invalid CheckArgType]");
-      return false;
-  }
-  (*fmt)++;
-  return true;
-}
-
-RTC_NORETURN void FatalLog(const char* file,
-                           int line,
-                           const char* message,
-                           const CheckArgType* fmt,
-                           ...) {
-  va_list args;
-  va_start(args, fmt);
-
-  std::string s;
-  AppendFormat(&s,
-               "\n\n"
-               "#\n"
-               "# Fatal error in: %s, line %d\n"
-               "# last system error: %u\n"
-               "# Check failed: %s",
-               file, line, LAST_SYSTEM_ERROR, message);
-
-  if (*fmt == CheckArgType::kCheckOp) {
-    // This log message was generated by RTC_CHECK_OP, so we have to complete
-    // the error message using the operands that have been passed as the first
-    // two arguments.
-    fmt++;
-
-    std::string s1, s2;
-    if (ParseArg(&args, &fmt, &s1) && ParseArg(&args, &fmt, &s2))
-      AppendFormat(&s, " (%s vs. %s)\n# ", s1.c_str(), s2.c_str());
-  } else {
-    s.append("\n# ");
-  }
-
-  // Append all the user-supplied arguments to the message.
-  while (ParseArg(&args, &fmt, &s))
-    ;
-
-  va_end(args);
-
-  const char* output = s.c_str();
-
-#if defined(WEBRTC_ANDROID)
-  __android_log_print(ANDROID_LOG_ERROR, RTC_LOG_TAG_ANDROID, "%s\n", output);
-#endif
-
-  fflush(stdout);
-  fprintf(stderr, "%s", output);
-  fflush(stderr);
-  abort();
-}
-
-}  // namespace webrtc_checks_impl
-}  // namespace rtc
-
-// Function to call from the C version of the RTC_CHECK and RTC_DCHECK macros.
-RTC_NORETURN void rtc_FatalMessage(const char* file, int line,
-                                   const char* msg) {
-  static constexpr rtc::webrtc_checks_impl::CheckArgType t[] = {
-      rtc::webrtc_checks_impl::CheckArgType::kEnd};
-  FatalLog(file, line, msg, t);
-}
diff --git a/funasr/runtime/onnxruntime/third_party/webrtc/rtc_base/checks.h b/funasr/runtime/onnxruntime/third_party/webrtc/rtc_base/checks.h
deleted file mode 100644
index 3dbef18..0000000
--- a/funasr/runtime/onnxruntime/third_party/webrtc/rtc_base/checks.h
+++ /dev/null
@@ -1,400 +0,0 @@
-/*
- *  Copyright 2006 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 RTC_BASE_CHECKS_H_
-#define RTC_BASE_CHECKS_H_
-
-// If you for some reson need to know if DCHECKs are on, test the value of
-// RTC_DCHECK_IS_ON. (Test its value, not if it's defined; it'll always be
-// defined, to either a true or a false value.)
-#if !defined(NDEBUG) || defined(DCHECK_ALWAYS_ON)
-#define RTC_DCHECK_IS_ON 1
-#else
-#define RTC_DCHECK_IS_ON 0
-#endif
-
-// Annotate a function that will not return control flow to the caller.
-#if defined(_MSC_VER)
-#define RTC_NORETURN __declspec(noreturn)
-#elif defined(__GNUC__)
-#define RTC_NORETURN __attribute__ ((__noreturn__))
-#else
-#define RTC_NORETURN
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-RTC_NORETURN void rtc_FatalMessage(const char* file, int line, const char* msg);
-#ifdef __cplusplus
-}  // extern "C"
-#endif
-
-#ifdef __cplusplus
-// C++ version.
-
-#include <string>
-
-#include "webrtc/rtc_base/numerics/safe_compare.h"
-#include "webrtc/rtc_base/system/inline.h"
-
-// The macros here print a message to stderr and abort under various
-// conditions. All will accept additional stream messages. For example:
-// RTC_DCHECK_EQ(foo, bar) << "I'm printed when foo != bar.";
-//
-// - RTC_CHECK(x) is an assertion that x is always true, and that if it isn't,
-//   it's better to terminate the process than to continue. During development,
-//   the reason that it's better to terminate might simply be that the error
-//   handling code isn't in place yet; in production, the reason might be that
-//   the author of the code truly believes that x will always be true, but that
-//   she recognizes that if she is wrong, abrupt and unpleasant process
-//   termination is still better than carrying on with the assumption violated.
-//
-//   RTC_CHECK always evaluates its argument, so it's OK for x to have side
-//   effects.
-//
-// - RTC_DCHECK(x) is the same as RTC_CHECK(x)---an assertion that x is always
-//   true---except that x will only be evaluated in debug builds; in production
-//   builds, x is simply assumed to be true. This is useful if evaluating x is
-//   expensive and the expected cost of failing to detect the violated
-//   assumption is acceptable. You should not handle cases where a production
-//   build fails to spot a violated condition, even those that would result in
-//   crashes. If the code needs to cope with the error, make it cope, but don't
-//   call RTC_DCHECK; if the condition really can't occur, but you'd sleep
-//   better at night knowing that the process will suicide instead of carrying
-//   on in case you were wrong, use RTC_CHECK instead of RTC_DCHECK.
-//
-//   RTC_DCHECK only evaluates its argument in debug builds, so if x has visible
-//   side effects, you need to write e.g.
-//     bool w = x; RTC_DCHECK(w);
-//
-// - RTC_CHECK_EQ, _NE, _GT, ..., and RTC_DCHECK_EQ, _NE, _GT, ... are
-//   specialized variants of RTC_CHECK and RTC_DCHECK that print prettier
-//   messages if the condition doesn't hold. Prefer them to raw RTC_CHECK and
-//   RTC_DCHECK.
-//
-// - FATAL() aborts unconditionally.
-//
-// TODO(ajm): Ideally, checks.h would be combined with logging.h, but
-// consolidation with system_wrappers/logging.h should happen first.
-
-namespace rtc {
-namespace webrtc_checks_impl {
-enum class CheckArgType : int8_t {
-  kEnd = 0,
-  kInt,
-  kLong,
-  kLongLong,
-  kUInt,
-  kULong,
-  kULongLong,
-  kDouble,
-  kLongDouble,
-  kCharP,
-  kStdString,
-  kVoidP,
-
-  // kCheckOp doesn't represent an argument type. Instead, it is sent as the
-  // first argument from RTC_CHECK_OP to make FatalLog use the next two
-  // arguments to build the special CHECK_OP error message
-  // (the "a == b (1 vs. 2)" bit).
-  kCheckOp,
-};
-
-RTC_NORETURN void FatalLog(const char* file,
-                           int line,
-                           const char* message,
-                           const CheckArgType* fmt,
-                           ...);
-
-// Wrapper for log arguments. Only ever make values of this type with the
-// MakeVal() functions.
-template <CheckArgType N, typename T>
-struct Val {
-  static constexpr CheckArgType Type() { return N; }
-  T GetVal() const { return val; }
-  T val;
-};
-
-inline Val<CheckArgType::kInt, int> MakeVal(int x) {
-  return {x};
-}
-inline Val<CheckArgType::kLong, long> MakeVal(long x) {
-  return {x};
-}
-inline Val<CheckArgType::kLongLong, long long> MakeVal(long long x) {
-  return {x};
-}
-inline Val<CheckArgType::kUInt, unsigned int> MakeVal(unsigned int x) {
-  return {x};
-}
-inline Val<CheckArgType::kULong, unsigned long> MakeVal(unsigned long x) {
-  return {x};
-}
-inline Val<CheckArgType::kULongLong, unsigned long long> MakeVal(
-    unsigned long long x) {
-  return {x};
-}
-
-inline Val<CheckArgType::kDouble, double> MakeVal(double x) {
-  return {x};
-}
-inline Val<CheckArgType::kLongDouble, long double> MakeVal(long double x) {
-  return {x};
-}
-
-inline Val<CheckArgType::kCharP, const char*> MakeVal(const char* x) {
-  return {x};
-}
-inline Val<CheckArgType::kStdString, const std::string*> MakeVal(
-    const std::string& x) {
-  return {&x};
-}
-
-inline Val<CheckArgType::kVoidP, const void*> MakeVal(const void* x) {
-  return {x};
-}
-
-// Ephemeral type that represents the result of the logging << operator.
-template <typename... Ts>
-class LogStreamer;
-
-// Base case: Before the first << argument.
-template <>
-class LogStreamer<> final {
- public:
-  template <
-      typename U,
-      typename std::enable_if<std::is_arithmetic<U>::value>::type* = nullptr>
-  RTC_FORCE_INLINE LogStreamer<decltype(MakeVal(std::declval<U>()))> operator<<(
-      U arg) const {
-    return LogStreamer<decltype(MakeVal(std::declval<U>()))>(MakeVal(arg),
-                                                             this);
-  }
-
-  template <
-      typename U,
-      typename std::enable_if<!std::is_arithmetic<U>::value>::type* = nullptr>
-  RTC_FORCE_INLINE LogStreamer<decltype(MakeVal(std::declval<U>()))> operator<<(
-      const U& arg) const {
-    return LogStreamer<decltype(MakeVal(std::declval<U>()))>(MakeVal(arg),
-                                                             this);
-  }
-
-  template <typename... Us>
-  RTC_NORETURN RTC_FORCE_INLINE static void Call(const char* file,
-                                                 const int line,
-                                                 const char* message,
-                                                 const Us&... args) {
-    static constexpr CheckArgType t[] = {Us::Type()..., CheckArgType::kEnd};
-    FatalLog(file, line, message, t, args.GetVal()...);
-  }
-
-  template <typename... Us>
-  RTC_NORETURN RTC_FORCE_INLINE static void CallCheckOp(const char* file,
-                                                        const int line,
-                                                        const char* message,
-                                                        const Us&... args) {
-    static constexpr CheckArgType t[] = {CheckArgType::kCheckOp, Us::Type()...,
-                                         CheckArgType::kEnd};
-    FatalLog(file, line, message, t, args.GetVal()...);
-  }
-};
-
-// Inductive case: We've already seen at least one << argument. The most recent
-// one had type `T`, and the earlier ones had types `Ts`.
-template <typename T, typename... Ts>
-class LogStreamer<T, Ts...> final {
- public:
-  RTC_FORCE_INLINE LogStreamer(T arg, const LogStreamer<Ts...>* prior)
-      : arg_(arg), prior_(prior) {}
-
-  template <
-      typename U,
-      typename std::enable_if<std::is_arithmetic<U>::value>::type* = nullptr>
-  RTC_FORCE_INLINE LogStreamer<decltype(MakeVal(std::declval<U>())), T, Ts...>
-  operator<<(U arg) const {
-    return LogStreamer<decltype(MakeVal(std::declval<U>())), T, Ts...>(
-        MakeVal(arg), this);
-  }
-
-  template <
-      typename U,
-      typename std::enable_if<!std::is_arithmetic<U>::value>::type* = nullptr>
-  RTC_FORCE_INLINE LogStreamer<decltype(MakeVal(std::declval<U>())), T, Ts...>
-  operator<<(const U& arg) const {
-    return LogStreamer<decltype(MakeVal(std::declval<U>())), T, Ts...>(
-        MakeVal(arg), this);
-  }
-
-  template <typename... Us>
-  RTC_NORETURN RTC_FORCE_INLINE void Call(const char* file,
-                                          const int line,
-                                          const char* message,
-                                          const Us&... args) const {
-    prior_->Call(file, line, message, arg_, args...);
-  }
-
-  template <typename... Us>
-  RTC_NORETURN RTC_FORCE_INLINE void CallCheckOp(const char* file,
-                                                 const int line,
-                                                 const char* message,
-                                                 const Us&... args) const {
-    prior_->CallCheckOp(file, line, message, arg_, args...);
-  }
-
- private:
-  // The most recent argument.
-  T arg_;
-
-  // Earlier arguments.
-  const LogStreamer<Ts...>* prior_;
-};
-
-template <bool isCheckOp>
-class FatalLogCall final {
- public:
-  FatalLogCall(const char* file, int line, const char* message)
-      : file_(file), line_(line), message_(message) {}
-
-  // This can be any binary operator with precedence lower than <<.
-  template <typename... Ts>
-  RTC_NORETURN RTC_FORCE_INLINE void operator&(
-      const LogStreamer<Ts...>& streamer) {
-    isCheckOp ? streamer.CallCheckOp(file_, line_, message_)
-              : streamer.Call(file_, line_, message_);
-  }
-
- private:
-  const char* file_;
-  int line_;
-  const char* message_;
-};
-}  // namespace webrtc_checks_impl
-
-// The actual stream used isn't important. We reference |ignored| in the code
-// but don't evaluate it; this is to avoid "unused variable" warnings (we do so
-// in a particularly convoluted way with an extra ?: because that appears to be
-// the simplest construct that keeps Visual Studio from complaining about
-// condition being unused).
-#define RTC_EAT_STREAM_PARAMETERS(ignored)                        \
-  (true ? true : ((void)(ignored), true))                         \
-      ? static_cast<void>(0)                                      \
-      : rtc::webrtc_checks_impl::FatalLogCall<false>("", 0, "") & \
-            rtc::webrtc_checks_impl::LogStreamer<>()
-
-// Call RTC_EAT_STREAM_PARAMETERS with an argument that fails to compile if
-// values of the same types as |a| and |b| can't be compared with the given
-// operation, and that would evaluate |a| and |b| if evaluated.
-#define RTC_EAT_STREAM_PARAMETERS_OP(op, a, b) \
-  RTC_EAT_STREAM_PARAMETERS(((void)rtc::Safe##op(a, b)))
-
-// RTC_CHECK dies with a fatal error if condition is not true. It is *not*
-// controlled by NDEBUG or anything else, so the check will be executed
-// regardless of compilation mode.
-//
-// We make sure RTC_CHECK et al. always evaluates |condition|, as
-// doing RTC_CHECK(FunctionWithSideEffect()) is a common idiom.
-#define RTC_CHECK(condition)                                       \
-  while (!(condition))                                             \
-  rtc::webrtc_checks_impl::FatalLogCall<false>(__FILE__, __LINE__, \
-                                               #condition) &       \
-      rtc::webrtc_checks_impl::LogStreamer<>()
-
-// Helper macro for binary operators.
-// Don't use this macro directly in your code, use RTC_CHECK_EQ et al below.
-#define RTC_CHECK_OP(name, op, val1, val2)                               \
-  while (!rtc::Safe##name((val1), (val2)))                               \
-  rtc::webrtc_checks_impl::FatalLogCall<true>(__FILE__, __LINE__,        \
-                                              #val1 " " #op " " #val2) & \
-      rtc::webrtc_checks_impl::LogStreamer<>() << (val1) << (val2)
-
-#define RTC_CHECK_EQ(val1, val2) RTC_CHECK_OP(Eq, ==, val1, val2)
-#define RTC_CHECK_NE(val1, val2) RTC_CHECK_OP(Ne, !=, val1, val2)
-#define RTC_CHECK_LE(val1, val2) RTC_CHECK_OP(Le, <=, val1, val2)
-#define RTC_CHECK_LT(val1, val2) RTC_CHECK_OP(Lt, <, val1, val2)
-#define RTC_CHECK_GE(val1, val2) RTC_CHECK_OP(Ge, >=, val1, val2)
-#define RTC_CHECK_GT(val1, val2) RTC_CHECK_OP(Gt, >, val1, val2)
-
-// The RTC_DCHECK macro is equivalent to RTC_CHECK except that it only generates
-// code in debug builds. It does reference the condition parameter in all cases,
-// though, so callers won't risk getting warnings about unused variables.
-#if RTC_DCHECK_IS_ON
-#define RTC_DCHECK(condition) RTC_CHECK(condition)
-#define RTC_DCHECK_EQ(v1, v2) RTC_CHECK_EQ(v1, v2)
-#define RTC_DCHECK_NE(v1, v2) RTC_CHECK_NE(v1, v2)
-#define RTC_DCHECK_LE(v1, v2) RTC_CHECK_LE(v1, v2)
-#define RTC_DCHECK_LT(v1, v2) RTC_CHECK_LT(v1, v2)
-#define RTC_DCHECK_GE(v1, v2) RTC_CHECK_GE(v1, v2)
-#define RTC_DCHECK_GT(v1, v2) RTC_CHECK_GT(v1, v2)
-#else
-#define RTC_DCHECK(condition) RTC_EAT_STREAM_PARAMETERS(condition)
-#define RTC_DCHECK_EQ(v1, v2) RTC_EAT_STREAM_PARAMETERS_OP(Eq, v1, v2)
-#define RTC_DCHECK_NE(v1, v2) RTC_EAT_STREAM_PARAMETERS_OP(Ne, v1, v2)
-#define RTC_DCHECK_LE(v1, v2) RTC_EAT_STREAM_PARAMETERS_OP(Le, v1, v2)
-#define RTC_DCHECK_LT(v1, v2) RTC_EAT_STREAM_PARAMETERS_OP(Lt, v1, v2)
-#define RTC_DCHECK_GE(v1, v2) RTC_EAT_STREAM_PARAMETERS_OP(Ge, v1, v2)
-#define RTC_DCHECK_GT(v1, v2) RTC_EAT_STREAM_PARAMETERS_OP(Gt, v1, v2)
-#endif
-
-#define RTC_UNREACHABLE_CODE_HIT false
-#define RTC_NOTREACHED() RTC_DCHECK(RTC_UNREACHABLE_CODE_HIT)
-
-// TODO(bugs.webrtc.org/8454): Add an RTC_ prefix or rename differently.
-#define FATAL()                                                    \
-  rtc::webrtc_checks_impl::FatalLogCall<false>(__FILE__, __LINE__, \
-                                               "FATAL()") &        \
-      rtc::webrtc_checks_impl::LogStreamer<>()
-
-// Performs the integer division a/b and returns the result. CHECKs that the
-// remainder is zero.
-template <typename T>
-inline T CheckedDivExact(T a, T b) {
-  RTC_CHECK_EQ(a % b, 0) << a << " is not evenly divisible by " << b;
-  return a / b;
-}
-
-}  // namespace rtc
-
-#else  // __cplusplus not defined
-// C version. Lacks many features compared to the C++ version, but usage
-// guidelines are the same.
-
-#define RTC_CHECK(condition)                                             \
-  do {                                                                   \
-    if (!(condition)) {                                                  \
-      rtc_FatalMessage(__FILE__, __LINE__, "CHECK failed: " #condition); \
-    }                                                                    \
-  } while (0)
-
-#define RTC_CHECK_EQ(a, b) RTC_CHECK((a) == (b))
-#define RTC_CHECK_NE(a, b) RTC_CHECK((a) != (b))
-#define RTC_CHECK_LE(a, b) RTC_CHECK((a) <= (b))
-#define RTC_CHECK_LT(a, b) RTC_CHECK((a) < (b))
-#define RTC_CHECK_GE(a, b) RTC_CHECK((a) >= (b))
-#define RTC_CHECK_GT(a, b) RTC_CHECK((a) > (b))
-
-#define RTC_DCHECK(condition)                                             \
-  do {                                                                    \
-    if (RTC_DCHECK_IS_ON && !(condition)) {                               \
-      rtc_FatalMessage(__FILE__, __LINE__, "DCHECK failed: " #condition); \
-    }                                                                     \
-  } while (0)
-
-#define RTC_DCHECK_EQ(a, b) RTC_DCHECK((a) == (b))
-#define RTC_DCHECK_NE(a, b) RTC_DCHECK((a) != (b))
-#define RTC_DCHECK_LE(a, b) RTC_DCHECK((a) <= (b))
-#define RTC_DCHECK_LT(a, b) RTC_DCHECK((a) < (b))
-#define RTC_DCHECK_GE(a, b) RTC_DCHECK((a) >= (b))
-#define RTC_DCHECK_GT(a, b) RTC_DCHECK((a) > (b))
-
-#endif  // __cplusplus
-
-#endif  // RTC_BASE_CHECKS_H_
diff --git a/funasr/runtime/onnxruntime/third_party/webrtc/rtc_base/compile_assert_c.h b/funasr/runtime/onnxruntime/third_party/webrtc/rtc_base/compile_assert_c.h
deleted file mode 100644
index db2e4a8..0000000
--- a/funasr/runtime/onnxruntime/third_party/webrtc/rtc_base/compile_assert_c.h
+++ /dev/null
@@ -1,25 +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 RTC_BASE_COMPILE_ASSERT_C_H_
-#define RTC_BASE_COMPILE_ASSERT_C_H_
-
-// Use this macro to verify at compile time that certain restrictions are met.
-// The argument is the boolean expression to evaluate.
-// Example:
-//   RTC_COMPILE_ASSERT(sizeof(foo) < 128);
-// Note: In C++, use static_assert instead!
-#define RTC_COMPILE_ASSERT(expression) \
-  switch (0) {                         \
-    case 0:                            \
-    case expression:;                  \
-  }
-
-#endif  // RTC_BASE_COMPILE_ASSERT_C_H_
diff --git a/funasr/runtime/onnxruntime/third_party/webrtc/rtc_base/numerics/safe_compare.h b/funasr/runtime/onnxruntime/third_party/webrtc/rtc_base/numerics/safe_compare.h
deleted file mode 100644
index d62eee1..0000000
--- a/funasr/runtime/onnxruntime/third_party/webrtc/rtc_base/numerics/safe_compare.h
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- *  Copyright 2016 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 defines six constexpr functions:
-//
-//   rtc::SafeEq  // ==
-//   rtc::SafeNe  // !=
-//   rtc::SafeLt  // <
-//   rtc::SafeLe  // <=
-//   rtc::SafeGt  // >
-//   rtc::SafeGe  // >=
-//
-// They each accept two arguments of arbitrary types, and in almost all cases,
-// they simply call the appropriate comparison operator. However, if both
-// arguments are integers, they don't compare them using C++'s quirky rules,
-// but instead adhere to the true mathematical definitions. It is as if the
-// arguments were first converted to infinite-range signed integers, and then
-// compared, although of course nothing expensive like that actually takes
-// place. In practice, for signed/signed and unsigned/unsigned comparisons and
-// some mixed-signed comparisons with a compile-time constant, the overhead is
-// zero; in the remaining cases, it is just a few machine instructions (no
-// branches).
-
-#ifndef RTC_BASE_NUMERICS_SAFE_COMPARE_H_
-#define RTC_BASE_NUMERICS_SAFE_COMPARE_H_
-
-#include <stddef.h>
-#include <stdint.h>
-
-#include <type_traits>
-#include <utility>
-
-#include "webrtc/rtc_base/type_traits.h"
-
-namespace rtc {
-
-namespace safe_cmp_impl {
-
-template <size_t N>
-struct LargerIntImpl : std::false_type {};
-template <>
-struct LargerIntImpl<sizeof(int8_t)> : std::true_type {
-  using type = int16_t;
-};
-template <>
-struct LargerIntImpl<sizeof(int16_t)> : std::true_type {
-  using type = int32_t;
-};
-template <>
-struct LargerIntImpl<sizeof(int32_t)> : std::true_type {
-  using type = int64_t;
-};
-
-// LargerInt<T1, T2>::value is true iff there's a signed type that's larger
-// than T1 (and no larger than the larger of T2 and int*, for performance
-// reasons); and if there is such a type, LargerInt<T1, T2>::type is an alias
-// for it.
-template <typename T1, typename T2>
-struct LargerInt
-    : LargerIntImpl<sizeof(T1) < sizeof(T2) || sizeof(T1) < sizeof(int*)
-                        ? sizeof(T1)
-                        : 0> {};
-
-template <typename T>
-constexpr typename std::make_unsigned<T>::type MakeUnsigned(T a) {
-  return static_cast<typename std::make_unsigned<T>::type>(a);
-}
-
-// Overload for when both T1 and T2 have the same signedness.
-template <typename Op,
-          typename T1,
-          typename T2,
-          typename std::enable_if<std::is_signed<T1>::value ==
-                                  std::is_signed<T2>::value>::type* = nullptr>
-constexpr bool Cmp(T1 a, T2 b) {
-  return Op::Op(a, b);
-}
-
-// Overload for signed - unsigned comparison that can be promoted to a bigger
-// signed type.
-template <typename Op,
-          typename T1,
-          typename T2,
-          typename std::enable_if<std::is_signed<T1>::value &&
-                                  std::is_unsigned<T2>::value &&
-                                  LargerInt<T2, T1>::value>::type* = nullptr>
-constexpr bool Cmp(T1 a, T2 b) {
-  return Op::Op(a, static_cast<typename LargerInt<T2, T1>::type>(b));
-}
-
-// Overload for unsigned - signed comparison that can be promoted to a bigger
-// signed type.
-template <typename Op,
-          typename T1,
-          typename T2,
-          typename std::enable_if<std::is_unsigned<T1>::value &&
-                                  std::is_signed<T2>::value &&
-                                  LargerInt<T1, T2>::value>::type* = nullptr>
-constexpr bool Cmp(T1 a, T2 b) {
-  return Op::Op(static_cast<typename LargerInt<T1, T2>::type>(a), b);
-}
-
-// Overload for signed - unsigned comparison that can't be promoted to a bigger
-// signed type.
-template <typename Op,
-          typename T1,
-          typename T2,
-          typename std::enable_if<std::is_signed<T1>::value &&
-                                  std::is_unsigned<T2>::value &&
-                                  !LargerInt<T2, T1>::value>::type* = nullptr>
-constexpr bool Cmp(T1 a, T2 b) {
-  return a < 0 ? Op::Op(-1, 0) : Op::Op(safe_cmp_impl::MakeUnsigned(a), b);
-}
-
-// Overload for unsigned - signed comparison that can't be promoted to a bigger
-// signed type.
-template <typename Op,
-          typename T1,
-          typename T2,
-          typename std::enable_if<std::is_unsigned<T1>::value &&
-                                  std::is_signed<T2>::value &&
-                                  !LargerInt<T1, T2>::value>::type* = nullptr>
-constexpr bool Cmp(T1 a, T2 b) {
-  return b < 0 ? Op::Op(0, -1) : Op::Op(a, safe_cmp_impl::MakeUnsigned(b));
-}
-
-#define RTC_SAFECMP_MAKE_OP(name, op)      \
-  struct name {                            \
-    template <typename T1, typename T2>    \
-    static constexpr bool Op(T1 a, T2 b) { \
-      return a op b;                       \
-    }                                      \
-  };
-RTC_SAFECMP_MAKE_OP(EqOp, ==)
-RTC_SAFECMP_MAKE_OP(NeOp, !=)
-RTC_SAFECMP_MAKE_OP(LtOp, <)
-RTC_SAFECMP_MAKE_OP(LeOp, <=)
-RTC_SAFECMP_MAKE_OP(GtOp, >)
-RTC_SAFECMP_MAKE_OP(GeOp, >=)
-#undef RTC_SAFECMP_MAKE_OP
-
-}  // namespace safe_cmp_impl
-
-#define RTC_SAFECMP_MAKE_FUN(name)                                            \
-  template <typename T1, typename T2>                                         \
-  constexpr                                                                   \
-      typename std::enable_if<IsIntlike<T1>::value && IsIntlike<T2>::value,   \
-                              bool>::type Safe##name(T1 a, T2 b) {            \
-    /* Unary plus here turns enums into real integral types. */               \
-    return safe_cmp_impl::Cmp<safe_cmp_impl::name##Op>(+a, +b);               \
-  }                                                                           \
-  template <typename T1, typename T2>                                         \
-  constexpr                                                                   \
-      typename std::enable_if<!IsIntlike<T1>::value || !IsIntlike<T2>::value, \
-                              bool>::type Safe##name(const T1& a,             \
-                                                     const T2& b) {           \
-    return safe_cmp_impl::name##Op::Op(a, b);                                 \
-  }
-RTC_SAFECMP_MAKE_FUN(Eq)
-RTC_SAFECMP_MAKE_FUN(Ne)
-RTC_SAFECMP_MAKE_FUN(Lt)
-RTC_SAFECMP_MAKE_FUN(Le)
-RTC_SAFECMP_MAKE_FUN(Gt)
-RTC_SAFECMP_MAKE_FUN(Ge)
-#undef RTC_SAFECMP_MAKE_FUN
-
-}  // namespace rtc
-
-#endif  // RTC_BASE_NUMERICS_SAFE_COMPARE_H_
diff --git a/funasr/runtime/onnxruntime/third_party/webrtc/rtc_base/sanitizer.h b/funasr/runtime/onnxruntime/third_party/webrtc/rtc_base/sanitizer.h
deleted file mode 100644
index a9eccfc..0000000
--- a/funasr/runtime/onnxruntime/third_party/webrtc/rtc_base/sanitizer.h
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- *  Copyright 2016 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 RTC_BASE_SANITIZER_H_
-#define RTC_BASE_SANITIZER_H_
-
-#include <stddef.h>  // For size_t.
-
-#ifdef __cplusplus
-#include <type_traits>
-#endif
-
-#if defined(__has_feature)
-#if __has_feature(address_sanitizer)
-#define RTC_HAS_ASAN 1
-#endif
-#if __has_feature(memory_sanitizer)
-#define RTC_HAS_MSAN 1
-#endif
-#endif
-#ifndef RTC_HAS_ASAN
-#define RTC_HAS_ASAN 0
-#endif
-#ifndef RTC_HAS_MSAN
-#define RTC_HAS_MSAN 0
-#endif
-
-#if RTC_HAS_ASAN
-#include <sanitizer/asan_interface.h>
-#endif
-#if RTC_HAS_MSAN
-#include <sanitizer/msan_interface.h>
-#endif
-
-#ifdef __has_attribute
-#if __has_attribute(no_sanitize)
-#define RTC_NO_SANITIZE(what) __attribute__((no_sanitize(what)))
-#endif
-#endif
-#ifndef RTC_NO_SANITIZE
-#define RTC_NO_SANITIZE(what)
-#endif
-
-// Ask ASan to mark the memory range [ptr, ptr + element_size * num_elements)
-// as being unaddressable, so that reads and writes are not allowed. ASan may
-// narrow the range to the nearest alignment boundaries.
-static inline void rtc_AsanPoison(const volatile void* ptr,
-                                  size_t element_size,
-                                  size_t num_elements) {
-#if RTC_HAS_ASAN
-  ASAN_POISON_MEMORY_REGION(ptr, element_size * num_elements);
-#endif
-}
-
-// Ask ASan to mark the memory range [ptr, ptr + element_size * num_elements)
-// as being addressable, so that reads and writes are allowed. ASan may widen
-// the range to the nearest alignment boundaries.
-static inline void rtc_AsanUnpoison(const volatile void* ptr,
-                                    size_t element_size,
-                                    size_t num_elements) {
-#if RTC_HAS_ASAN
-  ASAN_UNPOISON_MEMORY_REGION(ptr, element_size * num_elements);
-#endif
-}
-
-// Ask MSan to mark the memory range [ptr, ptr + element_size * num_elements)
-// as being uninitialized.
-static inline void rtc_MsanMarkUninitialized(const volatile void* ptr,
-                                             size_t element_size,
-                                             size_t num_elements) {
-#if RTC_HAS_MSAN
-  __msan_poison(ptr, element_size * num_elements);
-#endif
-}
-
-// Force an MSan check (if any bits in the memory range [ptr, ptr +
-// element_size * num_elements) are uninitialized the call will crash with an
-// MSan report).
-static inline void rtc_MsanCheckInitialized(const volatile void* ptr,
-                                            size_t element_size,
-                                            size_t num_elements) {
-#if RTC_HAS_MSAN
-  __msan_check_mem_is_initialized(ptr, element_size * num_elements);
-#endif
-}
-
-#ifdef __cplusplus
-
-namespace rtc {
-namespace sanitizer_impl {
-
-template <typename T>
-constexpr bool IsTriviallyCopyable() {
-  return static_cast<bool>(std::is_trivially_copy_constructible<T>::value &&
-                           (std::is_trivially_copy_assignable<T>::value ||
-                            !std::is_copy_assignable<T>::value) &&
-                           std::is_trivially_destructible<T>::value);
-}
-
-}  // namespace sanitizer_impl
-
-template <typename T>
-inline void AsanPoison(const T& mem) {
-  rtc_AsanPoison(mem.data(), sizeof(mem.data()[0]), mem.size());
-}
-
-template <typename T>
-inline void AsanUnpoison(const T& mem) {
-  rtc_AsanUnpoison(mem.data(), sizeof(mem.data()[0]), mem.size());
-}
-
-template <typename T>
-inline void MsanMarkUninitialized(const T& mem) {
-  rtc_MsanMarkUninitialized(mem.data(), sizeof(mem.data()[0]), mem.size());
-}
-
-template <typename T>
-inline T MsanUninitialized(T t) {
-#if RTC_HAS_MSAN
-  // TODO(bugs.webrtc.org/8762): Switch to std::is_trivially_copyable when it
-  // becomes available in downstream projects.
-  static_assert(sanitizer_impl::IsTriviallyCopyable<T>(), "");
-#endif
-  rtc_MsanMarkUninitialized(&t, sizeof(T), 1);
-  return t;
-}
-
-template <typename T>
-inline void MsanCheckInitialized(const T& mem) {
-  rtc_MsanCheckInitialized(mem.data(), sizeof(mem.data()[0]), mem.size());
-}
-
-}  // namespace rtc
-
-#endif  // __cplusplus
-
-#endif  // RTC_BASE_SANITIZER_H_
diff --git a/funasr/runtime/onnxruntime/third_party/webrtc/rtc_base/system/arch.h b/funasr/runtime/onnxruntime/third_party/webrtc/rtc_base/system/arch.h
deleted file mode 100644
index a2a1180..0000000
--- a/funasr/runtime/onnxruntime/third_party/webrtc/rtc_base/system/arch.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- *  Copyright (c) 2018 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 platform-specific typedefs and defines.
-// Much of it is derived from Chromium's build/build_config.h.
-
-#ifndef RTC_BASE_SYSTEM_ARCH_H_
-#define RTC_BASE_SYSTEM_ARCH_H_
-
-// Processor architecture detection.  For more info on what's defined, see:
-//   http://msdn.microsoft.com/en-us/library/b0084kay.aspx
-//   http://www.agner.org/optimize/calling_conventions.pdf
-//   or with gcc, run: "echo | gcc -E -dM -"
-#if defined(_M_X64) || defined(__x86_64__)
-#define WEBRTC_ARCH_X86_FAMILY
-#define WEBRTC_ARCH_X86_64
-#define WEBRTC_ARCH_64_BITS
-#define WEBRTC_ARCH_LITTLE_ENDIAN
-#elif defined(__aarch64__)
-#define WEBRTC_ARCH_ARM_FAMILY
-#define WEBRTC_ARCH_64_BITS
-#define WEBRTC_ARCH_LITTLE_ENDIAN
-#elif defined(_M_IX86) || defined(__i386__)
-#define WEBRTC_ARCH_X86_FAMILY
-#define WEBRTC_ARCH_X86
-#define WEBRTC_ARCH_32_BITS
-#define WEBRTC_ARCH_LITTLE_ENDIAN
-#elif defined(__ARMEL__)
-#define WEBRTC_ARCH_ARM_FAMILY
-#define WEBRTC_ARCH_32_BITS
-#define WEBRTC_ARCH_LITTLE_ENDIAN
-#elif defined(__MIPSEL__)
-#define WEBRTC_ARCH_MIPS_FAMILY
-#if defined(__LP64__)
-#define WEBRTC_ARCH_64_BITS
-#else
-#define WEBRTC_ARCH_32_BITS
-#endif
-#define WEBRTC_ARCH_LITTLE_ENDIAN
-#elif defined(__pnacl__)
-#define WEBRTC_ARCH_32_BITS
-#define WEBRTC_ARCH_LITTLE_ENDIAN
-#else
-#error Please add support for your architecture in typedefs.h
-#endif
-
-#if !(defined(WEBRTC_ARCH_LITTLE_ENDIAN) ^ defined(WEBRTC_ARCH_BIG_ENDIAN))
-#error Define either WEBRTC_ARCH_LITTLE_ENDIAN or WEBRTC_ARCH_BIG_ENDIAN
-#endif
-
-#endif  // RTC_BASE_SYSTEM_ARCH_H_
diff --git a/funasr/runtime/onnxruntime/third_party/webrtc/rtc_base/system/inline.h b/funasr/runtime/onnxruntime/third_party/webrtc/rtc_base/system/inline.h
deleted file mode 100644
index f585d34..0000000
--- a/funasr/runtime/onnxruntime/third_party/webrtc/rtc_base/system/inline.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- *  Copyright (c) 2018 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 RTC_BASE_SYSTEM_INLINE_H_
-#define RTC_BASE_SYSTEM_INLINE_H_
-
-#if defined(_MSC_VER)
-
-#define RTC_FORCE_INLINE __forceinline
-#define RTC_NO_INLINE __declspec(noinline)
-
-#elif defined(__GNUC__)
-
-#define RTC_FORCE_INLINE __attribute__((__always_inline__))
-#define RTC_NO_INLINE __attribute__((__noinline__))
-
-#else
-
-#define RTC_FORCE_INLINE
-#define RTC_NO_INLINE
-
-#endif
-
-#endif  // RTC_BASE_SYSTEM_INLINE_H_
diff --git a/funasr/runtime/onnxruntime/third_party/webrtc/rtc_base/type_traits.h b/funasr/runtime/onnxruntime/third_party/webrtc/rtc_base/type_traits.h
deleted file mode 100644
index 0cb899c..0000000
--- a/funasr/runtime/onnxruntime/third_party/webrtc/rtc_base/type_traits.h
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- *  Copyright 2016 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 RTC_BASE_TYPE_TRAITS_H_
-#define RTC_BASE_TYPE_TRAITS_H_
-
-#include <cstddef>
-#include <type_traits>
-
-namespace rtc {
-
-// Determines if the given class has zero-argument .data() and .size() methods
-// whose return values are convertible to T* and size_t, respectively.
-template <typename DS, typename T>
-class HasDataAndSize {
- private:
-  template <
-      typename C,
-      typename std::enable_if<
-          std::is_convertible<decltype(std::declval<C>().data()), T*>::value &&
-          std::is_convertible<decltype(std::declval<C>().size()),
-                              std::size_t>::value>::type* = nullptr>
-  static int Test(int);
-
-  template <typename>
-  static char Test(...);
-
- public:
-  static constexpr bool value = std::is_same<decltype(Test<DS>(0)), int>::value;
-};
-
-namespace test_has_data_and_size {
-
-template <typename DR, typename SR>
-struct Test1 {
-  DR data();
-  SR size();
-};
-static_assert(HasDataAndSize<Test1<int*, int>, int>::value, "");
-static_assert(HasDataAndSize<Test1<int*, int>, const int>::value, "");
-static_assert(HasDataAndSize<Test1<const int*, int>, const int>::value, "");
-static_assert(!HasDataAndSize<Test1<const int*, int>, int>::value,
-              "implicit cast of const int* to int*");
-static_assert(!HasDataAndSize<Test1<char*, size_t>, int>::value,
-              "implicit cast of char* to int*");
-
-struct Test2 {
-  int* data;
-  size_t size;
-};
-static_assert(!HasDataAndSize<Test2, int>::value,
-              ".data and .size aren't functions");
-
-struct Test3 {
-  int* data();
-};
-static_assert(!HasDataAndSize<Test3, int>::value, ".size() is missing");
-
-class Test4 {
-  int* data();
-  size_t size();
-};
-static_assert(!HasDataAndSize<Test4, int>::value,
-              ".data() and .size() are private");
-
-}  // namespace test_has_data_and_size
-
-namespace type_traits_impl {
-
-// Determines if the given type is an enum that converts implicitly to
-// an integral type.
-template <typename T>
-struct IsIntEnum {
- private:
-  // This overload is used if the type is an enum, and unary plus
-  // compiles and turns it into an integral type.
-  template <typename X,
-            typename std::enable_if<
-                std::is_enum<X>::value &&
-                std::is_integral<decltype(+std::declval<X>())>::value>::type* =
-                nullptr>
-  static int Test(int);
-
-  // Otherwise, this overload is used.
-  template <typename>
-  static char Test(...);
-
- public:
-  static constexpr bool value =
-      std::is_same<decltype(Test<typename std::remove_reference<T>::type>(0)),
-                   int>::value;
-};
-
-}  // namespace type_traits_impl
-
-// Determines if the given type is integral, or an enum that
-// converts implicitly to an integral type.
-template <typename T>
-struct IsIntlike {
- private:
-  using X = typename std::remove_reference<T>::type;
-
- public:
-  static constexpr bool value =
-      std::is_integral<X>::value || type_traits_impl::IsIntEnum<X>::value;
-};
-
-namespace test_enum_intlike {
-
-enum E1 { e1 };
-enum { e2 };
-enum class E3 { e3 };
-struct S {};
-
-static_assert(type_traits_impl::IsIntEnum<E1>::value, "");
-static_assert(type_traits_impl::IsIntEnum<decltype(e2)>::value, "");
-static_assert(!type_traits_impl::IsIntEnum<E3>::value, "");
-static_assert(!type_traits_impl::IsIntEnum<int>::value, "");
-static_assert(!type_traits_impl::IsIntEnum<float>::value, "");
-static_assert(!type_traits_impl::IsIntEnum<S>::value, "");
-
-static_assert(IsIntlike<E1>::value, "");
-static_assert(IsIntlike<decltype(e2)>::value, "");
-static_assert(!IsIntlike<E3>::value, "");
-static_assert(IsIntlike<int>::value, "");
-static_assert(!IsIntlike<float>::value, "");
-static_assert(!IsIntlike<S>::value, "");
-
-}  // namespace test_enum_intlike
-
-}  // namespace rtc
-
-#endif  // RTC_BASE_TYPE_TRAITS_H_
diff --git a/funasr/runtime/onnxruntime/third_party/webrtc/system_wrappers/include/cpu_features_wrapper.h b/funasr/runtime/onnxruntime/third_party/webrtc/system_wrappers/include/cpu_features_wrapper.h
deleted file mode 100644
index 739161a..0000000
--- a/funasr/runtime/onnxruntime/third_party/webrtc/system_wrappers/include/cpu_features_wrapper.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.
- */
-
-#ifndef SYSTEM_WRAPPERS_INCLUDE_CPU_FEATURES_WRAPPER_H_
-#define SYSTEM_WRAPPERS_INCLUDE_CPU_FEATURES_WRAPPER_H_
-
-#include <stdint.h>
-
-#if defined(__cplusplus) || defined(c_plusplus)
-extern "C" {
-#endif
-
-// List of features in x86.
-typedef enum { kSSE2, kSSE3 } CPUFeature;
-
-// List of features in ARM.
-enum {
-  kCPUFeatureARMv7 = (1 << 0),
-  kCPUFeatureVFPv3 = (1 << 1),
-  kCPUFeatureNEON = (1 << 2),
-  kCPUFeatureLDREXSTREX = (1 << 3)
-};
-
-typedef int (*WebRtc_CPUInfo)(CPUFeature feature);
-
-// Returns true if the CPU supports the feature.
-extern WebRtc_CPUInfo WebRtc_GetCPUInfo;
-
-// No CPU feature is available => straight C path.
-extern WebRtc_CPUInfo WebRtc_GetCPUInfoNoASM;
-
-// Return the features in an ARM device.
-// It detects the features in the hardware platform, and returns supported
-// values in the above enum definition as a bitmask.
-extern uint64_t WebRtc_GetCPUFeaturesARM(void);
-
-#if defined(__cplusplus) || defined(c_plusplus)
-}  // extern "C"
-#endif
-
-#endif  // SYSTEM_WRAPPERS_INCLUDE_CPU_FEATURES_WRAPPER_H_
diff --git a/funasr/runtime/onnxruntime/third_party/webrtc/typedefs.h b/funasr/runtime/onnxruntime/third_party/webrtc/typedefs.h
deleted file mode 100644
index 8286eca..0000000
--- a/funasr/runtime/onnxruntime/third_party/webrtc/typedefs.h
+++ /dev/null
@@ -1,149 +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.
- */
-
-// This file contains platform-specific typedefs and defines.
-// Much of it is derived from Chromium's build/build_config.h.
-
-#ifndef WEBRTC_TYPEDEFS_H_
-#define WEBRTC_TYPEDEFS_H_
-
-// Processor architecture detection.  For more info on what's defined, see:
-//   http://msdn.microsoft.com/en-us/library/b0084kay.aspx
-//   http://www.agner.org/optimize/calling_conventions.pdf
-//   or with gcc, run: "echo | gcc -E -dM -"
-#if defined(_M_X64) || defined(__x86_64__)
-#define WEBRTC_ARCH_X86_FAMILY
-#define WEBRTC_ARCH_X86_64
-#define WEBRTC_ARCH_64_BITS
-#define WEBRTC_ARCH_LITTLE_ENDIAN
-#elif defined(__aarch64__)
-#define WEBRTC_ARCH_64_BITS
-#define WEBRTC_ARCH_LITTLE_ENDIAN
-#elif defined(_M_IX86) || defined(__i386__)
-#define WEBRTC_ARCH_X86_FAMILY
-#define WEBRTC_ARCH_X86
-#define WEBRTC_ARCH_32_BITS
-#define WEBRTC_ARCH_LITTLE_ENDIAN
-#elif defined(__ARMEL__)
-// TODO(ajm): We'd prefer to control platform defines here, but this is
-// currently provided by the Android makefiles. Commented to avoid duplicate
-// definition warnings.
-//#define WEBRTC_ARCH_ARM
-// TODO(ajm): Chromium uses the following two defines. Should we switch?
-//#define WEBRTC_ARCH_ARM_FAMILY
-//#define WEBRTC_ARCH_ARMEL
-#define WEBRTC_ARCH_32_BITS
-#define WEBRTC_ARCH_LITTLE_ENDIAN
-#elif defined(__MIPSEL__)
-#define WEBRTC_ARCH_32_BITS
-#define WEBRTC_ARCH_LITTLE_ENDIAN
-#elif defined(__pnacl__)
-#define WEBRTC_ARCH_32_BITS
-#define WEBRTC_ARCH_LITTLE_ENDIAN
-#elif defined(__PPC__)
-#if defined(__PPC64__)
-#define WEBRTC_ARCH_64_BITS
-#else
-#define WEBRTC_ARCH_32_BITS
-#endif
-#define WEBRTC_ARCH_BIG_ENDIAN
-#else
-#error Please add support for your architecture in typedefs.h
-#endif
-
-#if !(defined(WEBRTC_ARCH_LITTLE_ENDIAN) ^ defined(WEBRTC_ARCH_BIG_ENDIAN))
-#error Define either WEBRTC_ARCH_LITTLE_ENDIAN or WEBRTC_ARCH_BIG_ENDIAN
-#endif
-
-#if (defined(WEBRTC_ARCH_X86_FAMILY) && !defined(__SSE2__)) ||  \
-    (defined(WEBRTC_ARCH_ARM_V7) && !defined(WEBRTC_ARCH_ARM_NEON))
-#define WEBRTC_CPU_DETECTION
-#endif
-
-#if !defined(_MSC_VER)
-#include <stdint.h>
-#else
-// Define C99 equivalent types, since pre-2010 MSVC doesn't provide stdint.h.
-typedef signed char         int8_t;
-typedef signed short        int16_t;
-typedef signed int          int32_t;
-typedef __int64             int64_t;
-typedef unsigned char       uint8_t;
-typedef unsigned short      uint16_t;
-typedef unsigned int        uint32_t;
-typedef unsigned __int64    uint64_t;
-#endif
-
-// Borrowed from Chromium's base/compiler_specific.h.
-// Annotate a virtual method indicating it must be overriding a virtual
-// method in the parent class.
-// Use like:
-//   virtual void foo() OVERRIDE;
-#if defined(_MSC_VER)
-#define OVERRIDE override
-#elif defined(__clang__)
-// Clang defaults to C++03 and warns about using override. Squelch that.
-// Intentionally no push/pop here so all users of OVERRIDE ignore the warning
-// too. This is like passing -Wno-c++11-extensions, except that GCC won't die
-// (because it won't see this pragma).
-#pragma clang diagnostic ignored "-Wc++11-extensions"
-#define OVERRIDE override
-#elif defined(__GNUC__) && __cplusplus >= 201103 && \
-    (__GNUC__ * 10000 + __GNUC_MINOR__ * 100) >= 40700
-// GCC 4.7 supports explicit virtual overrides when C++11 support is enabled.
-#define OVERRIDE override
-#else
-#define OVERRIDE
-#endif
-
-// Annotate a function indicating the caller must examine the return value.
-// Use like:
-//   int foo() WARN_UNUSED_RESULT;
-// TODO(ajm): Hack to avoid multiple definitions until the base/ of webrtc and
-// libjingle are merged.
-#if !defined(WARN_UNUSED_RESULT)
-#if defined(__GNUC__)
-#define WARN_UNUSED_RESULT __attribute__((warn_unused_result))
-#else
-#define WARN_UNUSED_RESULT
-#endif
-#endif  // WARN_UNUSED_RESULT
-
-// Put after a variable that might not be used, to prevent compiler warnings:
-//   int result ATTRIBUTE_UNUSED = DoSomething();
-//   assert(result == 17);
-#ifndef ATTRIBUTE_UNUSED
-#if defined(__GNUC__) || defined(__clang__)
-#define ATTRIBUTE_UNUSED __attribute__((unused))
-#else
-#define ATTRIBUTE_UNUSED
-#endif
-#endif
-
-// Macro to be used for switch-case fallthrough (required for enabling
-// -Wimplicit-fallthrough warning on Clang).
-#ifndef FALLTHROUGH
-#if defined(__clang__)
-#define FALLTHROUGH() [[clang::fallthrough]]
-#else
-#define FALLTHROUGH() do { } while (0)
-#endif
-#endif
-
-// Annotate a function that will not return control flow to the caller.
-#if defined(_MSC_VER)
-#define NO_RETURN __declspec(noreturn)
-#elif defined(__GNUC__)
-#define NO_RETURN __attribute__((noreturn))
-#else
-#define NO_RETURN
-#endif
-
-#endif  // WEBRTC_TYPEDEFS_H_

--
Gitblit v1.9.1