Reland of Re-enable UBsan on AGC.

patchset #8 id:300001 of https://codereview.webrtc.org/2003623003/

This reverts commit 2b9423f7a18145255deb93f2505a4fd1c3fa9ad7.

BUG=webrtc:5530
TBR=peah@webrtc.org, kjellander@webrtc.org

Review-Url: https://codereview.webrtc.org/2063643003
Cr-Commit-Position: refs/heads/master@{#13132}
This commit is contained in:
minyue
2016-06-14 07:18:11 -07:00
committed by Commit bot
parent dedfd28a52
commit b1963b403f
4 changed files with 17 additions and 25 deletions

View File

@ -474,18 +474,18 @@ void WebRtcAgc_SaturationCtrl(LegacyAgc* stt,
void WebRtcAgc_ZeroCtrl(LegacyAgc* stt, int32_t* inMicLevel, int32_t* env) {
int16_t i;
int32_t tmp32 = 0;
int64_t tmp = 0;
int32_t midVal;
/* Is the input signal zero? */
for (i = 0; i < 10; i++) {
tmp32 += env[i];
tmp += env[i];
}
/* Each block is allowed to have a few non-zero
* samples.
*/
if (tmp32 < 500) {
if (tmp < 500) {
stt->msZero += 10;
} else {
stt->msZero = 0;

View File

@ -189,7 +189,7 @@ int32_t WebRtcAgc_CalculateGainTable(int32_t* gainTable, // Q16
// Calculate ratio
// Shift |numFIX| as much as possible.
// Ensure we avoid wrap-around in |den| as well.
if (numFIX > (den >> 8)) // |den| is Q8.
if (numFIX > (den >> 8) || -numFIX > (den >> 8)) // |den| is Q8.
{
zeros = WebRtcSpl_NormW32(numFIX);
} else {
@ -198,13 +198,11 @@ int32_t WebRtcAgc_CalculateGainTable(int32_t* gainTable, // Q16
numFIX *= 1 << zeros; // Q(14+zeros)
// Shift den so we end up in Qy1
tmp32no1 = WEBRTC_SPL_SHIFT_W32(den, zeros - 8); // Q(zeros)
if (numFIX < 0) {
numFIX -= tmp32no1 / 2;
} else {
numFIX += tmp32no1 / 2;
}
y32 = numFIX / tmp32no1; // in Q14
tmp32no1 = WEBRTC_SPL_SHIFT_W32(den, zeros - 9); // Q(zeros - 1)
y32 = numFIX / tmp32no1; // in Q15
// This is to do rounding in Q14.
y32 = y32 >= 0 ? (y32 + 1) >> 1 : -((-y32 + 1) >> 1);
if (limiterEnable && (i < limiterIdx)) {
tmp32 = WEBRTC_SPL_MUL_16_U16(i - 1, kLog10_2); // Q14
tmp32 -= limiterLvl * (1 << 14); // Q14