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