1*c83a76b0SSuyog Pawar /****************************************************************************** 2*c83a76b0SSuyog Pawar * 3*c83a76b0SSuyog Pawar * Copyright (C) 2012 Ittiam Systems Pvt Ltd, Bangalore 4*c83a76b0SSuyog Pawar * 5*c83a76b0SSuyog Pawar * Licensed under the Apache License, Version 2.0 (the "License"); 6*c83a76b0SSuyog Pawar * you may not use this file except in compliance with the License. 7*c83a76b0SSuyog Pawar * You may obtain a copy of the License at: 8*c83a76b0SSuyog Pawar * 9*c83a76b0SSuyog Pawar * http://www.apache.org/licenses/LICENSE-2.0 10*c83a76b0SSuyog Pawar * 11*c83a76b0SSuyog Pawar * Unless required by applicable law or agreed to in writing, software 12*c83a76b0SSuyog Pawar * distributed under the License is distributed on an "AS IS" BASIS, 13*c83a76b0SSuyog Pawar * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14*c83a76b0SSuyog Pawar * See the License for the specific language governing permissions and 15*c83a76b0SSuyog Pawar * limitations under the License. 16*c83a76b0SSuyog Pawar * 17*c83a76b0SSuyog Pawar ******************************************************************************/ 18*c83a76b0SSuyog Pawar /** 19*c83a76b0SSuyog Pawar ******************************************************************************* 20*c83a76b0SSuyog Pawar * @file 21*c83a76b0SSuyog Pawar * ihevc_macros.h 22*c83a76b0SSuyog Pawar * 23*c83a76b0SSuyog Pawar * @brief 24*c83a76b0SSuyog Pawar * Macro definitions used in the codec 25*c83a76b0SSuyog Pawar * 26*c83a76b0SSuyog Pawar * @author 27*c83a76b0SSuyog Pawar * Ittiam 28*c83a76b0SSuyog Pawar * 29*c83a76b0SSuyog Pawar * @remarks 30*c83a76b0SSuyog Pawar * None 31*c83a76b0SSuyog Pawar * 32*c83a76b0SSuyog Pawar ******************************************************************************* 33*c83a76b0SSuyog Pawar */ 34*c83a76b0SSuyog Pawar #ifndef _IHEVC_MACROS_H_ 35*c83a76b0SSuyog Pawar #define _IHEVC_MACROS_H_ 36*c83a76b0SSuyog Pawar 37*c83a76b0SSuyog Pawar #define RETURN_IF(cond, retval) if(cond) {return (retval);} 38*c83a76b0SSuyog Pawar #define UNUSED(x) ((void)(x)) 39*c83a76b0SSuyog Pawar 40*c83a76b0SSuyog Pawar #define CLIP3(x, min, max) (((x) > (max)) ? (max) :(((x) < (min))? (min):(x))) 41*c83a76b0SSuyog Pawar 42*c83a76b0SSuyog Pawar #define MAX(x,y) (((x) > (y)) ? (x) :(y)) 43*c83a76b0SSuyog Pawar #define MIN(x,y) (((x) < (y)) ? (x) :(y)) 44*c83a76b0SSuyog Pawar #define SIGN(x) ((x) >= 0 ? ((x)>0 ? 1: 0) : -1) 45*c83a76b0SSuyog Pawar #define ABS(x) ((((WORD32)(x)) > 0) ? (x) : -(x)) 46*c83a76b0SSuyog Pawar 47*c83a76b0SSuyog Pawar #define ALIGN1024(x) ((((x) + 1023) >> 10) << 10) 48*c83a76b0SSuyog Pawar #define ALIGN256(x) ((((x) + 255) >> 8) << 8) 49*c83a76b0SSuyog Pawar #define ALIGN128(x) ((((x) + 127) >> 7) << 7) 50*c83a76b0SSuyog Pawar #define ALIGN64(x) ((((x) + 63) >> 6) << 6) 51*c83a76b0SSuyog Pawar #define ALIGN32(x) ((((x) + 31) >> 5) << 5) 52*c83a76b0SSuyog Pawar #define ALIGN16(x) ((((x) + 15) >> 4) << 4) 53*c83a76b0SSuyog Pawar #define ALIGN8(x) ((((x) + 7) >> 3) << 3) 54*c83a76b0SSuyog Pawar #define ALIGN4(x) ((((x) + 3) >> 2) << 2) 55*c83a76b0SSuyog Pawar #define ALIGN2(x) ((((x) + 1) >> 1) << 1) 56*c83a76b0SSuyog Pawar 57*c83a76b0SSuyog Pawar #define ALIGN_POW2(ptr,align) ((((WORD32)ptr)+align-1)&(~(align-1))) 58*c83a76b0SSuyog Pawar 59*c83a76b0SSuyog Pawar /** Sets x bits to '1' starting from MSB */ 60*c83a76b0SSuyog Pawar #define MSB_ONES(x) ((UWORD32)0xFFFFFFFF << (32 - (x))) 61*c83a76b0SSuyog Pawar 62*c83a76b0SSuyog Pawar /** Generates a pattern of x number of '01' in binary starting from MSB */ 63*c83a76b0SSuyog Pawar #define DUP_MSB_01(x) ((UWORD32)0x55555555 << (32 - ((x) * 2))) 64*c83a76b0SSuyog Pawar 65*c83a76b0SSuyog Pawar /** Generates a pattern of x number of '10' in binary starting from MSB */ 66*c83a76b0SSuyog Pawar #define DUP_MSB_10(x) ((UWORD32)0xAAAAAAAA << (32 - ((x) * 2))) 67*c83a76b0SSuyog Pawar 68*c83a76b0SSuyog Pawar /** Generates a pattern of x number of '11' in binary starting from MSB */ 69*c83a76b0SSuyog Pawar #define DUP_MSB_11(x) ((UWORD32)0xFFFFFFFF << (32 - ((x) * 2))) 70*c83a76b0SSuyog Pawar 71*c83a76b0SSuyog Pawar /** Sets x bits to '1' starting from LSB */ 72*c83a76b0SSuyog Pawar #define LSB_ONES(x) ((UWORD32)0xFFFFFFFF >> (32 - (x))) 73*c83a76b0SSuyog Pawar 74*c83a76b0SSuyog Pawar /** Generates a pattern of x number of '01' in binary starting from LSB */ 75*c83a76b0SSuyog Pawar #define DUP_LSB_01(x) ((UWORD32)0x55555555 >> (32 - ((x) * 2))) 76*c83a76b0SSuyog Pawar 77*c83a76b0SSuyog Pawar /** Generates a pattern of x number of '10' in binary starting from LSB */ 78*c83a76b0SSuyog Pawar #define DUP_LSB_10(x) ((UWORD32)0xAAAAAAAA >> (32 - ((x) * 2))) 79*c83a76b0SSuyog Pawar 80*c83a76b0SSuyog Pawar /** Generates a pattern of x number of '11' in binary starting from LSB */ 81*c83a76b0SSuyog Pawar #define DUP_LSB_11(x) ((UWORD32)0xFFFFFFFF >> (32 - ((x) * 2))) 82*c83a76b0SSuyog Pawar 83*c83a76b0SSuyog Pawar /** Sets the bit in given position to 1 */ 84*c83a76b0SSuyog Pawar #define BITSET(x, pos) ((x) | (1 << (pos))) 85*c83a76b0SSuyog Pawar 86*c83a76b0SSuyog Pawar /** Swap two variables */ 87*c83a76b0SSuyog Pawar #define SWAP(X,Y) \ 88*c83a76b0SSuyog Pawar { \ 89*c83a76b0SSuyog Pawar (X) = (X) ^ (Y); \ 90*c83a76b0SSuyog Pawar (Y) = (X) ^ (Y); \ 91*c83a76b0SSuyog Pawar (X) = (X) ^ (Y); \ 92*c83a76b0SSuyog Pawar } 93*c83a76b0SSuyog Pawar #endif /*_IHEVCD_MACROS_H_*/ 94