< prev index next >

src/java.desktop/share/native/libmlib_image/mlib_c_ImageAffine_BC_U16.c

Print this page
rev 59106 : imported patch client

*** 68,612 **** #define FUN_NAME(CHAN) mlib_ImageAffine_u16_##CHAN##_bc #define FILTER_BITS 9 /***************************************************************/ ! #ifdef __sparc /* for SPARC, using floating-point multiplies is faster */ ! ! /***************************************************************/ ! #undef FILTER_ELEM_BITS ! #define FILTER_ELEM_BITS 4 ! ! /***************************************************************/ ! #ifdef MLIB_USE_FTOI_CLAMPING ! ! #define SAT_U16(DST) \ ! DST = ((mlib_s32)(val0 - (mlib_d64)0x7FFF8000) >> 16) ^ 0x8000 ! ! #else ! ! #define SAT_U16(DST) \ ! if (val0 >= MLIB_U32_MAX) \ ! DST = MLIB_U16_MAX; \ ! else if (val0 <= MLIB_U32_MIN) \ ! DST = MLIB_U16_MIN; \ ! else \ ! DST = ((mlib_u32)val0) >> 16 ! ! #endif /* MLIB_USE_FTOI_CLAMPING */ ! ! /***************************************************************/ ! mlib_status FUN_NAME(1ch)(mlib_affine_param *param) ! { ! DECLAREVAR_BC(); ! DTYPE *dstLineEnd; ! const mlib_f32 *mlib_filters_table; ! ! if (filter == MLIB_BICUBIC) { ! mlib_filters_table = mlib_filters_s16f_bc; ! } ! else { ! mlib_filters_table = mlib_filters_s16f_bc2; ! } ! ! for (j = yStart; j <= yFinish; j++) { ! mlib_d64 xf0, xf1, xf2, xf3; ! mlib_d64 yf0, yf1, yf2, yf3; ! mlib_d64 c0, c1, c2, c3, val0; ! mlib_s32 filterpos; ! mlib_f32 *fptr; ! mlib_s32 s0, s1, s2, s3; ! mlib_s32 s4, s5, s6, s7; ! ! CLIP(1); ! dstLineEnd = (DTYPE *) dstData + xRight; ! ! filterpos = (X >> FILTER_SHIFT) & FILTER_MASK; ! fptr = (mlib_f32 *) ((mlib_u8 *) mlib_filters_table + filterpos); ! ! xf0 = fptr[0]; ! xf1 = fptr[1]; ! xf2 = fptr[2]; ! xf3 = fptr[3]; ! ! filterpos = (Y >> FILTER_SHIFT) & FILTER_MASK; ! fptr = (mlib_f32 *) ((mlib_u8 *) mlib_filters_table + filterpos); ! ! yf0 = fptr[0]; ! yf1 = fptr[1]; ! yf2 = fptr[2]; ! yf3 = fptr[3]; ! ! xSrc = (X >> MLIB_SHIFT) - 1; ! ySrc = (Y >> MLIB_SHIFT) - 1; ! ! srcPixelPtr = ((DTYPE **) lineAddr)[ySrc] + xSrc; ! s0 = srcPixelPtr[0]; ! s1 = srcPixelPtr[1]; ! s2 = srcPixelPtr[2]; ! s3 = srcPixelPtr[3]; ! ! srcPixelPtr = (DTYPE *) ((mlib_addr) srcPixelPtr + srcYStride); ! s4 = srcPixelPtr[0]; ! s5 = srcPixelPtr[1]; ! s6 = srcPixelPtr[2]; ! s7 = srcPixelPtr[3]; ! ! for (; dstPixelPtr <= (dstLineEnd - 1); dstPixelPtr++) { ! ! X += dX; ! Y += dY; ! ! c0 = (s0 * xf0 + s1 * xf1 + s2 * xf2 + s3 * xf3); ! c1 = (s4 * xf0 + s5 * xf1 + s6 * xf2 + s7 * xf3); ! srcPixelPtr = (DTYPE *) ((mlib_addr) srcPixelPtr + srcYStride); ! c2 = (srcPixelPtr[0] * xf0 + srcPixelPtr[1] * xf1 + ! srcPixelPtr[2] * xf2 + srcPixelPtr[3] * xf3); ! srcPixelPtr = (DTYPE *) ((mlib_addr) srcPixelPtr + srcYStride); ! c3 = (srcPixelPtr[0] * xf0 + srcPixelPtr[1] * xf1 + ! srcPixelPtr[2] * xf2 + srcPixelPtr[3] * xf3); ! ! filterpos = (X >> FILTER_SHIFT) & FILTER_MASK; ! fptr = (mlib_f32 *) ((mlib_u8 *) mlib_filters_table + filterpos); ! ! xf0 = fptr[0]; ! xf1 = fptr[1]; ! xf2 = fptr[2]; ! xf3 = fptr[3]; ! ! val0 = (c0 * yf0 + c1 * yf1 + c2 * yf2 + c3 * yf3); ! ! filterpos = (Y >> FILTER_SHIFT) & FILTER_MASK; ! fptr = (mlib_f32 *) ((mlib_u8 *) mlib_filters_table + filterpos); ! ! yf0 = fptr[0]; ! yf1 = fptr[1]; ! yf2 = fptr[2]; ! yf3 = fptr[3]; ! ! SAT_U16(dstPixelPtr[0]); ! ! xSrc = (X >> MLIB_SHIFT) - 1; ! ySrc = (Y >> MLIB_SHIFT) - 1; ! ! srcPixelPtr = ((DTYPE **) lineAddr)[ySrc] + xSrc; ! s0 = srcPixelPtr[0]; ! s1 = srcPixelPtr[1]; ! s2 = srcPixelPtr[2]; ! s3 = srcPixelPtr[3]; ! ! srcPixelPtr = (DTYPE *) ((mlib_addr) srcPixelPtr + srcYStride); ! s4 = srcPixelPtr[0]; ! s5 = srcPixelPtr[1]; ! s6 = srcPixelPtr[2]; ! s7 = srcPixelPtr[3]; ! } ! ! c0 = (s0 * xf0 + s1 * xf1 + s2 * xf2 + s3 * xf3); ! c1 = (s4 * xf0 + s5 * xf1 + s6 * xf2 + s7 * xf3); ! srcPixelPtr = (DTYPE *) ((mlib_addr) srcPixelPtr + srcYStride); ! c2 = (srcPixelPtr[0] * xf0 + srcPixelPtr[1] * xf1 + ! srcPixelPtr[2] * xf2 + srcPixelPtr[3] * xf3); ! srcPixelPtr = (DTYPE *) ((mlib_addr) srcPixelPtr + srcYStride); ! c3 = (srcPixelPtr[0] * xf0 + srcPixelPtr[1] * xf1 + ! srcPixelPtr[2] * xf2 + srcPixelPtr[3] * xf3); ! ! val0 = (c0 * yf0 + c1 * yf1 + c2 * yf2 + c3 * yf3); ! SAT_U16(dstPixelPtr[0]); ! } ! ! return MLIB_SUCCESS; ! } ! ! /***************************************************************/ ! mlib_status FUN_NAME(2ch)(mlib_affine_param *param) ! { ! DECLAREVAR_BC(); ! DTYPE *dstLineEnd; ! const mlib_f32 *mlib_filters_table; ! ! if (filter == MLIB_BICUBIC) { ! mlib_filters_table = mlib_filters_s16f_bc; ! } ! else { ! mlib_filters_table = mlib_filters_s16f_bc2; ! } ! ! for (j = yStart; j <= yFinish; j++) { ! mlib_d64 xf0, xf1, xf2, xf3; ! mlib_d64 yf0, yf1, yf2, yf3; ! mlib_d64 c0, c1, c2, c3, val0; ! mlib_s32 filterpos, k; ! mlib_f32 *fptr; ! mlib_s32 s0, s1, s2, s3; ! mlib_s32 s4, s5, s6, s7; ! ! CLIP(2); ! dstLineEnd = (DTYPE *) dstData + 2 * xRight; ! ! for (k = 0; k < 2; k++) { ! mlib_s32 X1 = X; ! mlib_s32 Y1 = Y; ! DTYPE *dPtr = dstPixelPtr + k; ! ! filterpos = (X1 >> FILTER_SHIFT) & FILTER_MASK; ! fptr = (mlib_f32 *) ((mlib_u8 *) mlib_filters_table + filterpos); ! ! xf0 = fptr[0]; ! xf1 = fptr[1]; ! xf2 = fptr[2]; ! xf3 = fptr[3]; ! ! filterpos = (Y1 >> FILTER_SHIFT) & FILTER_MASK; ! fptr = (mlib_f32 *) ((mlib_u8 *) mlib_filters_table + filterpos); ! ! yf0 = fptr[0]; ! yf1 = fptr[1]; ! yf2 = fptr[2]; ! yf3 = fptr[3]; ! ! xSrc = (X1 >> MLIB_SHIFT) - 1; ! ySrc = (Y1 >> MLIB_SHIFT) - 1; ! ! srcPixelPtr = ((DTYPE **) lineAddr)[ySrc] + 2 * xSrc + k; ! s0 = srcPixelPtr[0]; ! s1 = srcPixelPtr[2]; ! s2 = srcPixelPtr[4]; ! s3 = srcPixelPtr[6]; ! ! srcPixelPtr = (DTYPE *) ((mlib_addr) srcPixelPtr + srcYStride); ! s4 = srcPixelPtr[0]; ! s5 = srcPixelPtr[2]; ! s6 = srcPixelPtr[4]; ! s7 = srcPixelPtr[6]; ! ! for (; dPtr <= (dstLineEnd - 1); dPtr += 2) { ! ! X1 += dX; ! Y1 += dY; ! ! c0 = (s0 * xf0 + s1 * xf1 + s2 * xf2 + s3 * xf3); ! c1 = (s4 * xf0 + s5 * xf1 + s6 * xf2 + s7 * xf3); ! srcPixelPtr = (DTYPE *) ((mlib_addr) srcPixelPtr + srcYStride); ! c2 = (srcPixelPtr[0] * xf0 + srcPixelPtr[2] * xf1 + ! srcPixelPtr[4] * xf2 + srcPixelPtr[6] * xf3); ! srcPixelPtr = (DTYPE *) ((mlib_addr) srcPixelPtr + srcYStride); ! c3 = (srcPixelPtr[0] * xf0 + srcPixelPtr[2] * xf1 + ! srcPixelPtr[4] * xf2 + srcPixelPtr[6] * xf3); ! ! filterpos = (X1 >> FILTER_SHIFT) & FILTER_MASK; ! fptr = (mlib_f32 *) ((mlib_u8 *) mlib_filters_table + filterpos); ! ! xf0 = fptr[0]; ! xf1 = fptr[1]; ! xf2 = fptr[2]; ! xf3 = fptr[3]; ! ! val0 = (c0 * yf0 + c1 * yf1 + c2 * yf2 + c3 * yf3); ! ! filterpos = (Y1 >> FILTER_SHIFT) & FILTER_MASK; ! fptr = (mlib_f32 *) ((mlib_u8 *) mlib_filters_table + filterpos); ! ! yf0 = fptr[0]; ! yf1 = fptr[1]; ! yf2 = fptr[2]; ! yf3 = fptr[3]; ! ! SAT_U16(dPtr[0]); ! ! xSrc = (X1 >> MLIB_SHIFT) - 1; ! ySrc = (Y1 >> MLIB_SHIFT) - 1; ! ! srcPixelPtr = ((DTYPE **) lineAddr)[ySrc] + 2 * xSrc + k; ! s0 = srcPixelPtr[0]; ! s1 = srcPixelPtr[2]; ! s2 = srcPixelPtr[4]; ! s3 = srcPixelPtr[6]; ! ! srcPixelPtr = (DTYPE *) ((mlib_addr) srcPixelPtr + srcYStride); ! s4 = srcPixelPtr[0]; ! s5 = srcPixelPtr[2]; ! s6 = srcPixelPtr[4]; ! s7 = srcPixelPtr[6]; ! } ! ! c0 = (s0 * xf0 + s1 * xf1 + s2 * xf2 + s3 * xf3); ! c1 = (s4 * xf0 + s5 * xf1 + s6 * xf2 + s7 * xf3); ! srcPixelPtr = (DTYPE *) ((mlib_addr) srcPixelPtr + srcYStride); ! c2 = (srcPixelPtr[0] * xf0 + srcPixelPtr[2] * xf1 + ! srcPixelPtr[4] * xf2 + srcPixelPtr[6] * xf3); ! srcPixelPtr = (DTYPE *) ((mlib_addr) srcPixelPtr + srcYStride); ! c3 = (srcPixelPtr[0] * xf0 + srcPixelPtr[2] * xf1 + ! srcPixelPtr[4] * xf2 + srcPixelPtr[6] * xf3); ! ! val0 = (c0 * yf0 + c1 * yf1 + c2 * yf2 + c3 * yf3); ! SAT_U16(dPtr[0]); ! } ! } ! ! return MLIB_SUCCESS; ! } ! ! /***************************************************************/ ! mlib_status FUN_NAME(3ch)(mlib_affine_param *param) ! { ! DECLAREVAR_BC(); ! DTYPE *dstLineEnd; ! const mlib_f32 *mlib_filters_table; ! ! if (filter == MLIB_BICUBIC) { ! mlib_filters_table = mlib_filters_s16f_bc; ! } ! else { ! mlib_filters_table = mlib_filters_s16f_bc2; ! } ! ! for (j = yStart; j <= yFinish; j++) { ! mlib_d64 xf0, xf1, xf2, xf3; ! mlib_d64 yf0, yf1, yf2, yf3; ! mlib_d64 c0, c1, c2, c3, val0; ! mlib_s32 filterpos, k; ! mlib_f32 *fptr; ! mlib_s32 s0, s1, s2, s3; ! mlib_s32 s4, s5, s6, s7; ! ! CLIP(3); ! dstLineEnd = (DTYPE *) dstData + 3 * xRight; ! ! for (k = 0; k < 3; k++) { ! mlib_s32 X1 = X; ! mlib_s32 Y1 = Y; ! DTYPE *dPtr = dstPixelPtr + k; ! ! filterpos = (X1 >> FILTER_SHIFT) & FILTER_MASK; ! fptr = (mlib_f32 *) ((mlib_u8 *) mlib_filters_table + filterpos); ! ! xf0 = fptr[0]; ! xf1 = fptr[1]; ! xf2 = fptr[2]; ! xf3 = fptr[3]; ! ! filterpos = (Y1 >> FILTER_SHIFT) & FILTER_MASK; ! fptr = (mlib_f32 *) ((mlib_u8 *) mlib_filters_table + filterpos); ! ! yf0 = fptr[0]; ! yf1 = fptr[1]; ! yf2 = fptr[2]; ! yf3 = fptr[3]; ! ! xSrc = (X1 >> MLIB_SHIFT) - 1; ! ySrc = (Y1 >> MLIB_SHIFT) - 1; ! ! srcPixelPtr = ((DTYPE **) lineAddr)[ySrc] + 3 * xSrc + k; ! s0 = srcPixelPtr[0]; ! s1 = srcPixelPtr[3]; ! s2 = srcPixelPtr[6]; ! s3 = srcPixelPtr[9]; ! ! srcPixelPtr = (DTYPE *) ((mlib_addr) srcPixelPtr + srcYStride); ! s4 = srcPixelPtr[0]; ! s5 = srcPixelPtr[3]; ! s6 = srcPixelPtr[6]; ! s7 = srcPixelPtr[9]; ! ! for (; dPtr <= (dstLineEnd - 1); dPtr += 3) { ! ! X1 += dX; ! Y1 += dY; ! ! c0 = (s0 * xf0 + s1 * xf1 + s2 * xf2 + s3 * xf3); ! c1 = (s4 * xf0 + s5 * xf1 + s6 * xf2 + s7 * xf3); ! srcPixelPtr = (DTYPE *) ((mlib_addr) srcPixelPtr + srcYStride); ! c2 = (srcPixelPtr[0] * xf0 + srcPixelPtr[3] * xf1 + ! srcPixelPtr[6] * xf2 + srcPixelPtr[9] * xf3); ! srcPixelPtr = (DTYPE *) ((mlib_addr) srcPixelPtr + srcYStride); ! c3 = (srcPixelPtr[0] * xf0 + srcPixelPtr[3] * xf1 + ! srcPixelPtr[6] * xf2 + srcPixelPtr[9] * xf3); ! ! filterpos = (X1 >> FILTER_SHIFT) & FILTER_MASK; ! fptr = (mlib_f32 *) ((mlib_u8 *) mlib_filters_table + filterpos); ! ! xf0 = fptr[0]; ! xf1 = fptr[1]; ! xf2 = fptr[2]; ! xf3 = fptr[3]; ! ! val0 = (c0 * yf0 + c1 * yf1 + c2 * yf2 + c3 * yf3); ! ! filterpos = (Y1 >> FILTER_SHIFT) & FILTER_MASK; ! fptr = (mlib_f32 *) ((mlib_u8 *) mlib_filters_table + filterpos); ! ! yf0 = fptr[0]; ! yf1 = fptr[1]; ! yf2 = fptr[2]; ! yf3 = fptr[3]; ! ! SAT_U16(dPtr[0]); ! ! xSrc = (X1 >> MLIB_SHIFT) - 1; ! ySrc = (Y1 >> MLIB_SHIFT) - 1; ! ! srcPixelPtr = ((DTYPE **) lineAddr)[ySrc] + 3 * xSrc + k; ! s0 = srcPixelPtr[0]; ! s1 = srcPixelPtr[3]; ! s2 = srcPixelPtr[6]; ! s3 = srcPixelPtr[9]; ! ! srcPixelPtr = (DTYPE *) ((mlib_addr) srcPixelPtr + srcYStride); ! s4 = srcPixelPtr[0]; ! s5 = srcPixelPtr[3]; ! s6 = srcPixelPtr[6]; ! s7 = srcPixelPtr[9]; ! } ! ! c0 = (s0 * xf0 + s1 * xf1 + s2 * xf2 + s3 * xf3); ! c1 = (s4 * xf0 + s5 * xf1 + s6 * xf2 + s7 * xf3); ! srcPixelPtr = (DTYPE *) ((mlib_addr) srcPixelPtr + srcYStride); ! c2 = (srcPixelPtr[0] * xf0 + srcPixelPtr[3] * xf1 + ! srcPixelPtr[6] * xf2 + srcPixelPtr[9] * xf3); ! srcPixelPtr = (DTYPE *) ((mlib_addr) srcPixelPtr + srcYStride); ! c3 = (srcPixelPtr[0] * xf0 + srcPixelPtr[3] * xf1 + ! srcPixelPtr[6] * xf2 + srcPixelPtr[9] * xf3); ! ! val0 = (c0 * yf0 + c1 * yf1 + c2 * yf2 + c3 * yf3); ! SAT_U16(dPtr[0]); ! } ! } ! ! return MLIB_SUCCESS; ! } ! ! /***************************************************************/ ! mlib_status FUN_NAME(4ch)(mlib_affine_param *param) ! { ! DECLAREVAR_BC(); ! DTYPE *dstLineEnd; ! const mlib_f32 *mlib_filters_table; ! ! if (filter == MLIB_BICUBIC) { ! mlib_filters_table = mlib_filters_s16f_bc; ! } ! else { ! mlib_filters_table = mlib_filters_s16f_bc2; ! } ! ! for (j = yStart; j <= yFinish; j++) { ! mlib_d64 xf0, xf1, xf2, xf3; ! mlib_d64 yf0, yf1, yf2, yf3; ! mlib_d64 c0, c1, c2, c3, val0; ! mlib_s32 filterpos, k; ! mlib_f32 *fptr; ! mlib_s32 s0, s1, s2, s3; ! mlib_s32 s4, s5, s6, s7; ! ! CLIP(4); ! dstLineEnd = (DTYPE *) dstData + 4 * xRight; ! ! for (k = 0; k < 4; k++) { ! mlib_s32 X1 = X; ! mlib_s32 Y1 = Y; ! DTYPE *dPtr = dstPixelPtr + k; ! ! filterpos = (X1 >> FILTER_SHIFT) & FILTER_MASK; ! fptr = (mlib_f32 *) ((mlib_u8 *) mlib_filters_table + filterpos); ! ! xf0 = fptr[0]; ! xf1 = fptr[1]; ! xf2 = fptr[2]; ! xf3 = fptr[3]; ! ! filterpos = (Y1 >> FILTER_SHIFT) & FILTER_MASK; ! fptr = (mlib_f32 *) ((mlib_u8 *) mlib_filters_table + filterpos); ! ! yf0 = fptr[0]; ! yf1 = fptr[1]; ! yf2 = fptr[2]; ! yf3 = fptr[3]; ! ! xSrc = (X1 >> MLIB_SHIFT) - 1; ! ySrc = (Y1 >> MLIB_SHIFT) - 1; ! ! srcPixelPtr = ((DTYPE **) lineAddr)[ySrc] + 4 * xSrc + k; ! s0 = srcPixelPtr[0]; ! s1 = srcPixelPtr[4]; ! s2 = srcPixelPtr[8]; ! s3 = srcPixelPtr[12]; ! ! srcPixelPtr = (DTYPE *) ((mlib_addr) srcPixelPtr + srcYStride); ! s4 = srcPixelPtr[0]; ! s5 = srcPixelPtr[4]; ! s6 = srcPixelPtr[8]; ! s7 = srcPixelPtr[12]; ! ! for (; dPtr <= (dstLineEnd - 1); dPtr += 4) { ! ! X1 += dX; ! Y1 += dY; ! ! c0 = (s0 * xf0 + s1 * xf1 + s2 * xf2 + s3 * xf3); ! c1 = (s4 * xf0 + s5 * xf1 + s6 * xf2 + s7 * xf3); ! srcPixelPtr = (DTYPE *) ((mlib_addr) srcPixelPtr + srcYStride); ! c2 = (srcPixelPtr[0] * xf0 + srcPixelPtr[4] * xf1 + ! srcPixelPtr[8] * xf2 + srcPixelPtr[12] * xf3); ! srcPixelPtr = (DTYPE *) ((mlib_addr) srcPixelPtr + srcYStride); ! c3 = (srcPixelPtr[0] * xf0 + srcPixelPtr[4] * xf1 + ! srcPixelPtr[8] * xf2 + srcPixelPtr[12] * xf3); ! ! filterpos = (X1 >> FILTER_SHIFT) & FILTER_MASK; ! fptr = (mlib_f32 *) ((mlib_u8 *) mlib_filters_table + filterpos); ! ! xf0 = fptr[0]; ! xf1 = fptr[1]; ! xf2 = fptr[2]; ! xf3 = fptr[3]; ! ! val0 = (c0 * yf0 + c1 * yf1 + c2 * yf2 + c3 * yf3); ! ! filterpos = (Y1 >> FILTER_SHIFT) & FILTER_MASK; ! fptr = (mlib_f32 *) ((mlib_u8 *) mlib_filters_table + filterpos); ! ! yf0 = fptr[0]; ! yf1 = fptr[1]; ! yf2 = fptr[2]; ! yf3 = fptr[3]; ! ! SAT_U16(dPtr[0]); ! ! xSrc = (X1 >> MLIB_SHIFT) - 1; ! ySrc = (Y1 >> MLIB_SHIFT) - 1; ! ! srcPixelPtr = ((DTYPE **) lineAddr)[ySrc] + 4 * xSrc + k; ! s0 = srcPixelPtr[0]; ! s1 = srcPixelPtr[4]; ! s2 = srcPixelPtr[8]; ! s3 = srcPixelPtr[12]; ! ! srcPixelPtr = (DTYPE *) ((mlib_addr) srcPixelPtr + srcYStride); ! s4 = srcPixelPtr[0]; ! s5 = srcPixelPtr[4]; ! s6 = srcPixelPtr[8]; ! s7 = srcPixelPtr[12]; ! } ! ! c0 = (s0 * xf0 + s1 * xf1 + s2 * xf2 + s3 * xf3); ! c1 = (s4 * xf0 + s5 * xf1 + s6 * xf2 + s7 * xf3); ! srcPixelPtr = (DTYPE *) ((mlib_addr) srcPixelPtr + srcYStride); ! c2 = (srcPixelPtr[0] * xf0 + srcPixelPtr[4] * xf1 + ! srcPixelPtr[8] * xf2 + srcPixelPtr[12] * xf3); ! srcPixelPtr = (DTYPE *) ((mlib_addr) srcPixelPtr + srcYStride); ! c3 = (srcPixelPtr[0] * xf0 + srcPixelPtr[4] * xf1 + ! srcPixelPtr[8] * xf2 + srcPixelPtr[12] * xf3); ! ! val0 = (c0 * yf0 + c1 * yf1 + c2 * yf2 + c3 * yf3); ! SAT_U16(dPtr[0]); ! } ! } ! ! return MLIB_SUCCESS; ! } ! ! #else /* for x86, using integer multiplies is faster */ #define SHIFT_X 15 #define ROUND_X 0 /* (1 << (SHIFT_X - 1)) */ #define SHIFT_Y 14 --- 68,78 ---- #define FUN_NAME(CHAN) mlib_ImageAffine_u16_##CHAN##_bc #define FILTER_BITS 9 /***************************************************************/ ! /* for x86, using integer multiplies is faster */ #define SHIFT_X 15 #define ROUND_X 0 /* (1 << (SHIFT_X - 1)) */ #define SHIFT_Y 14
*** 1128,1135 **** } return MLIB_SUCCESS; } - #endif /* __sparc ( for SPARC, using floating-point multiplies is faster ) */ - /***************************************************************/ --- 594,599 ----
< prev index next >