123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233 |
- /*
- * 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.
- */
- #ifndef WEBRTC_MODULES_AUDIO_PROCESSING_AECM_INCLUDE_ECHO_CONTROL_MOBILE_H_
- #define WEBRTC_MODULES_AUDIO_PROCESSING_AECM_INCLUDE_ECHO_CONTROL_MOBILE_H_
- #include "typedefs.h"
- enum {
- AecmFalse = 0,
- AecmTrue
- };
- // Errors
- #define AECM_UNSPECIFIED_ERROR 12000
- #define AECM_UNSUPPORTED_FUNCTION_ERROR 12001
- #define AECM_UNINITIALIZED_ERROR 12002
- #define AECM_NULL_POINTER_ERROR 12003
- #define AECM_BAD_PARAMETER_ERROR 12004
- // Warnings
- #define AECM_BAD_PARAMETER_WARNING 12100
- typedef struct {
- WebRtc_Word16 cngMode; // AECM_FALSE, AECM_TRUE (default)
- WebRtc_Word16 echoMode; // 0, 1, 2, 3 (default), 4
- } AecmConfig;
- #ifdef __cplusplus
- extern "C" {
- #endif
- /*
- * Allocates the memory needed by the AECM. The memory needs to be
- * initialized separately using the WebRtcAecm_Init() function.
- *
- * Inputs Description
- * -------------------------------------------------------------------
- * void **aecmInst Pointer to the AECM instance to be
- * created and initialized
- *
- * Outputs Description
- * -------------------------------------------------------------------
- * WebRtc_Word32 return 0: OK
- * -1: error
- */
- WebRtc_Word32 WebRtcAecm_Create(void **aecmInst);
- /*
- * This function releases the memory allocated by WebRtcAecm_Create()
- *
- * Inputs Description
- * -------------------------------------------------------------------
- * void *aecmInst Pointer to the AECM instance
- *
- * Outputs Description
- * -------------------------------------------------------------------
- * WebRtc_Word32 return 0: OK
- * -1: error
- */
- WebRtc_Word32 WebRtcAecm_Free(void *aecmInst);
- /*
- * Initializes an AECM instance.
- *
- * Inputs Description
- * -------------------------------------------------------------------
- * void *aecmInst Pointer to the AECM instance
- * WebRtc_Word32 sampFreq Sampling frequency of data
- *
- * Outputs Description
- * -------------------------------------------------------------------
- * WebRtc_Word32 return 0: OK
- * -1: error
- */
- WebRtc_Word32 WebRtcAecm_Init(void* aecmInst,
- WebRtc_Word32 sampFreq);
- /*
- * Inserts an 80 or 160 sample block of data into the farend buffer.
- *
- * Inputs Description
- * -------------------------------------------------------------------
- * void *aecmInst Pointer to the AECM instance
- * WebRtc_Word16 *farend In buffer containing one frame of
- * farend signal
- * WebRtc_Word16 nrOfSamples Number of samples in farend buffer
- *
- * Outputs Description
- * -------------------------------------------------------------------
- * WebRtc_Word32 return 0: OK
- * -1: error
- */
- WebRtc_Word32 WebRtcAecm_BufferFarend(void* aecmInst,
- const WebRtc_Word16* farend,
- WebRtc_Word16 nrOfSamples);
- /*
- * Runs the AECM on an 80 or 160 sample blocks of data.
- *
- * Inputs Description
- * -------------------------------------------------------------------
- * void *aecmInst Pointer to the AECM instance
- * WebRtc_Word16 *nearendNoisy In buffer containing one frame of
- * reference nearend+echo signal. If
- * noise reduction is active, provide
- * the noisy signal here.
- * WebRtc_Word16 *nearendClean In buffer containing one frame of
- * nearend+echo signal. If noise
- * reduction is active, provide the
- * clean signal here. Otherwise pass a
- * NULL pointer.
- * WebRtc_Word16 nrOfSamples Number of samples in nearend buffer
- * WebRtc_Word16 msInSndCardBuf Delay estimate for sound card and
- * system buffers
- *
- * Outputs Description
- * -------------------------------------------------------------------
- * WebRtc_Word16 *out Out buffer, one frame of processed nearend
- * WebRtc_Word32 return 0: OK
- * -1: error
- */
- WebRtc_Word32 WebRtcAecm_Process(void* aecmInst,
- const WebRtc_Word16* nearendNoisy,
- const WebRtc_Word16* nearendClean,
- WebRtc_Word16* out,
- WebRtc_Word16 nrOfSamples,
- WebRtc_Word16 msInSndCardBuf);
- /*
- * This function enables the user to set certain parameters on-the-fly
- *
- * Inputs Description
- * -------------------------------------------------------------------
- * void *aecmInst Pointer to the AECM instance
- * AecmConfig config Config instance that contains all
- * properties to be set
- *
- * Outputs Description
- * -------------------------------------------------------------------
- * WebRtc_Word32 return 0: OK
- * -1: error
- */
- WebRtc_Word32 WebRtcAecm_set_config(void* aecmInst,
- AecmConfig config);
- /*
- * This function enables the user to set certain parameters on-the-fly
- *
- * Inputs Description
- * -------------------------------------------------------------------
- * void *aecmInst Pointer to the AECM instance
- *
- * Outputs Description
- * -------------------------------------------------------------------
- * AecmConfig *config Pointer to the config instance that
- * all properties will be written to
- * WebRtc_Word32 return 0: OK
- * -1: error
- */
- WebRtc_Word32 WebRtcAecm_get_config(void *aecmInst,
- AecmConfig *config);
- /*
- * This function enables the user to set the echo path on-the-fly.
- *
- * Inputs Description
- * -------------------------------------------------------------------
- * void* aecmInst Pointer to the AECM instance
- * void* echo_path Pointer to the echo path to be set
- * size_t size_bytes Size in bytes of the echo path
- *
- * Outputs Description
- * -------------------------------------------------------------------
- * WebRtc_Word32 return 0: OK
- * -1: error
- */
- WebRtc_Word32 WebRtcAecm_InitEchoPath(void* aecmInst,
- const void* echo_path,
- size_t size_bytes);
- /*
- * This function enables the user to get the currently used echo path
- * on-the-fly
- *
- * Inputs Description
- * -------------------------------------------------------------------
- * void* aecmInst Pointer to the AECM instance
- * void* echo_path Pointer to echo path
- * size_t size_bytes Size in bytes of the echo path
- *
- * Outputs Description
- * -------------------------------------------------------------------
- * WebRtc_Word32 return 0: OK
- * -1: error
- */
- WebRtc_Word32 WebRtcAecm_GetEchoPath(void* aecmInst,
- void* echo_path,
- size_t size_bytes);
- /*
- * This function enables the user to get the echo path size in bytes
- *
- * Outputs Description
- * -------------------------------------------------------------------
- * size_t return : size in bytes
- */
- size_t WebRtcAecm_echo_path_size_bytes();
- /*
- * Gets the last error code.
- *
- * Inputs Description
- * -------------------------------------------------------------------
- * void *aecmInst Pointer to the AECM instance
- *
- * Outputs Description
- * -------------------------------------------------------------------
- * WebRtc_Word32 return 11000-11100: error code
- */
- WebRtc_Word32 WebRtcAecm_get_error_code(void *aecmInst);
- #ifdef __cplusplus
- }
- #endif
- #endif // WEBRTC_MODULES_AUDIO_PROCESSING_AECM_INCLUDE_ECHO_CONTROL_MOBILE_H_
|