--- branches/dev-api-4/xvidcore/src/motion/motion_est.c 2003/03/29 10:57:29 961 +++ branches/dev-api-4/xvidcore/src/motion/motion_est.c 2003/03/29 11:06:34 962 @@ -661,7 +661,7 @@ CheckCandidateBits16(const int x, const int y, const int Direction, int * const dir, const SearchData * const data) { - static int16_t in[64], coeff[64]; + int16_t *in = data->dctSpace, *coeff = data->dctSpace + 64; int32_t bits = 0, sum; VECTOR * current; const uint8_t * ptr; @@ -746,7 +746,7 @@ CheckCandidateBits8(const int x, const int y, const int Direction, int * const dir, const SearchData * const data) { - static int16_t in[64], coeff[64]; + int16_t *in = data->dctSpace, *coeff = data->dctSpace + 64; int32_t sum, bits; VECTOR * current; const uint8_t * ptr; @@ -1012,6 +1012,7 @@ VECTOR currentMV[5]; VECTOR currentQMV[5]; int32_t iMinSAD[5]; + DECLARE_ALIGNED_MATRIX(dct_space, 2, 64, int16_t, CACHE_LINE); SearchData Data; memset(&Data, 0, sizeof(SearchData)); Data.iEdgedWidth = iEdgedWidth; @@ -1024,6 +1025,7 @@ Data.qpel = current->vol_flags & XVID_VOL_QUARTERPEL; Data.chroma = MotionFlags & XVID_ME_CHROMA16; Data.rrv = current->vop_flags & XVID_VOP_REDUCED; + Data.dctSpace = dct_space; if ((current->vop_flags & XVID_VOP_REDUCED)) { mb_width = (pParam->width + 31) / 32; @@ -2548,7 +2550,7 @@ int cbp = 0, bits = 0, t = 0, i, iDirection; SearchData Data2, *Data8 = &Data2; int sumx = 0, sumy = 0; - int16_t in[64], coeff[64]; + int16_t *in = Data->dctSpace, *coeff = Data->dctSpace + 64; memcpy(Data8, Data, sizeof(SearchData)); CheckCandidate = CheckCandidateBits8; @@ -2690,7 +2692,7 @@ int bits = 1; //this one is ac/dc prediction flag. always 1. int cbp = 0, i, t, dc = 0, b_dc = 1024; const uint32_t iQuant = Data->lambda16; - int16_t in[64], coeff[64]; + int16_t *in = Data->dctSpace, * coeff = Data->dctSpace + 64; for(i = 0; i < 4; i++) { uint32_t iDcScaler = get_dc_scaler(iQuant, 1);