Refactor audio_coding/codecs/isac/fix: Removed usage of trivial macro WEBRTC_SPL_LSHIFT_W32()

The macro is defined as
#define WEBRTC_SPL_LSHIFT_W32(a, b) ((a) << (b))
hence trivial.
The macro name may in fact mislead the user to assume a cast/truncation to int32_t is done.
- Removing usage of it.
- Some style changes.

BUG=3348, 3353
TESTED=locally on linux and trybots
R=kwiberg@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/46749005

Cr-Commit-Position: refs/heads/master@{#8918}
This commit is contained in:
Bjorn Volcker
2015-04-02 06:59:38 +02:00
parent 64c1e8cda5
commit d4e75016a3
15 changed files with 109 additions and 129 deletions

View File

@ -101,7 +101,7 @@ int WebRtcIsacfix_EncHistMulti(Bitstr_enc *streamData,
* W_upper < 2^24 */
while ( !(W_upper & 0xFF000000) )
{
W_upper = WEBRTC_SPL_LSHIFT_W32(W_upper, 8);
W_upper <<= 8;
if (streamData->full == 0) {
*streamPtr++ += (uint16_t)(streamData->streamval >> 24);
streamData->full = 1;
@ -113,7 +113,7 @@ int WebRtcIsacfix_EncHistMulti(Bitstr_enc *streamData,
if( streamPtr > maxStreamPtr ) {
return -ISAC_DISALLOWED_BITSTREAM_LENGTH;
}
streamData->streamval = WEBRTC_SPL_LSHIFT_W32(streamData->streamval, 8);
streamData->streamval <<= 8;
}
}
@ -174,7 +174,7 @@ int16_t WebRtcIsacfix_DecHistBisectMulti(int16_t *data,
if (streamData->stream_index == 0)
{
/* read first word from bytestream */
streamval = WEBRTC_SPL_LSHIFT_W32((uint32_t)*streamPtr++, 16);
streamval = (uint32_t)*streamPtr++ << 16;
streamval |= *streamPtr++;
} else {
streamval = streamData->streamval;
@ -230,14 +230,13 @@ int16_t WebRtcIsacfix_DecHistBisectMulti(int16_t *data,
{
/* read next byte from stream */
if (streamData->full == 0) {
streamval = WEBRTC_SPL_LSHIFT_W32(streamval, 8) |
(*streamPtr++ & 0x00FF);
streamval = (streamval << 8) | (*streamPtr++ & 0x00FF);
streamData->full = 1;
} else {
streamval = (streamval << 8) | (*streamPtr >> 8);
streamData->full = 0;
}
W_upper = WEBRTC_SPL_LSHIFT_W32(W_upper, 8);
W_upper <<= 8;
}
@ -379,13 +378,13 @@ int16_t WebRtcIsacfix_DecHistOneStepMulti(int16_t *data,
{
/* read next byte from stream */
if (streamData->full == 0) {
streamval = WEBRTC_SPL_LSHIFT_W32(streamval, 8) | (*streamPtr++ & 0x00FF);
streamval = (streamval << 8) | (*streamPtr++ & 0x00FF);
streamData->full = 1;
} else {
streamval = WEBRTC_SPL_LSHIFT_W32(streamval, 8) | (*streamPtr >> 8);
streamval = (streamval << 8) | (*streamPtr >> 8);
streamData->full = 0;
}
W_upper = WEBRTC_SPL_LSHIFT_W32(W_upper, 8);
W_upper <<= 8;
}
}

View File

@ -377,18 +377,17 @@ int16_t WebRtcIsacfix_DecLogisticMulti2(int16_t *dataQ7,
if (streamPtr < streamData->stream + streamData->stream_size) {
/* read next byte from stream */
if (streamData->full == 0) {
streamVal = WEBRTC_SPL_LSHIFT_W32(streamVal, 8) | (*streamPtr++ & 0x00FF);
streamVal = (streamVal << 8) | (*streamPtr++ & 0x00FF);
streamData->full = 1;
} else {
streamVal = WEBRTC_SPL_LSHIFT_W32(streamVal, 8) |
((*streamPtr) >> 8);
streamVal = (streamVal << 8) | (*streamPtr >> 8);
streamData->full = 0;
}
} else {
/* Intending to read outside the stream. This can happen for the last
* two or three bytes. It is how the algorithm is implemented. Do
* not read from the bit stream and insert zeros instead. */
streamVal = WEBRTC_SPL_LSHIFT_W32(streamVal, 8);
streamVal <<= 8;
if (streamData->full == 0) {
offset++; // We would have incremented the pointer in this case.
streamData->full = 1;
@ -396,7 +395,7 @@ int16_t WebRtcIsacfix_DecLogisticMulti2(int16_t *dataQ7,
streamData->full = 0;
}
}
W_upper = WEBRTC_SPL_LSHIFT_W32(W_upper, 8);
W_upper <<= 8;
}
}
envCount++;

View File

@ -259,7 +259,7 @@ int32_t WebRtcIsacfix_UpdateUplinkBwImpl(BwEstimatorstr *bweStr,
/* Check send time difference between this packet and previous received */
sendTimeDiff = sendTime - bweStr->prevSendTime;
if (sendTimeDiff <= WEBRTC_SPL_LSHIFT_W32(frameSizeSampl, 1)) {
if (sendTimeDiff <= frameSizeSampl * 2) {
/* Only update if 3 seconds has past since last update */
if ((arrivalTime - bweStr->lastUpdate) > FS3) {
@ -324,8 +324,7 @@ int32_t WebRtcIsacfix_UpdateUplinkBwImpl(BwEstimatorstr *bweStr,
if (!(bweStr->highSpeedSend && bweStr->highSpeedRec)) {
if (arrTimeDiff > frameSizeSampl) {
if (sendTimeDiff > 0) {
lateDiff = arrTimeDiff - sendTimeDiff -
WEBRTC_SPL_LSHIFT_W32(frameSizeSampl, 1);
lateDiff = arrTimeDiff - sendTimeDiff - frameSizeSampl * 2;
} else {
lateDiff = arrTimeDiff - frameSizeSampl;
}
@ -433,11 +432,11 @@ int32_t WebRtcIsacfix_UpdateUplinkBwImpl(BwEstimatorstr *bweStr,
/* difference between projected and actual arrival time differences */
/* Q9 (only shift arrTimeDiff by 5 to simulate divide by 16 (need to revisit if change sampling rate) DH */
if (WEBRTC_SPL_LSHIFT_W32(arrTimeDiff, 6) > (int32_t)arrTimeProj) {
arrTimeNoise = WEBRTC_SPL_LSHIFT_W32(arrTimeDiff, 6) - arrTimeProj;
if ((arrTimeDiff << 6) > (int32_t)arrTimeProj) {
arrTimeNoise = (arrTimeDiff << 6) - arrTimeProj;
sign = 1;
} else {
arrTimeNoise = arrTimeProj - WEBRTC_SPL_LSHIFT_W32(arrTimeDiff, 6);
arrTimeNoise = arrTimeProj - (arrTimeDiff << 6);
sign = -1;
}
@ -446,8 +445,8 @@ int32_t WebRtcIsacfix_UpdateUplinkBwImpl(BwEstimatorstr *bweStr,
/* long term averaged absolute jitter, Q15 */
weight >>= 3;
bweStr->recJitter = WEBRTC_SPL_MUL(weight, WEBRTC_SPL_LSHIFT_W32(arrTimeNoiseAbs, 5))
+ WEBRTC_SPL_MUL(1024 - weight, bweStr->recJitter);
bweStr->recJitter = weight * (arrTimeNoiseAbs << 5) +
(1024 - weight) * bweStr->recJitter;
/* remove the fractional portion */
bweStr->recJitter >>= 10;
@ -459,13 +458,13 @@ int32_t WebRtcIsacfix_UpdateUplinkBwImpl(BwEstimatorstr *bweStr,
/* short term averaged absolute jitter */
/* Calculation in Q13 products in Q23 */
bweStr->recJitterShortTermAbs = WEBRTC_SPL_MUL(51, WEBRTC_SPL_LSHIFT_W32(arrTimeNoiseAbs, 3)) +
bweStr->recJitterShortTermAbs = 51 * (arrTimeNoiseAbs << 3) +
WEBRTC_SPL_MUL(973, bweStr->recJitterShortTermAbs);
bweStr->recJitterShortTermAbs >>= 10;
/* short term averaged jitter */
/* Calculation in Q13 products in Q23 */
bweStr->recJitterShortTerm = WEBRTC_SPL_MUL(205, WEBRTC_SPL_LSHIFT_W32(arrTimeNoise, 3)) * sign +
bweStr->recJitterShortTerm = 205 * (arrTimeNoise << 3) * sign +
WEBRTC_SPL_MUL(3891, bweStr->recJitterShortTerm);
if (bweStr->recJitterShortTerm < 0) {
@ -557,7 +556,7 @@ int16_t WebRtcIsacfix_UpdateUplinkBwRec(BwEstimatorstr *bweStr,
/* compute the jitter estimate as decoded on the other side in Q9 */
/* sendMaxDelayAvg = 0.9 * sendMaxDelayAvg + 0.1 * MAX_ISAC_MD */
bweStr->sendMaxDelayAvg = WEBRTC_SPL_MUL(461, bweStr->sendMaxDelayAvg) +
WEBRTC_SPL_MUL(51, WEBRTC_SPL_LSHIFT_W32((int32_t)MAX_ISAC_MD, 9));
51 * (MAX_ISAC_MD << 9);
bweStr->sendMaxDelayAvg >>= 9;
} else {
@ -565,7 +564,7 @@ int16_t WebRtcIsacfix_UpdateUplinkBwRec(BwEstimatorstr *bweStr,
/* compute the jitter estimate as decoded on the other side in Q9 */
/* sendMaxDelayAvg = 0.9 * sendMaxDelayAvg + 0.1 * MIN_ISAC_MD */
bweStr->sendMaxDelayAvg = WEBRTC_SPL_MUL(461, bweStr->sendMaxDelayAvg) +
WEBRTC_SPL_MUL(51, WEBRTC_SPL_LSHIFT_W32((int32_t)MIN_ISAC_MD,9));
51 * (MIN_ISAC_MD << 9);
bweStr->sendMaxDelayAvg >>= 9;
}
@ -648,7 +647,7 @@ uint16_t WebRtcIsacfix_GetDownlinkBwIndexImpl(BwEstimatorstr *bweStr)
tempTermX = WEBRTC_SPL_UMUL(461, bweStr->recBwAvgQ) - tempTerm1;
/* rate in Q16 */
tempTermY = WEBRTC_SPL_LSHIFT_W32((int32_t)rate, 16);
tempTermY = rate << 16;
/* 0.1 * kQRateTable[rateInd] = KQRate01[rateInd] */
tempTerm1 = tempTermX + KQRate01[rateInd] - tempTermY;
@ -690,7 +689,7 @@ uint16_t WebRtcIsacfix_GetDownlinkBwIndexImpl(BwEstimatorstr *bweStr)
tempMax = 652800; /* MAX_ISAC_MD * 0.1 in Q18 */
tempMin = 130560; /* MIN_ISAC_MD * 0.1 in Q18 */
tempTermX = WEBRTC_SPL_MUL((int32_t)bweStr->recMaxDelayAvgQ, (int32_t)461);
tempTermY = WEBRTC_SPL_LSHIFT_W32((int32_t)maxDelay, 18);
tempTermY = maxDelay << 18;
tempTerm1 = tempTermX + tempMax - tempTermY;
tempTerm2 = tempTermY - tempTermX - tempMin;

View File

@ -191,7 +191,7 @@ int16_t WebRtcIsacfix_DecodeImpl(int16_t *signal_out16,
/* --- Store Highpass Residual --- */
for (k = 0; k < FRAMESAMPLES/2; k++)
Vector_Word32_1[k] = WEBRTC_SPL_LSHIFT_W32(Vector_Word32_2[k], 9); // Q16 -> Q25
Vector_Word32_1[k] = Vector_Word32_2[k] << 9; // Q16 -> Q25
for( k = 0; k < PITCH_MAX_LAG + 10; k++ )
(ISACdec_obj->plcstr_obj).prevHP[k] = Vector_Word32_1[FRAMESAMPLES/2 - (PITCH_MAX_LAG + 10) + k];

View File

@ -46,9 +46,7 @@ static int16_t plc_filterma_Fast(
{
int i, j;
int32_t o;
int32_t lim;
lim = WEBRTC_SPL_LSHIFT_W32( (int32_t)1, 15 + rshift )-1;
int32_t lim = (1 << (15 + rshift)) - 1;
for (i = 0; i < len; i++)
{
@ -517,8 +515,7 @@ int16_t WebRtcIsacfix_DecodePlcImpl(int16_t *signal_out16,
(int16_t) (7) );
for( i = 0; i < FRAMESAMPLES_HALF; i++ )
Vector_Word32_2[i] = WEBRTC_SPL_LSHIFT_W32(
(int32_t)Vector_Word16_Extended_2[i], rshift );
Vector_Word32_2[i] = Vector_Word16_Extended_2[i] << rshift;
Vector_Word16_1 = Vector_Word16_Extended_1;
}

View File

@ -108,8 +108,8 @@ static int16_t CalcLogN(int32_t arg) {
int16_t zeros, log2, frac, logN;
zeros=WebRtcSpl_NormU32(arg);
frac=(int16_t)WEBRTC_SPL_RSHIFT_U32(WEBRTC_SPL_LSHIFT_W32(arg, zeros)&0x7FFFFFFF, 23);
log2=(int16_t)(WEBRTC_SPL_LSHIFT_W32(31-zeros, 8)+frac); // log2(x) in Q8
frac = (int16_t)((uint32_t)((arg << zeros) & 0x7FFFFFFF) >> 23);
log2 = (int16_t)(((31 - zeros) << 8) + frac); // log2(x) in Q8
logN=(int16_t)WEBRTC_SPL_MUL_16_16_RSFT(log2,22713,15); //Q8*Q15 log(2) = 0.693147 = 22713 in Q15
logN=logN+11; //Scalar compensation which minimizes the (log(x)-logN(x))^2 error over all x.
@ -138,10 +138,10 @@ static int32_t CalcExpN(int16_t x) {
ax=(int16_t)WEBRTC_SPL_MUL_16_16_RSFT(x, 23637, 14); //Q8
axINT = ax >> 8; //Q0
axFRAC = ax&0x00FF;
exp16 = WEBRTC_SPL_LSHIFT_W32(1, axINT); //Q0
exp16 = 1 << axINT; // Q0
axFRAC = axFRAC+256; //Q8
exp = exp16 * axFRAC; // Q0*Q8 = Q8
exp = WEBRTC_SPL_LSHIFT_W32(exp, 9); //Q17
exp <<= 9; // Q17
} else {
// ax=(int16_t)WEBRTC_SPL_MUL_16_16_RSFT(x, 23637+700, 14); //Q8
ax=(int16_t)WEBRTC_SPL_MUL_16_16_RSFT(x, 23637, 14); //Q8
@ -228,7 +228,7 @@ static void CalcInvArSpec(const int16_t *ARCoefQ12,
sum >>= 15;
CorrQ11[k] = (sum * tmpGain + round) >> shftVal;
}
sum = WEBRTC_SPL_LSHIFT_W32(CorrQ11[0], 7);
sum = CorrQ11[0] << 7;
for (n = 0; n < FRAMESAMPLES/8; n++)
CurveQ16[n] = sum;
@ -258,8 +258,9 @@ static void CalcInvArSpec(const int16_t *ARCoefQ12,
}
for (k=0; k<FRAMESAMPLES/8; k++) {
CurveQ16[FRAMESAMPLES/4-1 - k] = CurveQ16[k] - WEBRTC_SPL_LSHIFT_W32(diffQ16[k], shftVal);
CurveQ16[k] += WEBRTC_SPL_LSHIFT_W32(diffQ16[k], shftVal);
int32_t diff_q16 = diffQ16[k] << shftVal;
CurveQ16[FRAMESAMPLES / 4 - 1 - k] = CurveQ16[k] - diff_q16;
CurveQ16[k] += diff_q16;
}
}
@ -301,7 +302,7 @@ static void CalcRootInvArSpec(const int16_t *ARCoefQ12,
sum >>= 15;
CorrQ11[k] = (sum * tmpGain + round) >> shftVal;
}
sum = WEBRTC_SPL_LSHIFT_W32(CorrQ11[0], 7);
sum = CorrQ11[0] << 7;
for (n = 0; n < FRAMESAMPLES/8; n++)
summQ16[n] = sum;
@ -330,14 +331,14 @@ static void CalcRootInvArSpec(const int16_t *ARCoefQ12,
diffQ16[n] += (CS_ptrQ9[n] * (CorrQ11[k + 1] >> shftVal) + 2) >> 2;
}
in_sqrt = summQ16[0] + WEBRTC_SPL_LSHIFT_W32(diffQ16[0], shftVal);
in_sqrt = summQ16[0] + (diffQ16[0] << shftVal);
/* convert to magnitude spectrum, by doing square-roots (modified from SPLIB) */
res = 1 << (WebRtcSpl_GetSizeInBits(in_sqrt) >> 1);
for (k = 0; k < FRAMESAMPLES/8; k++)
{
in_sqrt = summQ16[k] + WEBRTC_SPL_LSHIFT_W32(diffQ16[k], shftVal);
in_sqrt = summQ16[k] + (diffQ16[k] << shftVal);
i = 10;
/* make in_sqrt positive to prohibit sqrt of negative values */
@ -355,7 +356,8 @@ static void CalcRootInvArSpec(const int16_t *ARCoefQ12,
}
for (k = FRAMESAMPLES/8; k < FRAMESAMPLES/4; k++) {
in_sqrt = summQ16[FRAMESAMPLES/4-1 - k] - WEBRTC_SPL_LSHIFT_W32(diffQ16[FRAMESAMPLES/4-1 - k], shftVal);
in_sqrt = summQ16[FRAMESAMPLES / 4 - 1 - k] -
(diffQ16[FRAMESAMPLES / 4 - 1 - k] << shftVal);
i = 10;
/* make in_sqrt positive to prohibit sqrt of negative values */
@ -493,8 +495,8 @@ int16_t WebRtcIsacfix_DecodeSpec(Bitstr_dec *streamdata,
{
for (k = 0; k < FRAMESAMPLES; k += 4)
{
gainQ10 = WebRtcSpl_DivW32W16ResW16(WEBRTC_SPL_LSHIFT_W32((int32_t)30, 10),
(int16_t)WEBRTC_SPL_RSHIFT_U32(invARSpec2_Q16[k>>2] + (uint32_t)2195456, 16));
gainQ10 = WebRtcSpl_DivW32W16ResW16(30 << 10,
(int16_t)((uint32_t)(invARSpec2_Q16[k >> 2] + 2195456) >> 16));
*frQ7++ = (int16_t)((data[k] * gainQ10 + 512) >> 10);
*fiQ7++ = (int16_t)((data[k + 1] * gainQ10 + 512) >> 10);
*frQ7++ = (int16_t)((data[k + 2] * gainQ10 + 512) >> 10);
@ -505,8 +507,8 @@ int16_t WebRtcIsacfix_DecodeSpec(Bitstr_dec *streamdata,
{
for (k = 0; k < FRAMESAMPLES; k += 4)
{
gainQ10 = WebRtcSpl_DivW32W16ResW16(WEBRTC_SPL_LSHIFT_W32((int32_t)36, 10),
(int16_t)WEBRTC_SPL_RSHIFT_U32(invARSpec2_Q16[k>>2] + (uint32_t)2654208, 16));
gainQ10 = WebRtcSpl_DivW32W16ResW16(36 << 10,
(int16_t)((uint32_t)(invARSpec2_Q16[k >> 2] + 2654208) >> 16));
*frQ7++ = (int16_t)((data[k] * gainQ10 + 512) >> 10);
*fiQ7++ = (int16_t)((data[k + 1] * gainQ10 + 512) >> 10);
*frQ7++ = (int16_t)((data[k + 2] * gainQ10 + 512) >> 10);
@ -575,7 +577,7 @@ int WebRtcIsacfix_EncodeSpec(const int16_t *fr,
if (lft_shft > 0) {
for (k=0; k<AR_ORDER+1; k++)
CorrQ7_norm[k] = WEBRTC_SPL_LSHIFT_W32(CorrQ7[k], lft_shft);
CorrQ7_norm[k] = CorrQ7[k] << lft_shft;
} else {
for (k=0; k<AR_ORDER+1; k++)
CorrQ7_norm[k] = CorrQ7[k] >> -lft_shft;
@ -607,7 +609,7 @@ int WebRtcIsacfix_EncodeSpec(const int16_t *fr,
if (lft_shft > 0)
nrg >>= lft_shft;
else
nrg = WEBRTC_SPL_LSHIFT_W32(nrg, -lft_shft);
nrg <<= -lft_shft;
if(nrg>131072)
gain2_Q10 = WebRtcSpl_DivResultInQ31(FRAMESAMPLES >> 2, nrg); /* also shifts 31 bits to the left! */
@ -1041,7 +1043,8 @@ int WebRtcIsacfix_DecodeLpcCoef(Bitstr_dec *streamdata,
/* hi band LAR coeffs */
for (n=0; n<ORDERHI; n++, pos++, poss++) {
tmp32 = WEBRTC_SPL_LSHIFT_W32(WEBRTC_SPL_MUL_16_32_RSFT16(18204, tmpcoeffs_sQ17[poss]), 3); // ((Q13*Q17)>>16)<<3 = Q17, with 1/0.45 = 2.222222222222 ~= 18204 in Q13
// ((Q13*Q17)>>16)<<3 = Q17, with 1/0.45 = 2.222222222222 ~= 18204 in Q13
tmp32 = WEBRTC_SPL_MUL_16_32_RSFT16(18204, tmpcoeffs_sQ17[poss]) << 3;
tmp32 = tmp32 + WebRtcIsacfix_kMeansShapeQ17[model][poss]; // Q17+Q17 = Q17
LPCCoefQ17[pos] = tmp32;
}
@ -1269,7 +1272,8 @@ static int EstCodeLpcCoef(int32_t *LPCCoefQ17,
/* hi band LAR coeffs */
for (n=0; n<ORDERHI; n++, pos++, poss++) {
tmp32 = WEBRTC_SPL_LSHIFT_W32(WEBRTC_SPL_MUL_16_32_RSFT16(18204, tmpcoeffs_sQ17[poss]), 3); // ((Q13*Q17)>>16)<<3 = Q17, with 1/0.45 = 2.222222222222 ~= 18204 in Q13
// ((Q13*Q17)>>16)<<3 = Q17, with 1/0.45 = 2.222222222222 ~= 18204 in Q13
tmp32 = WEBRTC_SPL_MUL_16_32_RSFT16(18204, tmpcoeffs_sQ17[poss]) << 3;
tmp32 = tmp32 + WebRtcIsacfix_kMeansShapeQ17[0][poss]; // Q17+Q17 = Q17
LPCCoefQ17[pos] = tmp32;
}
@ -1294,14 +1298,14 @@ static int EstCodeLpcCoef(int32_t *LPCCoefQ17,
tmpcoeffs_gQ17[offsg]) << 1);
sumQQ += (WEBRTC_SPL_MUL_16_32_RSFT16(WebRtcIsacfix_kT1GainQ15[0][1],
tmpcoeffs_gQ17[offsg + 1]) << 1);
tmpcoeffs2_gQ21[posg] = WEBRTC_SPL_LSHIFT_W32(sumQQ, 4);
tmpcoeffs2_gQ21[posg] = sumQQ << 4;
posg++;
sumQQ = (WEBRTC_SPL_MUL_16_32_RSFT16(WebRtcIsacfix_kT1GainQ15[0][2],
tmpcoeffs_gQ17[offsg]) << 1);
sumQQ += (WEBRTC_SPL_MUL_16_32_RSFT16(WebRtcIsacfix_kT1GainQ15[0][3],
tmpcoeffs_gQ17[offsg + 1]) << 1);
tmpcoeffs2_gQ21[posg] = WEBRTC_SPL_LSHIFT_W32(sumQQ, 4);
tmpcoeffs2_gQ21[posg] = sumQQ << 4;
posg++;
offsg += 2;
}

View File

@ -144,11 +144,11 @@ void WebRtcIsacfix_HighpassFilterFixDec32C(int16_t *io,
c = in + ((a1 + b1) >> 7); // Q0.
io[k] = (int16_t)WebRtcSpl_SatW32ToW16(c); // Write output as Q0.
c = WEBRTC_SPL_LSHIFT_W32((int32_t)in, 2) - a2 - b2; // In Q2.
c = (in << 2) - a2 - b2; // In Q2.
c = (int32_t)WEBRTC_SPL_SAT(536870911, c, -536870912);
state1 = state0;
state0 = WEBRTC_SPL_LSHIFT_W32(c, 2); // Write state as Q4
state0 = c << 2; // Write state as Q4
}
state[0] = state0;
state[1] = state1;

View File

@ -74,13 +74,12 @@ static void AllpassFilterForDec32(int16_t *InOut16, //Q0
for (j=0; j<ALLPASSSECTIONS; j++) {
for (n=0;n<lengthInOut;n+=2){
a = WEBRTC_SPL_MUL_16_32_RSFT16(InOut16[n], APSectionFactors[j]); //Q0*Q31=Q31 shifted 16 gives Q15
a = WEBRTC_SPL_LSHIFT_W32(a, 1); // Q15 -> Q16
a <<= 1; // Q15 -> Q16
b = WebRtcSpl_AddSatW32(a, FilterState[j]); //Q16+Q16=Q16
// |a| in Q15 (Q0*Q31=Q31 shifted 16 gives Q15).
a = WEBRTC_SPL_MUL_16_32_RSFT16(b >> 16, -APSectionFactors[j]);
FilterState[j] = WebRtcSpl_AddSatW32(
WEBRTC_SPL_LSHIFT_W32(a,1),
WEBRTC_SPL_LSHIFT_W32((uint32_t)InOut16[n], 16)); // Q15<<1 + Q0<<16 = Q16 + Q16 = Q16
// FilterState[j]: Q15<<1 + Q0<<16 = Q16 + Q16 = Q16
FilterState[j] = WebRtcSpl_AddSatW32(a << 1, (uint32_t)InOut16[n] << 16);
InOut16[n] = (int16_t)(b >> 16); // Save as Q0.
}
}
@ -101,7 +100,7 @@ void WebRtcIsacfix_DecimateAllpass32(const int16_t *in,
memcpy(data_vec + 1, in, sizeof(int16_t) * (N - 1));
data_vec[0] = (int16_t)(state_in[2 * ALLPASSSECTIONS] >> 16); // z^-1 state.
state_in[2 * ALLPASSSECTIONS] = WEBRTC_SPL_LSHIFT_W32((uint32_t)in[N-1],16);
state_in[2 * ALLPASSSECTIONS] = (uint32_t)in[N - 1] << 16;

View File

@ -129,7 +129,7 @@ void WebRtcIsacfix_NormLatticeFilterMa(int16_t orderCoef,
/* compute the gain */
gain32 = gain_lo_hiQ17[temp3];
gain_sh = WebRtcSpl_NormW32(gain32);
gain32 = WEBRTC_SPL_LSHIFT_W32(gain32, gain_sh); //Q(17+gain_sh)
gain32 <<= gain_sh; // Q(17+gain_sh)
for (k=0;k<orderCoef;k++)
{
@ -144,8 +144,8 @@ void WebRtcIsacfix_NormLatticeFilterMa(int16_t orderCoef,
/* initial conditions */
for (i=0;i<HALF_SUBFRAMELEN;i++)
{
fQ15vec[i] = WEBRTC_SPL_LSHIFT_W32((int32_t)lat_inQ0[i + temp1], 15); //Q15
gQ15[0][i] = WEBRTC_SPL_LSHIFT_W32((int32_t)lat_inQ0[i + temp1], 15); //Q15
fQ15vec[i] = lat_inQ0[i + temp1] << 15; // Q15
gQ15[0][i] = lat_inQ0[i + temp1] << 15; // Q15
}
@ -159,7 +159,7 @@ void WebRtcIsacfix_NormLatticeFilterMa(int16_t orderCoef,
tmp32b= fQtmp + tmp32; //Q15+Q15=Q15
tmp32 = inv_cthQ16[i-1]; //Q16
t16a = (int16_t)(tmp32 >> 16);
t16b = (int16_t) (tmp32-WEBRTC_SPL_LSHIFT_W32(((int32_t)t16a), 16));
t16b = (int16_t)(tmp32 - (t16a << 16));
if (t16b<0) t16a++;
tmp32 = LATTICE_MUL_32_32_RSFT16(t16a, t16b, tmp32b);
fQtmp = tmp32; // Q15
@ -256,7 +256,7 @@ void WebRtcIsacfix_NormLatticeFilterAr(int16_t orderCoef,
saturation. Therefore, it should be safe to use Q27 instead
of Q17. */
tmp32 = WEBRTC_SPL_LSHIFT_W32(gain_lo_hiQ17[temp3], 10); // Q27
tmp32 = gain_lo_hiQ17[temp3] << 10; // Q27
for (k=0;k<orderCoef;k++) {
tmp32 = WEBRTC_SPL_MUL_16_32_RSFT15(cthQ15[k], tmp32); // Q15*Q27>>15 = Q27
@ -272,7 +272,7 @@ void WebRtcIsacfix_NormLatticeFilterAr(int16_t orderCoef,
for (i=0;i<HALF_SUBFRAMELEN;i++)
{
tmp32 = WEBRTC_SPL_LSHIFT_W32(lat_inQ25[i + temp1], 1); //Q25->Q26
tmp32 = lat_inQ25[i + temp1] << 1; // Q25->Q26
tmp32 = WEBRTC_SPL_MUL_16_32_RSFT16(inv_gain16, tmp32); //lat_in[]*inv_gain in (Q(18-sh)*Q26)>>16 = Q(28-sh)
tmp32 = WEBRTC_SPL_SHIFT_W32(tmp32, -(28-sh)); // lat_in[]*inv_gain in Q0

View File

@ -43,8 +43,7 @@ void WebRtcSpl_AToK_JSK(
tmp_inv_denum16 = (int16_t)(tmp_inv_denum32 >> 15); // (1 - k^2) in Q15.
for (k=1; k<=m; k++) {
tmp32b = WEBRTC_SPL_LSHIFT_W32((int32_t)a16[k], 16) -
WEBRTC_SPL_LSHIFT_W32(k16[m] * a16[m - k + 1], 1);
tmp32b = (a16[k] << 16) - ((k16[m] * a16[m - k + 1]) << 1);
tmp32[k] = WebRtcSpl_DivW32W16(tmp32b, tmp_inv_denum16); //Q27/Q15 = Q12
}
@ -54,7 +53,7 @@ void WebRtcSpl_AToK_JSK(
}
tmp32[m] = WEBRTC_SPL_SAT(4092, tmp32[m], -4092);
k16[m-1] = (int16_t) WEBRTC_SPL_LSHIFT_W32(tmp32[m], 3); //Q12<<3 => Q15
k16[m - 1] = (int16_t)(tmp32[m] << 3); // Q12<<3 => Q15
}
return;
@ -89,7 +88,7 @@ int16_t WebRtcSpl_LevinsonW32_JSK(
norm = WebRtcSpl_NormW32(R[0]);
for (i=order;i>=0;i--) {
temp1W32 = WEBRTC_SPL_LSHIFT_W32(R[i], norm);
temp1W32 = R[i] << norm;
/* Put R in hi and low format */
R_hi[i] = (int16_t)(temp1W32 >> 16);
R_low[i] = (int16_t)((temp1W32 - ((int32_t)R_hi[i] << 16)) >> 1);
@ -97,8 +96,7 @@ int16_t WebRtcSpl_LevinsonW32_JSK(
/* K = A[1] = -R[1] / R[0] */
temp2W32 = WEBRTC_SPL_LSHIFT_W32((int32_t)R_hi[1],16) +
WEBRTC_SPL_LSHIFT_W32((int32_t)R_low[1],1); /* R[1] in Q31 */
temp2W32 = (R_hi[1] << 16) + (R_low[1] << 1); /* R[1] in Q31 */
temp3W32 = WEBRTC_SPL_ABS_W32(temp2W32); /* abs R[1] */
temp1W32 = WebRtcSpl_DivW32HiLow(temp3W32, R_hi[0], R_low[0]); /* abs(R[1])/R[0] in Q31 */
/* Put back the sign on R[1] */
@ -137,7 +135,7 @@ int16_t WebRtcSpl_LevinsonW32_JSK(
/* Normalize Alpha and put it in hi and low format */
Alpha_exp = WebRtcSpl_NormW32(temp1W32);
temp1W32 = WEBRTC_SPL_LSHIFT_W32(temp1W32, Alpha_exp);
temp1W32 <<= Alpha_exp;
Alpha_hi = (int16_t)(temp1W32 >> 16);
Alpha_low = (int16_t)((temp1W32 - ((int32_t)Alpha_hi<< 16)) >> 1);
@ -164,9 +162,8 @@ int16_t WebRtcSpl_LevinsonW32_JSK(
((R_low[j] * A_hi[i - j]) >> 15)) << 1);
}
temp1W32 = WEBRTC_SPL_LSHIFT_W32(temp1W32, 4);
temp1W32 += (WEBRTC_SPL_LSHIFT_W32((int32_t)R_hi[i], 16) +
WEBRTC_SPL_LSHIFT_W32((int32_t)R_low[i], 1));
temp1W32 <<= 4;
temp1W32 += (R_hi[i] << 16) + (R_low[i] << 1);
/* K = -temp1W32 / Alpha */
temp2W32 = WEBRTC_SPL_ABS_W32(temp1W32); /* abs(temp1W32) */
@ -180,7 +177,7 @@ int16_t WebRtcSpl_LevinsonW32_JSK(
/* Use the Alpha shifts from earlier to denormalize */
norm = WebRtcSpl_NormW32(temp3W32);
if ((Alpha_exp <= norm)||(temp3W32==0)) {
temp3W32 = WEBRTC_SPL_LSHIFT_W32(temp3W32, Alpha_exp);
temp3W32 <<= Alpha_exp;
} else {
if (temp3W32 > 0)
{
@ -214,8 +211,7 @@ int16_t WebRtcSpl_LevinsonW32_JSK(
for(j=1; j<i; j++)
{
temp1W32 = WEBRTC_SPL_LSHIFT_W32((int32_t)A_hi[j],16) +
WEBRTC_SPL_LSHIFT_W32((int32_t)A_low[j],1); /* temp1W32 = A[j] in Q27 */
temp1W32 = (A_hi[j] << 16) + (A_low[j] << 1); // temp1W32 = A[j] in Q27
temp1W32 += (K_hi * A_hi[i - j] + ((K_hi * A_low[i - j]) >> 15) +
((K_low * A_hi[i - j]) >> 15)) << 1; // temp1W32 += K*A[i-j] in Q27.
@ -249,7 +245,7 @@ int16_t WebRtcSpl_LevinsonW32_JSK(
/* Normalize Alpha and store it on hi and low format */
norm = WebRtcSpl_NormW32(temp1W32);
temp1W32 = WEBRTC_SPL_LSHIFT_W32(temp1W32, norm);
temp1W32 <<= norm;
Alpha_hi = (int16_t)(temp1W32 >> 16);
Alpha_low = (int16_t)((temp1W32 - ((int32_t)Alpha_hi << 16)) >> 1);
@ -275,8 +271,7 @@ int16_t WebRtcSpl_LevinsonW32_JSK(
for(i=1; i<=order; i++) {
/* temp1W32 in Q27 */
temp1W32 = WEBRTC_SPL_LSHIFT_W32((int32_t)A_hi[i], 16) +
WEBRTC_SPL_LSHIFT_W32((int32_t)A_low[i], 1);
temp1W32 = (A_hi[i] << 16) + (A_low[i] << 1);
/* Round and store upper word */
A[i] = (int16_t)((temp1W32 + 32768) >> 16);
}
@ -650,7 +645,7 @@ void WebRtcIsacfix_GetLpcCoef(int16_t *inLoQ0,
sh_lo = WebRtcSpl_NormW32(corrloQQ[0]);
QdomLO += sh_lo;
for (ii=0; ii<ORDERLO+2; ii++) {
corrloQQ[ii] = WEBRTC_SPL_LSHIFT_W32(corrloQQ[ii], sh_lo);
corrloQQ[ii] <<= sh_lo;
}
/* It is investigated whether it was possible to use 16 bits for the
32-bit vector corrloQQ, but it didn't work. */
@ -661,7 +656,7 @@ void WebRtcIsacfix_GetLpcCoef(int16_t *inLoQ0,
sh_hi = WebRtcSpl_NormW32(corrhiQQ[0]);
QdomHI += sh_hi;
for (ii=0; ii<ORDERHI+1; ii++) {
corrhiQQ[ii] = WEBRTC_SPL_LSHIFT_W32(corrhiQQ[ii], sh_hi);
corrhiQQ[ii] <<= sh_hi;
}
/* less noise for lower frequencies, by filtering/scaling autocorrelation sequences */
@ -846,7 +841,7 @@ void WebRtcIsacfix_GetLpcCoef(int16_t *inLoQ0,
/* Normalize the corrlo2 vector */
sh = WebRtcSpl_NormW32(corrlo2QQ[0]);
for (n = 0; n <= ORDERLO; n++) {
corrlo2QQ[n] = WEBRTC_SPL_LSHIFT_W32(corrlo2QQ[n], sh);
corrlo2QQ[n] <<= sh;
}
QdomLO += sh; /* Now, corrlo2QQ is still in Q(QdomLO) */
@ -892,7 +887,7 @@ void WebRtcIsacfix_GetLpcCoef(int16_t *inLoQ0,
}
else
{
*gain_lo_hiQ17 = 100; //(int32_t)WEBRTC_SPL_LSHIFT_W32( (int32_t)1, 17); // Gains in Q17
*gain_lo_hiQ17 = 100; // Gains in Q17
}
gain_lo_hiQ17++;
@ -942,7 +937,7 @@ void WebRtcIsacfix_GetLpcCoef(int16_t *inLoQ0,
}
else
{
*gain_lo_hiQ17 = 100; //(int32_t)WEBRTC_SPL_LSHIFT_W32( (int32_t)1, 17); // Gains in Q17
*gain_lo_hiQ17 = 100; // Gains in Q17
}
gain_lo_hiQ17++;

View File

@ -28,16 +28,14 @@ static const int16_t kACoefQ12[3] = {
};
int32_t WebRtcIsacfix_Log2Q8(uint32_t x) {
int32_t zeros, lg2;
int32_t zeros;
int16_t frac;
zeros=WebRtcSpl_NormU32(x);
frac = (int16_t)(((x << zeros) & 0x7FFFFFFF) >> 23);
/* log2(magn(i)) */
lg2= (WEBRTC_SPL_LSHIFT_W32((31-zeros), 8)+frac);
return lg2;
return ((31 - zeros) << 8) + frac;
}
static __inline int16_t Exp2Q10(int16_t x) { // Both in and out in Q10
@ -182,7 +180,7 @@ void WebRtcIsacfix_InitialPitch(const int16_t *in, /* Q0 */
int32_t lagsQ8[4];
old_lagQ = State->PFstr_wght.oldlagQ7; // Q7
old_lagQ8= WEBRTC_SPL_LSHIFT_W32((int32_t)old_lagQ,1); //Q8
old_lagQ8 = old_lagQ << 1; // Q8
oldgQ12= State->PFstr_wght.oldgainQ12;
@ -302,7 +300,7 @@ void WebRtcIsacfix_InitialPitch(const int16_t *in, /* Q0 */
lag32 = peakiq[best4q[k]];
fxq = &cv1q[peakiq[best4q[k]]-1];
xq[0]= lag32;
xq[0] = WEBRTC_SPL_LSHIFT_W32(xq[0], 8);
xq[0] <<= 8;
Intrp1DQ8(xq, fxq, yq, fyq);
tmp32a= WebRtcIsacfix_Log2Q8((uint32_t) *yq) - 2048; // offset 8*2^8
@ -316,8 +314,7 @@ void WebRtcIsacfix_InitialPitch(const int16_t *in, /* Q0 */
best_lag1q = *yq;
}
}
tmp32a = best_lag1q - OFFSET_Q8;
tmp32b = WEBRTC_SPL_LSHIFT_W32(tmp32a, 1);
tmp32b = (best_lag1q - OFFSET_Q8) * 2;
lagsQ8[0] = tmp32b + PITCH_MIN_LAG_Q8;
lagsQ8[1] = lagsQ8[0];
} else {
@ -331,8 +328,8 @@ void WebRtcIsacfix_InitialPitch(const int16_t *in, /* Q0 */
for (k = 1; k <= PITCH_LAG_SPAN2; k++)
{
tmp32a = WEBRTC_SPL_LSHIFT_W32(k, 7); // 0.5*k Q8
tmp32b = (int32_t) (WEBRTC_SPL_LSHIFT_W32(tmp32a, 1)) - ratq; // Q8
tmp32a = k << 7; // 0.5*k Q8
tmp32b = tmp32a * 2 - ratq; // Q8
tmp32c = WEBRTC_SPL_MUL_16_16_RSFT((int16_t) tmp32b, (int16_t) tmp32b, 8); // Q8
tmp32b = tmp32c + (ratq >> 1);
@ -377,7 +374,7 @@ void WebRtcIsacfix_InitialPitch(const int16_t *in, /* Q0 */
fxq = &cv2q[peakiq[best4q[k]]-1];
xq[0]= lag32;
xq[0] = WEBRTC_SPL_LSHIFT_W32(xq[0], 8);
xq[0] <<= 8;
Intrp1DQ8(xq, fxq, yq, fyq);
/* Bias towards short lags */
@ -392,8 +389,7 @@ void WebRtcIsacfix_InitialPitch(const int16_t *in, /* Q0 */
}
}
tmp32a = best_lag2q - OFFSET_Q8;
tmp32b = WEBRTC_SPL_LSHIFT_W32(tmp32a, 1);
tmp32b = (best_lag2q - OFFSET_Q8) * 2;
lagsQ8[2] = tmp32b + PITCH_MIN_LAG_Q8;
lagsQ8[3] = lagsQ8[2];
} else {

View File

@ -22,12 +22,10 @@ extern int32_t WebRtcIsacfix_Log2Q8(uint32_t x);
void WebRtcIsacfix_PCorr2Q32(const int16_t* in, int32_t* logcorQ8) {
int16_t scaling,n,k;
int32_t ysum32,csum32, lys, lcs;
int32_t oneQ8;
const int32_t oneQ8 = 1 << 8; // 1.00 in Q8
const int16_t* x;
const int16_t* inptr;
oneQ8 = WEBRTC_SPL_LSHIFT_W32((int32_t)1, 8); // 1.00 in Q8
x = in + PITCH_MAX_LAG / 2 + 2;
scaling = WebRtcSpl_GetScalingSquare((int16_t*)in,
PITCH_CORR_LEN2,

View File

@ -17,11 +17,10 @@ extern int32_t WebRtcIsacfix_Log2Q8(uint32_t x);
void WebRtcIsacfix_PCorr2Q32(const int16_t* in, int32_t* logcorQ8) {
int16_t scaling,n,k;
int32_t ysum32,csum32, lys, lcs;
int32_t oneQ8;
const int32_t oneQ8 = 1 << 8; // 1.00 in Q8
const int16_t* x;
const int16_t* inptr;
oneQ8 = WEBRTC_SPL_LSHIFT_W32((int32_t)1, 8); // 1.00 in Q8
x = in + PITCH_MAX_LAG / 2 + 2;
scaling = WebRtcSpl_GetScalingSquare((int16_t*)in,
PITCH_CORR_LEN2,

View File

@ -49,13 +49,9 @@ void WebRtcIsacfix_PitchFilterCore(int loopNumber,
static __inline int32_t CalcLrIntQ(int32_t fixVal,
int16_t qDomain) {
int32_t intgr;
int32_t roundVal;
int32_t roundVal = 1 << (qDomain - 1);
roundVal = WEBRTC_SPL_LSHIFT_W32((int32_t)1, qDomain - 1);
intgr = (fixVal + roundVal) >> qDomain;
return intgr;
return (fixVal + roundVal) >> qDomain;
}
void WebRtcIsacfix_PitchFilter(int16_t* indatQQ, // Q10 if type is 1 or 4,
@ -130,8 +126,7 @@ void WebRtcIsacfix_PitchFilter(int16_t* indatQQ, // Q10 if type is 1 or 4,
curGainQ12 += gaindeltaQ12;
curLagQ7 += lagdeltaQ7;
indW32 = CalcLrIntQ(curLagQ7, 7);
tmpW32 = WEBRTC_SPL_LSHIFT_W32(indW32, 7);
tmpW32 -= curLagQ7;
tmpW32 = (indW32 << 7) - curLagQ7;
frcQQ = (tmpW32 >> 4) + 4;
if (frcQQ == PITCH_FRACS) {

View File

@ -66,11 +66,11 @@ void WebRtcIsacfix_Time2SpecC(int16_t *inre1Q9,
//"Fastest" vectors
if (sh>=0) {
for (k=0; k<FRAMESAMPLES/2; k++) {
inre1Q9[k] = (int16_t) WEBRTC_SPL_LSHIFT_W32(tmpreQ16[k], sh); //Q(16+sh)
inre2Q9[k] = (int16_t) WEBRTC_SPL_LSHIFT_W32(tmpimQ16[k], sh); //Q(16+sh)
inre1Q9[k] = (int16_t)(tmpreQ16[k] << sh); // Q(16+sh)
inre2Q9[k] = (int16_t)(tmpimQ16[k] << sh); // Q(16+sh)
}
} else {
int32_t round = WEBRTC_SPL_LSHIFT_W32((int32_t)1, -sh-1);
int32_t round = 1 << (-sh - 1);
for (k=0; k<FRAMESAMPLES/2; k++) {
inre1Q9[k] = (int16_t)((tmpreQ16[k] + round) >> -sh); // Q(16+sh)
inre2Q9[k] = (int16_t)((tmpimQ16[k] + round) >> -sh); // Q(16+sh)
@ -88,8 +88,8 @@ void WebRtcIsacfix_Time2SpecC(int16_t *inre1Q9,
}
} else {
for (k=0; k<FRAMESAMPLES/2; k++) {
tmpreQ16[k] = WEBRTC_SPL_LSHIFT_W32((int32_t)inre1Q9[k], -sh); //Q(16+sh) -> Q16
tmpimQ16[k] = WEBRTC_SPL_LSHIFT_W32((int32_t)inre2Q9[k], -sh); //Q(16+sh) -> Q16
tmpreQ16[k] = inre1Q9[k] << -sh; // Q(16+sh) -> Q16
tmpimQ16[k] = inre2Q9[k] << -sh; // Q(16+sh) -> Q16
}
}
@ -132,10 +132,10 @@ void WebRtcIsacfix_Spec2TimeC(int16_t *inreQ7, int16_t *inimQ7, int32_t *outre1Q
tmp1rQ14 = -WebRtcIsacfix_kSinTab2[FRAMESAMPLES/4 - 1 - k];
tmp1iQ14 = WebRtcIsacfix_kSinTab2[k];
tmpInRe = WEBRTC_SPL_LSHIFT_W32((int32_t) inreQ7[k], 9); // Q7 -> Q16
tmpInIm = WEBRTC_SPL_LSHIFT_W32((int32_t) inimQ7[k], 9); // Q7 -> Q16
tmpInRe2 = WEBRTC_SPL_LSHIFT_W32((int32_t) inreQ7[FRAMESAMPLES/2 - 1 - k], 9); // Q7 -> Q16
tmpInIm2 = WEBRTC_SPL_LSHIFT_W32((int32_t) inimQ7[FRAMESAMPLES/2 - 1 - k], 9); // Q7 -> Q16
tmpInRe = inreQ7[k] << 9; // Q7 -> Q16
tmpInIm = inimQ7[k] << 9; // Q7 -> Q16
tmpInRe2 = inreQ7[FRAMESAMPLES / 2 - 1 - k] << 9; // Q7 -> Q16
tmpInIm2 = inimQ7[FRAMESAMPLES / 2 - 1 - k] << 9; // Q7 -> Q16
xrQ16 = WEBRTC_SPL_MUL_16_32_RSFT14(tmp1rQ14, tmpInRe) + WEBRTC_SPL_MUL_16_32_RSFT14(tmp1iQ14, tmpInIm);
xiQ16 = WEBRTC_SPL_MUL_16_32_RSFT14(tmp1rQ14, tmpInIm) - WEBRTC_SPL_MUL_16_32_RSFT14(tmp1iQ14, tmpInRe);
@ -163,11 +163,11 @@ void WebRtcIsacfix_Spec2TimeC(int16_t *inreQ7, int16_t *inimQ7, int32_t *outre1Q
//"Fastest" vectors
if (sh>=0) {
for (k=0; k<240; k++) {
inreQ7[k] = (int16_t) WEBRTC_SPL_LSHIFT_W32(outre1Q16[k], sh); //Q(16+sh)
inimQ7[k] = (int16_t) WEBRTC_SPL_LSHIFT_W32(outre2Q16[k], sh); //Q(16+sh)
inreQ7[k] = (int16_t)(outre1Q16[k] << sh); // Q(16+sh)
inimQ7[k] = (int16_t)(outre2Q16[k] << sh); // Q(16+sh)
}
} else {
int32_t round = WEBRTC_SPL_LSHIFT_W32((int32_t)1, -sh-1);
int32_t round = 1 << (-sh - 1);
for (k=0; k<240; k++) {
inreQ7[k] = (int16_t)((outre1Q16[k] + round) >> -sh); // Q(16+sh)
inimQ7[k] = (int16_t)((outre2Q16[k] + round) >> -sh); // Q(16+sh)
@ -184,8 +184,8 @@ void WebRtcIsacfix_Spec2TimeC(int16_t *inreQ7, int16_t *inimQ7, int32_t *outre1Q
}
} else {
for (k=0; k<240; k++) {
outre1Q16[k] = WEBRTC_SPL_LSHIFT_W32((int32_t)inreQ7[k], -sh); //Q(16+sh) -> Q16
outre2Q16[k] = WEBRTC_SPL_LSHIFT_W32((int32_t)inimQ7[k], -sh); //Q(16+sh) -> Q16
outre1Q16[k] = inreQ7[k] << -sh; // Q(16+sh) -> Q16
outre2Q16[k] = inimQ7[k] << -sh; // Q(16+sh) -> Q16
}
}