1a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs/* 2a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs ** Copyright 2003-2010, VisualOn, Inc. 3a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs ** 4a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs ** Licensed under the Apache License, Version 2.0 (the "License"); 5a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs ** you may not use this file except in compliance with the License. 6a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs ** You may obtain a copy of the License at 7a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs ** 8a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs ** http://www.apache.org/licenses/LICENSE-2.0 9a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs ** 10a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs ** Unless required by applicable law or agreed to in writing, software 11a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs ** distributed under the License is distributed on an "AS IS" BASIS, 12a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs ** See the License for the specific language governing permissions and 14a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs ** limitations under the License. 15a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs */ 16a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs/******************************************************************************* 17a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs File: typedefs.h 18a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs 19a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs Content: type defined or const defined 20a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs 21a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs*******************************************************************************/ 22a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs 23a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs#ifndef typedefs_h 24a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs#define typedefs_h "$Id $" 25a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs 26a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs#ifndef CHAR_BIT 27a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs#define CHAR_BIT 8 /* number of bits in a char */ 28a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs#endif 29a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs 30a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs#ifndef VOAAC_SHRT_MAX 31a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs#define VOAAC_SHRT_MAX (32767) /* maximum (signed) short value */ 32a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs#endif 33a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs 34a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs#ifndef VOAAC_SHRT_MIN 35a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs#define VOAAC_SHRT_MIN (-32768) /* minimum (signed) short value */ 36a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs#endif 37a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs 38a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs/* Define NULL pointer value */ 39a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs#ifndef NULL 40a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs#ifdef __cplusplus 41a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs#define NULL 0 42a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs#else 43a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs#define NULL ((void *)0) 44a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs#endif 45a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs#endif 46a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs 47a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs#ifndef assert 48a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs#define assert(_Expression) ((void)0) 49a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs#endif 50a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs 51a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs#define __inline static __inline 52a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs 53a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs#define INT_BITS 32 54a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs/* 55a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs******************************************************************************** 56a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs* DEFINITION OF CONSTANTS 57a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs******************************************************************************** 58a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs*/ 59a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs/* 60a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs ********* define char type 61a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs */ 62a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggstypedef char Char; 63a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs 64a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs/* 65a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs ********* define 8 bit signed/unsigned types & constants 66a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs */ 67a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggstypedef signed char Word8; 68a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggstypedef unsigned char UWord8; 69a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs/* 70a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs ********* define 16 bit signed/unsigned types & constants 71a2fc42b899de22273c1df96091bfb5c636075cb0Ben Skeggs */ 72typedef short Word16; 73typedef unsigned short UWord16; 74 75/* 76 ********* define 32 bit signed/unsigned types & constants 77 */ 78typedef int Word32; 79typedef unsigned int UWord32; 80 81 82 83#ifndef _MSC_VER 84typedef long long Word64; 85typedef unsigned long long UWord64; 86#else 87typedef __int64 Word64; 88typedef unsigned __int64 UWord64; 89#endif 90 91#ifndef min 92#define min(a,b) ( a < b ? a : b) 93#endif 94 95#ifndef max 96#define max(a,b) ( a > b ? a : b) 97#endif 98 99#ifdef ARM_INASM 100#ifdef ARMV5_INASM 101#define ARMV5E_INASM 1 102#endif 103#define ARMV4_INASM 1 104#endif 105 106#if ARMV4_INASM 107 #define ARMV5TE_SAT 1 108 #define ARMV5TE_ADD 1 109 #define ARMV5TE_SUB 1 110 #define ARMV5TE_SHL 1 111 #define ARMV5TE_SHR 1 112 #define ARMV5TE_L_SHL 1 113 #define ARMV5TE_L_SHR 1 114#endif//ARMV4 115#if ARMV5E_INASM 116 #define ARMV5TE_L_ADD 1 117 #define ARMV5TE_L_SUB 1 118 #define ARMV5TE_L_MULT 1 119 #define ARMV5TE_L_MAC 1 120 #define ARMV5TE_L_MSU 1 121 122 123 #define ARMV5TE_DIV_S 1 124 #define ARMV5TE_ROUND 1 125 #define ARMV5TE_MULT 1 126 127 #define ARMV5TE_NORM_S 1 128 #define ARMV5TE_NORM_L 1 129 #define ARMV5TE_L_MPY_LS 1 130#endif 131#if ARMV6_INASM 132 #undef ARMV5TE_ADD 133 #define ARMV5TE_ADD 0 134 #undef ARMV5TE_SUB 135 #define ARMV5TE_SUB 0 136 #define ARMV6_SAT 1 137#endif 138 139//basic operation functions optimization flags 140#define SATRUATE_IS_INLINE 1 //define saturate as inline function 141#define SHL_IS_INLINE 1 //define shl as inline function 142#define SHR_IS_INLINE 1 //define shr as inline function 143#define L_MULT_IS_INLINE 1 //define L_mult as inline function 144#define L_MSU_IS_INLINE 1 //define L_msu as inline function 145#define L_SUB_IS_INLINE 1 //define L_sub as inline function 146#define L_SHL_IS_INLINE 1 //define L_shl as inline function 147#define L_SHR_IS_INLINE 1 //define L_shr as inline function 148#define ADD_IS_INLINE 1 //define add as inline function //add, inline is the best 149#define SUB_IS_INLINE 1 //define sub as inline function //sub, inline is the best 150#define DIV_S_IS_INLINE 1 //define div_s as inline function 151#define MULT_IS_INLINE 1 //define mult as inline function 152#define NORM_S_IS_INLINE 1 //define norm_s as inline function 153#define NORM_L_IS_INLINE 1 //define norm_l as inline function 154#define ROUND_IS_INLINE 1 //define round as inline function 155#define L_MAC_IS_INLINE 1 //define L_mac as inline function 156#define L_ADD_IS_INLINE 1 //define L_add as inline function 157#define EXTRACT_H_IS_INLINE 1 //define extract_h as inline function 158#define EXTRACT_L_IS_INLINE 1 //define extract_l as inline function //??? 159#define MULT_R_IS_INLINE 1 //define mult_r as inline function 160#define SHR_R_IS_INLINE 1 //define shr_r as inline function 161#define MAC_R_IS_INLINE 1 //define mac_r as inline function 162#define MSU_R_IS_INLINE 1 //define msu_r as inline function 163#define L_SHR_R_IS_INLINE 1 //define L_shr_r as inline function 164 165#define PREFIX voAACEnc 166#define LINK0(x, y, z) LINK1(x,y,z) 167#define LINK1(x,y,z) x##y##z 168#define ADD_PREFIX(func) LINK0(PREFIX, _, func) 169 170#define L_Extract ADD_PREFIX(L_Extract) 171#define L_Comp ADD_PREFIX(L_Comp) 172#define Mpy_32 ADD_PREFIX(Mpy_32) 173#define Mpy_32_16 ADD_PREFIX(Mpy_32_16) 174#define Div_32 ADD_PREFIX(Div_32) 175#define iLog4 ADD_PREFIX(iLog4) 176#define rsqrt ADD_PREFIX(rsqrt) 177#define pow2_xy ADD_PREFIX(pow2_xy) 178#define L_mpy_ls ADD_PREFIX(L_mpy_ls) 179#define L_mpy_wx ADD_PREFIX(L_mpy_wx) 180 181#define mem_malloc ADD_PREFIX(mem_malloc) 182#define mem_free ADD_PREFIX(mem_free) 183 184#endif 185