FreeCalypso > hg > gsm-codec-lib
diff libgsmefr/dec_lag6.c @ 65:cb080ec1817e
libgsmefr: dec_lag6.c compiles
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sat, 26 Nov 2022 02:50:06 +0000 |
parents | 49dd1ac8e75b |
children | f387ee919f2c |
line wrap: on
line diff
--- a/libgsmefr/dec_lag6.c Sat Nov 26 02:05:51 2022 +0000 +++ b/libgsmefr/dec_lag6.c Sat Nov 26 02:50:06 2022 +0000 @@ -16,28 +16,30 @@ * *************************************************************************/ +#include "gsm_efr.h" #include "typedef.h" +#include "namespace.h" #include "basic_op.h" -#include "count.h" +#include "no_count.h" +#include "codec.h" +#include "cnst.h" +#include "dec_state.h" -/* Old integer lag */ - -Word16 old_T0; - -Word16 -Dec_lag6 ( /* output: return integer pitch lag */ +Word16 Dec_lag6 ( /* output: return integer pitch lag */ + struct EFR_decoder_state *st, Word16 index, /* input : received pitch index */ Word16 pit_min, /* input : minimum pitch lag */ Word16 pit_max, /* input : maximum pitch lag */ Word16 i_subfr, /* input : subframe flag */ Word16 L_frame_by2,/* input : speech frame size divided by 2 */ Word16 *T0_frac, /* output: fractional part of pitch lag */ - Word16 bfi /* input : bad frame indicator */ + Word16 bfi, /* input : bad frame indicator */ + Word16 *T0_min, + Word16 *T0_max ) { Word16 pit_flag; Word16 T0, i; - static Word16 T0_min, T0_max; pit_flag = i_subfr; move16 (); /* flag for 1st or 3rd subframe */ test (); @@ -70,24 +72,22 @@ else /* bfi == 1 */ { - T0 = old_T0; move16 (); - *T0_frac = 0; move16 (); + T0 = st->old_T0; + *T0_frac = 0; } /* find T0_min and T0_max for 2nd (or 4th) subframe */ - T0_min = sub (T0, 5); - test (); - if (sub (T0_min, pit_min) < 0) + *T0_min = sub (T0, 5); + if (sub (*T0_min, pit_min) < 0) { - T0_min = pit_min; move16 (); + *T0_min = pit_min; } - T0_max = add (T0_min, 9); - test (); - if (sub (T0_max, pit_max) > 0) + *T0_max = add (*T0_min, 9); + if (sub (*T0_max, pit_max) > 0) { - T0_max = pit_max; move16 (); - T0_min = sub (T0_max, 9); + *T0_max = pit_max; + *T0_min = sub (*T0_max, 9); } } else @@ -99,20 +99,19 @@ { /* i = (index+5)/6 - 1 */ i = sub (mult (add (index, 5), 5462), 1); - T0 = add (i, T0_min); + T0 = add (i, *T0_min); i = add (add (i, i), i); *T0_frac = sub (sub (index, 3), add (i, i)); - move16 (); } else /* bfi == 1 OR index >= 61 */ { - T0 = old_T0; move16 (); - *T0_frac = 0; move16 (); + T0 = st->old_T0; + *T0_frac = 0; } } - old_T0 = T0; move16 (); + st->old_T0 = T0; return T0; }