Prepare to convert various types to size_t.
This makes some behaviorally-invariant changes to make certain code that currently only works correctly with signed types work safely regardless of the signedness of the types in question. This is preparation for a future change that will convert a variety of types to size_t. There are also some formatting changes (e.g. converting "enum hack" usage to real consts) to make it simpler to just change "int" to "size_t" in the future to change the types of those constants. BUG=none R=andrew@webrtc.org, juberti@webrtc.org, kwiberg@webrtc.org TBR=ajm Review URL: https://codereview.webrtc.org/1174813003 Cr-Commit-Position: refs/heads/master@{#9413}
This commit is contained in:
@ -37,8 +37,8 @@ int WebRtcIsacfix_DecodeImpl(int16_t* signal_out16,
|
||||
int16_t* current_framesamples);
|
||||
|
||||
int16_t WebRtcIsacfix_DecodePlcImpl(int16_t* decoded,
|
||||
IsacFixDecoderInstance* ISACdec_obj,
|
||||
int16_t* current_framesample );
|
||||
IsacFixDecoderInstance* ISACdec_obj,
|
||||
int16_t* current_framesample );
|
||||
|
||||
int WebRtcIsacfix_EncodeImpl(int16_t* in,
|
||||
IsacFixEncoderInstance* ISACenc_obj,
|
||||
|
||||
@ -309,7 +309,7 @@ int16_t WebRtcIsacfix_DecodePlcImpl(int16_t *signal_out16,
|
||||
&((ISACdec_obj->plcstr_obj).prevPitchInvIn[FRAMESAMPLES_HALF - lag0]);
|
||||
minCorr = WEBRTC_SPL_WORD32_MAX;
|
||||
|
||||
if ( (FRAMESAMPLES_HALF - 2*lag0 - 10) > 0 )
|
||||
if ((FRAMESAMPLES_HALF - 10) > 2 * lag0)
|
||||
{
|
||||
minIdx = 11;
|
||||
for( i = 0; i < 21; i++ )
|
||||
|
||||
@ -279,13 +279,15 @@ void WebRtcIsacfix_NormLatticeFilterAr(int16_t orderCoef,
|
||||
ARfQ0vec[i] = (int16_t)WebRtcSpl_SatW32ToW16(tmp32); // Q0
|
||||
}
|
||||
|
||||
for (i=orderCoef-1;i>=0;i--) //get the state of f&g for the first input, for all orders
|
||||
for (i=orderCoef;i>0;i--) //get the state of f&g for the first input, for all orders
|
||||
{
|
||||
tmp32 = (cthQ15[i] * ARfQ0vec[0] - sthQ15[i] * stateGQ0[i] + 16384) >> 15;
|
||||
tmp32 = (cthQ15[i - 1] * ARfQ0vec[0] - sthQ15[i - 1] * stateGQ0[i - 1] +
|
||||
16384) >> 15;
|
||||
tmpAR = (int16_t)WebRtcSpl_SatW32ToW16(tmp32); // Q0
|
||||
|
||||
tmp32 = (sthQ15[i] * ARfQ0vec[0] + cthQ15[i] * stateGQ0[i] + 16384) >> 15;
|
||||
ARgQ0vec[i+1] = (int16_t)WebRtcSpl_SatW32ToW16(tmp32); // Q0
|
||||
tmp32 = (sthQ15[i - 1] * ARfQ0vec[0] + cthQ15[i - 1] * stateGQ0[i - 1] +
|
||||
16384) >> 15;
|
||||
ARgQ0vec[i] = (int16_t)WebRtcSpl_SatW32ToW16(tmp32); // Q0
|
||||
ARfQ0vec[0] = tmpAR;
|
||||
}
|
||||
ARgQ0vec[0] = ARfQ0vec[0];
|
||||
|
||||
@ -46,21 +46,21 @@ HALF_SUBFRAME_LOOP: @ for(n = 0; n < HALF_SUBFRAMELEN - 1; n++)
|
||||
add r2, r9, asl #1 @ Restore r2 to &cth_Q15[order_coef]
|
||||
add r3, r9, asl #1 @ Restore r3 to &sth_Q15[order_coef]
|
||||
|
||||
ORDER_COEF_LOOP: @ for(k = order_coef - 1 ; k >= 0; k--)
|
||||
ORDER_COEF_LOOP: @ for(k = order_coef ; k > 0; k--)
|
||||
|
||||
ldrh r7, [r3, #-2]! @ sth_Q15[k]
|
||||
ldrh r6, [r2, #-2]! @ cth_Q15[k]
|
||||
ldrh r7, [r3, #-2]! @ sth_Q15[k - 1]
|
||||
ldrh r6, [r2, #-2]! @ cth_Q15[k - 1]
|
||||
|
||||
ldrh r8, [r0, #-2] @ ar_g_Q0[k]
|
||||
smlabb r11, r7, r5, r12 @ sth_Q15[k] * tmpAR + 16384
|
||||
smlabb r10, r6, r5, r12 @ cth_Q15[k] * tmpAR + 16384
|
||||
smulbb r7, r7, r8 @ sth_Q15[k] * ar_g_Q0[k]
|
||||
smlabb r11, r6, r8, r11 @ cth_Q15[k]*ar_g_Q0[k]+(sth_Q15[k]*tmpAR+16384)
|
||||
ldrh r8, [r0, #-2] @ ar_g_Q0[k - 1]
|
||||
smlabb r11, r7, r5, r12 @ sth_Q15[k - 1] * tmpAR + 16384
|
||||
smlabb r10, r6, r5, r12 @ cth_Q15[k - 1] * tmpAR + 16384
|
||||
smulbb r7, r7, r8 @ sth_Q15[k - 1] * ar_g_Q0[k - 1]
|
||||
smlabb r11, r6, r8, r11 @ cth_Q15[k - 1]*ar_g_Q0[k - 1]+(sth_Q15[k - 1]*tmpAR+16384)
|
||||
|
||||
sub r10, r10, r7 @ cth_Q15[k]*tmpAR+16384-(sth_Q15[k]*ar_g_Q0[k])
|
||||
sub r10, r10, r7 @ cth_Q15[k - 1]*tmpAR+16384-(sth_Q15[k - 1]*ar_g_Q0[k - 1])
|
||||
ssat r11, #16, r11, asr #15
|
||||
ssat r5, #16, r10, asr #15
|
||||
strh r11, [r0], #-2 @ Output: ar_g_Q0[k+1]
|
||||
strh r11, [r0], #-2 @ Output: ar_g_Q0[k]
|
||||
|
||||
subs r9, #1
|
||||
bgt ORDER_COEF_LOOP
|
||||
|
||||
@ -35,11 +35,13 @@ void WebRtcIsacfix_FilterArLoop(int16_t* ar_g_Q0, // Input samples
|
||||
int32_t tmp32_2 = 0;
|
||||
|
||||
tmpAR = ar_f_Q0[n + 1];
|
||||
for (k = order_coef - 1; k >= 0; k--) {
|
||||
tmp32 = (cth_Q15[k] * tmpAR - sth_Q15[k] * ar_g_Q0[k] + 16384) >> 15;
|
||||
tmp32_2 = (sth_Q15[k] * tmpAR + cth_Q15[k] * ar_g_Q0[k] + 16384) >> 15;
|
||||
for (k = order_coef; k > 0; k--) {
|
||||
tmp32 = (cth_Q15[k - 1] * tmpAR - sth_Q15[k - 1] * ar_g_Q0[k - 1] +
|
||||
16384) >> 15;
|
||||
tmp32_2 = (sth_Q15[k - 1] * tmpAR + cth_Q15[k - 1] * ar_g_Q0[k - 1] +
|
||||
16384) >> 15;
|
||||
tmpAR = (int16_t)WebRtcSpl_SatW32ToW16(tmp32);
|
||||
ar_g_Q0[k + 1] = (int16_t)WebRtcSpl_SatW32ToW16(tmp32_2);
|
||||
ar_g_Q0[k] = (int16_t)WebRtcSpl_SatW32ToW16(tmp32_2);
|
||||
}
|
||||
ar_f_Q0[n + 1] = tmpAR;
|
||||
ar_g_Q0[0] = tmpAR;
|
||||
|
||||
@ -69,7 +69,6 @@ void WebRtcIsacfix_PitchFilter(int16_t* indatQQ, // Q10 if type is 1 or 4,
|
||||
int16_t oldLagQ7;
|
||||
int16_t oldGainQ12, lagdeltaQ7, curLagQ7, gaindeltaQ12, curGainQ12;
|
||||
int indW32 = 0, frcQQ = 0;
|
||||
int32_t tmpW32;
|
||||
const int16_t* fracoeffQQ = NULL;
|
||||
|
||||
// Assumptions in ARM assembly for WebRtcIsacfix_PitchFilterCoreARM().
|
||||
@ -123,8 +122,7 @@ void WebRtcIsacfix_PitchFilter(int16_t* indatQQ, // Q10 if type is 1 or 4,
|
||||
curGainQ12 += gaindeltaQ12;
|
||||
curLagQ7 += lagdeltaQ7;
|
||||
indW32 = CalcLrIntQ(curLagQ7, 7);
|
||||
tmpW32 = (indW32 << 7) - curLagQ7;
|
||||
frcQQ = (tmpW32 >> 4) + 4;
|
||||
frcQQ = ((indW32 << 7) + 64 - curLagQ7) >> 4;
|
||||
|
||||
if (frcQQ == PITCH_FRACS) {
|
||||
frcQQ = 0;
|
||||
@ -195,8 +193,7 @@ void WebRtcIsacfix_PitchFilterGains(const int16_t* indatQ0,
|
||||
// Update parameters for each segment.
|
||||
curLagQ7 += lagdeltaQ7;
|
||||
indW16 = (int16_t)CalcLrIntQ(curLagQ7, 7);
|
||||
tmpW16 = (indW16 << 7) - curLagQ7;
|
||||
frcQQ = (tmpW16 >> 4) + 4;
|
||||
frcQQ = ((indW16 << 7) + 64 - curLagQ7) >> 4;
|
||||
|
||||
if (frcQQ == PITCH_FRACS) {
|
||||
frcQQ = 0;
|
||||
|
||||
@ -65,18 +65,21 @@ float IsacSpeedTest::EncodeABlock(int16_t* in_data, uint8_t* bit_stream,
|
||||
// ISAC takes 10 ms everycall
|
||||
const int subblocks = block_duration_ms_ / 10;
|
||||
const int subblock_length = 10 * input_sampling_khz_;
|
||||
int value;
|
||||
int value = 0;
|
||||
|
||||
clock_t clocks = clock();
|
||||
size_t pointer = 0;
|
||||
for (int idx = 0; idx < subblocks; idx++, pointer += subblock_length) {
|
||||
value = WebRtcIsacfix_Encode(ISACFIX_main_inst_, &in_data[pointer],
|
||||
bit_stream);
|
||||
if (idx == subblocks - 1)
|
||||
EXPECT_GT(value, 0);
|
||||
else
|
||||
EXPECT_EQ(0, value);
|
||||
}
|
||||
clocks = clock() - clocks;
|
||||
EXPECT_GT(value, 0);
|
||||
assert(value <= max_bytes);
|
||||
*encoded_bytes = value;
|
||||
assert(*encoded_bytes <= max_bytes);
|
||||
return 1000.0 * clocks / CLOCKS_PER_SEC;
|
||||
}
|
||||
|
||||
|
||||
@ -232,7 +232,7 @@ int main(int argc, char* argv[])
|
||||
CodingMode = 0;
|
||||
testNum = 0;
|
||||
testCE = 0;
|
||||
for (i = 1; i < argc-2;i++) {
|
||||
for (i = 1; i + 2 < argc; i++) {
|
||||
/* Instantaneous mode */
|
||||
if (!strcmp ("-I", argv[i])) {
|
||||
printf("\nInstantaneous BottleNeck\n");
|
||||
|
||||
@ -185,7 +185,7 @@ int main(int argc, char* argv[]) {
|
||||
char transCodingFileName[500];
|
||||
int16_t totFileLoop = 0;
|
||||
int16_t numFileLoop = 0;
|
||||
for (i = 1; i < argc - 2; i++) {
|
||||
for (i = 1; i + 2 < argc; i++) {
|
||||
if (!strcmp("-LOOP", argv[i])) {
|
||||
i++;
|
||||
totFileLoop = (int16_t)atol(argv[i]);
|
||||
|
||||
Reference in New Issue
Block a user