FreeCalypso > hg > gsm-codec-lib
annotate libtwamr/calc_cor.c @ 553:ebcf414b7d99
doc/TFO-transform: describe details for FRv1, both modes
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Mon, 07 Oct 2024 08:24:24 +0000 |
parents | 67c31802392b |
children |
rev | line source |
---|---|
325
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 /* |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2 ******************************************************************************** |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3 * |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 * GSM AMR-NB speech codec R98 Version 7.6.0 December 12, 2001 |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 * R99 Version 3.3.0 |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 * REL-4 Version 4.1.0 |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 * |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 ******************************************************************************** |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 * |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 * File : calc_cor.c |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 * Purpose : Calculate all correlations for prior the OL LTP |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 * |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 ******************************************************************************** |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 */ |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 /* |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 ******************************************************************************** |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18 * MODULE INCLUDE FILE AND VERSION ID |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
19 ******************************************************************************** |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
20 */ |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
21 #include "namespace.h" |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22 #include "calc_cor.h" |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
23 |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
24 /* |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25 ******************************************************************************** |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
26 * INCLUDE FILES |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
27 ******************************************************************************** |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
28 */ |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
29 #include "typedef.h" |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
30 #include "basic_op.h" |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
31 #include "oper_32b.h" |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
32 #include "no_count.h" |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
33 #include "cnst.h" |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
34 |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
35 /* |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
36 ******************************************************************************** |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
37 * PUBLIC PROGRAM CODE |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
38 ******************************************************************************** |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
39 */ |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
40 /************************************************************************* |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
41 * |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
42 * FUNCTION: comp_corr |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
43 * |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
44 * PURPOSE: Calculate all correlations of scal_sig[] in a given delay |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
45 * range. |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
46 * |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
47 * DESCRIPTION: |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
48 * The correlation is given by |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
49 * cor[t] = <scal_sig[n],scal_sig[n-t]>, t=lag_min,...,lag_max |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
50 * The functions outputs the all correlations |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
51 * |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
52 *************************************************************************/ |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
53 void comp_corr ( |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
54 Word16 scal_sig[], /* i : scaled signal. */ |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
55 Word16 L_frame, /* i : length of frame to compute pitch */ |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
56 Word16 lag_max, /* i : maximum lag */ |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
57 Word16 lag_min, /* i : minimum lag */ |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
58 Word32 corr[]) /* o : correlation of selected lag */ |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
59 { |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
60 Word16 i, j; |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
61 Word16 *p, *p1; |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
62 Word32 t0; |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
63 |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
64 for (i = lag_max; i >= lag_min; i--) |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
65 { |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
66 p = scal_sig; move16 (); |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
67 p1 = &scal_sig[-i]; move16 (); |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
68 t0 = 0; move32 (); |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
69 |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
70 for (j = 0; j < L_frame; j++, p++, p1++) |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
71 { |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
72 t0 = L_mac (t0, *p, *p1); |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
73 } |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
74 corr[-i] = t0; move32 (); |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
75 } |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
76 |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
77 return; |
67c31802392b
libtwamr: integrate calc_cor.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
78 } |