1b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/* 2b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 3b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * 4b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Use of this source code is governed by a BSD-style license 5b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * that can be found in the LICENSE file in the root of the source 6b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * tree. An additional intellectual property rights grant can be found 7b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * in the file PATENTS. All contributing project authors may 8b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * be found in the AUTHORS file in the root of the source tree. 9b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */ 10b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 11b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/* 12b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * codec.h 13b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * 14b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * This header file contains the calls to the internal encoder 15b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * and decoder functions. 16b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * 17b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */ 18b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 19b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#ifndef WEBRTC_MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_CODEC_H_ 20b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define WEBRTC_MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_CODEC_H_ 21b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 22b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#include "structs.h" 23b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 2427fe999a8fe09ea7a39318e00262b30e38caa83ckma@webrtc.org#ifdef __cplusplus 2527fe999a8fe09ea7a39318e00262b30e38caa83ckma@webrtc.orgextern "C" { 2627fe999a8fe09ea7a39318e00262b30e38caa83ckma@webrtc.org#endif 27b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 28178f01351b644e253b3fcf109a5a0d9ec56921b8kma@webrtc.orgint WebRtcIsacfix_EstimateBandwidth(BwEstimatorstr* bwest_str, 29178f01351b644e253b3fcf109a5a0d9ec56921b8kma@webrtc.org Bitstr_dec* streamdata, 30fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org int32_t packet_size, 31fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org uint16_t rtp_seq_number, 32fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org uint32_t send_ts, 33fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org uint32_t arr_ts); 34178f01351b644e253b3fcf109a5a0d9ec56921b8kma@webrtc.org 35fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.orgint16_t WebRtcIsacfix_DecodeImpl(int16_t* signal_out16, 36178f01351b644e253b3fcf109a5a0d9ec56921b8kma@webrtc.org ISACFIX_DecInst_t* ISACdec_obj, 37fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org int16_t* current_framesamples); 38178f01351b644e253b3fcf109a5a0d9ec56921b8kma@webrtc.org 39fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.orgint16_t WebRtcIsacfix_DecodePlcImpl(int16_t* decoded, 40178f01351b644e253b3fcf109a5a0d9ec56921b8kma@webrtc.org ISACFIX_DecInst_t* ISACdec_obj, 41fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org int16_t* current_framesample ); 42178f01351b644e253b3fcf109a5a0d9ec56921b8kma@webrtc.org 43fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.orgint WebRtcIsacfix_EncodeImpl(int16_t* in, 44178f01351b644e253b3fcf109a5a0d9ec56921b8kma@webrtc.org ISACFIX_EncInst_t* ISACenc_obj, 45178f01351b644e253b3fcf109a5a0d9ec56921b8kma@webrtc.org BwEstimatorstr* bw_estimatordata, 46fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org int16_t CodingMode); 47178f01351b644e253b3fcf109a5a0d9ec56921b8kma@webrtc.org 48178f01351b644e253b3fcf109a5a0d9ec56921b8kma@webrtc.orgint WebRtcIsacfix_EncodeStoredData(ISACFIX_EncInst_t* ISACenc_obj, 49178f01351b644e253b3fcf109a5a0d9ec56921b8kma@webrtc.org int BWnumber, 50178f01351b644e253b3fcf109a5a0d9ec56921b8kma@webrtc.org float scale); 51b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 52b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/* initialization functions */ 53b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 54178f01351b644e253b3fcf109a5a0d9ec56921b8kma@webrtc.orgvoid WebRtcIsacfix_InitMaskingEnc(MaskFiltstr_enc* maskdata); 55178f01351b644e253b3fcf109a5a0d9ec56921b8kma@webrtc.orgvoid WebRtcIsacfix_InitMaskingDec(MaskFiltstr_dec* maskdata); 56b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 57178f01351b644e253b3fcf109a5a0d9ec56921b8kma@webrtc.orgvoid WebRtcIsacfix_InitPreFilterbank(PreFiltBankstr* prefiltdata); 58b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 59178f01351b644e253b3fcf109a5a0d9ec56921b8kma@webrtc.orgvoid WebRtcIsacfix_InitPostFilterbank(PostFiltBankstr* postfiltdata); 60b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 61178f01351b644e253b3fcf109a5a0d9ec56921b8kma@webrtc.orgvoid WebRtcIsacfix_InitPitchFilter(PitchFiltstr* pitchfiltdata); 62b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 63178f01351b644e253b3fcf109a5a0d9ec56921b8kma@webrtc.orgvoid WebRtcIsacfix_InitPitchAnalysis(PitchAnalysisStruct* State); 64b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 65178f01351b644e253b3fcf109a5a0d9ec56921b8kma@webrtc.orgvoid WebRtcIsacfix_InitPlc(PLCstr* State); 66b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 67b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 68b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/* transform functions */ 69b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 70b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid WebRtcIsacfix_InitTransform(); 71b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 72fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.orgtypedef void (*Time2Spec)(int16_t* inre1Q9, 73fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org int16_t* inre2Q9, 74fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org int16_t* outre, 75fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org int16_t* outim); 76fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.orgtypedef void (*Spec2Time)(int16_t* inreQ7, 77fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org int16_t* inimQ7, 78fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org int32_t* outre1Q16, 79fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org int32_t* outre2Q16); 80178f01351b644e253b3fcf109a5a0d9ec56921b8kma@webrtc.org 81178f01351b644e253b3fcf109a5a0d9ec56921b8kma@webrtc.orgextern Time2Spec WebRtcIsacfix_Time2Spec; 823c37468d59d36a3d274f0822d2095ffc1fa8ae2dkma@webrtc.orgextern Spec2Time WebRtcIsacfix_Spec2Time; 833c37468d59d36a3d274f0822d2095ffc1fa8ae2dkma@webrtc.org 84fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.orgvoid WebRtcIsacfix_Time2SpecC(int16_t* inre1Q9, 85fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org int16_t* inre2Q9, 86fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org int16_t* outre, 87fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org int16_t* outim); 88fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.orgvoid WebRtcIsacfix_Spec2TimeC(int16_t* inreQ7, 89fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org int16_t* inimQ7, 90fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org int32_t* outre1Q16, 91fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org int32_t* outre2Q16); 923c37468d59d36a3d274f0822d2095ffc1fa8ae2dkma@webrtc.org 933c37468d59d36a3d274f0822d2095ffc1fa8ae2dkma@webrtc.org#if (defined WEBRTC_DETECT_ARM_NEON) || (defined WEBRTC_ARCH_ARM_NEON) 94fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.orgvoid WebRtcIsacfix_Time2SpecNeon(int16_t* inre1Q9, 95fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org int16_t* inre2Q9, 96fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org int16_t* outre, 97fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org int16_t* outim); 98fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.orgvoid WebRtcIsacfix_Spec2TimeNeon(int16_t* inreQ7, 99fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org int16_t* inimQ7, 100fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org int32_t* outre1Q16, 101fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org int32_t* outre2Q16); 1023c37468d59d36a3d274f0822d2095ffc1fa8ae2dkma@webrtc.org#endif 103b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 104e4834e042a794dbf042bfd0934e335598d7ce4b8andrew@webrtc.org#if defined(MIPS32_LE) 105e4834e042a794dbf042bfd0934e335598d7ce4b8andrew@webrtc.orgvoid WebRtcIsacfix_Time2SpecMIPS(int16_t* inre1Q9, 106e4834e042a794dbf042bfd0934e335598d7ce4b8andrew@webrtc.org int16_t* inre2Q9, 107e4834e042a794dbf042bfd0934e335598d7ce4b8andrew@webrtc.org int16_t* outre, 108e4834e042a794dbf042bfd0934e335598d7ce4b8andrew@webrtc.org int16_t* outim); 109e4834e042a794dbf042bfd0934e335598d7ce4b8andrew@webrtc.orgvoid WebRtcIsacfix_Spec2TimeMIPS(int16_t* inreQ7, 110e4834e042a794dbf042bfd0934e335598d7ce4b8andrew@webrtc.org int16_t* inimQ7, 111e4834e042a794dbf042bfd0934e335598d7ce4b8andrew@webrtc.org int32_t* outre1Q16, 112e4834e042a794dbf042bfd0934e335598d7ce4b8andrew@webrtc.org int32_t* outre2Q16); 113e4834e042a794dbf042bfd0934e335598d7ce4b8andrew@webrtc.org#endif 114b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 115b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/* filterbank functions */ 116b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 117fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.orgvoid WebRtcIsacfix_SplitAndFilter1(int16_t* in, 118fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org int16_t* LP16, 119fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org int16_t* HP16, 120178f01351b644e253b3fcf109a5a0d9ec56921b8kma@webrtc.org PreFiltBankstr* prefiltdata); 121b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 122fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.orgvoid WebRtcIsacfix_FilterAndCombine1(int16_t* tempin_ch1, 123fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org int16_t* tempin_ch2, 124fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org int16_t* out16, 125178f01351b644e253b3fcf109a5a0d9ec56921b8kma@webrtc.org PostFiltBankstr* postfiltdata); 126b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 127b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#ifdef WEBRTC_ISAC_FIX_NB_CALLS_ENABLED 128b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 129fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.orgvoid WebRtcIsacfix_SplitAndFilter2(int16_t* in, 130fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org int16_t* LP16, 131fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org int16_t* HP16, 132178f01351b644e253b3fcf109a5a0d9ec56921b8kma@webrtc.org PreFiltBankstr* prefiltdata); 133b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 134fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.orgvoid WebRtcIsacfix_FilterAndCombine2(int16_t* tempin_ch1, 135fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org int16_t* tempin_ch2, 136fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org int16_t* out16, 137178f01351b644e253b3fcf109a5a0d9ec56921b8kma@webrtc.org PostFiltBankstr* postfiltdata, 138fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org int16_t len); 139b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 140b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#endif 141b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 142b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/* normalized lattice filters */ 143b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 144fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.orgvoid WebRtcIsacfix_NormLatticeFilterMa(int16_t orderCoef, 145fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org int32_t* stateGQ15, 146fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org int16_t* lat_inQ0, 147fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org int16_t* filt_coefQ15, 148fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org int32_t* gain_lo_hiQ17, 149fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org int16_t lo_hi, 150fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org int16_t* lat_outQ9); 151fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org 152fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.orgvoid WebRtcIsacfix_NormLatticeFilterAr(int16_t orderCoef, 153fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org int16_t* stateGQ0, 154fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org int32_t* lat_inQ25, 155fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org int16_t* filt_coefQ15, 156fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org int32_t* gain_lo_hiQ17, 157fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org int16_t lo_hi, 158fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org int16_t* lat_outQ0); 159b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 160b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/* TODO(kma): Remove the following functions into individual header files. */ 161b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 162b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/* Internal functions in both C and ARM Neon versions */ 163b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 164fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.orgint WebRtcIsacfix_AutocorrC(int32_t* __restrict r, 165fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org const int16_t* __restrict x, 166fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org int16_t N, 167fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org int16_t order, 168fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org int16_t* __restrict scale); 169b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 170b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid WebRtcIsacfix_FilterMaLoopC(int16_t input0, 171b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org int16_t input1, 172b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org int32_t input2, 173b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org int32_t* ptr0, 174b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org int32_t* ptr1, 175b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org int32_t* ptr2); 176b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 177b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#if (defined WEBRTC_DETECT_ARM_NEON) || (defined WEBRTC_ARCH_ARM_NEON) 178fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.orgint WebRtcIsacfix_AutocorrNeon(int32_t* __restrict r, 179fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org const int16_t* __restrict x, 180fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org int16_t N, 181fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org int16_t order, 182fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org int16_t* __restrict scale); 183b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 184b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid WebRtcIsacfix_FilterMaLoopNeon(int16_t input0, 185b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org int16_t input1, 186bc9c1950fc96bd82af358b5d95dd717267130bb0andrew@webrtc.org int32_t input2, 187bc9c1950fc96bd82af358b5d95dd717267130bb0andrew@webrtc.org int32_t* ptr0, 188bc9c1950fc96bd82af358b5d95dd717267130bb0andrew@webrtc.org int32_t* ptr1, 189bc9c1950fc96bd82af358b5d95dd717267130bb0andrew@webrtc.org int32_t* ptr2); 190bc9c1950fc96bd82af358b5d95dd717267130bb0andrew@webrtc.org#endif 191bc9c1950fc96bd82af358b5d95dd717267130bb0andrew@webrtc.org 192bc9c1950fc96bd82af358b5d95dd717267130bb0andrew@webrtc.org#if defined(MIPS32_LE) 193bc9c1950fc96bd82af358b5d95dd717267130bb0andrew@webrtc.orgint WebRtcIsacfix_AutocorrMIPS(int32_t* __restrict r, 194bc9c1950fc96bd82af358b5d95dd717267130bb0andrew@webrtc.org const int16_t* __restrict x, 195bc9c1950fc96bd82af358b5d95dd717267130bb0andrew@webrtc.org int16_t N, 196bc9c1950fc96bd82af358b5d95dd717267130bb0andrew@webrtc.org int16_t order, 197bc9c1950fc96bd82af358b5d95dd717267130bb0andrew@webrtc.org int16_t* __restrict scale); 198bc9c1950fc96bd82af358b5d95dd717267130bb0andrew@webrtc.org 199bc9c1950fc96bd82af358b5d95dd717267130bb0andrew@webrtc.orgvoid WebRtcIsacfix_FilterMaLoopMIPS(int16_t input0, 200bc9c1950fc96bd82af358b5d95dd717267130bb0andrew@webrtc.org int16_t input1, 201b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org int32_t input2, 202b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org int32_t* ptr0, 203b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org int32_t* ptr1, 204b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org int32_t* ptr2); 205b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#endif 206b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 207b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/* Function pointers associated with the above functions. */ 208b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 209fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.orgtypedef int (*AutocorrFix)(int32_t* __restrict r, 210fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org const int16_t* __restrict x, 211fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org int16_t N, 212fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org int16_t order, 213fbda0fcf2f9e82c82bcaac138f44d4e5144f6e0dpbos@webrtc.org int16_t* __restrict scale); 214b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgextern AutocorrFix WebRtcIsacfix_AutocorrFix; 215b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 216b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgtypedef void (*FilterMaLoopFix)(int16_t input0, 217b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org int16_t input1, 218b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org int32_t input2, 219b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org int32_t* ptr0, 220b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org int32_t* ptr1, 221b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org int32_t* ptr2); 222b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgextern FilterMaLoopFix WebRtcIsacfix_FilterMaLoopFix; 223b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 22427fe999a8fe09ea7a39318e00262b30e38caa83ckma@webrtc.org#ifdef __cplusplus 22527fe999a8fe09ea7a39318e00262b30e38caa83ckma@webrtc.org} // extern "C" 22627fe999a8fe09ea7a39318e00262b30e38caa83ckma@webrtc.org#endif 22727fe999a8fe09ea7a39318e00262b30e38caa83ckma@webrtc.org 228b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#endif /* WEBRTC_MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_CODEC_H_ */ 229