1 /* ------------------------------------------------------------------
2 * Copyright (C) 1998-2009 PacketVideo
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
13 * express or implied.
14 * See the License for the specific language governing permissions
15 * and limitations under the License.
16 * -------------------------------------------------------------------
17 */
18 /****************************************************************************************
19 Portions of this file are derived from the following 3GPP standard:
20
21 3GPP TS 26.073
22 ANSI-C code for the Adaptive Multi-Rate (AMR) speech codec
23 Available from http://www.3gpp.org
24
25 (C) 2004, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC)
26 Permission to distribute, modify and use this file under the standard license
27 terms listed above has been obtained from the copyright holder.
28 ****************************************************************************************/
29 /*
30 ------------------------------------------------------------------------------
31
32
33
34 Pathname: ./audio/gsm-amr/c/src/d_plsf.c
35 Functions:
36
37
38 Date: 04/14/2000
39
40 ------------------------------------------------------------------------------
41 REVISION HISTORY
42
43 Description: Removed the functions d_plsf_init and d_plsf_exit.
44 The d_plsf related structure is no longer dynamically allocated.
45
46 Description: Removed q_plsf_5.tab from Include section and added
47 q_plsf_5_tbl.h to Include section. Changed "mean_lsf"
48 to "mean_lsf_5" in D_plsf_reset().
49
50 Description: Replaced OSCL mem type functions and eliminated include
51 files that now are chosen by OSCL definitions
52
53 Description: Replaced "int" and/or "char" with OSCL defined types.
54
55 Description:
56
57 ------------------------------------------------------------------------------
58 MODULE DESCRIPTION
59
60 common part (reset) of LSF decoder
61 module (rest in d_plsf_3.c and d_plsf_5.c)
62 ------------------------------------------------------------------------------
63 */
64
65 /*----------------------------------------------------------------------------
66 ; INCLUDES
67 ----------------------------------------------------------------------------*/
68 #include "typedef.h"
69 #include "basic_op.h"
70 #include "cnst.h"
71 #include "copy.h"
72 #include "d_plsf.h"
73 #include "q_plsf_5_tbl.h"
74
75
76 /*----------------------------------------------------------------------------
77 ; MACROS
78 ; Define module specific macros here
79 ----------------------------------------------------------------------------*/
80
81 /*----------------------------------------------------------------------------
82 ; DEFINES
83 ; Include all pre-processor statements here. Include conditional
84 ; compile variables also.
85 ----------------------------------------------------------------------------*/
86
87 /*----------------------------------------------------------------------------
88 ; LOCAL FUNCTION DEFINITIONS
89 ; Function Prototype declaration
90 ----------------------------------------------------------------------------*/
91
92 /*----------------------------------------------------------------------------
93 ; LOCAL VARIABLE DEFINITIONS
94 ; Variable declaration - defined here and used outside this module
95 ----------------------------------------------------------------------------*/
96
97 /*----------------------------------------------------------------------------
98 ; EXTERNAL FUNCTION REFERENCES
99 ; Declare functions defined elsewhere and referenced in this module
100 ----------------------------------------------------------------------------*/
101
102 /*----------------------------------------------------------------------------
103 ; EXTERNAL VARIABLES REFERENCES
104 ; Declare variables used in this module but defined elsewhere
105 ----------------------------------------------------------------------------*/
106
107 /*
108 ------------------------------------------------------------------------------
109 FUNCTION NAME: D_plsf_reset
110 ------------------------------------------------------------------------------
111 INPUT AND OUTPUT DEFINITIONS
112
113 Inputs:
114 state = pointer to structure of type D_plsf_reset
115
116 Outputs:
117 fields of the structure pointed to by state is initialized to zero
118
119 Returns:
120 return_value = 0, if reset was successful; -1, otherwise (int)
121
122 Global Variables Used:
123 None
124
125 Local Variables Needed:
126 None
127
128 ------------------------------------------------------------------------------
129 FUNCTION DESCRIPTION
130
131 Resets state memory
132
133 ------------------------------------------------------------------------------
134 REQUIREMENTS
135
136 None
137
138 ------------------------------------------------------------------------------
139 REFERENCES
140
141 d_plsf.c, UMTS GSM AMR speech codec, R99 - Version 3.2.0, March 2, 2001
142
143 ------------------------------------------------------------------------------
144 PSEUDO-CODE
145
146 int D_plsf_reset (D_plsfState *state)
147 {
148 Word16 i;
149
150 if (state == (D_plsfState *) NULL){
151 // fprintf(stderr, "D_plsf_reset: invalid parameter\n");
152 return -1;
153 }
154
155 for (i = 0; i < M; i++){
156 state->past_r_q[i] = 0; // Past quantized prediction error
157 }
158
159 // Past dequantized lsfs
160 Copy(mean_lsf, &state->past_lsf_q[0], M);
161
162 return 0;
163 }
164 ------------------------------------------------------------------------------
165 RESOURCES USED [optional]
166
167 When the code is written for a specific target processor the
168 the resources used should be documented below.
169
170 HEAP MEMORY USED: x bytes
171
172 STACK MEMORY USED: x bytes
173
174 CLOCK CYCLES: (cycle count equation for this function) + (variable
175 used to represent cycle count for each subroutine
176 called)
177 where: (cycle count variable) = cycle count for [subroutine
178 name]
179
180 ------------------------------------------------------------------------------
181 CAUTION [optional]
182 [State any special notes, constraints or cautions for users of this function]
183
184 ------------------------------------------------------------------------------
185 */
186
D_plsf_reset(D_plsfState * state)187 Word16 D_plsf_reset(D_plsfState *state)
188 {
189 Word16 i;
190
191 if (state == (D_plsfState *) NULL)
192 {
193 /* fprintf(stderr, "D_plsf_reset: invalid parameter\n"); */
194 return -1;
195 }
196
197 for (i = 0; i < M; i++)
198 {
199 state->past_r_q[i] = 0; /* Past quantized prediction error */
200 }
201
202 /* Past dequantized lsfs */
203 Copy(mean_lsf_5, &state->past_lsf_q[0], M);
204
205 return 0;
206
207 }
208