mirror of
https://github.com/mollyim/webrtc.git
synced 2025-05-15 06:40:43 +01:00

WebRTC internal code should always used include paths that starts from the root of the project and that clearly identify the header file. This allows 'gn check' to actually keep dependencies under control because 'gn check' cannot enforce anything if the include path is not fully qualified (starting from the root of the project). Bug: webrtc:8815 Change-Id: I23fb4fed0c27a4d98bea360315b959af843587bc Reviewed-on: https://webrtc-review.googlesource.com/46101 Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org> Reviewed-by: Karl Wiberg <kwiberg@webrtc.org> Cr-Commit-Position: refs/heads/master@{#21847}
228 lines
8.5 KiB
C
228 lines
8.5 KiB
C
/*
|
|
* Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
|
|
*
|
|
* Use of this source code is governed by a BSD-style license
|
|
* that can be found in the LICENSE file in the root of the source
|
|
* tree. An additional intellectual property rights grant can be found
|
|
* in the file PATENTS. All contributing project authors may
|
|
* be found in the AUTHORS file in the root of the source tree.
|
|
*/
|
|
|
|
/*
|
|
* codec.h
|
|
*
|
|
* This header file contains the calls to the internal encoder
|
|
* and decoder functions.
|
|
*
|
|
*/
|
|
|
|
#ifndef MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_CODEC_H_
|
|
#define MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_CODEC_H_
|
|
|
|
#include "modules/audio_coding/codecs/isac/fix/source/structs.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
int WebRtcIsacfix_EstimateBandwidth(BwEstimatorstr* bwest_str,
|
|
Bitstr_dec* streamdata,
|
|
size_t packet_size,
|
|
uint16_t rtp_seq_number,
|
|
uint32_t send_ts,
|
|
uint32_t arr_ts);
|
|
|
|
int WebRtcIsacfix_DecodeImpl(int16_t* signal_out16,
|
|
IsacFixDecoderInstance* ISACdec_obj,
|
|
size_t* current_framesamples);
|
|
|
|
void WebRtcIsacfix_DecodePlcImpl(int16_t* decoded,
|
|
IsacFixDecoderInstance* ISACdec_obj,
|
|
size_t* current_framesample );
|
|
|
|
int WebRtcIsacfix_EncodeImpl(int16_t* in,
|
|
IsacFixEncoderInstance* ISACenc_obj,
|
|
BwEstimatorstr* bw_estimatordata,
|
|
int16_t CodingMode);
|
|
|
|
int WebRtcIsacfix_EncodeStoredData(IsacFixEncoderInstance* ISACenc_obj,
|
|
int BWnumber,
|
|
float scale);
|
|
|
|
/* initialization functions */
|
|
|
|
void WebRtcIsacfix_InitMaskingEnc(MaskFiltstr_enc* maskdata);
|
|
void WebRtcIsacfix_InitMaskingDec(MaskFiltstr_dec* maskdata);
|
|
|
|
void WebRtcIsacfix_InitPreFilterbank(PreFiltBankstr* prefiltdata);
|
|
|
|
void WebRtcIsacfix_InitPostFilterbank(PostFiltBankstr* postfiltdata);
|
|
|
|
void WebRtcIsacfix_InitPitchFilter(PitchFiltstr* pitchfiltdata);
|
|
|
|
void WebRtcIsacfix_InitPitchAnalysis(PitchAnalysisStruct* State);
|
|
|
|
void WebRtcIsacfix_InitPlc(PLCstr* State);
|
|
|
|
|
|
/* transform functions */
|
|
|
|
void WebRtcIsacfix_InitTransform();
|
|
|
|
typedef void (*Time2Spec)(int16_t* inre1Q9,
|
|
int16_t* inre2Q9,
|
|
int16_t* outre,
|
|
int16_t* outim);
|
|
typedef void (*Spec2Time)(int16_t* inreQ7,
|
|
int16_t* inimQ7,
|
|
int32_t* outre1Q16,
|
|
int32_t* outre2Q16);
|
|
|
|
extern Time2Spec WebRtcIsacfix_Time2Spec;
|
|
extern Spec2Time WebRtcIsacfix_Spec2Time;
|
|
|
|
void WebRtcIsacfix_Time2SpecC(int16_t* inre1Q9,
|
|
int16_t* inre2Q9,
|
|
int16_t* outre,
|
|
int16_t* outim);
|
|
void WebRtcIsacfix_Spec2TimeC(int16_t* inreQ7,
|
|
int16_t* inimQ7,
|
|
int32_t* outre1Q16,
|
|
int32_t* outre2Q16);
|
|
|
|
#if defined(WEBRTC_HAS_NEON)
|
|
void WebRtcIsacfix_Time2SpecNeon(int16_t* inre1Q9,
|
|
int16_t* inre2Q9,
|
|
int16_t* outre,
|
|
int16_t* outim);
|
|
void WebRtcIsacfix_Spec2TimeNeon(int16_t* inreQ7,
|
|
int16_t* inimQ7,
|
|
int32_t* outre1Q16,
|
|
int32_t* outre2Q16);
|
|
#endif
|
|
|
|
#if defined(MIPS32_LE)
|
|
void WebRtcIsacfix_Time2SpecMIPS(int16_t* inre1Q9,
|
|
int16_t* inre2Q9,
|
|
int16_t* outre,
|
|
int16_t* outim);
|
|
void WebRtcIsacfix_Spec2TimeMIPS(int16_t* inreQ7,
|
|
int16_t* inimQ7,
|
|
int32_t* outre1Q16,
|
|
int32_t* outre2Q16);
|
|
#endif
|
|
|
|
/* filterbank functions */
|
|
|
|
void WebRtcIsacfix_SplitAndFilter1(int16_t* in,
|
|
int16_t* LP16,
|
|
int16_t* HP16,
|
|
PreFiltBankstr* prefiltdata);
|
|
|
|
void WebRtcIsacfix_FilterAndCombine1(int16_t* tempin_ch1,
|
|
int16_t* tempin_ch2,
|
|
int16_t* out16,
|
|
PostFiltBankstr* postfiltdata);
|
|
|
|
#ifdef WEBRTC_ISAC_FIX_NB_CALLS_ENABLED
|
|
|
|
void WebRtcIsacfix_SplitAndFilter2(int16_t* in,
|
|
int16_t* LP16,
|
|
int16_t* HP16,
|
|
PreFiltBankstr* prefiltdata);
|
|
|
|
void WebRtcIsacfix_FilterAndCombine2(int16_t* tempin_ch1,
|
|
int16_t* tempin_ch2,
|
|
int16_t* out16,
|
|
PostFiltBankstr* postfiltdata,
|
|
int16_t len);
|
|
|
|
#endif
|
|
|
|
/* normalized lattice filters */
|
|
|
|
void WebRtcIsacfix_NormLatticeFilterMa(size_t orderCoef,
|
|
int32_t* stateGQ15,
|
|
int16_t* lat_inQ0,
|
|
int16_t* filt_coefQ15,
|
|
int32_t* gain_lo_hiQ17,
|
|
int16_t lo_hi,
|
|
int16_t* lat_outQ9);
|
|
|
|
void WebRtcIsacfix_NormLatticeFilterAr(size_t orderCoef,
|
|
int16_t* stateGQ0,
|
|
int32_t* lat_inQ25,
|
|
int16_t* filt_coefQ15,
|
|
int32_t* gain_lo_hiQ17,
|
|
int16_t lo_hi,
|
|
int16_t* lat_outQ0);
|
|
|
|
/* TODO(kma): Remove the following functions into individual header files. */
|
|
|
|
/* Internal functions in both C and ARM Neon versions */
|
|
|
|
int WebRtcIsacfix_AutocorrC(int32_t* __restrict r,
|
|
const int16_t* __restrict x,
|
|
int16_t N,
|
|
int16_t order,
|
|
int16_t* __restrict scale);
|
|
|
|
void WebRtcIsacfix_FilterMaLoopC(int16_t input0,
|
|
int16_t input1,
|
|
int32_t input2,
|
|
int32_t* ptr0,
|
|
int32_t* ptr1,
|
|
int32_t* ptr2);
|
|
|
|
#if defined(WEBRTC_HAS_NEON)
|
|
int WebRtcIsacfix_AutocorrNeon(int32_t* __restrict r,
|
|
const int16_t* __restrict x,
|
|
int16_t N,
|
|
int16_t order,
|
|
int16_t* __restrict scale);
|
|
|
|
void WebRtcIsacfix_FilterMaLoopNeon(int16_t input0,
|
|
int16_t input1,
|
|
int32_t input2,
|
|
int32_t* ptr0,
|
|
int32_t* ptr1,
|
|
int32_t* ptr2);
|
|
#endif
|
|
|
|
#if defined(MIPS32_LE)
|
|
int WebRtcIsacfix_AutocorrMIPS(int32_t* __restrict r,
|
|
const int16_t* __restrict x,
|
|
int16_t N,
|
|
int16_t order,
|
|
int16_t* __restrict scale);
|
|
|
|
void WebRtcIsacfix_FilterMaLoopMIPS(int16_t input0,
|
|
int16_t input1,
|
|
int32_t input2,
|
|
int32_t* ptr0,
|
|
int32_t* ptr1,
|
|
int32_t* ptr2);
|
|
#endif
|
|
|
|
/* Function pointers associated with the above functions. */
|
|
|
|
typedef int (*AutocorrFix)(int32_t* __restrict r,
|
|
const int16_t* __restrict x,
|
|
int16_t N,
|
|
int16_t order,
|
|
int16_t* __restrict scale);
|
|
extern AutocorrFix WebRtcIsacfix_AutocorrFix;
|
|
|
|
typedef void (*FilterMaLoopFix)(int16_t input0,
|
|
int16_t input1,
|
|
int32_t input2,
|
|
int32_t* ptr0,
|
|
int32_t* ptr1,
|
|
int32_t* ptr2);
|
|
extern FilterMaLoopFix WebRtcIsacfix_FilterMaLoopFix;
|
|
|
|
#ifdef __cplusplus
|
|
} // extern "C"
|
|
#endif
|
|
|
|
#endif /* MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_CODEC_H_ */
|