• 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: window_block_fxp.h
21 
22 
23 ------------------------------------------------------------------------------
24  REVISION HISTORY
25 
26  Description:
27     modified function definition: Time_data from Int to Int32
28     change wnd_shape from structure to passing parameters
29     delete definition of wnd_shape1, not needed.
30 
31  Description: Modified based on unit test comments
32 
33  Description: Change copyright, add () around constants.
34 
35  Description:
36     changed Long_Window_fxp and Short _Window_fxp tables definition, from
37     "const UInt16 *"  to "const UInt16 * const" to avoid global variable
38     definition.
39 
40  Description: Updated function trans4m_freq_2_time_fxp definition
41 
42  Description:  Modified function interface to add output_buffer
43 
44 
45  Description:
46 
47 ------------------------------------------------------------------------------
48  INCLUDE DESCRIPTION
49 
50  Header file for window and block switch
51 
52 
53 ------------------------------------------------------------------------------
54  REFERENCES
55 
56  (1) ISO/IEC 13818-7 Part 7: Advanced Audo Coding (AAC)
57 
58 
59  (2) MPEG-2 NBC Audio Decoder
60    "This software module was originally developed by AT&T, Dolby
61    Laboratories, Fraunhofer Gesellschaft IIS in the course of development
62    of the MPEG-2 NBC/MPEG-4 Audio standard ISO/IEC 13818-7, 14496-1,2 and
63    3. This software module is an implementation of a part of one or more
64    MPEG-2 NBC/MPEG-4 Audio tools as specified by the MPEG-2 NBC/MPEG-4
65    Audio standard. ISO/IEC gives users of the MPEG-2 NBC/MPEG-4 Audio
66    standards free license to this software module or modifications thereof
67    for use in hardware or software products claiming conformance to the
68    MPEG-2 NBC/MPEG-4 Audio  standards. Those intending to use this software
69    module in hardware or software products are advised that this use may
70    infringe existing patents. The original developer of this software
71    module and his/her company, the subsequent editors and their companies,
72    and ISO/IEC have no liability for use of this software module or
73    modifications thereof in an implementation. Copyright is not released
74    for non MPEG-2 NBC/MPEG-4 Audio conforming products.The original
75    developer retains full right to use the code for his/her own purpose,
76    assign or donate the code to a third party and to inhibit third party
77    from using the code for non MPEG-2 NBC/MPEG-4 Audio conforming products.
78    This copyright notice must be included in all copies or derivative
79    works."
80    Copyright(c)1996.
81 
82 ------------------------------------------------------------------------------
83 */
84 
85 /*----------------------------------------------------------------------------
86 ; CONTINUE ONLY IF NOT ALREADY DEFINED
87 ----------------------------------------------------------------------------*/
88 #ifndef WINDOW_BLOCK_FXP_H
89 #define WINDOW_BLOCK_FXP_H
90 
91 
92 /*----------------------------------------------------------------------------
93 ; INCLUDES
94 ----------------------------------------------------------------------------*/
95 #include "pv_audio_type_defs.h"
96 #include "e_window_shape.h"
97 #include "e_window_sequence.h"
98 
99 /*----------------------------------------------------------------------------
100 ; MACROS
101 ; Define module specific macros here
102 ----------------------------------------------------------------------------*/
103 #ifdef __cplusplus
104 extern "C"
105 {
106 #endif
107 
108     /*----------------------------------------------------------------------------
109     ; DEFINES
110     ; Include all pre-processor statements here.
111     ----------------------------------------------------------------------------*/
112 #define LONG_WINDOW         (1024)
113 #define SHORT_WINDOW        (128)
114 
115 #define HALF_LONG_WINDOW    (LONG_WINDOW>>1)
116 #define HALF_SHORT_WINDOW   (SHORT_WINDOW>>1)
117 
118 #define NUM_SHORT_WINDOWS   (8)
119 #define LONG_WINDOW_m_1     (LONG_WINDOW-1)
120 #define SHORT_WINDOW_m_1    (SHORT_WINDOW-1)
121 
122     /*
123      *  Limits for window sequences, they are used to build
124      *  each long window, they are defined in the standards
125      */
126 #define W_L_START_1         ((3*LONG_WINDOW - SHORT_WINDOW)>>1)
127 #define W_L_START_2         ((3*LONG_WINDOW + SHORT_WINDOW)>>1)
128 #define W_L_STOP_1          ((LONG_WINDOW - SHORT_WINDOW)>>1)
129 #define W_L_STOP_2          ((LONG_WINDOW + SHORT_WINDOW)>>1)
130 
131 
132 #define LONG_BLOCK1          (2*LONG_WINDOW)
133 #define SHORT_BLOCK1         (2*SHORT_WINDOW)
134 
135 
136 #define  SCALING    10
137 #define  ROUNDING     (1<<(SCALING-1))
138 
139 
140     /*----------------------------------------------------------------------------
141     ; EXTERNAL VARIABLES REFERENCES
142     ; Declare variables used in this module but defined elsewhere
143     ----------------------------------------------------------------------------*/
144     extern const Int16 Short_Window_KBD_fxp[ SHORT_WINDOW];
145     extern const Int16 Long_Window_KBD_fxp[ LONG_WINDOW];
146     extern const Int16 Short_Window_sine_fxp[ SHORT_WINDOW];
147     extern const Int16 Long_Window_sine_fxp[ LONG_WINDOW];
148 
149     extern const Int16 * const Long_Window_fxp[];
150     extern const Int16 * const Short_Window_fxp[];
151 
152     /*----------------------------------------------------------------------------
153     ; SIMPLE TYPEDEF'S
154     ----------------------------------------------------------------------------*/
155 
156     /*----------------------------------------------------------------------------
157     ; ENUMERATED TYPEDEF'S
158     ----------------------------------------------------------------------------*/
159 
160 
161 
162     /*----------------------------------------------------------------------------
163     ; STRUCTURES TYPEDEF'S
164     ----------------------------------------------------------------------------*/
165 
166     /*----------------------------------------------------------------------------
167     ; GLOBAL FUNCTION DEFINITIONS
168     ; Function Prototype declaration
169     ----------------------------------------------------------------------------*/
170 
171     void trans4m_freq_2_time_fxp(
172         Int32   Frequency_data[],
173         Int32   Time_data[],
174 #ifdef AAC_PLUS
175         Int32   Output_buffer[],
176 #else
177         Int16   Output_buffer[],
178 #endif
179         WINDOW_SEQUENCE wnd_seq,
180         Int     wnd_shape_prev_bk,
181         Int     wnd_shape_this_bk,
182         Int     Q_format,
183         Int32   abs_max_per_window[],
184         Int32   freq_2_time_buffer[] ,
185         Int16   *Interleave_output
186     );
187 
188 
189 
190     void trans4m_freq_2_time_fxp_1(
191         Int32   Frequency_data[],
192         Int32   Time_data[],
193         Int16   Output_buffer[],
194         WINDOW_SEQUENCE wnd_seq,
195         Int     wnd_shape_prev_bk,
196         Int     wnd_shape_this_bk,
197         Int     Q_format,
198         Int32   abs_max_per_window[],
199         Int32   freq_2_time_buffer[]
200     );
201 
202 
203     void trans4m_freq_2_time_fxp_2(
204         Int32   Frequency_data[],
205         Int32   Time_data[],
206         WINDOW_SEQUENCE wnd_seq,
207         Int     wnd_shape_prev_bk,
208         Int     wnd_shape_this_bk,
209         Int     Q_format,
210         Int32   abs_max_per_window[],
211         Int32   freq_2_time_buffer[] ,
212         Int16   *Interleave_output
213     );
214 
215     void trans4m_time_2_freq_fxp(
216         Int32   Time2Freq_data[],
217         WINDOW_SEQUENCE wnd_seq,
218         Int     wnd_shape_prev_bk,
219         Int     wnd_shape_this_bk,
220         Int     *pQ_format,
221         Int32   mem_4_in_place_FFT[]);
222 
223     /*----------------------------------------------------------------------------
224     ; END
225     ----------------------------------------------------------------------------*/
226 #ifdef __cplusplus
227 }
228 #endif
229 
230 #endif  /*  WINDOW_BLOCK_FXP_H */
231 
232