Refactoring common_audio: Replace trivial multiplication macro
This multiplication macro literally use the '*' operator, so there is no need for it. BUG=3348,3353 TESTED=locally on linux and trybots R=kwiberg@webrtc.org, tina.legrand@webrtc.org, turaj@webrtc.org Review URL: https://webrtc-codereview.appspot.com/22109004 git-svn-id: http://webrtc.googlecode.com/svn/trunk@6964 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
@ -85,7 +85,6 @@
|
||||
(C + (B >> 16) * A + (((uint32_t)(0x0000FFFF & B) * A) >> 16))
|
||||
|
||||
#define WEBRTC_SPL_SAT(a, b, c) (b > a ? a : b < c ? c : b)
|
||||
#define WEBRTC_SPL_MUL_32_16(a, b) ((a) * (b))
|
||||
|
||||
// Shifting with negative numbers allowed
|
||||
// Positive means left shift
|
||||
|
@ -60,7 +60,6 @@ TEST_F(SplTest, MacroTest) {
|
||||
|
||||
EXPECT_EQ(21, WEBRTC_SPL_SAT(a, A, B));
|
||||
EXPECT_EQ(21, WEBRTC_SPL_SAT(a, B, A));
|
||||
EXPECT_EQ(-49149, WEBRTC_SPL_MUL_32_16(a, b));
|
||||
|
||||
// Shifting with negative numbers allowed
|
||||
int shift_amount = 1; // Workaround compiler warning using variable here.
|
||||
|
@ -313,7 +313,7 @@ static void CalcRootInvArSpec(const int16_t *ARCoefQ12,
|
||||
|
||||
for (k = 1; k < (AR_ORDER); k += 2) {
|
||||
for (n = 0; n < FRAMESAMPLES/8; n++)
|
||||
summQ16[n] += WEBRTC_SPL_RSHIFT_W32(WEBRTC_SPL_MUL_32_16(CorrQ11[k+1],WebRtcIsacfix_kCos[k][n]) + 2, 2);
|
||||
summQ16[n] += ((CorrQ11[k + 1] * WebRtcIsacfix_kCos[k][n]) + 2) >> 2;
|
||||
}
|
||||
|
||||
CS_ptrQ9 = WebRtcIsacfix_kCos[0];
|
||||
|
@ -66,7 +66,7 @@ static __inline void Intrp1DQ8(int32_t *x, int32_t *fx, int32_t *y, int32_t *fy)
|
||||
r32=fx[1]-fx[2];
|
||||
q32=fx[0]-fx[1];
|
||||
nom32=q32+r32;
|
||||
den32=WEBRTC_SPL_MUL_32_16((q32-r32), 2);
|
||||
den32 = (q32 - r32) * 2;
|
||||
if (nom32<0)
|
||||
sign1=-1;
|
||||
if (den32<0)
|
||||
@ -74,7 +74,8 @@ static __inline void Intrp1DQ8(int32_t *x, int32_t *fx, int32_t *y, int32_t *fy)
|
||||
|
||||
/* t = (q32+r32)/(2*(q32-r32)) = (fx[0]-fx[1] + fx[1]-fx[2])/(2 * fx[0]-fx[1] - (fx[1]-fx[2]))*/
|
||||
/* (Signs are removed because WebRtcSpl_DivResultInQ31 can't handle negative numbers) */
|
||||
t32=WebRtcSpl_DivResultInQ31(WEBRTC_SPL_MUL_32_16(nom32, sign1),WEBRTC_SPL_MUL_32_16(den32, sign2)); /* t in Q31, without signs */
|
||||
/* t in Q31, without signs */
|
||||
t32 = WebRtcSpl_DivResultInQ31(nom32 * sign1, den32 * sign2);
|
||||
|
||||
t16=(int16_t)WEBRTC_SPL_RSHIFT_W32(t32, 23); /* Q8 */
|
||||
t16=t16*sign1*sign2; /* t in Q8 with signs */
|
||||
|
@ -460,8 +460,7 @@ int WebRtcAecm_ProcessBlock(AecmCore_t * aecm,
|
||||
// Far end signal through channel estimate in Q8
|
||||
// How much can we shift right to preserve resolution
|
||||
tmp32no1 = echoEst32[i] - aecm->echoFilt[i];
|
||||
aecm->echoFilt[i] += WEBRTC_SPL_RSHIFT_W32(WEBRTC_SPL_MUL_32_16(tmp32no1,
|
||||
50), 8);
|
||||
aecm->echoFilt[i] += (tmp32no1 * 50) >> 8;
|
||||
|
||||
zeros32 = WebRtcSpl_NormW32(aecm->echoFilt[i]) + 1;
|
||||
zeros16 = WebRtcSpl_NormW16(supGain) + 1;
|
||||
|
@ -970,8 +970,7 @@ int WebRtcAecm_ProcessBlock(AecmCore_t* aecm,
|
||||
// Far end signal through channel estimate in Q8
|
||||
// How much can we shift right to preserve resolution
|
||||
tmp32no1 = echoEst32[i] - aecm->echoFilt[i];
|
||||
aecm->echoFilt[i] += WEBRTC_SPL_RSHIFT_W32(
|
||||
WEBRTC_SPL_MUL_32_16(tmp32no1, 50), 8);
|
||||
aecm->echoFilt[i] += (tmp32no1 * 50) >> 8;
|
||||
|
||||
zeros32 = WebRtcSpl_NormW32(aecm->echoFilt[i]) + 1;
|
||||
zeros16 = WebRtcSpl_NormW16(supGain) + 1;
|
||||
|
@ -187,7 +187,7 @@ int32_t WebRtcAgc_CalculateGainTable(int32_t *gainTable, // Q16
|
||||
}
|
||||
}
|
||||
numFIX = WEBRTC_SPL_LSHIFT_W32(WEBRTC_SPL_MUL_16_U16(maxGain, constMaxGain), 6); // Q14
|
||||
numFIX -= WEBRTC_SPL_MUL_32_16((int32_t)logApprox, diffGain); // Q14
|
||||
numFIX -= (int32_t)logApprox * diffGain; // Q14
|
||||
|
||||
// Calculate ratio
|
||||
// Shift |numFIX| as much as possible.
|
||||
@ -237,13 +237,13 @@ int32_t WebRtcAgc_CalculateGainTable(int32_t *gainTable, // Q16
|
||||
{
|
||||
tmp16 = WEBRTC_SPL_LSHIFT_W16(2, 14) - constLinApprox;
|
||||
tmp32no2 = WEBRTC_SPL_LSHIFT_W32(1, 14) - fracPart;
|
||||
tmp32no2 = WEBRTC_SPL_MUL_32_16(tmp32no2, tmp16);
|
||||
tmp32no2 *= tmp16;
|
||||
tmp32no2 = WEBRTC_SPL_RSHIFT_W32(tmp32no2, 13);
|
||||
tmp32no2 = WEBRTC_SPL_LSHIFT_W32(1, 14) - tmp32no2;
|
||||
} else
|
||||
{
|
||||
tmp16 = constLinApprox - WEBRTC_SPL_LSHIFT_W16(1, 14);
|
||||
tmp32no2 = WEBRTC_SPL_MUL_32_16(fracPart, tmp16);
|
||||
tmp32no2 = fracPart * tmp16;
|
||||
tmp32no2 = WEBRTC_SPL_RSHIFT_W32(tmp32no2, 13);
|
||||
}
|
||||
fracPart = (uint16_t)tmp32no2;
|
||||
|
@ -885,14 +885,14 @@ void WebRtcNsx_FeatureParameterExtraction(NsxInst_t* inst, int flag) {
|
||||
tmp32 = WEBRTC_SPL_MUL_16_16(inst->histLrt[i], j);
|
||||
avgHistLrtFX += tmp32;
|
||||
numHistLrt += inst->histLrt[i];
|
||||
avgSquareHistLrtFX += WEBRTC_SPL_MUL_32_16(tmp32, j);
|
||||
avgSquareHistLrtFX += tmp32 * j;
|
||||
}
|
||||
avgHistLrtComplFX = avgHistLrtFX;
|
||||
for (; i < HIST_PAR_EST; i++) {
|
||||
j = (2 * i + 1);
|
||||
tmp32 = WEBRTC_SPL_MUL_16_16(inst->histLrt[i], j);
|
||||
avgHistLrtComplFX += tmp32;
|
||||
avgSquareHistLrtFX += WEBRTC_SPL_MUL_32_16(tmp32, j);
|
||||
avgSquareHistLrtFX += tmp32 * j;
|
||||
}
|
||||
fluctLrtFX = WEBRTC_SPL_MUL(avgSquareHistLrtFX, numHistLrt);
|
||||
fluctLrtFX -= WEBRTC_SPL_MUL(avgHistLrtFX, avgHistLrtComplFX);
|
||||
@ -1083,7 +1083,7 @@ void WebRtcNsx_ComputeSpectralFlatness(NsxInst_t* inst, uint16_t* magn) {
|
||||
|
||||
//time average update of spectral flatness feature
|
||||
tmp32 = currentSpectralFlatness - (int32_t)inst->featureSpecFlat; // Q10
|
||||
tmp32 = WEBRTC_SPL_MUL_32_16(SPECT_FLAT_TAVG_Q14, tmp32); // Q24
|
||||
tmp32 *= SPECT_FLAT_TAVG_Q14; // Q24
|
||||
inst->featureSpecFlat = (uint32_t)((int32_t)inst->featureSpecFlat
|
||||
+ WEBRTC_SPL_RSHIFT_W32(tmp32, 14)); // Q10
|
||||
// done with flatness feature
|
||||
@ -1135,7 +1135,7 @@ void WebRtcNsx_ComputeSpectralDifference(NsxInst_t* inst, uint16_t* magnIn) {
|
||||
tmp16no1 = (int16_t)((int32_t)magnIn[i] - avgMagnFX);
|
||||
tmp32no2 = inst->avgMagnPause[i] - avgPauseFX;
|
||||
varMagnUFX += (uint32_t)WEBRTC_SPL_MUL_16_16(tmp16no1, tmp16no1); // Q(2*qMagn)
|
||||
tmp32no1 = WEBRTC_SPL_MUL_32_16(tmp32no2, tmp16no1); // Q(prevQMagn+qMagn)
|
||||
tmp32no1 = tmp32no2 * tmp16no1; // Q(prevQMagn+qMagn)
|
||||
covMagnPauseFX += tmp32no1; // Q(prevQMagn+qMagn)
|
||||
tmp32no1 = WEBRTC_SPL_RSHIFT_W32(tmp32no2, nShifts); // Q(prevQMagn-minPause)
|
||||
varPauseUFX += (uint32_t)WEBRTC_SPL_MUL(tmp32no1, tmp32no1); // Q(2*(prevQMagn-minPause))
|
||||
@ -1940,12 +1940,12 @@ int WebRtcNsx_ProcessCore(NsxInst_t* inst, short* speechFrame, short* speechFram
|
||||
if (nonSpeechProbFinal[i] > ONE_MINUS_PROB_RANGE_Q8) {
|
||||
if (nShifts < 0) {
|
||||
tmp32no1 = (int32_t)magnU16[i] - tmp32no2; // Q(qMagn)
|
||||
tmp32no1 = WEBRTC_SPL_MUL_32_16(tmp32no1, ONE_MINUS_GAMMA_PAUSE_Q8); // Q(8+prevQMagn+nShifts)
|
||||
tmp32no1 *= ONE_MINUS_GAMMA_PAUSE_Q8; // Q(8+prevQMagn+nShifts)
|
||||
tmp32no1 = WEBRTC_SPL_RSHIFT_W32(tmp32no1 + 128, 8); // Q(qMagn)
|
||||
} else {
|
||||
tmp32no1 = WEBRTC_SPL_LSHIFT_W32((int32_t)magnU16[i], nShifts)
|
||||
- inst->avgMagnPause[i]; // Q(qMagn+nShifts)
|
||||
tmp32no1 = WEBRTC_SPL_MUL_32_16(tmp32no1, ONE_MINUS_GAMMA_PAUSE_Q8); // Q(8+prevQMagn+nShifts)
|
||||
tmp32no1 *= ONE_MINUS_GAMMA_PAUSE_Q8; // Q(8+prevQMagn+nShifts)
|
||||
tmp32no1 = WEBRTC_SPL_RSHIFT_W32(tmp32no1 + (128 << nShifts), 8 + nShifts); // Q(qMagn)
|
||||
}
|
||||
tmp32no2 += tmp32no1; // Q(qMagn)
|
||||
|
@ -62,8 +62,7 @@ void WebRtcNsx_SpeechNoiseProb(NsxInst_t* inst,
|
||||
frac32 = tmp32 + 37;
|
||||
// tmp32 = log2(priorLocSnr[i])
|
||||
tmp32 = (int32_t)(((31 - zeros) << 12) + frac32) - (11 << 12); // Q12
|
||||
logTmp = WEBRTC_SPL_RSHIFT_W32(WEBRTC_SPL_MUL_32_16(tmp32, 178), 8);
|
||||
// log2(priorLocSnr[i])*log(2)
|
||||
logTmp = (tmp32 * 178) >> 8; // log2(priorLocSnr[i])*log(2)
|
||||
tmp32no1 = WEBRTC_SPL_RSHIFT_W32(logTmp + inst->logLrtTimeAvgW32[i], 1);
|
||||
// Q12
|
||||
inst->logLrtTimeAvgW32[i] += (besselTmpFX32 - tmp32no1); // Q12
|
||||
@ -248,14 +247,12 @@ void WebRtcNsx_SpeechNoiseProb(NsxInst_t* inst,
|
||||
if (normTmp + normTmp2 < 15) {
|
||||
invLrtFX = WEBRTC_SPL_RSHIFT_W32(invLrtFX, 15 - normTmp2 - normTmp);
|
||||
// Q(normTmp+normTmp2-7)
|
||||
tmp32no1 = WEBRTC_SPL_MUL_32_16(invLrtFX,
|
||||
(16384 - inst->priorNonSpeechProb));
|
||||
tmp32no1 = invLrtFX * (16384 - inst->priorNonSpeechProb);
|
||||
// Q(normTmp+normTmp2+7)
|
||||
invLrtFX = WEBRTC_SPL_SHIFT_W32(tmp32no1, 7 - normTmp - normTmp2);
|
||||
// Q14
|
||||
} else {
|
||||
tmp32no1 = WEBRTC_SPL_MUL_32_16(invLrtFX,
|
||||
(16384 - inst->priorNonSpeechProb));
|
||||
tmp32no1 = invLrtFX * (16384 - inst->priorNonSpeechProb);
|
||||
// Q22
|
||||
invLrtFX = WEBRTC_SPL_RSHIFT_W32(tmp32no1, 8); // Q14
|
||||
}
|
||||
|
Reference in New Issue
Block a user