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 */
77typedef char Char;
78
79/*
80 ********* define 8 bit signed/unsigned types & constants
81 */
82#if SCHAR_MAX == 127
83typedef signed char Word8;
84#define minWord8  SCHAR_MIN
85#define maxWord8  SCHAR_MAX
86
87typedef 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
99typedef int Word16;
100#define minWord16     INT_MIN
101#define maxWord16     INT_MAX
102typedef unsigned int UWord16;
103#define minUWord16    0
104#define maxUWord16    UINT_MAX
105#elif SHRT_MAX == 32767
106typedef short Word16;
107#define minWord16     SHRT_MIN
108#define maxWord16     SHRT_MAX
109typedef 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
121typedef int Word32;
122#define minWord32     INT_MIN
123#define maxWord32     INT_MAX
124typedef unsigned int UWord32;
125#define minUWord32    0
126#define maxUWord32    UINT_MAX
127#elif LONG_MAX == 2147483647
128typedef long Word32;
129#define minWord32     LONG_MIN
130#define maxWord32     LONG_MAX
131typedef 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
145typedef float Float;
146#define maxFloat      FLT_MAX
147#define minFloat      FLT_MIN
148#else
149typedef double Float;
150#define maxFloat      DBL_MAX
151#define minFloat      DBL_MIN
152#endif
153
154/*
155 ********* define complex type
156 */
157typedef struct {
158  Float r;  /* real      part */
159  Float i;  /* imaginary part */
160} CPX;
161
162/*
163 ********* define boolean type
164 */
165typedef 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