1470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com/*
2715509890ca462c70c6d20d04b084b3d068249f7kma@webrtc.org *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com *
4470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com *  Use of this source code is governed by a BSD-style license
5470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com *  that can be found in the LICENSE file in the root of the source
6470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com *  tree. An additional intellectual property rights grant can be found
7470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com *  in the file PATENTS.  All contributing project authors may
8470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com *  be found in the AUTHORS file in the root of the source tree.
9470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com */
10470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
11470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com/*
12470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * codec.h
13470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com *
14470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * This header file contains the calls to the internal encoder
15470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com * and decoder functions.
16470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com *
17470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com */
18470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
19470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com#ifndef WEBRTC_MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_CODEC_H_
20470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com#define WEBRTC_MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_CODEC_H_
21470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
22470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com#include "structs.h"
23470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
241786436eb27822ec00980c8fe2c5ecdfd789dac5kma@webrtc.org#ifdef __cplusplus
251786436eb27822ec00980c8fe2c5ecdfd789dac5kma@webrtc.orgextern "C" {
261786436eb27822ec00980c8fe2c5ecdfd789dac5kma@webrtc.org#endif
27470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
28478291157282e87c261cc1f7351dc53c60184365kma@webrtc.orgint WebRtcIsacfix_EstimateBandwidth(BwEstimatorstr* bwest_str,
29478291157282e87c261cc1f7351dc53c60184365kma@webrtc.org                                    Bitstr_dec* streamdata,
30dce40cf804019a9898b6ab8d8262466b697c56e0Peter Kasting                                    size_t packet_size,
310946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org                                    uint16_t rtp_seq_number,
320946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org                                    uint32_t send_ts,
330946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org                                    uint32_t arr_ts);
34478291157282e87c261cc1f7351dc53c60184365kma@webrtc.org
35aba07ef6d92bf1ded7ad1af49b54a8e6652dfcbbPeter Kastingint WebRtcIsacfix_DecodeImpl(int16_t* signal_out16,
36aba07ef6d92bf1ded7ad1af49b54a8e6652dfcbbPeter Kasting                             IsacFixDecoderInstance* ISACdec_obj,
37dce40cf804019a9898b6ab8d8262466b697c56e0Peter Kasting                             size_t* current_framesamples);
38478291157282e87c261cc1f7351dc53c60184365kma@webrtc.org
39728d9037c016c01295177fa700fc7927f0bb80bbPeter Kastingvoid WebRtcIsacfix_DecodePlcImpl(int16_t* decoded,
40728d9037c016c01295177fa700fc7927f0bb80bbPeter Kasting                                 IsacFixDecoderInstance* ISACdec_obj,
41dce40cf804019a9898b6ab8d8262466b697c56e0Peter Kasting                                 size_t* current_framesample );
42478291157282e87c261cc1f7351dc53c60184365kma@webrtc.org
430946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.orgint WebRtcIsacfix_EncodeImpl(int16_t* in,
44eb544460e47140d494dddf1217a698a1dcf4dee0pbos@webrtc.org                             IsacFixEncoderInstance* ISACenc_obj,
45478291157282e87c261cc1f7351dc53c60184365kma@webrtc.org                             BwEstimatorstr* bw_estimatordata,
460946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org                             int16_t CodingMode);
47478291157282e87c261cc1f7351dc53c60184365kma@webrtc.org
48eb544460e47140d494dddf1217a698a1dcf4dee0pbos@webrtc.orgint WebRtcIsacfix_EncodeStoredData(IsacFixEncoderInstance* ISACenc_obj,
49478291157282e87c261cc1f7351dc53c60184365kma@webrtc.org                                   int BWnumber,
50478291157282e87c261cc1f7351dc53c60184365kma@webrtc.org                                   float scale);
51470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
52a15ea4965ef07f6aa074339f206383028e3b8898kma@webrtc.org/* initialization functions */
53470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
54478291157282e87c261cc1f7351dc53c60184365kma@webrtc.orgvoid WebRtcIsacfix_InitMaskingEnc(MaskFiltstr_enc* maskdata);
55478291157282e87c261cc1f7351dc53c60184365kma@webrtc.orgvoid WebRtcIsacfix_InitMaskingDec(MaskFiltstr_dec* maskdata);
56470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
57478291157282e87c261cc1f7351dc53c60184365kma@webrtc.orgvoid WebRtcIsacfix_InitPreFilterbank(PreFiltBankstr* prefiltdata);
58470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
59478291157282e87c261cc1f7351dc53c60184365kma@webrtc.orgvoid WebRtcIsacfix_InitPostFilterbank(PostFiltBankstr* postfiltdata);
60470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
61478291157282e87c261cc1f7351dc53c60184365kma@webrtc.orgvoid WebRtcIsacfix_InitPitchFilter(PitchFiltstr* pitchfiltdata);
62470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
63478291157282e87c261cc1f7351dc53c60184365kma@webrtc.orgvoid WebRtcIsacfix_InitPitchAnalysis(PitchAnalysisStruct* State);
64470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
65478291157282e87c261cc1f7351dc53c60184365kma@webrtc.orgvoid WebRtcIsacfix_InitPlc(PLCstr* State);
66470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
67470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
68a15ea4965ef07f6aa074339f206383028e3b8898kma@webrtc.org/* transform functions */
69470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
70470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.comvoid WebRtcIsacfix_InitTransform();
71470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
720946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.orgtypedef void (*Time2Spec)(int16_t* inre1Q9,
730946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org                          int16_t* inre2Q9,
740946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org                          int16_t* outre,
750946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org                          int16_t* outim);
760946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.orgtypedef void (*Spec2Time)(int16_t* inreQ7,
770946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org                          int16_t* inimQ7,
780946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org                          int32_t* outre1Q16,
790946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org                          int32_t* outre2Q16);
80478291157282e87c261cc1f7351dc53c60184365kma@webrtc.org
81478291157282e87c261cc1f7351dc53c60184365kma@webrtc.orgextern Time2Spec WebRtcIsacfix_Time2Spec;
82fa5b6bf4f43032ed6db4544c84b42849bdfa3223kma@webrtc.orgextern Spec2Time WebRtcIsacfix_Spec2Time;
83fa5b6bf4f43032ed6db4544c84b42849bdfa3223kma@webrtc.org
840946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.orgvoid WebRtcIsacfix_Time2SpecC(int16_t* inre1Q9,
850946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org                              int16_t* inre2Q9,
860946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org                              int16_t* outre,
870946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org                              int16_t* outim);
880946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.orgvoid WebRtcIsacfix_Spec2TimeC(int16_t* inreQ7,
890946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org                              int16_t* inimQ7,
900946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org                              int32_t* outre1Q16,
910946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org                              int32_t* outre2Q16);
92fa5b6bf4f43032ed6db4544c84b42849bdfa3223kma@webrtc.org
93cb7f8ce2df7564546936d3041a96ccc86a90f988Andrew MacDonald#if (defined WEBRTC_DETECT_NEON) || (defined WEBRTC_HAS_NEON)
940946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.orgvoid WebRtcIsacfix_Time2SpecNeon(int16_t* inre1Q9,
950946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org                                 int16_t* inre2Q9,
960946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org                                 int16_t* outre,
970946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org                                 int16_t* outim);
980946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.orgvoid WebRtcIsacfix_Spec2TimeNeon(int16_t* inreQ7,
990946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org                                 int16_t* inimQ7,
1000946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org                                 int32_t* outre1Q16,
1010946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org                                 int32_t* outre2Q16);
102fa5b6bf4f43032ed6db4544c84b42849bdfa3223kma@webrtc.org#endif
103470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
104ceafa8cce9554b0777aa3cbdf70236e1fbabb414andrew@webrtc.org#if defined(MIPS32_LE)
105ceafa8cce9554b0777aa3cbdf70236e1fbabb414andrew@webrtc.orgvoid WebRtcIsacfix_Time2SpecMIPS(int16_t* inre1Q9,
106ceafa8cce9554b0777aa3cbdf70236e1fbabb414andrew@webrtc.org                                 int16_t* inre2Q9,
107ceafa8cce9554b0777aa3cbdf70236e1fbabb414andrew@webrtc.org                                 int16_t* outre,
108ceafa8cce9554b0777aa3cbdf70236e1fbabb414andrew@webrtc.org                                 int16_t* outim);
109ceafa8cce9554b0777aa3cbdf70236e1fbabb414andrew@webrtc.orgvoid WebRtcIsacfix_Spec2TimeMIPS(int16_t* inreQ7,
110ceafa8cce9554b0777aa3cbdf70236e1fbabb414andrew@webrtc.org                                 int16_t* inimQ7,
111ceafa8cce9554b0777aa3cbdf70236e1fbabb414andrew@webrtc.org                                 int32_t* outre1Q16,
112ceafa8cce9554b0777aa3cbdf70236e1fbabb414andrew@webrtc.org                                 int32_t* outre2Q16);
113ceafa8cce9554b0777aa3cbdf70236e1fbabb414andrew@webrtc.org#endif
114470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
115a15ea4965ef07f6aa074339f206383028e3b8898kma@webrtc.org/* filterbank functions */
116470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
1170946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.orgvoid WebRtcIsacfix_SplitAndFilter1(int16_t* in,
1180946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org                                   int16_t* LP16,
1190946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org                                   int16_t* HP16,
120478291157282e87c261cc1f7351dc53c60184365kma@webrtc.org                                   PreFiltBankstr* prefiltdata);
121470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
1220946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.orgvoid WebRtcIsacfix_FilterAndCombine1(int16_t* tempin_ch1,
1230946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org                                     int16_t* tempin_ch2,
1240946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org                                     int16_t* out16,
125478291157282e87c261cc1f7351dc53c60184365kma@webrtc.org                                     PostFiltBankstr* postfiltdata);
126470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
1277796c02b4280139ea6e082b5012dd07f627267c1turajs@google.com#ifdef WEBRTC_ISAC_FIX_NB_CALLS_ENABLED
128470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
1290946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.orgvoid WebRtcIsacfix_SplitAndFilter2(int16_t* in,
1300946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org                                   int16_t* LP16,
1310946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org                                   int16_t* HP16,
132478291157282e87c261cc1f7351dc53c60184365kma@webrtc.org                                   PreFiltBankstr* prefiltdata);
133470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
1340946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.orgvoid WebRtcIsacfix_FilterAndCombine2(int16_t* tempin_ch1,
1350946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org                                     int16_t* tempin_ch2,
1360946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org                                     int16_t* out16,
137478291157282e87c261cc1f7351dc53c60184365kma@webrtc.org                                     PostFiltBankstr* postfiltdata,
1380946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org                                     int16_t len);
139470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
140470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com#endif
141470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
142a15ea4965ef07f6aa074339f206383028e3b8898kma@webrtc.org/* normalized lattice filters */
143470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
144dce40cf804019a9898b6ab8d8262466b697c56e0Peter Kastingvoid WebRtcIsacfix_NormLatticeFilterMa(size_t orderCoef,
1450946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org                                       int32_t* stateGQ15,
1460946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org                                       int16_t* lat_inQ0,
1470946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org                                       int16_t* filt_coefQ15,
1480946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org                                       int32_t* gain_lo_hiQ17,
1490946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org                                       int16_t lo_hi,
1500946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org                                       int16_t* lat_outQ9);
1510946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org
152dce40cf804019a9898b6ab8d8262466b697c56e0Peter Kastingvoid WebRtcIsacfix_NormLatticeFilterAr(size_t orderCoef,
1530946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org                                       int16_t* stateGQ0,
1540946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org                                       int32_t* lat_inQ25,
1550946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org                                       int16_t* filt_coefQ15,
1560946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org                                       int32_t* gain_lo_hiQ17,
1570946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org                                       int16_t lo_hi,
1580946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org                                       int16_t* lat_outQ0);
159470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com
160a15ea4965ef07f6aa074339f206383028e3b8898kma@webrtc.org/* TODO(kma): Remove the following functions into individual header files. */
161a15ea4965ef07f6aa074339f206383028e3b8898kma@webrtc.org
162a15ea4965ef07f6aa074339f206383028e3b8898kma@webrtc.org/* Internal functions in both C and ARM Neon versions */
163a15ea4965ef07f6aa074339f206383028e3b8898kma@webrtc.org
1640946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.orgint WebRtcIsacfix_AutocorrC(int32_t* __restrict r,
1650946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org                            const int16_t* __restrict x,
1660946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org                            int16_t N,
1670946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org                            int16_t order,
1680946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org                            int16_t* __restrict scale);
169f0a964dc0a287469c68ca4fd195f95aaf24be45fkma@webrtc.org
170f0a964dc0a287469c68ca4fd195f95aaf24be45fkma@webrtc.orgvoid WebRtcIsacfix_FilterMaLoopC(int16_t input0,
171f0a964dc0a287469c68ca4fd195f95aaf24be45fkma@webrtc.org                                 int16_t input1,
172f0a964dc0a287469c68ca4fd195f95aaf24be45fkma@webrtc.org                                 int32_t input2,
173f0a964dc0a287469c68ca4fd195f95aaf24be45fkma@webrtc.org                                 int32_t* ptr0,
174f0a964dc0a287469c68ca4fd195f95aaf24be45fkma@webrtc.org                                 int32_t* ptr1,
175f0a964dc0a287469c68ca4fd195f95aaf24be45fkma@webrtc.org                                 int32_t* ptr2);
176f0a964dc0a287469c68ca4fd195f95aaf24be45fkma@webrtc.org
177cb7f8ce2df7564546936d3041a96ccc86a90f988Andrew MacDonald#if (defined WEBRTC_DETECT_NEON) || (defined WEBRTC_HAS_NEON)
1780946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.orgint WebRtcIsacfix_AutocorrNeon(int32_t* __restrict r,
1790946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org                               const int16_t* __restrict x,
1800946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org                               int16_t N,
1810946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org                               int16_t order,
1820946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org                               int16_t* __restrict scale);
183f0a964dc0a287469c68ca4fd195f95aaf24be45fkma@webrtc.org
184f0a964dc0a287469c68ca4fd195f95aaf24be45fkma@webrtc.orgvoid WebRtcIsacfix_FilterMaLoopNeon(int16_t input0,
185f0a964dc0a287469c68ca4fd195f95aaf24be45fkma@webrtc.org                                    int16_t input1,
186919914d71becdf4ef3a322d0af0d997c7f458e7candrew@webrtc.org                                    int32_t input2,
187919914d71becdf4ef3a322d0af0d997c7f458e7candrew@webrtc.org                                    int32_t* ptr0,
188919914d71becdf4ef3a322d0af0d997c7f458e7candrew@webrtc.org                                    int32_t* ptr1,
189919914d71becdf4ef3a322d0af0d997c7f458e7candrew@webrtc.org                                    int32_t* ptr2);
190919914d71becdf4ef3a322d0af0d997c7f458e7candrew@webrtc.org#endif
191919914d71becdf4ef3a322d0af0d997c7f458e7candrew@webrtc.org
192919914d71becdf4ef3a322d0af0d997c7f458e7candrew@webrtc.org#if defined(MIPS32_LE)
193919914d71becdf4ef3a322d0af0d997c7f458e7candrew@webrtc.orgint WebRtcIsacfix_AutocorrMIPS(int32_t* __restrict r,
194919914d71becdf4ef3a322d0af0d997c7f458e7candrew@webrtc.org                               const int16_t* __restrict x,
195919914d71becdf4ef3a322d0af0d997c7f458e7candrew@webrtc.org                               int16_t N,
196919914d71becdf4ef3a322d0af0d997c7f458e7candrew@webrtc.org                               int16_t order,
197919914d71becdf4ef3a322d0af0d997c7f458e7candrew@webrtc.org                               int16_t* __restrict scale);
198919914d71becdf4ef3a322d0af0d997c7f458e7candrew@webrtc.org
199919914d71becdf4ef3a322d0af0d997c7f458e7candrew@webrtc.orgvoid WebRtcIsacfix_FilterMaLoopMIPS(int16_t input0,
200919914d71becdf4ef3a322d0af0d997c7f458e7candrew@webrtc.org                                    int16_t input1,
201f0a964dc0a287469c68ca4fd195f95aaf24be45fkma@webrtc.org                                    int32_t input2,
202f0a964dc0a287469c68ca4fd195f95aaf24be45fkma@webrtc.org                                    int32_t* ptr0,
203f0a964dc0a287469c68ca4fd195f95aaf24be45fkma@webrtc.org                                    int32_t* ptr1,
204f0a964dc0a287469c68ca4fd195f95aaf24be45fkma@webrtc.org                                    int32_t* ptr2);
205f0a964dc0a287469c68ca4fd195f95aaf24be45fkma@webrtc.org#endif
206f0a964dc0a287469c68ca4fd195f95aaf24be45fkma@webrtc.org
207a15ea4965ef07f6aa074339f206383028e3b8898kma@webrtc.org/* Function pointers associated with the above functions. */
208f0a964dc0a287469c68ca4fd195f95aaf24be45fkma@webrtc.org
2090946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.orgtypedef int (*AutocorrFix)(int32_t* __restrict r,
2100946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org                           const int16_t* __restrict x,
2110946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org                           int16_t N,
2120946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org                           int16_t order,
2130946a56023d821e0deca04029bb016ae1f23aa82pbos@webrtc.org                           int16_t* __restrict scale);
214f0a964dc0a287469c68ca4fd195f95aaf24be45fkma@webrtc.orgextern AutocorrFix WebRtcIsacfix_AutocorrFix;
215f0a964dc0a287469c68ca4fd195f95aaf24be45fkma@webrtc.org
216f0a964dc0a287469c68ca4fd195f95aaf24be45fkma@webrtc.orgtypedef void (*FilterMaLoopFix)(int16_t input0,
217f0a964dc0a287469c68ca4fd195f95aaf24be45fkma@webrtc.org                                int16_t input1,
218f0a964dc0a287469c68ca4fd195f95aaf24be45fkma@webrtc.org                                int32_t input2,
219f0a964dc0a287469c68ca4fd195f95aaf24be45fkma@webrtc.org                                int32_t* ptr0,
220f0a964dc0a287469c68ca4fd195f95aaf24be45fkma@webrtc.org                                int32_t* ptr1,
221f0a964dc0a287469c68ca4fd195f95aaf24be45fkma@webrtc.org                                int32_t* ptr2);
222f0a964dc0a287469c68ca4fd195f95aaf24be45fkma@webrtc.orgextern FilterMaLoopFix WebRtcIsacfix_FilterMaLoopFix;
223f0a964dc0a287469c68ca4fd195f95aaf24be45fkma@webrtc.org
2241786436eb27822ec00980c8fe2c5ecdfd789dac5kma@webrtc.org#ifdef __cplusplus
2251786436eb27822ec00980c8fe2c5ecdfd789dac5kma@webrtc.org}  // extern "C"
2261786436eb27822ec00980c8fe2c5ecdfd789dac5kma@webrtc.org#endif
2271786436eb27822ec00980c8fe2c5ecdfd789dac5kma@webrtc.org
228470e71d3649f6cac4688e83819640b012b5d38bbniklase@google.com#endif /* WEBRTC_MODULES_AUDIO_CODING_CODECS_ISAC_FIX_SOURCE_CODEC_H_ */
229