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#ifndef WEBRTC_MODULES_AUDIO_PROCESSING_AECM_INCLUDE_ECHO_CONTROL_MOBILE_H_
12b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define WEBRTC_MODULES_AUDIO_PROCESSING_AECM_INCLUDE_ECHO_CONTROL_MOBILE_H_
13b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
14b3e5a623285b082a23655cdc02f35a40f652acdfandrew@webrtc.org#include <stdlib.h>
15b3e5a623285b082a23655cdc02f35a40f652acdfandrew@webrtc.org
16b3e5a623285b082a23655cdc02f35a40f652acdfandrew@webrtc.org#include "webrtc/typedefs.h"
17b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
18b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgenum {
19b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    AecmFalse = 0,
20b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    AecmTrue
21b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org};
22b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
23b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// Errors
24b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define AECM_UNSPECIFIED_ERROR           12000
25b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define AECM_UNSUPPORTED_FUNCTION_ERROR  12001
26b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define AECM_UNINITIALIZED_ERROR         12002
27b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define AECM_NULL_POINTER_ERROR          12003
28b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define AECM_BAD_PARAMETER_ERROR         12004
29b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
30b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// Warnings
31b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define AECM_BAD_PARAMETER_WARNING       12100
32b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
33b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgtypedef struct {
343f6d5e0bded85b8b0d055da8fa49e8d7137fe8edpbos@webrtc.org    int16_t cngMode;            // AECM_FALSE, AECM_TRUE (default)
353f6d5e0bded85b8b0d055da8fa49e8d7137fe8edpbos@webrtc.org    int16_t echoMode;           // 0, 1, 2, 3 (default), 4
36b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org} AecmConfig;
37b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
38b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#ifdef __cplusplus
39b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgextern "C" {
40b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#endif
41b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
42b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/*
43b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Allocates the memory needed by the AECM. The memory needs to be
44b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * initialized separately using the WebRtcAecm_Init() function.
45b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *
46b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Inputs                           Description
47b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * -------------------------------------------------------------------
483f0b9bf995d04af10c9bf7262e4f0d10733d3652kwiberg@webrtc.org * void**  aecmInst                 Pointer to the AECM instance to be
49b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *                                  created and initialized
50b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *
51b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Outputs                          Description
52b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * -------------------------------------------------------------------
533f6d5e0bded85b8b0d055da8fa49e8d7137fe8edpbos@webrtc.org * int32_t return                   0: OK
54b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *                                 -1: error
55b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */
563f6d5e0bded85b8b0d055da8fa49e8d7137fe8edpbos@webrtc.orgint32_t WebRtcAecm_Create(void **aecmInst);
57b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
58b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/*
59b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * This function releases the memory allocated by WebRtcAecm_Create()
60b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *
61b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Inputs                       Description
62b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * -------------------------------------------------------------------
633f0b9bf995d04af10c9bf7262e4f0d10733d3652kwiberg@webrtc.org * void*    aecmInst            Pointer to the AECM instance
64b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *
65b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Outputs                      Description
66b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * -------------------------------------------------------------------
673f0b9bf995d04af10c9bf7262e4f0d10733d3652kwiberg@webrtc.org * int32_t  return              0: OK
68b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *                             -1: error
69b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */
703f6d5e0bded85b8b0d055da8fa49e8d7137fe8edpbos@webrtc.orgint32_t WebRtcAecm_Free(void *aecmInst);
71b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
72b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/*
73b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Initializes an AECM instance.
74b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *
75b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Inputs                       Description
76b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * -------------------------------------------------------------------
773f0b9bf995d04af10c9bf7262e4f0d10733d3652kwiberg@webrtc.org * void*          aecmInst      Pointer to the AECM instance
783f6d5e0bded85b8b0d055da8fa49e8d7137fe8edpbos@webrtc.org * int32_t        sampFreq      Sampling frequency of data
79b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *
80b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Outputs                      Description
81b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * -------------------------------------------------------------------
823f6d5e0bded85b8b0d055da8fa49e8d7137fe8edpbos@webrtc.org * int32_t        return        0: OK
83b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *                             -1: error
84b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */
853f6d5e0bded85b8b0d055da8fa49e8d7137fe8edpbos@webrtc.orgint32_t WebRtcAecm_Init(void* aecmInst, int32_t sampFreq);
86b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
87b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/*
88b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Inserts an 80 or 160 sample block of data into the farend buffer.
89b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *
90b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Inputs                       Description
91b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * -------------------------------------------------------------------
923f0b9bf995d04af10c9bf7262e4f0d10733d3652kwiberg@webrtc.org * void*          aecmInst      Pointer to the AECM instance
933f0b9bf995d04af10c9bf7262e4f0d10733d3652kwiberg@webrtc.org * int16_t*       farend        In buffer containing one frame of
94b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *                              farend signal
953f6d5e0bded85b8b0d055da8fa49e8d7137fe8edpbos@webrtc.org * int16_t        nrOfSamples   Number of samples in farend buffer
96b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *
97b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Outputs                      Description
98b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * -------------------------------------------------------------------
993f6d5e0bded85b8b0d055da8fa49e8d7137fe8edpbos@webrtc.org * int32_t        return        0: OK
100b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *                             -1: error
101b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */
1023f6d5e0bded85b8b0d055da8fa49e8d7137fe8edpbos@webrtc.orgint32_t WebRtcAecm_BufferFarend(void* aecmInst,
1033f6d5e0bded85b8b0d055da8fa49e8d7137fe8edpbos@webrtc.org                                const int16_t* farend,
1043f6d5e0bded85b8b0d055da8fa49e8d7137fe8edpbos@webrtc.org                                int16_t nrOfSamples);
105b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
106b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/*
107b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Runs the AECM on an 80 or 160 sample blocks of data.
108b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *
1093f0b9bf995d04af10c9bf7262e4f0d10733d3652kwiberg@webrtc.org * Inputs                        Description
110b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * -------------------------------------------------------------------
1113f0b9bf995d04af10c9bf7262e4f0d10733d3652kwiberg@webrtc.org * void*          aecmInst       Pointer to the AECM instance
1123f0b9bf995d04af10c9bf7262e4f0d10733d3652kwiberg@webrtc.org * int16_t*       nearendNoisy   In buffer containing one frame of
113b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *                               reference nearend+echo signal. If
114b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *                               noise reduction is active, provide
115b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *                               the noisy signal here.
1163f0b9bf995d04af10c9bf7262e4f0d10733d3652kwiberg@webrtc.org * int16_t*       nearendClean   In buffer containing one frame of
117b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *                               nearend+echo signal. If noise
118b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *                               reduction is active, provide the
119b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *                               clean signal here. Otherwise pass a
120b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *                               NULL pointer.
1213f6d5e0bded85b8b0d055da8fa49e8d7137fe8edpbos@webrtc.org * int16_t        nrOfSamples    Number of samples in nearend buffer
1223f6d5e0bded85b8b0d055da8fa49e8d7137fe8edpbos@webrtc.org * int16_t        msInSndCardBuf Delay estimate for sound card and
123b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *                               system buffers
124b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *
1253f0b9bf995d04af10c9bf7262e4f0d10733d3652kwiberg@webrtc.org * Outputs                       Description
126b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * -------------------------------------------------------------------
1273f0b9bf995d04af10c9bf7262e4f0d10733d3652kwiberg@webrtc.org * int16_t*       out            Out buffer, one frame of processed nearend
1283f0b9bf995d04af10c9bf7262e4f0d10733d3652kwiberg@webrtc.org * int32_t        return         0: OK
1293f0b9bf995d04af10c9bf7262e4f0d10733d3652kwiberg@webrtc.org *                              -1: error
130b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */
1313f6d5e0bded85b8b0d055da8fa49e8d7137fe8edpbos@webrtc.orgint32_t WebRtcAecm_Process(void* aecmInst,
1323f6d5e0bded85b8b0d055da8fa49e8d7137fe8edpbos@webrtc.org                           const int16_t* nearendNoisy,
1333f6d5e0bded85b8b0d055da8fa49e8d7137fe8edpbos@webrtc.org                           const int16_t* nearendClean,
1343f6d5e0bded85b8b0d055da8fa49e8d7137fe8edpbos@webrtc.org                           int16_t* out,
1353f6d5e0bded85b8b0d055da8fa49e8d7137fe8edpbos@webrtc.org                           int16_t nrOfSamples,
1363f6d5e0bded85b8b0d055da8fa49e8d7137fe8edpbos@webrtc.org                           int16_t msInSndCardBuf);
137b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
138b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/*
139b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * This function enables the user to set certain parameters on-the-fly
140b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *
141b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Inputs                       Description
142b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * -------------------------------------------------------------------
1433f0b9bf995d04af10c9bf7262e4f0d10733d3652kwiberg@webrtc.org * void*          aecmInst      Pointer to the AECM instance
1443f0b9bf995d04af10c9bf7262e4f0d10733d3652kwiberg@webrtc.org * AecmConfig     config        Config instance that contains all
145b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *                              properties to be set
146b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *
147b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Outputs                      Description
148b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * -------------------------------------------------------------------
1493f6d5e0bded85b8b0d055da8fa49e8d7137fe8edpbos@webrtc.org * int32_t        return        0: OK
150b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *                             -1: error
151b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */
1523f6d5e0bded85b8b0d055da8fa49e8d7137fe8edpbos@webrtc.orgint32_t WebRtcAecm_set_config(void* aecmInst, AecmConfig config);
153b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
154b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/*
155b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * This function enables the user to set certain parameters on-the-fly
156b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *
157b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Inputs                       Description
158b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * -------------------------------------------------------------------
1593f0b9bf995d04af10c9bf7262e4f0d10733d3652kwiberg@webrtc.org * void*          aecmInst      Pointer to the AECM instance
160b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *
161b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Outputs                      Description
162b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * -------------------------------------------------------------------
1633f0b9bf995d04af10c9bf7262e4f0d10733d3652kwiberg@webrtc.org * AecmConfig*    config        Pointer to the config instance that
164b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *                              all properties will be written to
1653f6d5e0bded85b8b0d055da8fa49e8d7137fe8edpbos@webrtc.org * int32_t        return        0: OK
166b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *                             -1: error
167b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */
1683f6d5e0bded85b8b0d055da8fa49e8d7137fe8edpbos@webrtc.orgint32_t WebRtcAecm_get_config(void *aecmInst, AecmConfig *config);
169b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
170b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/*
171b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * This function enables the user to set the echo path on-the-fly.
172b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *
173b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Inputs                       Description
174b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * -------------------------------------------------------------------
175b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * void*        aecmInst        Pointer to the AECM instance
176b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * void*        echo_path       Pointer to the echo path to be set
177b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * size_t       size_bytes      Size in bytes of the echo path
178b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *
179b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Outputs                      Description
180b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * -------------------------------------------------------------------
1813f0b9bf995d04af10c9bf7262e4f0d10733d3652kwiberg@webrtc.org * int32_t      return          0: OK
182b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *                             -1: error
183b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */
1843f6d5e0bded85b8b0d055da8fa49e8d7137fe8edpbos@webrtc.orgint32_t WebRtcAecm_InitEchoPath(void* aecmInst,
1853f6d5e0bded85b8b0d055da8fa49e8d7137fe8edpbos@webrtc.org                                const void* echo_path,
1863f6d5e0bded85b8b0d055da8fa49e8d7137fe8edpbos@webrtc.org                                size_t size_bytes);
187b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
188b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/*
189b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * This function enables the user to get the currently used echo path
190b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * on-the-fly
191b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *
192b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Inputs                       Description
193b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * -------------------------------------------------------------------
194b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * void*        aecmInst        Pointer to the AECM instance
195b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * void*        echo_path       Pointer to echo path
196b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * size_t       size_bytes      Size in bytes of the echo path
197b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *
198b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Outputs                      Description
199b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * -------------------------------------------------------------------
2003f0b9bf995d04af10c9bf7262e4f0d10733d3652kwiberg@webrtc.org * int32_t      return          0: OK
201b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *                             -1: error
202b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */
2033f6d5e0bded85b8b0d055da8fa49e8d7137fe8edpbos@webrtc.orgint32_t WebRtcAecm_GetEchoPath(void* aecmInst,
2043f6d5e0bded85b8b0d055da8fa49e8d7137fe8edpbos@webrtc.org                               void* echo_path,
2053f6d5e0bded85b8b0d055da8fa49e8d7137fe8edpbos@webrtc.org                               size_t size_bytes);
206b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
207b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/*
208b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * This function enables the user to get the echo path size in bytes
209b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *
210b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Outputs                      Description
211b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * -------------------------------------------------------------------
2123f0b9bf995d04af10c9bf7262e4f0d10733d3652kwiberg@webrtc.org * size_t       return          Size in bytes
213b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */
214b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgsize_t WebRtcAecm_echo_path_size_bytes();
215b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
216b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/*
217b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Gets the last error code.
218b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *
219b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Inputs                       Description
220b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * -------------------------------------------------------------------
2213f0b9bf995d04af10c9bf7262e4f0d10733d3652kwiberg@webrtc.org * void*          aecmInst      Pointer to the AECM instance
222b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *
223b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Outputs                      Description
224b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * -------------------------------------------------------------------
2253f6d5e0bded85b8b0d055da8fa49e8d7137fe8edpbos@webrtc.org * int32_t        return        11000-11100: error code
226b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */
2273f6d5e0bded85b8b0d055da8fa49e8d7137fe8edpbos@webrtc.orgint32_t WebRtcAecm_get_error_code(void *aecmInst);
228b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
229b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#ifdef __cplusplus
230b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
231b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#endif
232b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#endif  // WEBRTC_MODULES_AUDIO_PROCESSING_AECM_INCLUDE_ECHO_CONTROL_MOBILE_H_
233