FreeCalypso > hg > gsm-codec-lib
comparison libgsmefr/dec_lag6.c @ 190:f387ee919f2c
libgsmefr/dec_lag6.c: perf opt
| author | Mychaela Falconia <falcon@freecalypso.org> |
|---|---|
| date | Tue, 03 Jan 2023 04:04:59 +0000 |
| parents | cb080ec1817e |
| children |
comparison
equal
deleted
inserted
replaced
| 189:7dd6336e15b2 | 190:f387ee919f2c |
|---|---|
| 41 Word16 pit_flag; | 41 Word16 pit_flag; |
| 42 Word16 T0, i; | 42 Word16 T0, i; |
| 43 | 43 |
| 44 pit_flag = i_subfr; move16 (); /* flag for 1st or 3rd subframe */ | 44 pit_flag = i_subfr; move16 (); /* flag for 1st or 3rd subframe */ |
| 45 test (); | 45 test (); |
| 46 if (sub (i_subfr, L_frame_by2) == 0) | 46 if (i_subfr == L_frame_by2) |
| 47 { | 47 { |
| 48 pit_flag = 0; move16 (); | 48 pit_flag = 0; move16 (); |
| 49 } | 49 } |
| 50 test (); | 50 test (); |
| 51 if (pit_flag == 0) /* if 1st or 3rd subframe */ | 51 if (pit_flag == 0) /* if 1st or 3rd subframe */ |
| 52 { | 52 { |
| 53 test (); | 53 test (); |
| 54 if (bfi == 0) | 54 if (bfi == 0) |
| 55 { /* if bfi == 0 decode pitch */ | 55 { /* if bfi == 0 decode pitch */ |
| 56 test (); | 56 test (); |
| 57 if (sub (index, 463) < 0) | 57 if (index < 463) |
| 58 { | 58 { |
| 59 /* T0 = (index+5)/6 + 17 */ | 59 /* T0 = (index+5)/6 + 17 */ |
| 60 T0 = add (mult (add (index, 5), 5462), 17); | 60 T0 = add (mult (add (index, 5), 5462), 17); |
| 61 i = add (add (T0, T0), T0); | 61 i = add (add (T0, T0), T0); |
| 62 /* *T0_frac = index - T0*6 + 105 */ | 62 /* *T0_frac = index - T0*6 + 105 */ |
| 63 *T0_frac = add (sub (index, add (i, i)), 105); | 63 *T0_frac = add (sub (index, add (i, i)), 105); |
| 64 move16 (); | 64 move16 (); |
| 65 } | 65 } |
| 66 else | 66 else |
| 67 { | 67 { |
| 68 T0 = sub (index, 368); | 68 T0 = index - 368; |
| 69 *T0_frac = 0; move16 (); | 69 *T0_frac = 0; move16 (); |
| 70 } | 70 } |
| 71 } | 71 } |
| 72 else | 72 else |
| 73 /* bfi == 1 */ | 73 /* bfi == 1 */ |
| 77 } | 77 } |
| 78 | 78 |
| 79 /* find T0_min and T0_max for 2nd (or 4th) subframe */ | 79 /* find T0_min and T0_max for 2nd (or 4th) subframe */ |
| 80 | 80 |
| 81 *T0_min = sub (T0, 5); | 81 *T0_min = sub (T0, 5); |
| 82 if (sub (*T0_min, pit_min) < 0) | 82 if (*T0_min < pit_min) |
| 83 { | 83 { |
| 84 *T0_min = pit_min; | 84 *T0_min = pit_min; |
| 85 } | 85 } |
| 86 *T0_max = add (*T0_min, 9); | 86 *T0_max = add (*T0_min, 9); |
| 87 if (sub (*T0_max, pit_max) > 0) | 87 if (*T0_max > pit_max) |
| 88 { | 88 { |
| 89 *T0_max = pit_max; | 89 *T0_max = pit_max; |
| 90 *T0_min = sub (*T0_max, 9); | 90 *T0_min = sub (*T0_max, 9); |
| 91 } | 91 } |
| 92 } | 92 } |
| 93 else | 93 else |
| 94 /* second or fourth subframe */ | 94 /* second or fourth subframe */ |
| 95 { | 95 { |
| 96 test (); test (); | 96 test (); test (); |
| 97 /* if bfi == 0 decode pitch */ | 97 /* if bfi == 0 decode pitch */ |
| 98 if ((bfi == 0) && (sub (index, 61) < 0)) | 98 if ((bfi == 0) && (index < 61)) |
| 99 { | 99 { |
| 100 /* i = (index+5)/6 - 1 */ | 100 /* i = (index+5)/6 - 1 */ |
| 101 i = sub (mult (add (index, 5), 5462), 1); | 101 i = sub (mult (add (index, 5), 5462), 1); |
| 102 T0 = add (i, *T0_min); | 102 T0 = add (i, *T0_min); |
| 103 i = add (add (i, i), i); | 103 i = add (add (i, i), i); |
