From ea29787df08679d0de6befce33b1d12048267d15 Mon Sep 17 00:00:00 2001 From: "bjornv@webrtc.org" Date: Tue, 23 Sep 2014 11:21:39 +0000 Subject: [PATCH] audio_processing/agc: Solved building with AGC_DEBUG + few style changes webrtc did not build if AGC_DEBUG was turned on. This CL fixes that. Has no impact on performance since it is development/debug code. * Name change to WEBRT_AGC_DEBUG_DUMP * Added build flag agc_debug_dump to .gypi * Added missing "%d" in printf at two places * Some line length related style changes Tested audioproc and modules_unittests with GYP_DEFINES=agc_debug_dump=1 webrtc/build/gyp_webrtc BUG=N/A TESTED=locally and trybots R=aluebs@webrtc.org, kwiberg@webrtc.org Review URL: https://webrtc-codereview.appspot.com/31429004 git-svn-id: http://webrtc.googlecode.com/svn/trunk@7271 4adac7df-926f-26a2-2b94-8c16560cd09d --- .../modules/audio_processing/agc/analog_agc.c | 145 +++++++++++------- .../modules/audio_processing/agc/analog_agc.h | 11 +- .../audio_processing/agc/digital_agc.c | 26 +++- .../audio_processing/agc/digital_agc.h | 8 +- .../audio_processing/audio_processing.gypi | 4 + 5 files changed, 120 insertions(+), 74 deletions(-) diff --git a/webrtc/modules/audio_processing/agc/analog_agc.c b/webrtc/modules/audio_processing/agc/analog_agc.c index 0376dae51b..32929ddaa0 100644 --- a/webrtc/modules/audio_processing/agc/analog_agc.c +++ b/webrtc/modules/audio_processing/agc/analog_agc.c @@ -19,7 +19,7 @@ #include #include -#ifdef AGC_DEBUG //test log +#ifdef WEBRTC_AGC_DEBUG_DUMP #include #endif #include "webrtc/modules/audio_processing/agc/analog_agc.h" @@ -139,10 +139,10 @@ int WebRtcAgc_AddMic(void *state, int16_t *in_mic, int16_t *in_mic_H, L = 8; } else { -#ifdef AGC_DEBUG //test log +#ifdef WEBRTC_AGC_DEBUG_DUMP fprintf(stt->fpt, "AGC->add_mic, frame %d: Invalid number of samples\n\n", - (stt->fcount + 1)); + stt->fcount + 1); #endif return -1; } @@ -160,10 +160,10 @@ int WebRtcAgc_AddMic(void *state, int16_t *in_mic, int16_t *in_mic_H, L = 16; } else { -#ifdef AGC_DEBUG //test log +#ifdef WEBRTC_AGC_DEBUG_DUMP fprintf(stt->fpt, "AGC->add_mic, frame %d: Invalid number of samples\n\n", - (stt->fcount + 1)); + stt->fcount + 1); #endif return -1; } @@ -177,10 +177,10 @@ int WebRtcAgc_AddMic(void *state, int16_t *in_mic, int16_t *in_mic_H, L = 16; } else { -#ifdef AGC_DEBUG +#ifdef WEBRTC_AGC_DEBUG_DUMP fprintf(stt->fpt, "AGC->add_mic, frame %d: Invalid sample rate\n\n", - (stt->fcount + 1)); + stt->fcount + 1); #endif return -1; } @@ -343,7 +343,7 @@ int WebRtcAgc_AddFarend(void *state, const int16_t *in_far, int16_t samples) { if ((samples != 80) && (samples != 160)) { -#ifdef AGC_DEBUG //test log +#ifdef WEBRTC_AGC_DEBUG_DUMP fprintf(stt->fpt, "AGC->add_far_end, frame %d: Invalid number of samples\n\n", stt->fcount); @@ -355,7 +355,7 @@ int WebRtcAgc_AddFarend(void *state, const int16_t *in_far, int16_t samples) { if ((samples != 160) && (samples != 320)) { -#ifdef AGC_DEBUG //test log +#ifdef WEBRTC_AGC_DEBUG_DUMP fprintf(stt->fpt, "AGC->add_far_end, frame %d: Invalid number of samples\n\n", stt->fcount); @@ -367,7 +367,7 @@ int WebRtcAgc_AddFarend(void *state, const int16_t *in_far, int16_t samples) { if ((samples != 160) && (samples != 320)) { -#ifdef AGC_DEBUG //test log +#ifdef WEBRTC_AGC_DEBUG_DUMP fprintf(stt->fpt, "AGC->add_far_end, frame %d: Invalid number of samples\n\n", stt->fcount); @@ -377,7 +377,7 @@ int WebRtcAgc_AddFarend(void *state, const int16_t *in_far, int16_t samples) subFrames = 160; } else { -#ifdef AGC_DEBUG //test log +#ifdef WEBRTC_AGC_DEBUG_DUMP fprintf(stt->fpt, "AGC->add_far_end, frame %d: Invalid sample rate\n\n", stt->fcount + 1); @@ -657,10 +657,12 @@ void WebRtcAgc_ZeroCtrl(Agc_t *stt, int32_t *inMicLevel, int32_t *env) stt->micVol = *inMicLevel; } -#ifdef AGC_DEBUG //test log +#ifdef WEBRTC_AGC_DEBUG_DUMP fprintf(stt->fpt, - "\t\tAGC->zeroCntrl, frame %d: 500 ms under threshold, micVol:\n", - stt->fcount, stt->micVol); + "\t\tAGC->zeroCntrl, frame %d: 500 ms under threshold," + " micVol: %d\n", + stt->fcount, + stt->micVol); #endif stt->activeSpeech = 0; @@ -771,14 +773,18 @@ int32_t WebRtcAgc_ProcessAnalog(void *state, int32_t inMicLevel, if (inMicLevelTmp > stt->maxAnalog) { -#ifdef AGC_DEBUG //test log - fprintf(stt->fpt, "\tAGC->ProcessAnalog, frame %d: micLvl > maxAnalog\n", stt->fcount); +#ifdef WEBRTC_AGC_DEBUG_DUMP + fprintf(stt->fpt, + "\tAGC->ProcessAnalog, frame %d: micLvl > maxAnalog\n", + stt->fcount); #endif return -1; } else if (inMicLevelTmp < stt->minLevel) { -#ifdef AGC_DEBUG //test log - fprintf(stt->fpt, "\tAGC->ProcessAnalog, frame %d: micLvl < minLevel\n", stt->fcount); +#ifdef WEBRTC_AGC_DEBUG_DUMP + fprintf(stt->fpt, + "\tAGC->ProcessAnalog, frame %d: micLvl < minLevel\n", + stt->fcount); #endif return -1; } @@ -813,9 +819,10 @@ int32_t WebRtcAgc_ProcessAnalog(void *state, int32_t inMicLevel, #ifdef MIC_LEVEL_FEEDBACK //stt->numBlocksMicLvlSat = 0; #endif -#ifdef AGC_DEBUG //test log +#ifdef WEBRTC_AGC_DEBUG_DUMP fprintf(stt->fpt, - "\tAGC->ProcessAnalog, frame %d: micLvl < minLevel by manual decrease, raise vol\n", + "\tAGC->ProcessAnalog, frame %d: micLvl < minLevel by manual" + " decrease, raise vol\n", stt->fcount); #endif } @@ -871,10 +878,11 @@ int32_t WebRtcAgc_ProcessAnalog(void *state, int32_t inMicLevel, } inMicLevelTmp = stt->micVol; -#ifdef AGC_DEBUG //test log +#ifdef WEBRTC_AGC_DEBUG_DUMP fprintf(stt->fpt, "\tAGC->ProcessAnalog, frame %d: saturated, micVol = %d\n", - stt->fcount, stt->micVol); + stt->fcount, + stt->micVol); #endif if (stt->micVol < stt->minOutput) @@ -1011,10 +1019,13 @@ int32_t WebRtcAgc_ProcessAnalog(void *state, int32_t inMicLevel, #ifdef MIC_LEVEL_FEEDBACK //stt->numBlocksMicLvlSat = 0; #endif -#ifdef AGC_DEBUG //test log +#ifdef WEBRTC_AGC_DEBUG_DUMP fprintf(stt->fpt, - "\tAGC->ProcessAnalog, frame %d: measure > 2ndUpperLim, micVol = %d, maxLevel = %d\n", - stt->fcount, stt->micVol, stt->maxLevel); + "\tAGC->ProcessAnalog, frame %d: measure >" + " 2ndUpperLim, micVol = %d, maxLevel = %d\n", + stt->fcount, + stt->micVol, + stt->maxLevel); #endif } } else if (stt->Rxx160_LPw32 > stt->upperLimit) @@ -1054,10 +1065,13 @@ int32_t WebRtcAgc_ProcessAnalog(void *state, int32_t inMicLevel, #ifdef MIC_LEVEL_FEEDBACK //stt->numBlocksMicLvlSat = 0; #endif -#ifdef AGC_DEBUG //test log +#ifdef WEBRTC_AGC_DEBUG_DUMP fprintf(stt->fpt, - "\tAGC->ProcessAnalog, frame %d: measure > UpperLim, micVol = %d, maxLevel = %d\n", - stt->fcount, stt->micVol, stt->maxLevel); + "\tAGC->ProcessAnalog, frame %d: measure >" + " UpperLim, micVol = %d, maxLevel = %d\n", + stt->fcount, + stt->micVol, + stt->maxLevel); #endif } } else if (stt->Rxx160_LPw32 < stt->lowerSecondaryLimit) @@ -1113,10 +1127,12 @@ int32_t WebRtcAgc_ProcessAnalog(void *state, int32_t inMicLevel, fprintf(stderr, "Sat mic Level: %d\n", stt->numBlocksMicLvlSat); } #endif -#ifdef AGC_DEBUG //test log +#ifdef WEBRTC_AGC_DEBUG_DUMP fprintf(stt->fpt, - "\tAGC->ProcessAnalog, frame %d: measure < 2ndLowerLim, micVol = %d\n", - stt->fcount, stt->micVol); + "\tAGC->ProcessAnalog, frame %d: measure <" + " 2ndLowerLim, micVol = %d\n", + stt->fcount, + stt->micVol); #endif } } else if (stt->Rxx160_LPw32 < stt->lowerLimit) @@ -1172,10 +1188,11 @@ int32_t WebRtcAgc_ProcessAnalog(void *state, int32_t inMicLevel, fprintf(stderr, "Sat mic Level: %d\n", stt->numBlocksMicLvlSat); } #endif -#ifdef AGC_DEBUG //test log +#ifdef WEBRTC_AGC_DEBUG_DUMP fprintf(stt->fpt, "\tAGC->ProcessAnalog, frame %d: measure < LowerLim, micVol = %d\n", - stt->fcount, stt->micVol); + stt->fcount, + stt->micVol); #endif } @@ -1272,9 +1289,10 @@ int WebRtcAgc_Process(void *agcInst, const int16_t *in_near, { if ((samples != 80) && (samples != 160)) { -#ifdef AGC_DEBUG //test log +#ifdef WEBRTC_AGC_DEBUG_DUMP fprintf(stt->fpt, - "AGC->Process, frame %d: Invalid number of samples\n\n", stt->fcount); + "AGC->Process, frame %d: Invalid number of samples\n\n", + stt->fcount); #endif return -1; } @@ -1283,9 +1301,10 @@ int WebRtcAgc_Process(void *agcInst, const int16_t *in_near, { if ((samples != 160) && (samples != 320)) { -#ifdef AGC_DEBUG //test log +#ifdef WEBRTC_AGC_DEBUG_DUMP fprintf(stt->fpt, - "AGC->Process, frame %d: Invalid number of samples\n\n", stt->fcount); + "AGC->Process, frame %d: Invalid number of samples\n\n", + stt->fcount); #endif return -1; } @@ -1294,18 +1313,20 @@ int WebRtcAgc_Process(void *agcInst, const int16_t *in_near, { if ((samples != 160) && (samples != 320)) { -#ifdef AGC_DEBUG //test log +#ifdef WEBRTC_AGC_DEBUG_DUMP fprintf(stt->fpt, - "AGC->Process, frame %d: Invalid number of samples\n\n", stt->fcount); + "AGC->Process, frame %d: Invalid number of samples\n\n", + stt->fcount); #endif return -1; } subFrames = 160; } else { -#ifdef AGC_DEBUG// test log +#ifdef WEBRTC_AGC_DEBUG_DUMP fprintf(stt->fpt, - "AGC->Process, frame %d: Invalid sample rate\n\n", stt->fcount); + "AGC->Process, frame %d: Invalid sample rate\n\n", + stt->fcount); #endif return -1; } @@ -1341,7 +1362,7 @@ int WebRtcAgc_Process(void *agcInst, const int16_t *in_near, } } -#ifdef AGC_DEBUG//test log +#ifdef WEBRTC_AGC_DEBUG_DUMP stt->fcount++; #endif @@ -1350,8 +1371,10 @@ int WebRtcAgc_Process(void *agcInst, const int16_t *in_near, if (WebRtcAgc_ProcessDigital(&stt->digitalAgc, &in_near[i], &in_near_H[i], &out[i], &out_H[i], stt->fs, stt->lowLevelSignal) == -1) { -#ifdef AGC_DEBUG//test log - fprintf(stt->fpt, "AGC->Process, frame %d: Error from DigAGC\n\n", stt->fcount); +#ifdef WEBRTC_AGC_DEBUG_DUMP + fprintf(stt->fpt, + "AGC->Process, frame %d: Error from DigAGC\n\n", + stt->fcount); #endif return -1; } @@ -1364,8 +1387,14 @@ int WebRtcAgc_Process(void *agcInst, const int16_t *in_near, return -1; } } -#ifdef AGC_DEBUG//test log - fprintf(stt->agcLog, "%5d\t%d\t%d\t%d\n", stt->fcount, inMicLevelTmp, *outMicLevel, stt->maxLevel, stt->micVol); +#ifdef WEBRTC_AGC_DEBUG_DUMP + fprintf(stt->agcLog, + "%5d\t%d\t%d\t%d\t%d\n", + stt->fcount, + inMicLevelTmp, + *outMicLevel, + stt->maxLevel, + stt->micVol); #endif /* update queue */ @@ -1441,8 +1470,10 @@ int WebRtcAgc_set_config(void *agcInst, WebRtcAgc_config_t agcConfig) if (WebRtcAgc_CalculateGainTable(&(stt->digitalAgc.gainTable[0]), stt->compressionGaindB, stt->targetLevelDbfs, stt->limiterEnable, stt->analogTarget) == -1) { -#ifdef AGC_DEBUG//test log - fprintf(stt->fpt, "AGC->set_config, frame %d: Error from calcGainTable\n\n", stt->fcount); +#ifdef WEBRTC_AGC_DEBUG_DUMP + fprintf(stt->fpt, + "AGC->set_config, frame %d: Error from calcGainTable\n\n", + stt->fcount); #endif return -1; } @@ -1498,7 +1529,7 @@ int WebRtcAgc_Create(void **agcInst) return -1; } -#ifdef AGC_DEBUG +#ifdef WEBRTC_AGC_DEBUG_DUMP stt->fpt = fopen("./agc_test_log.txt", "wt"); stt->agcLog = fopen("./agc_debug_log.txt", "wt"); stt->digitalAgc.logFile = fopen("./agc_log.txt", "wt"); @@ -1515,7 +1546,7 @@ int WebRtcAgc_Free(void *state) Agc_t *stt; stt = (Agc_t *)state; -#ifdef AGC_DEBUG +#ifdef WEBRTC_AGC_DEBUG_DUMP fclose(stt->fpt); fclose(stt->agcLog); fclose(stt->digitalAgc.logFile); @@ -1553,13 +1584,13 @@ int WebRtcAgc_Init(void *agcInst, int32_t minLevel, int32_t maxLevel, * 2 - Digital Automatic Gain Control [-targetLevelDbfs (default -3 dBOv)] * 3 - Fixed Digital Gain [compressionGaindB (default 8 dB)] */ -#ifdef AGC_DEBUG//test log +#ifdef WEBRTC_AGC_DEBUG_DUMP stt->fcount = 0; fprintf(stt->fpt, "AGC->Init\n"); #endif if (agcMode < kAgcModeUnchanged || agcMode > kAgcModeFixedDigital) { -#ifdef AGC_DEBUG//test log +#ifdef WEBRTC_AGC_DEBUG_DUMP fprintf(stt->fpt, "AGC->Init: error, incorrect mode\n\n"); #endif return -1; @@ -1616,10 +1647,12 @@ int WebRtcAgc_Init(void *agcInst, int32_t minLevel, int32_t maxLevel, stt->numBlocksMicLvlSat = 0; stt->micLvlSat = 0; #endif -#ifdef AGC_DEBUG//test log +#ifdef WEBRTC_AGC_DEBUG_DUMP fprintf(stt->fpt, "AGC->Init: minLevel = %d, maxAnalog = %d, maxLevel = %d\n", - stt->minLevel, stt->maxAnalog, stt->maxLevel); + stt->minLevel, + stt->maxAnalog, + stt->maxLevel); #endif /* Minimum output volume is 4% higher than the available lowest volume level */ @@ -1687,13 +1720,13 @@ int WebRtcAgc_Init(void *agcInst, int32_t minLevel, int32_t maxLevel, /* Only positive values are allowed that are not too large */ if ((minLevel >= maxLevel) || (maxLevel & 0xFC000000)) { -#ifdef AGC_DEBUG//test log +#ifdef WEBRTC_AGC_DEBUG_DUMP fprintf(stt->fpt, "minLevel, maxLevel value(s) are invalid\n\n"); #endif return -1; } else { -#ifdef AGC_DEBUG//test log +#ifdef WEBRTC_AGC_DEBUG_DUMP fprintf(stt->fpt, "\n"); #endif return 0; diff --git a/webrtc/modules/audio_processing/agc/analog_agc.h b/webrtc/modules/audio_processing/agc/analog_agc.h index b036f449c7..19b324f1ee 100644 --- a/webrtc/modules/audio_processing/agc/analog_agc.h +++ b/webrtc/modules/audio_processing/agc/analog_agc.h @@ -15,9 +15,8 @@ #include "webrtc/modules/audio_processing/agc/include/gain_control.h" #include "webrtc/typedefs.h" -//#define AGC_DEBUG //#define MIC_LEVEL_FEEDBACK -#ifdef AGC_DEBUG +#ifdef WEBRTC_AGC_DEBUG_DUMP #include #endif @@ -122,10 +121,10 @@ typedef struct AgcVad_t vadMic; DigitalAgc_t digitalAgc; -#ifdef AGC_DEBUG - FILE* fpt; - FILE* agcLog; - int32_t fcount; +#ifdef WEBRTC_AGC_DEBUG_DUMP + FILE* fpt; + FILE* agcLog; + int32_t fcount; #endif int16_t lowLevelSignal; diff --git a/webrtc/modules/audio_processing/agc/digital_agc.c b/webrtc/modules/audio_processing/agc/digital_agc.c index e74bb4c024..da087ca3c1 100644 --- a/webrtc/modules/audio_processing/agc/digital_agc.c +++ b/webrtc/modules/audio_processing/agc/digital_agc.c @@ -16,7 +16,7 @@ #include #include -#ifdef AGC_DEBUG +#ifdef WEBRTC_AGC_DEBUG_DUMP #include #endif @@ -274,7 +274,7 @@ int32_t WebRtcAgc_InitDigital(DigitalAgc_t *stt, int16_t agcMode) stt->gain = 65536; stt->gatePrevious = 0; stt->agcMode = agcMode; -#ifdef AGC_DEBUG +#ifdef WEBRTC_AGC_DEBUG_DUMP stt->frameCounter = 0; #endif @@ -397,9 +397,14 @@ int32_t WebRtcAgc_ProcessDigital(DigitalAgc_t *stt, const int16_t *in_near, decay = 0; } } -#ifdef AGC_DEBUG +#ifdef WEBRTC_AGC_DEBUG_DUMP stt->frameCounter++; - fprintf(stt->logFile, "%5.2f\t%d\t%d\t%d\t", (float)(stt->frameCounter) / 100, logratio, decay, stt->vadNearend.stdLongTerm); + fprintf(stt->logFile, + "%5.2f\t%d\t%d\t%d\t", + (float)(stt->frameCounter) / 100, + logratio, + decay, + stt->vadNearend.stdLongTerm); #endif // Find max amplitude per sub frame // iterate over sub frames @@ -461,10 +466,15 @@ int32_t WebRtcAgc_ProcessDigital(DigitalAgc_t *stt, const int16_t *in_near, frac = (int16_t)WEBRTC_SPL_RSHIFT_W32(tmp32, 19); // Q12 tmp32 = WEBRTC_SPL_MUL((stt->gainTable[zeros-1] - stt->gainTable[zeros]), frac); gains[k + 1] = stt->gainTable[zeros] + WEBRTC_SPL_RSHIFT_W32(tmp32, 12); -#ifdef AGC_DEBUG - if (k == 0) - { - fprintf(stt->logFile, "%d\t%d\t%d\t%d\t%d\n", env[0], cur_level, stt->capacitorFast, stt->capacitorSlow, zeros); +#ifdef WEBRTC_AGC_DEBUG_DUMP + if (k == 0) { + fprintf(stt->logFile, + "%d\t%d\t%d\t%d\t%d\n", + env[0], + cur_level, + stt->capacitorFast, + stt->capacitorSlow, + zeros); } #endif } diff --git a/webrtc/modules/audio_processing/agc/digital_agc.h b/webrtc/modules/audio_processing/agc/digital_agc.h index 6bd086fc59..3dcd937516 100644 --- a/webrtc/modules/audio_processing/agc/digital_agc.h +++ b/webrtc/modules/audio_processing/agc/digital_agc.h @@ -11,7 +11,7 @@ #ifndef WEBRTC_MODULES_AUDIO_PROCESSING_AGC_MAIN_SOURCE_DIGITAL_AGC_H_ #define WEBRTC_MODULES_AUDIO_PROCESSING_AGC_MAIN_SOURCE_DIGITAL_AGC_H_ -#ifdef AGC_DEBUG +#ifdef WEBRTC_AGC_DEBUG_DUMP #include #endif #include "webrtc/common_audio/signal_processing/include/signal_processing_library.h" @@ -46,9 +46,9 @@ typedef struct int16_t agcMode; AgcVad_t vadNearend; AgcVad_t vadFarend; -#ifdef AGC_DEBUG - FILE* logFile; - int frameCounter; +#ifdef WEBRTC_AGC_DEBUG_DUMP + FILE* logFile; + int frameCounter; #endif } DigitalAgc_t; diff --git a/webrtc/modules/audio_processing/audio_processing.gypi b/webrtc/modules/audio_processing/audio_processing.gypi index 9298f118f9..9bbcfae7f8 100644 --- a/webrtc/modules/audio_processing/audio_processing.gypi +++ b/webrtc/modules/audio_processing/audio_processing.gypi @@ -21,6 +21,7 @@ 'variables': { # Outputs some low-level debug files. 'aec_debug_dump%': 0, + 'agc_debug_dump%': 0, # Disables the usual mode where we trust the reported system delay # values the AEC receives. The corresponding define is set appropriately @@ -93,6 +94,9 @@ ['aec_untrusted_delay_for_testing==1', { 'defines': ['WEBRTC_UNTRUSTED_DELAY',], }], + ['agc_debug_dump==1', { + 'defines': ['WEBRTC_AGC_DEBUG_DUMP',], + }], ['enable_protobuf==1', { 'dependencies': ['audioproc_debug_proto'], 'defines': ['WEBRTC_AUDIOPROC_DEBUG_DUMP'],