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