FreeCalypso > hg > gsm-codec-lib
annotate libtwamr/d_plsf_5.c @ 585:3c6bf0d26ee7 default tip
TW-TS-005 reader: fix maximum line length bug
TW-TS-005 section 4.1 states:
The maximum allowed length of each line is 80 characters, not
including the OS-specific newline encoding.
The implementation of this line length limit in the TW-TS-005 hex file
reader function in the present suite was wrong, such that lines of
the full maximum length could not be read. Fix it.
Note that this bug affects comment lines too, not just actual RTP
payloads. Neither Annex A nor Annex B features an RTP payload format
that goes to the maximum of 40 bytes, but if a comment line goes to
the maximum allowed length of 80 characters not including the
terminating newline, the bug will be triggered, necessitating
the present fix.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Tue, 25 Feb 2025 07:49:28 +0000 |
parents | 29769a9b89d3 |
children |
rev | line source |
---|---|
345
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 /* |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2 ***************************************************************************** |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3 * |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 * GSM AMR-NB speech codec R98 Version 7.6.0 December 12, 2001 |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 * R99 Version 3.3.0 |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 * REL-4 Version 4.1.0 |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 * |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 ***************************************************************************** |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 * |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 * File : d_plsf_5.c |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 * |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 ***************************************************************************** |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 */ |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 /* |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 ***************************************************************************** |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 * MODULE INCLUDE FILE AND VERSION ID |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18 ***************************************************************************** |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
19 */ |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
20 #include "namespace.h" |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
21 #include "d_plsf.h" |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22 |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
23 /* |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
24 ***************************************************************************** |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25 * INCLUDE FILES |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
26 ***************************************************************************** |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
27 */ |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
28 #include "typedef.h" |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
29 #include "basic_op.h" |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
30 #include "no_count.h" |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
31 #include "lsp_lsf.h" |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
32 #include "reorder.h" |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
33 #include "cnst.h" |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
34 #include "memops.h" |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
35 #include "q_plsf5_tab.h" |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
36 |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
37 /* |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
38 ***************************************************************************** |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
39 * LOCAL VARIABLES AND TABLES |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
40 ***************************************************************************** |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
41 */ |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
42 |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
43 /* ALPHA -> 0.95 */ |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
44 /* ONE_ALPHA-> (1.0-ALPHA) */ |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
45 #define ALPHA 31128 |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
46 #define ONE_ALPHA 1639 |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
47 |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
48 /* |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
49 *--------------------------------------------------* |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
50 * Constants (defined in cnst.h) * |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
51 *--------------------------------------------------* |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
52 * M : LPC order |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
53 *--------------------------------------------------* |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
54 */ |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
55 |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
56 /* |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
57 ***************************************************************************** |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
58 * PUBLIC PROGRAM CODE |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
59 ***************************************************************************** |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
60 */ |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
61 /* |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
62 ************************************************************************** |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
63 * |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
64 * Function : D_plsf_5 |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
65 * Purpose : Decodes the 2 sets of LSP parameters in a frame |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
66 * using the received quantization indices. |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
67 * |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
68 ************************************************************************** |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
69 */ |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
70 int D_plsf_5 ( |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
71 D_plsfState *st, /* i/o: State variables */ |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
72 Word16 bfi, /* i : bad frame indicator (set to 1 if a bad |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
73 frame is received) */ |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
74 Word16 *indice, /* i : quantization indices of 5 submatrices, Q0 */ |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
75 Word16 *lsp1_q, /* o : quantized 1st LSP vector (M), Q15 */ |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
76 Word16 *lsp2_q /* o : quantized 2nd LSP vector (M), Q15 */ |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
77 ) |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
78 { |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
79 Word16 i; |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
80 const Word16 *p_dico; |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
81 Word16 temp, sign; |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
82 Word16 lsf1_r[M], lsf2_r[M]; |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
83 Word16 lsf1_q[M], lsf2_q[M]; |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
84 |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
85 test (); |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
86 if (bfi != 0) /* if bad frame */ |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
87 { |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
88 /* use the past LSFs slightly shifted towards their mean */ |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
89 |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
90 for (i = 0; i < M; i++) |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
91 { |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
92 /* lsfi_q[i] = ALPHA*st->past_lsf_q[i] + ONE_ALPHA*mean_lsf[i]; */ |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
93 |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
94 lsf1_q[i] = add (mult (st->past_lsf_q[i], ALPHA), |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
95 mult (mean_lsf[i], ONE_ALPHA)); |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
96 move16 (); |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
97 |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
98 lsf2_q[i] = lsf1_q[i]; move16 (); |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
99 } |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
100 |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
101 /* estimate past quantized residual to be used in next frame */ |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
102 |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
103 for (i = 0; i < M; i++) |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
104 { |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
105 /* temp = mean_lsf[i] + st->past_r_q[i] * LSP_PRED_FAC_MR122; */ |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
106 |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
107 temp = add (mean_lsf[i], mult (st->past_r_q[i], |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
108 LSP_PRED_FAC_MR122)); |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
109 |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
110 st->past_r_q[i] = sub (lsf2_q[i], temp); |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
111 move16 (); |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
112 } |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
113 } |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
114 else |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
115 /* if good LSFs received */ |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
116 { |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
117 /* decode prediction residuals from 5 received indices */ |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
118 |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
119 p_dico = &dico1_lsf[shl (indice[0], 2)];move16 (); |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
120 lsf1_r[0] = *p_dico++; move16 (); |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
121 lsf1_r[1] = *p_dico++; move16 (); |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
122 lsf2_r[0] = *p_dico++; move16 (); |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
123 lsf2_r[1] = *p_dico++; move16 (); |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
124 |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
125 p_dico = &dico2_lsf[shl (indice[1], 2)];move16 (); |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
126 lsf1_r[2] = *p_dico++; move16 (); |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
127 lsf1_r[3] = *p_dico++; move16 (); |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
128 lsf2_r[2] = *p_dico++; move16 (); |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
129 lsf2_r[3] = *p_dico++; move16 (); |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
130 |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
131 sign = indice[2] & 1; logic16 (); |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
132 i = shr (indice[2], 1); |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
133 p_dico = &dico3_lsf[shl (i, 2)]; move16 (); |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
134 |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
135 test (); |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
136 if (sign == 0) |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
137 { |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
138 lsf1_r[4] = *p_dico++; move16 (); |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
139 lsf1_r[5] = *p_dico++; move16 (); |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
140 lsf2_r[4] = *p_dico++; move16 (); |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
141 lsf2_r[5] = *p_dico++; move16 (); |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
142 } |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
143 else |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
144 { |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
145 lsf1_r[4] = negate (*p_dico++); move16 (); |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
146 lsf1_r[5] = negate (*p_dico++); move16 (); |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
147 lsf2_r[4] = negate (*p_dico++); move16 (); |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
148 lsf2_r[5] = negate (*p_dico++); move16 (); |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
149 } |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
150 |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
151 p_dico = &dico4_lsf[shl (indice[3], 2)];move16 (); |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
152 lsf1_r[6] = *p_dico++; move16 (); |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
153 lsf1_r[7] = *p_dico++; move16 (); |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
154 lsf2_r[6] = *p_dico++; move16 (); |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
155 lsf2_r[7] = *p_dico++; move16 (); |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
156 |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
157 p_dico = &dico5_lsf[shl (indice[4], 2)];move16 (); |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
158 lsf1_r[8] = *p_dico++; move16 (); |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
159 lsf1_r[9] = *p_dico++; move16 (); |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
160 lsf2_r[8] = *p_dico++; move16 (); |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
161 lsf2_r[9] = *p_dico++; move16 (); |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
162 |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
163 /* Compute quantized LSFs and update the past quantized residual */ |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
164 for (i = 0; i < M; i++) |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
165 { |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
166 temp = add (mean_lsf[i], mult (st->past_r_q[i], |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
167 LSP_PRED_FAC_MR122)); |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
168 lsf1_q[i] = add (lsf1_r[i], temp); |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
169 move16 (); |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
170 lsf2_q[i] = add (lsf2_r[i], temp); |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
171 move16 (); |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
172 st->past_r_q[i] = lsf2_r[i]; move16 (); |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
173 } |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
174 } |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
175 |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
176 /* verification that LSFs have minimum distance of LSF_GAP Hz */ |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
177 |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
178 Reorder_lsf (lsf1_q, LSF_GAP, M); |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
179 Reorder_lsf (lsf2_q, LSF_GAP, M); |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
180 |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
181 Copy (lsf2_q, st->past_lsf_q, M); |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
182 |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
183 /* convert LSFs to the cosine domain */ |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
184 |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
185 Lsf_lsp (lsf1_q, lsp1_q, M); |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
186 Lsf_lsp (lsf2_q, lsp2_q, M); |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
187 |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
188 return 0; |
29769a9b89d3
libtwamr: integrate d_plsf_5.c
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
189 } |