typedefs.h revision 7c7674ea2d7ba099b5afd3badf4d69da55b377dd
1049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*
2049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ** Copyright 2003-2010, VisualOn, Inc.
3049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project **
4049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ** Licensed under the Apache License, Version 2.0 (the "License");
5049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ** you may not use this file except in compliance with the License.
6049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ** You may obtain a copy of the License at
7a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang **
8049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project **     http://www.apache.org/licenses/LICENSE-2.0
9049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project **
10049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ** Unless required by applicable law or agreed to in writing, software
11049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ** distributed under the License is distributed on an "AS IS" BASIS,
12049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ** See the License for the specific language governing permissions and
14049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ** limitations under the License.
15049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */
16049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*******************************************************************************
17049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project	File:		typedefs.h
18049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
19049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project	Content:	type defined or const defined
20049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
21049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project*******************************************************************************/
22049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
23049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifndef typedefs_h
24049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define typedefs_h "$Id $"
25049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
26049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifndef CHAR_BIT
27049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define CHAR_BIT      8         /* number of bits in a char */
28049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif
29049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
30049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifndef VOAAC_SHRT_MAX
31049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define VOAAC_SHRT_MAX    (32767)        /* maximum (signed) short value */
32049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif
33049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
34049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifndef VOAAC_SHRT_MIN
35049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define VOAAC_SHRT_MIN    (-32768)        /* minimum (signed) short value */
36049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif
37049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
38049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* Define NULL pointer value */
39049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifndef NULL
40049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifdef __cplusplus
41049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define NULL    0
42049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#else
43049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define NULL    ((void *)0)
44049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif
45049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif
46049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
47049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifndef assert
48049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define assert(_Expression)     ((void)0)
49049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif
50049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
51049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define __inline static __inline
52295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner
53295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner#define INT_BITS   32
54295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner/*
55295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner********************************************************************************
56049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project*                         DEFINITION OF CONSTANTS
57049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project********************************************************************************
58049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project*/
59049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*
60049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ********* define char type
61049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */
62049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Projecttypedef char Char;
63a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang
64049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*
65295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner ********* define 8 bit signed/unsigned types & constants
66295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner */
67049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Projecttypedef signed char Word8;
68049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Projecttypedef unsigned char UWord8;
69049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*
70049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ********* define 16 bit signed/unsigned types & constants
71049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */
72049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Projecttypedef short Word16;
73049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Projecttypedef unsigned short UWord16;
74049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
75049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*
76049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ********* define 32 bit signed/unsigned types & constants
77049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */
78049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Projecttypedef int Word32;
79049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Projecttypedef unsigned int UWord32;
80049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
81295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner
82049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
83049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifndef _MSC_VER
84295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turnertypedef long long Word64;
85049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Projecttypedef unsigned long long UWord64;
86049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#else
87295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turnertypedef __int64 Word64;
88295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turnertypedef unsigned __int64 UWord64;
89295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner#endif
90049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
91049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifndef min
92049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define min(a,b) ( a < b ? a : b)
93049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif
94049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
95049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifndef max
96049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define max(a,b) ( a > b ? a : b)
97049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif
98049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
99295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner#ifdef ARM_INASM
100295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner#ifdef ARMV5_INASM
101295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner#define ARMV5E_INASM	1
102295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner#endif
103295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner#define ARMV4_INASM		1
104049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif
105295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner
106295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner#if ARMV4_INASM
107295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner	#define ARMV5TE_SAT           1
108049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    #define ARMV5TE_ADD           1
109049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    #define ARMV5TE_SUB           1
110049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project	#define ARMV5TE_SHL           1
111049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    #define ARMV5TE_SHR           1
112049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project	#define ARMV5TE_L_SHL         1
113049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    #define ARMV5TE_L_SHR         1
114049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif//ARMV4
115049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if ARMV5E_INASM
116049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    #define ARMV5TE_L_ADD         1
117049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    #define ARMV5TE_L_SUB         1
118049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    #define ARMV5TE_L_MULT        1
119049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    #define ARMV5TE_L_MAC         1
120049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    #define ARMV5TE_L_MSU         1
121049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
122049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
123049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    #define ARMV5TE_DIV_S         1
124049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    #define ARMV5TE_ROUND         1
125049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    #define ARMV5TE_MULT          1
126049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
127049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    #define ARMV5TE_NORM_S        1
128049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    #define ARMV5TE_NORM_L        1
129049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project	#define ARMV5TE_L_MPY_LS	  1
130049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif
131049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
132049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project//basic operation functions optimization flags
133049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define SATRUATE_IS_INLINE              1   //define saturate as inline function
134049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define SHL_IS_INLINE                   1  //define shl as inline function
135049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define SHR_IS_INLINE                   1   //define shr as inline function
136049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define L_MULT_IS_INLINE                1   //define L_mult as inline function
137049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define L_MSU_IS_INLINE                 1   //define L_msu as inline function
138049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define L_SUB_IS_INLINE                 1   //define L_sub as inline function
139049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define L_SHL_IS_INLINE                 1   //define L_shl as inline function
140049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define L_SHR_IS_INLINE                 1   //define L_shr as inline function
141049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ADD_IS_INLINE                   1   //define add as inline function //add, inline is the best
142049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define SUB_IS_INLINE                   1   //define sub as inline function //sub, inline is the best
143049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define DIV_S_IS_INLINE                 1   //define div_s as inline function
144049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define MULT_IS_INLINE                  1   //define mult as inline function
145049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define NORM_S_IS_INLINE                1   //define norm_s as inline function
146049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define NORM_L_IS_INLINE                1   //define norm_l as inline function
147049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ROUND_IS_INLINE                 1   //define round as inline function
148049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define L_MAC_IS_INLINE                 1   //define L_mac as inline function
149049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define L_ADD_IS_INLINE                 1   //define L_add as inline function
150049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define EXTRACT_H_IS_INLINE             1   //define extract_h as inline function
151295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner#define EXTRACT_L_IS_INLINE             1   //define extract_l as inline function        //???
152049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define MULT_R_IS_INLINE                1   //define mult_r as inline function
153295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner#define SHR_R_IS_INLINE                 1   //define shr_r as inline function
154295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner#define MAC_R_IS_INLINE                 1   //define mac_r as inline function
155295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner#define MSU_R_IS_INLINE                 1   //define msu_r as inline function
156049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define L_SHR_R_IS_INLINE               1   //define L_shr_r as inline function
157049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
158049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define PREFIX				voAACEnc
159049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define LINK0(x, y, z)		LINK1(x,y,z)
160049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define LINK1(x,y,z)		x##y##z
161049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define ADD_PREFIX(func)	LINK0(PREFIX, _, func)
162049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
163049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define  L_Extract		ADD_PREFIX(L_Extract)
164049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define  L_Comp			ADD_PREFIX(L_Comp)
165049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define  Mpy_32			ADD_PREFIX(Mpy_32)
166049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define  Mpy_32_16		ADD_PREFIX(Mpy_32_16)
167049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define  Div_32			ADD_PREFIX(Div_32)
168049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define  iLog4			ADD_PREFIX(iLog4)
169049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define  rsqrt			ADD_PREFIX(rsqrt)
170049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define  pow2_xy		ADD_PREFIX(pow2_xy)
171049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define  L_mpy_ls		ADD_PREFIX(L_mpy_ls)
172049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define  L_mpy_wx		ADD_PREFIX(L_mpy_wx)
173049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
174049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define mem_malloc		ADD_PREFIX(mem_malloc)
175049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define mem_free		ADD_PREFIX(mem_free)
176049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
177049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif
178049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project