00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037 #ifndef __INT_H
00038 #define __INT_H
00039
00048
00051
00056 static INLINE OPJ_INT32 opj_int_min(OPJ_INT32 a, OPJ_INT32 b) {
00057 return a < b ? a : b;
00058 }
00059
00064 static INLINE OPJ_UINT32 opj_uint_min(OPJ_UINT32 a, OPJ_UINT32 b) {
00065 return a < b ? a : b;
00066 }
00067
00072 static INLINE OPJ_INT32 opj_int_max(OPJ_INT32 a, OPJ_INT32 b) {
00073 return (a > b) ? a : b;
00074 }
00075
00080 static INLINE OPJ_UINT32 opj_uint_max(OPJ_UINT32 a, OPJ_UINT32 b) {
00081 return (a > b) ? a : b;
00082 }
00083
00093 static INLINE OPJ_INT32 opj_int_clamp(OPJ_INT32 a, OPJ_INT32 min, OPJ_INT32 max) {
00094 if (a < min)
00095 return min;
00096 if (a > max)
00097 return max;
00098 return a;
00099 }
00103 static INLINE OPJ_INT32 opj_int_abs(OPJ_INT32 a) {
00104 return a < 0 ? -a : a;
00105 }
00110 static INLINE OPJ_INT32 opj_int_ceildiv(OPJ_INT32 a, OPJ_INT32 b) {
00111 assert(b);
00112 return (a + b - 1) / b;
00113 }
00114
00119 static INLINE OPJ_UINT32 opj_uint_ceildiv(OPJ_UINT32 a, OPJ_UINT32 b) {
00120 return (a + b - 1) / b;
00121 }
00122
00127 static INLINE OPJ_INT32 opj_int_ceildivpow2(OPJ_INT32 a, OPJ_INT32 b) {
00128 return (OPJ_INT32)((a + (OPJ_INT64)(1 << b) - 1) >> b);
00129 }
00134 static INLINE OPJ_INT32 opj_int_floordivpow2(OPJ_INT32 a, OPJ_INT32 b) {
00135 return a >> b;
00136 }
00141 static INLINE OPJ_INT32 opj_int_floorlog2(OPJ_INT32 a) {
00142 OPJ_INT32 l;
00143 for (l = 0; a > 1; l++) {
00144 a >>= 1;
00145 }
00146 return l;
00147 }
00152 static INLINE OPJ_UINT32 opj_uint_floorlog2(OPJ_UINT32 a) {
00153 OPJ_UINT32 l;
00154 for (l = 0; a > 1; ++l)
00155 {
00156 a >>= 1;
00157 }
00158 return l;
00159 }
00160
00167 static INLINE OPJ_INT32 opj_int_fix_mul(OPJ_INT32 a, OPJ_INT32 b) {
00168 OPJ_INT64 temp = (OPJ_INT64) a * (OPJ_INT64) b ;
00169 temp += temp & 4096;
00170 return (OPJ_INT32) (temp >> 13) ;
00171 }
00172
00173
00177
00178 #endif