Update to current webrtc library
This is from the upstream library commit id 3326535126e435f1ba647885ce43a8f0f3d317eb, corresponding to Chromium 88.0.4290.1.
This commit is contained in:
@ -8,91 +8,84 @@
|
||||
* 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.
|
||||
* 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 WEBRTC_SPL_SIGNAL_PROCESSING_LIBRARY_H_
|
||||
#define WEBRTC_SPL_SIGNAL_PROCESSING_LIBRARY_H_
|
||||
#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/typedefs.h"
|
||||
|
||||
#include "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
|
||||
#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_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))
|
||||
#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_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))
|
||||
(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) << 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) << 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) \
|
||||
+ (((WEBRTC_SPL_MUL_16_U16(a, (uint16_t)(b)) >> 1) + 0x2000) >> 14))
|
||||
#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(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))
|
||||
((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)(0x0000FFFF & B) * A) >> 16))
|
||||
(C + (B >> 16) * A + (((uint32_t)(B & 0x0000FFFF) * A) >> 16))
|
||||
|
||||
#define WEBRTC_SPL_SAT(a, b, c) (b > a ? a : b < c ? c : b)
|
||||
#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) << (c)) : ((x) >> (-(c))))
|
||||
#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_LSHIFT_W32(x, c) ((x) << (c))
|
||||
|
||||
#define WEBRTC_SPL_RSHIFT_U32(x, c) ((uint32_t)(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))
|
||||
#define WEBRTC_SPL_RAND(a) ((int16_t)((((int16_t)a * 18816) >> 7) & 0x00007fff))
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
@ -102,17 +95,10 @@ extern "C" {
|
||||
memcpy(v1, v2, (length) * sizeof(int16_t))
|
||||
|
||||
// inline functions:
|
||||
#include "webrtc/common_audio/signal_processing/include/spl_inl.h"
|
||||
#include "common_audio/signal_processing/include/spl_inl.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
|
||||
// if run-time Neon detection (WEBRTC_DETECT_NEON) is enabled, the pointers
|
||||
// will be assigned to either Neon code or generic C code; otherwise, generic C
|
||||
// code will be assigned.
|
||||
// Note that this function MUST be called in any application that uses SPL
|
||||
// functions.
|
||||
void WebRtcSpl_Init();
|
||||
// third party math functions
|
||||
#include "common_audio/third_party/spl_sqrt_floor/spl_sqrt_floor.h"
|
||||
|
||||
int16_t WebRtcSpl_GetScalingSquare(int16_t* in_vector,
|
||||
size_t in_vector_length,
|
||||
@ -133,13 +119,10 @@ 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);
|
||||
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.
|
||||
|
||||
@ -151,9 +134,9 @@ void WebRtcSpl_ZerosArrayW32(int32_t* vector,
|
||||
//
|
||||
// Return value : Maximum absolute value in vector.
|
||||
typedef int16_t (*MaxAbsValueW16)(const int16_t* vector, size_t length);
|
||||
extern MaxAbsValueW16 WebRtcSpl_MaxAbsValueW16;
|
||||
extern const MaxAbsValueW16 WebRtcSpl_MaxAbsValueW16;
|
||||
int16_t WebRtcSpl_MaxAbsValueW16C(const int16_t* vector, size_t length);
|
||||
#if (defined WEBRTC_DETECT_NEON) || (defined WEBRTC_HAS_NEON)
|
||||
#if defined(WEBRTC_HAS_NEON)
|
||||
int16_t WebRtcSpl_MaxAbsValueW16Neon(const int16_t* vector, size_t length);
|
||||
#endif
|
||||
#if defined(MIPS32_LE)
|
||||
@ -168,9 +151,9 @@ int16_t WebRtcSpl_MaxAbsValueW16_mips(const int16_t* vector, size_t length);
|
||||
//
|
||||
// Return value : Maximum absolute value in vector.
|
||||
typedef int32_t (*MaxAbsValueW32)(const int32_t* vector, size_t length);
|
||||
extern MaxAbsValueW32 WebRtcSpl_MaxAbsValueW32;
|
||||
extern const MaxAbsValueW32 WebRtcSpl_MaxAbsValueW32;
|
||||
int32_t WebRtcSpl_MaxAbsValueW32C(const int32_t* vector, size_t length);
|
||||
#if (defined WEBRTC_DETECT_NEON) || (defined WEBRTC_HAS_NEON)
|
||||
#if defined(WEBRTC_HAS_NEON)
|
||||
int32_t WebRtcSpl_MaxAbsValueW32Neon(const int32_t* vector, size_t length);
|
||||
#endif
|
||||
#if defined(MIPS_DSP_R1_LE)
|
||||
@ -185,9 +168,9 @@ int32_t WebRtcSpl_MaxAbsValueW32_mips(const int32_t* vector, size_t length);
|
||||
//
|
||||
// Return value : Maximum sample value in |vector|.
|
||||
typedef int16_t (*MaxValueW16)(const int16_t* vector, size_t length);
|
||||
extern MaxValueW16 WebRtcSpl_MaxValueW16;
|
||||
extern const MaxValueW16 WebRtcSpl_MaxValueW16;
|
||||
int16_t WebRtcSpl_MaxValueW16C(const int16_t* vector, size_t length);
|
||||
#if (defined WEBRTC_DETECT_NEON) || (defined WEBRTC_HAS_NEON)
|
||||
#if defined(WEBRTC_HAS_NEON)
|
||||
int16_t WebRtcSpl_MaxValueW16Neon(const int16_t* vector, size_t length);
|
||||
#endif
|
||||
#if defined(MIPS32_LE)
|
||||
@ -202,9 +185,9 @@ int16_t WebRtcSpl_MaxValueW16_mips(const int16_t* vector, size_t length);
|
||||
//
|
||||
// Return value : Maximum sample value in |vector|.
|
||||
typedef int32_t (*MaxValueW32)(const int32_t* vector, size_t length);
|
||||
extern MaxValueW32 WebRtcSpl_MaxValueW32;
|
||||
extern const MaxValueW32 WebRtcSpl_MaxValueW32;
|
||||
int32_t WebRtcSpl_MaxValueW32C(const int32_t* vector, size_t length);
|
||||
#if (defined WEBRTC_DETECT_NEON) || (defined WEBRTC_HAS_NEON)
|
||||
#if defined(WEBRTC_HAS_NEON)
|
||||
int32_t WebRtcSpl_MaxValueW32Neon(const int32_t* vector, size_t length);
|
||||
#endif
|
||||
#if defined(MIPS32_LE)
|
||||
@ -219,9 +202,9 @@ int32_t WebRtcSpl_MaxValueW32_mips(const int32_t* vector, size_t length);
|
||||
//
|
||||
// Return value : Minimum sample value in |vector|.
|
||||
typedef int16_t (*MinValueW16)(const int16_t* vector, size_t length);
|
||||
extern MinValueW16 WebRtcSpl_MinValueW16;
|
||||
extern const MinValueW16 WebRtcSpl_MinValueW16;
|
||||
int16_t WebRtcSpl_MinValueW16C(const int16_t* vector, size_t length);
|
||||
#if (defined WEBRTC_DETECT_NEON) || (defined WEBRTC_HAS_NEON)
|
||||
#if defined(WEBRTC_HAS_NEON)
|
||||
int16_t WebRtcSpl_MinValueW16Neon(const int16_t* vector, size_t length);
|
||||
#endif
|
||||
#if defined(MIPS32_LE)
|
||||
@ -236,9 +219,9 @@ int16_t WebRtcSpl_MinValueW16_mips(const int16_t* vector, size_t length);
|
||||
//
|
||||
// Return value : Minimum sample value in |vector|.
|
||||
typedef int32_t (*MinValueW32)(const int32_t* vector, size_t length);
|
||||
extern MinValueW32 WebRtcSpl_MinValueW32;
|
||||
extern const MinValueW32 WebRtcSpl_MinValueW32;
|
||||
int32_t WebRtcSpl_MinValueW32C(const int32_t* vector, size_t length);
|
||||
#if (defined WEBRTC_DETECT_NEON) || (defined WEBRTC_HAS_NEON)
|
||||
#if defined(WEBRTC_HAS_NEON)
|
||||
int32_t WebRtcSpl_MinValueW32Neon(const int32_t* vector, size_t length);
|
||||
#endif
|
||||
#if defined(MIPS32_LE)
|
||||
@ -299,7 +282,6 @@ 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,
|
||||
@ -325,9 +307,11 @@ void WebRtcSpl_ScaleVectorWithSat(const int16_t* in_vector,
|
||||
size_t vector_length,
|
||||
int16_t right_shifts);
|
||||
void WebRtcSpl_ScaleAndAddVectors(const int16_t* in_vector1,
|
||||
int16_t gain1, int right_shifts1,
|
||||
int16_t gain1,
|
||||
int right_shifts1,
|
||||
const int16_t* in_vector2,
|
||||
int16_t gain2, int right_shifts2,
|
||||
int16_t gain2,
|
||||
int right_shifts2,
|
||||
int16_t* out_vector,
|
||||
size_t vector_length);
|
||||
|
||||
@ -346,8 +330,8 @@ void WebRtcSpl_ScaleAndAddVectors(const int16_t* in_vector1,
|
||||
//
|
||||
// Output:
|
||||
// - out_vector : Output vector
|
||||
// Return value : 0 if OK, -1 if (in_vector1 == NULL
|
||||
// || in_vector2 == NULL || out_vector == NULL
|
||||
// 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,
|
||||
@ -356,7 +340,7 @@ typedef int (*ScaleAndAddVectorsWithRound)(const int16_t* in_vector1,
|
||||
int right_shifts,
|
||||
int16_t* out_vector,
|
||||
size_t length);
|
||||
extern ScaleAndAddVectorsWithRound WebRtcSpl_ScaleAndAddVectorsWithRound;
|
||||
extern const ScaleAndAddVectorsWithRound WebRtcSpl_ScaleAndAddVectorsWithRound;
|
||||
int WebRtcSpl_ScaleAndAddVectorsWithRoundC(const int16_t* in_vector1,
|
||||
int16_t in_vector1_scale,
|
||||
const int16_t* in_vector2,
|
||||
@ -393,13 +377,13 @@ void WebRtcSpl_AddVectorsAndShift(int16_t* out_vector,
|
||||
size_t vector_length,
|
||||
int16_t right_shifts);
|
||||
void WebRtcSpl_AddAffineVectorToVector(int16_t* out_vector,
|
||||
int16_t* in_vector,
|
||||
const 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,
|
||||
const int16_t* in_vector,
|
||||
int16_t gain,
|
||||
int32_t add_constant,
|
||||
int16_t right_shifts,
|
||||
@ -523,7 +507,7 @@ typedef void (*CrossCorrelation)(int32_t* cross_correlation,
|
||||
size_t dim_cross_correlation,
|
||||
int right_shifts,
|
||||
int step_seq2);
|
||||
extern CrossCorrelation WebRtcSpl_CrossCorrelation;
|
||||
extern const CrossCorrelation WebRtcSpl_CrossCorrelation;
|
||||
void WebRtcSpl_CrossCorrelationC(int32_t* cross_correlation,
|
||||
const int16_t* seq1,
|
||||
const int16_t* seq2,
|
||||
@ -531,7 +515,7 @@ void WebRtcSpl_CrossCorrelationC(int32_t* cross_correlation,
|
||||
size_t dim_cross_correlation,
|
||||
int right_shifts,
|
||||
int step_seq2);
|
||||
#if (defined WEBRTC_DETECT_NEON) || (defined WEBRTC_HAS_NEON)
|
||||
#if defined(WEBRTC_HAS_NEON)
|
||||
void WebRtcSpl_CrossCorrelationNeon(int32_t* cross_correlation,
|
||||
const int16_t* seq1,
|
||||
const int16_t* seq2,
|
||||
@ -585,7 +569,6 @@ int16_t WebRtcSpl_RandUArray(int16_t* vector,
|
||||
|
||||
// Math functions
|
||||
int32_t WebRtcSpl_Sqrt(int32_t value);
|
||||
int32_t WebRtcSpl_SqrtFloor(int32_t value);
|
||||
|
||||
// Divisions. Implementations collected in division_operations.c and
|
||||
// descriptions at bottom of this file.
|
||||
@ -600,22 +583,6 @@ int32_t WebRtcSpl_Energy(int16_t* vector,
|
||||
size_t vector_length,
|
||||
int* scale_factor);
|
||||
|
||||
// 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);
|
||||
|
||||
// Filter operations.
|
||||
size_t WebRtcSpl_FilterAR(const int16_t* ar_coef,
|
||||
size_t ar_coef_length,
|
||||
@ -689,7 +656,7 @@ typedef int (*DownsampleFast)(const int16_t* data_in,
|
||||
size_t coefficients_length,
|
||||
int factor,
|
||||
size_t delay);
|
||||
extern DownsampleFast WebRtcSpl_DownsampleFast;
|
||||
extern const DownsampleFast WebRtcSpl_DownsampleFast;
|
||||
int WebRtcSpl_DownsampleFastC(const int16_t* data_in,
|
||||
size_t data_in_length,
|
||||
int16_t* data_out,
|
||||
@ -698,7 +665,7 @@ int WebRtcSpl_DownsampleFastC(const int16_t* data_in,
|
||||
size_t coefficients_length,
|
||||
int factor,
|
||||
size_t delay);
|
||||
#if (defined WEBRTC_DETECT_NEON) || (defined WEBRTC_HAS_NEON)
|
||||
#if defined(WEBRTC_HAS_NEON)
|
||||
int WebRtcSpl_DownsampleFastNeon(const int16_t* data_in,
|
||||
size_t data_in_length,
|
||||
int16_t* data_out,
|
||||
@ -795,7 +762,8 @@ typedef struct {
|
||||
int32_t S_16_8[8];
|
||||
} WebRtcSpl_State22khzTo8khz;
|
||||
|
||||
void WebRtcSpl_Resample22khzTo8khz(const int16_t* in, int16_t* out,
|
||||
void WebRtcSpl_Resample22khzTo8khz(const int16_t* in,
|
||||
int16_t* out,
|
||||
WebRtcSpl_State22khzTo8khz* state,
|
||||
int32_t* tmpmem);
|
||||
|
||||
@ -808,7 +776,8 @@ typedef struct {
|
||||
int32_t S_11_22[8];
|
||||
} WebRtcSpl_State8khzTo22khz;
|
||||
|
||||
void WebRtcSpl_Resample8khzTo22khz(const int16_t* in, int16_t* out,
|
||||
void WebRtcSpl_Resample8khzTo22khz(const int16_t* in,
|
||||
int16_t* out,
|
||||
WebRtcSpl_State8khzTo22khz* state,
|
||||
int32_t* tmpmem);
|
||||
|
||||
@ -848,7 +817,8 @@ typedef struct {
|
||||
int32_t S_32_16[8];
|
||||
} WebRtcSpl_State48khzTo16khz;
|
||||
|
||||
void WebRtcSpl_Resample48khzTo16khz(const int16_t* in, int16_t* out,
|
||||
void WebRtcSpl_Resample48khzTo16khz(const int16_t* in,
|
||||
int16_t* out,
|
||||
WebRtcSpl_State48khzTo16khz* state,
|
||||
int32_t* tmpmem);
|
||||
|
||||
@ -860,7 +830,8 @@ typedef struct {
|
||||
int32_t S_24_48[8];
|
||||
} WebRtcSpl_State16khzTo48khz;
|
||||
|
||||
void WebRtcSpl_Resample16khzTo48khz(const int16_t* in, int16_t* out,
|
||||
void WebRtcSpl_Resample16khzTo48khz(const int16_t* in,
|
||||
int16_t* out,
|
||||
WebRtcSpl_State16khzTo48khz* state,
|
||||
int32_t* tmpmem);
|
||||
|
||||
@ -873,7 +844,8 @@ typedef struct {
|
||||
int32_t S_16_8[8];
|
||||
} WebRtcSpl_State48khzTo8khz;
|
||||
|
||||
void WebRtcSpl_Resample48khzTo8khz(const int16_t* in, int16_t* out,
|
||||
void WebRtcSpl_Resample48khzTo8khz(const int16_t* in,
|
||||
int16_t* out,
|
||||
WebRtcSpl_State48khzTo8khz* state,
|
||||
int32_t* tmpmem);
|
||||
|
||||
@ -886,7 +858,8 @@ typedef struct {
|
||||
int32_t S_24_48[8];
|
||||
} WebRtcSpl_State8khzTo48khz;
|
||||
|
||||
void WebRtcSpl_Resample8khzTo48khz(const int16_t* in, int16_t* out,
|
||||
void WebRtcSpl_Resample8khzTo48khz(const int16_t* in,
|
||||
int16_t* out,
|
||||
WebRtcSpl_State8khzTo48khz* state,
|
||||
int32_t* tmpmem);
|
||||
|
||||
@ -899,11 +872,15 @@ void WebRtcSpl_ResetResample8khzTo48khz(WebRtcSpl_State8khzTo48khz* state);
|
||||
*
|
||||
******************************************************************/
|
||||
|
||||
void WebRtcSpl_DownsampleBy2(const int16_t* in, size_t len,
|
||||
int16_t* out, int32_t* filtState);
|
||||
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);
|
||||
void WebRtcSpl_UpsampleBy2(const int16_t* in,
|
||||
size_t len,
|
||||
int16_t* out,
|
||||
int32_t* filtState);
|
||||
|
||||
/************************************************************
|
||||
* END OF RESAMPLING FUNCTIONS
|
||||
@ -924,7 +901,7 @@ void WebRtcSpl_SynthesisQMF(const int16_t* low_band,
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif // __cplusplus
|
||||
#endif // WEBRTC_SPL_SIGNAL_PROCESSING_LIBRARY_H_
|
||||
#endif // COMMON_AUDIO_SIGNAL_PROCESSING_INCLUDE_SIGNAL_PROCESSING_LIBRARY_H_
|
||||
|
||||
//
|
||||
// WebRtcSpl_AddSatW16(...)
|
||||
@ -1352,23 +1329,6 @@ void WebRtcSpl_SynthesisQMF(const int16_t* low_band,
|
||||
// Return value : Result of the sqrt calculation
|
||||
//
|
||||
|
||||
//
|
||||
// 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
|
||||
//
|
||||
|
||||
//
|
||||
// WebRtcSpl_DivU32U16(...)
|
||||
//
|
||||
|
Reference in New Issue
Block a user