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