void vp8_initialize_rd_consts(VP8_COMP *cpi, int QIndex) {
- int q;
- int i;
+ int q, i;
vp8_clear_system_state(); // __asm emms;
}
}
-int vp8_block_error_c(short *coeff, short *dqcoeff) {
- int i;
- int error = 0;
+int vp8_block_error_c(short *coeff, short *dqcoeff, int block_size) {
+ int i, error = 0;
- for (i = 0; i < 16; i++) {
+ for (i = 0; i < block_size; i++) {
int this_diff = coeff[i] - dqcoeff[i];
error += this_diff * this_diff;
}
return error;
}
-#if CONFIG_HYBRIDTRANSFORM8X8
-int vp8_submb_error_c(short *coeff, short *dqcoeff) {
- int i;
- int error = 0;
-
- for (i = 0; i < 64; i++) {
- int this_diff = coeff[i] - dqcoeff[i];
- error += this_diff * this_diff;
- }
-
- return error;
-}
-#endif
-
int vp8_mbblock_error_c(MACROBLOCK *mb, int dc) {
BLOCK *be;
BLOCKD *bd;
be = &mb->block[i];
bd = &mb->e_mbd.block[i];
- error += vp8_block_error_c(be->coeff, bd->dqcoeff);
+ error += vp8_block_error_c(be->coeff, bd->dqcoeff, 16);
}
return error;
// Distortion
d = ENCODEMB_INVOKE(&rtcd->encodemb, mberr)(mb, 1);
- d += ENCODEMB_INVOKE(&rtcd->encodemb, berr)(mb_y2->coeff, x_y2->dqcoeff);
+ d += ENCODEMB_INVOKE(&rtcd->encodemb, berr)(mb_y2->coeff, x_y2->dqcoeff, 16);
*Distortion = (d >> 2);
// rate
mb->e_mbd.dqcoeff[192] = 0;
d = ENCODEMB_INVOKE(&rtcd->encodemb, mberr)(mb, 0);
- d += ENCODEMB_INVOKE(&rtcd->encodemb, berr)(mb_y2->coeff, x_y2->dqcoeff);
+ d += ENCODEMB_INVOKE(&rtcd->encodemb, berr)(mb_y2->coeff, x_y2->dqcoeff, 16);
*Distortion = (d >> 2);
// rate
ratey = cost_coeffs(x, b, PLANE_TYPE_Y_WITH_DC, &tempa, &templ, TX_4X4);
rate += ratey;
distortion = ENCODEMB_INVOKE(IF_RTCD(&cpi->rtcd.encodemb), berr)(
- be->coeff, b->dqcoeff) >> 2;
+ be->coeff, b->dqcoeff, 16) >> 2;
this_rd = RDCOST(x->rdmult, x->rddiv, rate, distortion);
x->quantize_b_8x8(x->block + idx, xd->block + idx);
// compute quantization mse of 8x8 block
- distortion = vp8_submb_error_c((x->block + idx)->coeff,
- (xd->block + idx)->dqcoeff)>>2;
+ distortion = vp8_block_error_c((x->block + idx)->coeff,
+ (xd->block + idx)->dqcoeff, 64)>>2;
ta0 = *(a + vp8_block2above_8x8[idx]);
tl0 = *(l + vp8_block2left_8x8 [idx]);
xd->block + ib + 4, xd->block + ib + 5);
distortion = ENCODEMB_INVOKE(IF_RTCD(&cpi->rtcd.encodemb), berr)
- ((x->block + ib)->coeff, (xd->block + ib)->dqcoeff) >> 2;
+ ((x->block + ib)->coeff, (xd->block + ib)->dqcoeff, 16) >> 2;
distortion += ENCODEMB_INVOKE(IF_RTCD(&cpi->rtcd.encodemb), berr)
- ((x->block + ib + 1)->coeff, (xd->block + ib + 1)->dqcoeff) >> 2;
+ ((x->block + ib + 1)->coeff, (xd->block + ib + 1)->dqcoeff, 16) >> 2;
distortion += ENCODEMB_INVOKE(IF_RTCD(&cpi->rtcd.encodemb), berr)
- ((x->block + ib + 4)->coeff, (xd->block + ib + 4)->dqcoeff) >> 2;
+ ((x->block + ib + 4)->coeff, (xd->block + ib + 4)->dqcoeff, 16) >> 2;
distortion += ENCODEMB_INVOKE(IF_RTCD(&cpi->rtcd.encodemb), berr)
- ((x->block + ib + 5)->coeff, (xd->block + ib + 5)->dqcoeff) >> 2;
+ ((x->block + ib + 5)->coeff, (xd->block + ib + 5)->dqcoeff, 16) >> 2;
ta0 = *(a + vp8_block2above[ib]);
ta1 = *(a + vp8_block2above[ib + 1]);
// be->coeff[0] = 0;
x->quantize_b(be, bd);
thisdistortion = ENCODEMB_INVOKE(&rtcd->encodemb, berr)(
- be->coeff,
- bd->dqcoeff) / 4;
+ be->coeff, bd->dqcoeff, 16) / 4;
distortion += thisdistortion;
}
}