1 /*
2  ** Copyright 2003-2010, VisualOn, Inc.
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 express or implied.
13  ** See the License for the specific language governing permissions and
14  ** limitations under the License.
15  */
16 
17 /*
18 *
19 *      File             : typedefs.h
20 *      Description      : Definition of platform independent data
21 *                         types and constants
22 *
23 *
24 *      The following platform independent data types and corresponding
25 *      preprocessor (#define) constants are defined:
26 *
27 *        defined type  meaning           corresponding constants
28 *        ----------------------------------------------------------
29 *        Char          character         (none)
30 *        Bool          boolean           true, false
31 *        Word8         8-bit signed      minWord8,   maxWord8
32 *        UWord8        8-bit unsigned    minUWord8,  maxUWord8
33 *        Word16        16-bit signed     minWord16,  maxWord16
34 *        UWord16       16-bit unsigned   minUWord16, maxUWord16
35 *        Word32        32-bit signed     minWord32,  maxWord32
36 *        UWord32       32-bit unsigned   minUWord32, maxUWord32
37 *        Float         floating point    minFloat,   maxFloat
38 *
39 *
40 *      The following compile switches are #defined:
41 *
42 *        PLATFORM      string indicating platform progam is compiled on
43 *                      possible values: "OSF", "PC", "SUN"
44 *
45 *        OSF           only defined if the current platform is an Alpha
46 *        PC            only defined if the current platform is a PC
47 *        SUN           only defined if the current platform is a Sun
48 *
49 *        LSBFIRST      is defined if the byte order on this platform is
50 *                      "least significant byte first" -> defined on DEC Alpha
51 *                      and PC, undefined on Sun
52 *
53 ********************************************************************************
54 */
55 
56 #ifndef __TYPEDEFS_H__
57 #define __TYPEDEFS_H__
58 
59 /*
60 ********************************************************************************
61 *                         INCLUDE FILES
62 ********************************************************************************
63 */
64 #include <float.h>
65 #include <limits.h>
66 
67 
68 
69 /*
70 ********************************************************************************
71 *                         DEFINITION OF CONSTANTS
72 ********************************************************************************
73 */
74 /*
75  ********* define char type
76  */
77 typedef char Char;
78 
79 /*
80  ********* define 8 bit signed/unsigned types & constants
81  */
82 #if SCHAR_MAX == 127
83 typedef signed char Word8;
84 #define minWord8  SCHAR_MIN
85 #define maxWord8  SCHAR_MAX
86 
87 typedef unsigned char UWord8;
88 #define minUWord8 0
89 #define maxUWord8 UCHAR_MAX
90 #else
91 #error cannot find 8-bit type
92 #endif
93 
94 
95 /*
96  ********* define 16 bit signed/unsigned types & constants
97  */
98 #if INT_MAX == 32767
99 typedef int Word16;
100 #define minWord16     INT_MIN
101 #define maxWord16     INT_MAX
102 typedef unsigned int UWord16;
103 #define minUWord16    0
104 #define maxUWord16    UINT_MAX
105 #elif SHRT_MAX == 32767
106 typedef short Word16;
107 #define minWord16     SHRT_MIN
108 #define maxWord16     SHRT_MAX
109 typedef unsigned short UWord16;
110 #define minUWord16    0
111 #define maxUWord16    USHRT_MAX
112 #else
113 #error cannot find 16-bit type
114 #endif
115 
116 
117 /*
118  ********* define 32 bit signed/unsigned types & constants
119  */
120 #if INT_MAX == 2147483647
121 typedef int Word32;
122 #define minWord32     INT_MIN
123 #define maxWord32     INT_MAX
124 typedef unsigned int UWord32;
125 #define minUWord32    0
126 #define maxUWord32    UINT_MAX
127 #elif LONG_MAX == 2147483647
128 typedef long Word32;
129 #define minWord32     LONG_MIN
130 #define maxWord32     LONG_MAX
131 typedef unsigned long UWord32;
132 #define minUWord32    0
133 #define maxUWord32    ULONG_MAX
134 #else
135 #error cannot find 32-bit type
136 #endif
137 
138 /*
139  ********* define floating point type & constants
140  */
141 /* use "#if 0" below if Float should be double;
142    use "#if 1" below if Float should be float
143  */
144 #if 0
145 typedef float Float;
146 #define maxFloat      FLT_MAX
147 #define minFloat      FLT_MIN
148 #else
149 typedef double Float;
150 #define maxFloat      DBL_MAX
151 #define minFloat      DBL_MIN
152 #endif
153 
154 /*
155  ********* define complex type
156  */
157 typedef struct {
158   Float r;  /* real      part */
159   Float i;  /* imaginary part */
160 } CPX;
161 
162 /*
163  ********* define boolean type
164  */
165 typedef int Bool;
166 #define false 0
167 #define true 1
168 
169 /* ******Avoid function multiple definition****** */
170 #define     Autocorr         voAWB_Autocorr
171 #define     Convolve         voAWB_Convolve
172 #define     cor_h_x          voAWB_cor_h_x
173 #define     dtx_enc_init     voAWB_dtx_enc_init
174 #define     dtx_enc_reset    voAWB_dtx_enc_reset
175 #define     dtx_enc_exit     voAWB_dtx_enc_exit
176 #define     dtx_enc          voAWB_dtx_enc
177 #define     dtx_buffer       voAWB_dtx_buffer
178 #define     tx_dtx_handler   voAWB_tx_dtx_handler
179 #define     G_pitch          voAWB_G_pitch
180 #define     Isp_Az           voAWB_Isp_Az
181 #define     Lag_window       voAWB_Lag_window
182 #define     Log2_norm        voAWB_Log2_norm
183 #define     Log2             voAWB_Log2
184 #define     Pow2             voAWB_Pow2
185 #define     L_Comp           voAWB_L_Comp
186 #define     Mpy_32           voAWB_Mpy_32
187 #define     Mpy_32_16        voAWB_Mpy_32_16
188 #define     Div_32           voAWB_Div_32
189 #define     Pit_shrp         voAWB_Pit_shrp
190 #define     Qisf_ns          voAWB_Qisf_ns
191 #define     Disf_ns          voAWB_Disf_ns
192 #define     Residu           voAWB_Residu
193 #define     Syn_filt         voAWB_Syn_filt
194 #define     Set_zero         voAWB_Set_zero
195 #define     Copy             voAWB_Copy
196 #define     voice_factor     voAWB_voice_factor
197 #define     Syn_filt_32      voAWB_Syn_filt_32
198 #define     Isf_isp          voAWB_Isf_isp
199 #define     Levinson         voAWB_Levinson
200 #define     median5          voAWB_median5
201 #define     Pred_lt4         voAWB_Pred_lt4
202 #define     Reorder_isf      voAWB_Reorder_isf
203 #define     Dpisf_2s_36b     voAWB_Dpisf_2s_36b
204 #define     Dpisf_2s_46b     voAWB_Dpisf_2s_46b
205 #define     Dot_product12    voAWB_Dot_product12
206 #define     mem_malloc       voAWB_mem_malloc
207 #define     mem_free         voAWB_mem_free
208 /******************************************************/
209 
210 #endif  //#define __TYPEDEFS_H__
211 
212