FreeCalypso > hg > gsm-codec-lib
comparison libgsmefr/dtx_enc.c @ 193:cf39a90f5196
libgsmefr/dtx_enc.c: perf opt
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Wed, 04 Jan 2023 03:22:35 +0000 |
parents | c1d53064b410 |
children |
comparison
equal
deleted
inserted
replaced
192:0303ba213e1c | 193:cf39a90f5196 |
---|---|
98 | 98 |
99 st->txdtx_N_elapsed = add (st->txdtx_N_elapsed, 1); | 99 st->txdtx_N_elapsed = add (st->txdtx_N_elapsed, 1); |
100 | 100 |
101 /* If voice activity was detected, reset hangover counter */ | 101 /* If voice activity was detected, reset hangover counter */ |
102 | 102 |
103 if (sub (VAD_flag, 1) == 0) | 103 if (VAD_flag == 1) |
104 { | 104 { |
105 st->txdtx_hangover = DTX_HANGOVER; | 105 st->txdtx_hangover = DTX_HANGOVER; |
106 st->txdtx_ctrl = TX_SP_FLAG | TX_VAD_FLAG; | 106 st->txdtx_ctrl = TX_SP_FLAG | TX_VAD_FLAG; |
107 } | 107 } |
108 else | 108 else |
126 } | 126 } |
127 } | 127 } |
128 else | 128 else |
129 { | 129 { |
130 /* Hangover period is not over, update hangover counter */ | 130 /* Hangover period is not over, update hangover counter */ |
131 st->txdtx_hangover = sub (st->txdtx_hangover, 1); | 131 st->txdtx_hangover--; |
132 | 132 |
133 /* Check if elapsed time from last SID update is greater than | 133 /* Check if elapsed time from last SID update is greater than |
134 threshold. If not, set SP=0 (although hangover period is not | 134 threshold. If not, set SP=0 (although hangover period is not |
135 over) and use old SID parameters for new SID frame. | 135 over) and use old SID parameters for new SID frame. |
136 N_elapsed counter must be summed with hangover counter in order | 136 N_elapsed counter must be summed with hangover counter in order |
137 to avoid erroneus SP=1 decision in case when N_elapsed is grown | 137 to avoid erroneus SP=1 decision in case when N_elapsed is grown |
138 bigger than threshold and hangover period is still active */ | 138 bigger than threshold and hangover period is still active */ |
139 | 139 |
140 if (sub (add (st->txdtx_N_elapsed, st->txdtx_hangover), | 140 if (add (st->txdtx_N_elapsed, st->txdtx_hangover) < |
141 DTX_ELAPSED_THRESHOLD) < 0) | 141 DTX_ELAPSED_THRESHOLD) |
142 { | 142 { |
143 /* old SID frame should be used */ | 143 /* old SID frame should be used */ |
144 st->txdtx_ctrl = TX_USE_OLD_SID; | 144 st->txdtx_ctrl = TX_USE_OLD_SID; |
145 } | 145 } |
146 else | 146 else |
302 ) | 302 ) |
303 { | 303 { |
304 /* Circular buffer */ | 304 /* Circular buffer */ |
305 st->gain_code_old_tx[st->buf_p_tx] = new_gain_code; | 305 st->gain_code_old_tx[st->buf_p_tx] = new_gain_code; |
306 | 306 |
307 if (sub (st->buf_p_tx, (4 * DTX_HANGOVER - 1)) == 0) | 307 if (st->buf_p_tx == (4 * DTX_HANGOVER - 1)) |
308 { | 308 { |
309 st->buf_p_tx = 0; | 309 st->buf_p_tx = 0; |
310 } | 310 } |
311 else | 311 else |
312 { | 312 { |
313 st->buf_p_tx = add (st->buf_p_tx, 1); | 313 st->buf_p_tx++; |
314 } | 314 } |
315 | 315 |
316 return; | 316 return; |
317 } | 317 } |
318 | 318 |
351 temp = shr (res2[i], norm); | 351 temp = shr (res2[i], norm); |
352 L_temp = L_mac (L_temp, temp, temp); | 352 L_temp = L_mac (L_temp, temp, temp); |
353 } | 353 } |
354 | 354 |
355 test (); | 355 test (); |
356 if (L_sub (L_temp, MAX_32) == 0) | 356 if (L_temp == MAX_32) |
357 { | 357 { |
358 norm = add (norm, 1); | 358 norm = add (norm, 1); |
359 overfl = 1; move16 (); /* Set the overflow flag */ | 359 overfl = 1; move16 (); /* Set the overflow flag */ |
360 } | 360 } |
361 test (); | 361 test (); |