| Index: webrtc/modules/audio_processing/aecm/echo_control_mobile.c
|
| diff --git a/webrtc/modules/audio_processing/aecm/echo_control_mobile.c b/webrtc/modules/audio_processing/aecm/echo_control_mobile.c
|
| index 83781e97fed039652af8398c1ebbfa9f2aeceeea..f59cd125f2aaee222b0f21099d6d6321eaac0682 100644
|
| --- a/webrtc/modules/audio_processing/aecm/echo_control_mobile.c
|
| +++ b/webrtc/modules/audio_processing/aecm/echo_control_mobile.c
|
| @@ -68,8 +68,6 @@ typedef struct
|
| // Structures
|
| RingBuffer *farendBuf;
|
|
|
| - int lastError;
|
| -
|
| AecmCore* aecmCore;
|
| } AecMobile;
|
|
|
| @@ -100,7 +98,6 @@ void* WebRtcAecm_Create() {
|
| }
|
|
|
| aecm->initFlag = 0;
|
| - aecm->lastError = 0;
|
|
|
| #ifdef AEC_DEBUG
|
| aecm->aecmCore->farFile = fopen("aecFar.pcm","wb");
|
| @@ -151,16 +148,14 @@ int32_t WebRtcAecm_Init(void *aecmInst, int32_t sampFreq)
|
|
|
| if (sampFreq != 8000 && sampFreq != 16000)
|
| {
|
| - aecm->lastError = AECM_BAD_PARAMETER_ERROR;
|
| - return -1;
|
| + return AECM_BAD_PARAMETER_ERROR;
|
| }
|
| aecm->sampFreq = sampFreq;
|
|
|
| // Initialize AECM core
|
| if (WebRtcAecm_InitCore(aecm->aecmCore, aecm->sampFreq) == -1)
|
| {
|
| - aecm->lastError = AECM_UNSPECIFIED_ERROR;
|
| - return -1;
|
| + return AECM_UNSPECIFIED_ERROR;
|
| }
|
|
|
| // Initialize farend buffer
|
| @@ -191,51 +186,53 @@ int32_t WebRtcAecm_Init(void *aecmInst, int32_t sampFreq)
|
|
|
| if (WebRtcAecm_set_config(aecm, aecConfig) == -1)
|
| {
|
| - aecm->lastError = AECM_UNSPECIFIED_ERROR;
|
| - return -1;
|
| + return AECM_UNSPECIFIED_ERROR;
|
| }
|
|
|
| return 0;
|
| }
|
|
|
| -int32_t WebRtcAecm_BufferFarend(void *aecmInst, const int16_t *farend,
|
| - size_t nrOfSamples)
|
| -{
|
| +// Returns any error that is caused when buffering the
|
| +// farend signal.
|
| +int32_t WebRtcAecm_GetBufferFarendError(void *aecmInst, const int16_t *farend,
|
| + size_t nrOfSamples) {
|
| AecMobile* aecm = aecmInst;
|
| - int32_t retVal = 0;
|
|
|
| - if (aecm == NULL)
|
| - {
|
| - return -1;
|
| - }
|
| + if (aecm == NULL)
|
| + return -1;
|
|
|
| - if (farend == NULL)
|
| - {
|
| - aecm->lastError = AECM_NULL_POINTER_ERROR;
|
| - return -1;
|
| - }
|
| + if (farend == NULL)
|
| + return AECM_NULL_POINTER_ERROR;
|
|
|
| - if (aecm->initFlag != kInitCheck)
|
| - {
|
| - aecm->lastError = AECM_UNINITIALIZED_ERROR;
|
| - return -1;
|
| - }
|
| + if (aecm->initFlag != kInitCheck)
|
| + return AECM_UNINITIALIZED_ERROR;
|
|
|
| - if (nrOfSamples != 80 && nrOfSamples != 160)
|
| - {
|
| - aecm->lastError = AECM_BAD_PARAMETER_ERROR;
|
| - return -1;
|
| - }
|
| + if (nrOfSamples != 80 && nrOfSamples != 160)
|
| + return AECM_BAD_PARAMETER_ERROR;
|
|
|
| - // TODO: Is this really a good idea?
|
| - if (!aecm->ECstartup)
|
| - {
|
| - WebRtcAecm_DelayComp(aecm);
|
| - }
|
| + return 0;
|
| +}
|
|
|
| - WebRtc_WriteBuffer(aecm->farendBuf, farend, nrOfSamples);
|
|
|
| - return retVal;
|
| +int32_t WebRtcAecm_BufferFarend(void *aecmInst, const int16_t *farend,
|
| + size_t nrOfSamples) {
|
| + AecMobile* aecm = aecmInst;
|
| +
|
| + const int32_t err =
|
| + WebRtcAecm_GetBufferFarendError(aecmInst, farend, nrOfSamples);
|
| +
|
| + if (err != 0)
|
| + return err;
|
| +
|
| + // TODO(unknown): Is this really a good idea?
|
| + if (!aecm->ECstartup)
|
| + {
|
| + WebRtcAecm_DelayComp(aecm);
|
| + }
|
| +
|
| + WebRtc_WriteBuffer(aecm->farendBuf, farend, nrOfSamples);
|
| +
|
| + return 0;
|
| }
|
|
|
| int32_t WebRtcAecm_Process(void *aecmInst, const int16_t *nearendNoisy,
|
| @@ -259,38 +256,32 @@ int32_t WebRtcAecm_Process(void *aecmInst, const int16_t *nearendNoisy,
|
|
|
| if (nearendNoisy == NULL)
|
| {
|
| - aecm->lastError = AECM_NULL_POINTER_ERROR;
|
| - return -1;
|
| + return AECM_NULL_POINTER_ERROR;
|
| }
|
|
|
| if (out == NULL)
|
| {
|
| - aecm->lastError = AECM_NULL_POINTER_ERROR;
|
| - return -1;
|
| + return AECM_NULL_POINTER_ERROR;
|
| }
|
|
|
| if (aecm->initFlag != kInitCheck)
|
| {
|
| - aecm->lastError = AECM_UNINITIALIZED_ERROR;
|
| - return -1;
|
| + return AECM_UNINITIALIZED_ERROR;
|
| }
|
|
|
| if (nrOfSamples != 80 && nrOfSamples != 160)
|
| {
|
| - aecm->lastError = AECM_BAD_PARAMETER_ERROR;
|
| - return -1;
|
| + return AECM_BAD_PARAMETER_ERROR;
|
| }
|
|
|
| if (msInSndCardBuf < 0)
|
| {
|
| msInSndCardBuf = 0;
|
| - aecm->lastError = AECM_BAD_PARAMETER_WARNING;
|
| - retVal = -1;
|
| + retVal = AECM_BAD_PARAMETER_WARNING;
|
| } else if (msInSndCardBuf > 500)
|
| {
|
| msInSndCardBuf = 500;
|
| - aecm->lastError = AECM_BAD_PARAMETER_WARNING;
|
| - retVal = -1;
|
| + retVal = AECM_BAD_PARAMETER_WARNING;
|
| }
|
| msInSndCardBuf += 10;
|
| aecm->msInSndCardBuf = msInSndCardBuf;
|
| @@ -453,21 +444,18 @@ int32_t WebRtcAecm_set_config(void *aecmInst, AecmConfig config)
|
|
|
| if (aecm->initFlag != kInitCheck)
|
| {
|
| - aecm->lastError = AECM_UNINITIALIZED_ERROR;
|
| - return -1;
|
| + return AECM_UNINITIALIZED_ERROR;
|
| }
|
|
|
| if (config.cngMode != AecmFalse && config.cngMode != AecmTrue)
|
| {
|
| - aecm->lastError = AECM_BAD_PARAMETER_ERROR;
|
| - return -1;
|
| + return AECM_BAD_PARAMETER_ERROR;
|
| }
|
| aecm->aecmCore->cngMode = config.cngMode;
|
|
|
| if (config.echoMode < 0 || config.echoMode > 4)
|
| {
|
| - aecm->lastError = AECM_BAD_PARAMETER_ERROR;
|
| - return -1;
|
| + return AECM_BAD_PARAMETER_ERROR;
|
| }
|
| aecm->echoMode = config.echoMode;
|
|
|
| @@ -524,33 +512,6 @@ int32_t WebRtcAecm_set_config(void *aecmInst, AecmConfig config)
|
| return 0;
|
| }
|
|
|
| -int32_t WebRtcAecm_get_config(void *aecmInst, AecmConfig *config)
|
| -{
|
| - AecMobile* aecm = aecmInst;
|
| -
|
| - if (aecm == NULL)
|
| - {
|
| - return -1;
|
| - }
|
| -
|
| - if (config == NULL)
|
| - {
|
| - aecm->lastError = AECM_NULL_POINTER_ERROR;
|
| - return -1;
|
| - }
|
| -
|
| - if (aecm->initFlag != kInitCheck)
|
| - {
|
| - aecm->lastError = AECM_UNINITIALIZED_ERROR;
|
| - return -1;
|
| - }
|
| -
|
| - config->cngMode = aecm->aecmCore->cngMode;
|
| - config->echoMode = aecm->echoMode;
|
| -
|
| - return 0;
|
| -}
|
| -
|
| int32_t WebRtcAecm_InitEchoPath(void* aecmInst,
|
| const void* echo_path,
|
| size_t size_bytes)
|
| @@ -562,19 +523,16 @@ int32_t WebRtcAecm_InitEchoPath(void* aecmInst,
|
| return -1;
|
| }
|
| if (echo_path == NULL) {
|
| - aecm->lastError = AECM_NULL_POINTER_ERROR;
|
| - return -1;
|
| + return AECM_NULL_POINTER_ERROR;
|
| }
|
| if (size_bytes != WebRtcAecm_echo_path_size_bytes())
|
| {
|
| // Input channel size does not match the size of AECM
|
| - aecm->lastError = AECM_BAD_PARAMETER_ERROR;
|
| - return -1;
|
| + return AECM_BAD_PARAMETER_ERROR;
|
| }
|
| if (aecm->initFlag != kInitCheck)
|
| {
|
| - aecm->lastError = AECM_UNINITIALIZED_ERROR;
|
| - return -1;
|
| + return AECM_UNINITIALIZED_ERROR;
|
| }
|
|
|
| WebRtcAecm_InitEchoPathCore(aecm->aecmCore, echo_path_ptr);
|
| @@ -593,19 +551,16 @@ int32_t WebRtcAecm_GetEchoPath(void* aecmInst,
|
| return -1;
|
| }
|
| if (echo_path == NULL) {
|
| - aecm->lastError = AECM_NULL_POINTER_ERROR;
|
| - return -1;
|
| + return AECM_NULL_POINTER_ERROR;
|
| }
|
| if (size_bytes != WebRtcAecm_echo_path_size_bytes())
|
| {
|
| // Input channel size does not match the size of AECM
|
| - aecm->lastError = AECM_BAD_PARAMETER_ERROR;
|
| - return -1;
|
| + return AECM_BAD_PARAMETER_ERROR;
|
| }
|
| if (aecm->initFlag != kInitCheck)
|
| {
|
| - aecm->lastError = AECM_UNINITIALIZED_ERROR;
|
| - return -1;
|
| + return AECM_UNINITIALIZED_ERROR;
|
| }
|
|
|
| memcpy(echo_path_ptr, aecm->aecmCore->channelStored, size_bytes);
|
| @@ -617,17 +572,6 @@ size_t WebRtcAecm_echo_path_size_bytes()
|
| return (PART_LEN1 * sizeof(int16_t));
|
| }
|
|
|
| -int32_t WebRtcAecm_get_error_code(void *aecmInst)
|
| -{
|
| - AecMobile* aecm = aecmInst;
|
| -
|
| - if (aecm == NULL)
|
| - {
|
| - return -1;
|
| - }
|
| -
|
| - return aecm->lastError;
|
| -}
|
|
|
| static int WebRtcAecm_EstBufDelay(AecMobile* aecm, short msInSndCardBuf) {
|
| short delayNew, nSampSndCard;
|
|
|