/* ** Copyright 2003-2010, VisualOn, Inc. ** ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. ** You may obtain a copy of the License at ** ** http://www.apache.org/licenses/LICENSE-2.0 ** ** Unless required by applicable law or agreed to in writing, software ** distributed under the License is distributed on an "AS IS" BASIS, ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ** See the License for the specific language governing permissions and ** limitations under the License. */ /******************************************************************************* File: typedefs.h Content: type defined or const defined *******************************************************************************/ #ifndef typedefs_h #define typedefs_h "$Id $" #ifndef CHAR_BIT #define CHAR_BIT 8 /* number of bits in a char */ #endif #ifndef VOAAC_SHRT_MAX #define VOAAC_SHRT_MAX (32767) /* maximum (signed) short value */ #endif #ifndef VOAAC_SHRT_MIN #define VOAAC_SHRT_MIN (-32768) /* minimum (signed) short value */ #endif /* Define NULL pointer value */ #ifndef NULL #ifdef __cplusplus #define NULL 0 #else #define NULL ((void *)0) #endif #endif #ifndef assert #define assert(_Expression) ((void)0) #endif #ifdef LINUX #define __inline static __inline__ #endif #define INT_BITS 32 /* ******************************************************************************** * DEFINITION OF CONSTANTS ******************************************************************************** */ /* ********* define char type */ typedef char Char; /* ********* define 8 bit signed/unsigned types & constants */ typedef signed char Word8; typedef unsigned char UWord8; /* ********* define 16 bit signed/unsigned types & constants */ typedef short Word16; typedef unsigned short UWord16; /* ********* define 32 bit signed/unsigned types & constants */ typedef long Word32; typedef unsigned long UWord32; #ifdef LINUX typedef long long Word64; typedef unsigned long long UWord64; #else typedef __int64 Word64; typedef unsigned __int64 UWord64; #endif #ifndef min #define min(a,b) ( a < b ? a : b) #endif #ifndef max #define max(a,b) ( a > b ? a : b) #endif #ifdef ARM_INASM #ifdef ARMV5_INASM #define ARMV5E_INASM 1 #endif #define ARMV4_INASM 1 #endif #if ARMV4_INASM #define ARMV5TE_SAT 1 #define ARMV5TE_ADD 1 #define ARMV5TE_SUB 1 #define ARMV5TE_SHL 1 #define ARMV5TE_SHR 1 #define ARMV5TE_L_SHL 1 #define ARMV5TE_L_SHR 1 #endif//ARMV4 #if ARMV5E_INASM #define ARMV5TE_L_ADD 1 #define ARMV5TE_L_SUB 1 #define ARMV5TE_L_MULT 1 #define ARMV5TE_L_MAC 1 #define ARMV5TE_L_MSU 1 #define ARMV5TE_DIV_S 1 #define ARMV5TE_ROUND 1 #define ARMV5TE_MULT 1 #define ARMV5TE_NORM_S 1 #define ARMV5TE_NORM_L 1 #define ARMV5TE_L_MPY_LS 1 #endif //basic operation functions optimization flags #define SATRUATE_IS_INLINE 1 //define saturate as inline function #define SHL_IS_INLINE 1 //define shl as inline function #define SHR_IS_INLINE 1 //define shr as inline function #define L_MULT_IS_INLINE 1 //define L_mult as inline function #define L_MSU_IS_INLINE 1 //define L_msu as inline function #define L_SUB_IS_INLINE 1 //define L_sub as inline function #define L_SHL_IS_INLINE 1 //define L_shl as inline function #define L_SHR_IS_INLINE 1 //define L_shr as inline function #define ADD_IS_INLINE 1 //define add as inline function //add, inline is the best #define SUB_IS_INLINE 1 //define sub as inline function //sub, inline is the best #define DIV_S_IS_INLINE 1 //define div_s as inline function #define MULT_IS_INLINE 1 //define mult as inline function #define NORM_S_IS_INLINE 1 //define norm_s as inline function #define NORM_L_IS_INLINE 1 //define norm_l as inline function #define ROUND_IS_INLINE 1 //define round as inline function #define L_MAC_IS_INLINE 1 //define L_mac as inline function #define L_ADD_IS_INLINE 1 //define L_add as inline function #define EXTRACT_H_IS_INLINE 1 //define extract_h as inline function #define EXTRACT_L_IS_INLINE 1 //define extract_l as inline function //??? #define MULT_R_IS_INLINE 1 //define mult_r as inline function #define SHR_R_IS_INLINE 1 //define shr_r as inline function #define MAC_R_IS_INLINE 1 //define mac_r as inline function #define MSU_R_IS_INLINE 1 //define msu_r as inline function #define L_SHR_R_IS_INLINE 1 //define L_shr_r as inline function #define PREFIX voAACEnc #define LINK0(x, y, z) LINK1(x,y,z) #define LINK1(x,y,z) x##y##z #define ADD_PREFIX(func) LINK0(PREFIX, _, func) #define L_Extract ADD_PREFIX(L_Extract) #define L_Comp ADD_PREFIX(L_Comp) #define Mpy_32 ADD_PREFIX(Mpy_32) #define Mpy_32_16 ADD_PREFIX(Mpy_32_16) #define Div_32 ADD_PREFIX(Div_32) #define iLog4 ADD_PREFIX(iLog4) #define rsqrt ADD_PREFIX(rsqrt) #define pow2_xy ADD_PREFIX(pow2_xy) #define L_mpy_ls ADD_PREFIX(L_mpy_ls) #define L_mpy_wx ADD_PREFIX(L_mpy_wx) #define mem_malloc ADD_PREFIX(mem_malloc) #define mem_free ADD_PREFIX(mem_free) #endif