--- trunk/xvidcore/src/prediction/mbprediction.c 2002/06/28 15:14:40 248 +++ trunk/xvidcore/src/prediction/mbprediction.c 2002/07/03 12:32:50 254 @@ -92,12 +92,10 @@ uint32_t current_quant, int32_t iDcScaler, int16_t predictors[8], - const unsigned int bound_x, - const unsigned int bound_y) + const int bound) { - const unsigned bound = (bound_y * mb_width) + bound_x; - const unsigned mbpos = (y * mb_width) + x; + const int mbpos = (y * mb_width) + x; int16_t *left, *top, *diag, *current; int32_t left_quant = current_quant; @@ -127,7 +125,7 @@ } // top macroblock - if (mbpos >= bound + mb_width && + if (mbpos >= bound + (int)mb_width && (pMBs[index - mb_width].mode == MODE_INTRA || pMBs[index - mb_width].mode == MODE_INTRA_Q)) { @@ -136,7 +134,7 @@ } // diag macroblock - if (x && mbpos >= bound + mb_width + 1 && + if (x && mbpos >= bound + (int)mb_width + 1 && (pMBs[index - 1 - mb_width].mode == MODE_INTRA || pMBs[index - 1 - mb_width].mode == MODE_INTRA_Q)) { @@ -247,6 +245,8 @@ int16_t *pCurrent = pMB->pred_values[block]; uint32_t i; + DPRINTF(DPRINTF_COEFF,"predictor[0] %i", predictors[0]); + dct_codes[0] += predictors[0]; // dc prediction pCurrent[0] = dct_codes[0] * iDcScaler; @@ -254,6 +254,8 @@ for (i = 1; i < 8; i++) { int level = dct_codes[i] + predictors[i]; + DPRINTF(DPRINTF_COEFF,"predictor[%i] %i",i, predictors[i]); + dct_codes[i] = level; pCurrent[i] = level; pCurrent[i + 7] = dct_codes[i * 8]; @@ -261,6 +263,7 @@ } else if (acpred_direction == 2) { for (i = 1; i < 8; i++) { int level = dct_codes[i * 8] + predictors[i]; + DPRINTF(DPRINTF_COEFF,"predictor[%i] %i",i*8, predictors[i]); dct_codes[i * 8] = level; pCurrent[i + 7] = level; @@ -385,7 +388,7 @@ iDcScaler = get_dc_scaler(iQuant, (j < 4) ? 1 : 0); predict_acdc(frame->mbs, x, y, mb_width, j, &qcoeff[j * 64], - iQuant, iDcScaler, predictors[j], 0, 0); + iQuant, iDcScaler, predictors[j], 0); S += calc_acdc(pMB, j, &qcoeff[j * 64], iDcScaler, predictors[j]);