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 ();