summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--vp8/encoder/encodemb.h2
-rw-r--r--vp8/encoder/rdopt.c47
2 files changed, 16 insertions, 33 deletions
diff --git a/vp8/encoder/encodemb.h b/vp8/encoder/encodemb.h
index 228451936..13ddcf115 100644
--- a/vp8/encoder/encodemb.h
+++ b/vp8/encoder/encodemb.h
@@ -19,7 +19,7 @@
int (sym)(MACROBLOCK *mb, int dc)
#define prototype_berr(sym) \
- int (sym)(short *coeff, short *dqcoeff)
+ int (sym)(short *coeff, short *dqcoeff, int block_size)
#define prototype_mbuverr(sym) \
int (sym)(MACROBLOCK *mb)
diff --git a/vp8/encoder/rdopt.c b/vp8/encoder/rdopt.c
index df76fc316..aa7a96168 100644
--- a/vp8/encoder/rdopt.c
+++ b/vp8/encoder/rdopt.c
@@ -279,8 +279,7 @@ void vp8cx_initialize_me_consts(VP8_COMP *cpi, int QIndex) {
void vp8_initialize_rd_consts(VP8_COMP *cpi, int QIndex) {
- int q;
- int i;
+ int q, i;
vp8_clear_system_state(); // __asm emms;
@@ -438,11 +437,10 @@ void vp8_auto_select_speed(VP8_COMP *cpi) {
}
}
-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;
}
@@ -450,20 +448,6 @@ int vp8_block_error_c(short *coeff, short *dqcoeff) {
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;
@@ -500,7 +484,7 @@ int vp8_mbuverror_c(MACROBLOCK *mb) {
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;
@@ -729,7 +713,7 @@ static void macro_block_yrd(MACROBLOCK *mb,
// 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
@@ -789,7 +773,7 @@ static void macro_block_yrd_8x8(MACROBLOCK *mb,
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
@@ -954,7 +938,7 @@ static int64_t rd_pick_intra4x4block(
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);
@@ -1234,8 +1218,8 @@ static int64_t rd_pick_intra8x8block(
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]);
@@ -1255,13 +1239,13 @@ static int64_t rd_pick_intra8x8block(
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]);
@@ -1760,8 +1744,7 @@ static unsigned int vp8_encode_inter_mb_segment(
// 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;
}
}