1*28e138c6SAndroid Build Coastguard Worker /* Copyright (C) 2007 Hong Zhiqian */ 2*28e138c6SAndroid Build Coastguard Worker /** 3*28e138c6SAndroid Build Coastguard Worker @file fixed_tm.h 4*28e138c6SAndroid Build Coastguard Worker @author Hong Zhiqian 5*28e138c6SAndroid Build Coastguard Worker @brief Various compatibility routines for Speex (TriMedia version) 6*28e138c6SAndroid Build Coastguard Worker */ 7*28e138c6SAndroid Build Coastguard Worker /* 8*28e138c6SAndroid Build Coastguard Worker Redistribution and use in source and binary forms, with or without 9*28e138c6SAndroid Build Coastguard Worker modification, are permitted provided that the following conditions 10*28e138c6SAndroid Build Coastguard Worker are met: 11*28e138c6SAndroid Build Coastguard Worker 12*28e138c6SAndroid Build Coastguard Worker - Redistributions of source code must retain the above copyright 13*28e138c6SAndroid Build Coastguard Worker notice, this list of conditions and the following disclaimer. 14*28e138c6SAndroid Build Coastguard Worker 15*28e138c6SAndroid Build Coastguard Worker - Redistributions in binary form must reproduce the above copyright 16*28e138c6SAndroid Build Coastguard Worker notice, this list of conditions and the following disclaimer in the 17*28e138c6SAndroid Build Coastguard Worker documentation and/or other materials provided with the distribution. 18*28e138c6SAndroid Build Coastguard Worker 19*28e138c6SAndroid Build Coastguard Worker - Neither the name of the Xiph.org Foundation nor the names of its 20*28e138c6SAndroid Build Coastguard Worker contributors may be used to endorse or promote products derived from 21*28e138c6SAndroid Build Coastguard Worker this software without specific prior written permission. 22*28e138c6SAndroid Build Coastguard Worker 23*28e138c6SAndroid Build Coastguard Worker THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 24*28e138c6SAndroid Build Coastguard Worker ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 25*28e138c6SAndroid Build Coastguard Worker LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 26*28e138c6SAndroid Build Coastguard Worker A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR 27*28e138c6SAndroid Build Coastguard Worker CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 28*28e138c6SAndroid Build Coastguard Worker EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 29*28e138c6SAndroid Build Coastguard Worker PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 30*28e138c6SAndroid Build Coastguard Worker PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 31*28e138c6SAndroid Build Coastguard Worker LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 32*28e138c6SAndroid Build Coastguard Worker NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 33*28e138c6SAndroid Build Coastguard Worker SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 34*28e138c6SAndroid Build Coastguard Worker */ 35*28e138c6SAndroid Build Coastguard Worker #ifndef FIXED_TM_H 36*28e138c6SAndroid Build Coastguard Worker #define FIXED_TM_H 37*28e138c6SAndroid Build Coastguard Worker 38*28e138c6SAndroid Build Coastguard Worker #include <ops/custom_defs.h> 39*28e138c6SAndroid Build Coastguard Worker 40*28e138c6SAndroid Build Coastguard Worker 41*28e138c6SAndroid Build Coastguard Worker #undef SATURATE 42*28e138c6SAndroid Build Coastguard Worker #undef SATURATE16 43*28e138c6SAndroid Build Coastguard Worker #undef SATURATE32 44*28e138c6SAndroid Build Coastguard Worker #define SATURATE(x,a) iclipi(x,a) 45*28e138c6SAndroid Build Coastguard Worker #define SATURATE16(x,a) iclipi(x,a) 46*28e138c6SAndroid Build Coastguard Worker #define SATURATE32(x,a) iclipi(x,a) 47*28e138c6SAndroid Build Coastguard Worker 48*28e138c6SAndroid Build Coastguard Worker #undef EXTEND32 49*28e138c6SAndroid Build Coastguard Worker #define EXTEND32(x) sex16(x) 50*28e138c6SAndroid Build Coastguard Worker 51*28e138c6SAndroid Build Coastguard Worker #undef NEG16 52*28e138c6SAndroid Build Coastguard Worker #undef NEG32 53*28e138c6SAndroid Build Coastguard Worker #define NEG16(x) ineg((int)(x)) 54*28e138c6SAndroid Build Coastguard Worker #define NEG32(x) ineg(x) 55*28e138c6SAndroid Build Coastguard Worker 56*28e138c6SAndroid Build Coastguard Worker #undef ABS 57*28e138c6SAndroid Build Coastguard Worker #undef ABS16 58*28e138c6SAndroid Build Coastguard Worker #undef ABS32 59*28e138c6SAndroid Build Coastguard Worker #define ABS(x) iabs(x) 60*28e138c6SAndroid Build Coastguard Worker #define ABS32(x) iabs(x) 61*28e138c6SAndroid Build Coastguard Worker #define ABS16(x) iabs((int)(x)) 62*28e138c6SAndroid Build Coastguard Worker 63*28e138c6SAndroid Build Coastguard Worker #undef MIN16 64*28e138c6SAndroid Build Coastguard Worker #undef MIN32 65*28e138c6SAndroid Build Coastguard Worker #define MIN16(a,b) imin((int)(a),(int)(b)) 66*28e138c6SAndroid Build Coastguard Worker #define MIN32(a,b) imin(a,b) 67*28e138c6SAndroid Build Coastguard Worker 68*28e138c6SAndroid Build Coastguard Worker #undef MAX16 69*28e138c6SAndroid Build Coastguard Worker #undef MAX32 70*28e138c6SAndroid Build Coastguard Worker #define MAX16(a,b) imax((int)(a),(int)(b)) 71*28e138c6SAndroid Build Coastguard Worker #define MAX32(a,b) imax(a,b) 72*28e138c6SAndroid Build Coastguard Worker 73*28e138c6SAndroid Build Coastguard Worker #undef ADD16 74*28e138c6SAndroid Build Coastguard Worker #undef SUB16 75*28e138c6SAndroid Build Coastguard Worker #undef ADD32 76*28e138c6SAndroid Build Coastguard Worker #undef SUB32 77*28e138c6SAndroid Build Coastguard Worker #undef MULT16_16 78*28e138c6SAndroid Build Coastguard Worker #undef MULT16_16_16 79*28e138c6SAndroid Build Coastguard Worker 80*28e138c6SAndroid Build Coastguard Worker #define ADD16(a,b) ((int)(a) + (int)(b)) 81*28e138c6SAndroid Build Coastguard Worker #define SUB16(a,b) ((int)(a) - (int)(b)) 82*28e138c6SAndroid Build Coastguard Worker #define ADD32(a,b) ((int)(a) + (int)(b)) 83*28e138c6SAndroid Build Coastguard Worker #define SUB32(a,b) ((int)(a) - (int)(b)) 84*28e138c6SAndroid Build Coastguard Worker #define MULT16_16_16(a,b) ((int)(a) * (int)(b)) 85*28e138c6SAndroid Build Coastguard Worker #define MULT16_16(a,b) ((int)(a) * (int)(b)) 86*28e138c6SAndroid Build Coastguard Worker 87*28e138c6SAndroid Build Coastguard Worker #if TM_DEBUGMEM_ALIGNNMENT 88*28e138c6SAndroid Build Coastguard Worker #include <stdio.h> 89*28e138c6SAndroid Build Coastguard Worker #define TMDEBUG_ALIGNMEM(x) \ 90*28e138c6SAndroid Build Coastguard Worker { if( ((int)(x) & (int)(0x00000003)) != 0 ) \ 91*28e138c6SAndroid Build Coastguard Worker { printf("memory not align. file: %s, line: %d\n", __FILE__, __LINE__); \ 92*28e138c6SAndroid Build Coastguard Worker } \ 93*28e138c6SAndroid Build Coastguard Worker } 94*28e138c6SAndroid Build Coastguard Worker 95*28e138c6SAndroid Build Coastguard Worker #else 96*28e138c6SAndroid Build Coastguard Worker #define TMDEBUG_ALIGNMEM(x) 97*28e138c6SAndroid Build Coastguard Worker #endif 98*28e138c6SAndroid Build Coastguard Worker 99*28e138c6SAndroid Build Coastguard Worker #endif 100*28e138c6SAndroid Build Coastguard Worker 101