void vp8_encode_intra4x4block(MACROBLOCK *x, int ib) { BLOCKD *b = &x->e_mbd.block[ib]; BLOCK *be = &x->block[ib]; vp8_intra4x4_predict (*(b->base_dst) + b->dst, b->dst_stride, b->bmi.as_mode, b->predictor_base + b->predictor_offset, 16); vp8_subtract_b(be, b, 16); x->short_fdct4x4(be->src_diff, be->coeff, 32); x->quantize_b(be, b); if (*b->eob > 1) { vp8_short_idct4x4llm(b->dqcoeff_base + b->dqcoeff_offset, b->predictor_base + b->predictor_offset, 16, *(b->base_dst) + b->dst, b->dst_stride); } else { vp8_dc_only_idct_add (b->dqcoeff_base[b->dqcoeff_offset], b->predictor_base + b->predictor_offset, 16, *(b->base_dst) + b->dst, b->dst_stride); } }
void vp8_encode_intra4x4block(MACROBLOCK *x, int ib) { BLOCKD *b = &x->e_mbd.block[ib]; BLOCK *be = &x->block[ib]; int dst_stride = x->e_mbd.dst.y_stride; unsigned char *dst = x->e_mbd.dst.y_buffer + b->offset; unsigned char *Above = dst - dst_stride; unsigned char *yleft = dst - 1; unsigned char top_left = Above[-1]; vp8_intra4x4_predict(Above, yleft, dst_stride, b->bmi.as_mode, b->predictor, 16, top_left); vp8_subtract_b(be, b, 16); x->short_fdct4x4(be->src_diff, be->coeff, 32); x->quantize_b(be, b); if (*b->eob > 1) { vp8_short_idct4x4llm(b->dqcoeff, b->predictor, 16, dst, dst_stride); } else { vp8_dc_only_idct_add(b->dqcoeff[0], b->predictor, 16, dst, dst_stride); } }