• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
20  Pathname: s_tDec_Int_File.h
21 
22 ------------------------------------------------------------------------------
23  REVISION HISTORY
24 
25  Description: Remove unneeded structure elements, clean up.
26 
27  Description: Remove block.h, not needed, chains in other not needed files.
28 
29  Description: Added declaration of scratch memory, scratchTnsDecCoefMem,
30  which will be utilized by tns_decode_coef().
31 
32  Description:
33  (1) Modified to include the lines...
34 
35     #ifdef __cplusplus
36     extern "C" {
37     #endif
38 
39     #ifdef __cplusplus
40     }
41     #endif
42 
43  (2) Updated the copyright header.
44 
45  Description: Per review comments...
46  (1) Removed declaration of unused variable, savedMCInfo
47  (2) Commented out ADTS related variables.
48  (3) Slight re-wording of comment for clarity.
49 
50  Description:
51  (1) Moved scratch_prog_config into the scratch union.
52 
53  Description:
54  (1) Added ltp state variable.
55 
56  Description: Make tDec_Int_perChan an array of structures.
57               In the user applications, the malloc command will allocate a
58               continuous chunk of memory.
59 
60  Description:
61            (1) Added the array data_stream_bytes[] to structure tDec_Int_File.
62                This to support Data Streaming Elements (DSE).
63            (2) Updated the copyright header.
64 
65 
66  Who:                                       Date:
67  Description:
68 
69 ------------------------------------------------------------------------------
70  INCLUDE DESCRIPTION
71 
72  This include file defines the structure, tDec_Int_Chan
73 
74 ------------------------------------------------------------------------------
75 */
76 
77 /*----------------------------------------------------------------------------
78 ; CONTINUE ONLY IF NOT ALREADY DEFINED
79 ----------------------------------------------------------------------------*/
80 #ifndef S_TDEC_INT_FILE_H
81 #define S_TDEC_INT_FILE_H
82 
83 #ifdef __cplusplus
84 extern "C"
85 {
86 #endif
87 
88     /*----------------------------------------------------------------------------
89     ; INCLUDES
90     ----------------------------------------------------------------------------*/
91 #include "pv_audio_type_defs.h"
92 #include "s_progconfig.h"
93 #include "s_frameinfo.h"
94 #include "s_mc_info.h"
95 #include "s_adif_header.h"
96 #include "s_tdec_int_chan.h"
97 #include "s_pulseinfo.h"
98 #include "s_bits.h"
99 #include "s_hcb.h"
100 #include "e_infoinitconst.h"
101 
102 #include "s_sbr_channel.h"
103 #include "s_sbr_dec.h"
104 #include "s_sbrbitstream.h"
105 
106     /*----------------------------------------------------------------------------
107     ; MACROS
108     ; Define module specific macros here
109     ----------------------------------------------------------------------------*/
110 
111     /*----------------------------------------------------------------------------
112     ; DEFINES
113     ; Include all pre-processor statements here.
114     ----------------------------------------------------------------------------*/
115 
116     /*----------------------------------------------------------------------------
117     ; EXTERNAL VARIABLES REFERENCES
118     ; Declare variables used in this module but defined elsewhere
119     ----------------------------------------------------------------------------*/
120 
121     /*----------------------------------------------------------------------------
122     ; SIMPLE TYPEDEF'S
123     ----------------------------------------------------------------------------*/
124 
125     /*----------------------------------------------------------------------------
126     ; ENUMERATED TYPEDEF'S
127     ----------------------------------------------------------------------------*/
128 
129     /*----------------------------------------------------------------------------
130     ; STRUCTURES TYPEDEF'S
131     ----------------------------------------------------------------------------*/
132 
133 
134 
135 
136 
137     /*
138      * Note: most of the names of the variables put into this structure were kept
139      * the same because the name is also used in called functions.
140      *
141      * bno - block number
142      *
143      */
144     typedef struct
145     {
146         UInt32         bno;
147         Int            status;  /* save the status */
148 
149         bool           aacPlusEnabled;
150         bool           aacConfigUtilityEnabled;
151 
152         Int            current_program;
153         Int            frameLength;
154         Int            adif_test;
155 
156         BITS           inputStream;
157 
158         ProgConfig     prog_config;
159 
160         Int            SFBWidth128[(1<<LEN_MAX_SFBS)];
161 
162         /*
163          * One of the two arrays should be deleted in the final version.
164          */
165         FrameInfo      longFrameInfo;
166         FrameInfo      shortFrameInfo;
167         FrameInfo     *winmap[NUM_WIN_SEQ];
168 
169         /*
170          * Pns variables.
171          */
172         Int32          pns_cur_noise_state;
173 
174         /*
175          *
176          */
177         MC_Info        mc_info;
178 
179         Int            ltp_buffer_state;
180 
181         /*
182          *  For eaac+, a scratch matrix is created with the rigth element ( perChan[1] is not used)
183          *  and the fxpCoef matrix. These  2 matrices are [2][38][64] == 4864 Int32
184          *    2349 coming from the perChan[1] plus 4096 coming from fxpCoef
185          */
186         tDec_Int_Chan  perChan[Chans];
187 
188         Int32          fxpCoef[2][LN];         /* LN  = 2048     */
189 
190 
191 
192 #ifdef AAC_PLUS
193 
194         SBRDECODER_DATA sbrDecoderData;/* allocates 2 SBR_CHANNEL, each has a SBR_FRAME_DATA */
195         SBR_DEC         sbrDec;
196         SBRBITSTREAM    sbrBitStr;
197 
198 #endif
199 
200 
201         /*
202          * If ADTS support is needed, the following variables will
203          * be required.
204          */
205         UInt32         syncword;
206         Int            invoke;
207 
208         Int         mask[MAXBANDS];
209         Int         hasmask;
210 
211 
212         /*  SBR usage
213          *  These two unions are used for the SBR tool and used
214          *  as a single 2560 int32 continuous memory for circular
215          *  buffering the synthesis QMF's bank history
216          */
217 
218         /* This union specifies memory for arrays which are used
219          * by only one function.  This is the simplest type of scratch
220          * memory to implement, since there are no worries about
221          * function interaction.
222          */
223         union scratch_memory
224         {
225             Int32  fft[LONG_WINDOW];    /* 1024, as needed by the FFT */
226             Int32  tns_inv_filter[TNS_MAX_ORDER];
227             Int32  tns_decode_coef[2*TNS_MAX_ORDER];
228             Int    huffbook_used[248];
229             Int16  tmp_spec[LN2];  /* Used in conjunction with quant_spec */
230 
231             ADIF_Header    adif_header;
232 
233             ProgConfig     scratch_prog_config;
234 
235 
236             Int32  scratch_mem[16][64];
237         } scratch;
238 
239         /* This union tries to take advantage of the fact that
240          * some variables are only used before LTP, and
241          * the long array, predictedSamples, is only used after LTP.
242          */
243 
244         /*
245          *  also used by the circular buffer scheme on aac+ (needs 4096 + 1152)
246          *  from scratch_mem[2] + 5248  (uses most of shared_memory).
247          *  For eaac+, shared memory is used by sbrQmfBufferReal which needs
248          *  1824 bytes
249          */
250         union shared_memory
251         {
252             Int32       predictedSamples[LONG_BLOCK1];  /* 2048 Int32 */
253 
254             Char        data_stream_bytes[(1<<LEN_D_CNT)+1];
255 
256             struct
257             {
258                 Int16         quantSpec[LN2];
259                 SectInfo    sect[MAXBANDS + 1];
260                 PulseInfo   pulseInfo;
261             } a;
262 
263         } share;
264 
265 
266     } tDec_Int_File;
267 
268     /*----------------------------------------------------------------------------
269     ; GLOBAL FUNCTION DEFINITIONS
270     ; Function Prototype declaration
271     ----------------------------------------------------------------------------*/
272 
273 #ifdef __cplusplus
274 }
275 #endif
276 
277 #endif /* S_TDEC_INT_FILE_H */
278