Commit 75fca6ff authored by Jingning Han's avatar Jingning Han Committed by Gerrit Code Review
Browse files

Merge "Reduce bmi buffer length from 16 to 4" into experimental

parents f188bf1c de735929
......@@ -254,7 +254,7 @@ typedef struct {
typedef struct {
MB_MODE_INFO mbmi;
union b_mode_info bmi[16];
union b_mode_info bmi[4];
} MODE_INFO;
struct scale_factors {
......
......@@ -31,19 +31,17 @@ int vp9_encode_intra(VP9_COMP *cpi, MACROBLOCK *x, int use_16x16_pred) {
} else {
int i;
for (i = 0; i < 16; i++) {
x->e_mbd.mode_info_context->bmi[i].as_mode.first = B_DC_PRED;
for (i = 0; i < 16; i++)
encode_intra4x4block(x, i, BLOCK_SIZE_MB16X16);
}
}
return vp9_get_mb_ss(x->plane[0].src_diff);
}
// This function is used only by the firstpass encoding.
static void encode_intra4x4block(MACROBLOCK *x, int ib,
BLOCK_SIZE_TYPE bsize) {
MACROBLOCKD * const xd = &x->e_mbd;
TX_TYPE tx_type;
uint8_t* const src =
raster_block_offset_uint8(xd, bsize, 0, ib,
x->plane[0].src.buf, x->plane[0].src.stride);
......@@ -58,26 +56,17 @@ static void encode_intra4x4block(MACROBLOCK *x, int ib,
assert(ib < (1 << (bwl + bhl)));
vp9_intra4x4_predict(&x->e_mbd, ib, bsize,
xd->mode_info_context->bmi[ib].as_mode.first,
vp9_intra4x4_predict(&x->e_mbd, ib, bsize, DC_PRED,
dst, xd->plane[0].dst.stride);
vp9_subtract_block(4, 4, src_diff, 4 << bwl,
src, x->plane[0].src.stride,
dst, xd->plane[0].dst.stride);
tx_type = get_tx_type_4x4(&x->e_mbd, ib);
if (tx_type != DCT_DCT) {
vp9_short_fht4x4(src_diff, coeff, 4 << bwl, tx_type);
x->quantize_b_4x4(x, ib, tx_type, 16);
vp9_short_iht4x4_add(BLOCK_OFFSET(xd->plane[0].dqcoeff, ib, 16), dst,
xd->plane[0].dst.stride, tx_type);
} else {
x->fwd_txm4x4(src_diff, coeff, 8 << bwl);
x->quantize_b_4x4(x, ib, tx_type, 16);
vp9_inverse_transform_b_4x4_add(&x->e_mbd, xd->plane[0].eobs[ib],
BLOCK_OFFSET(xd->plane[0].dqcoeff, ib, 16),
dst, xd->plane[0].dst.stride);
}
x->fwd_txm4x4(src_diff, coeff, 8 << bwl);
x->quantize_b_4x4(x, ib, DCT_DCT, 16);
vp9_inverse_transform_b_4x4_add(&x->e_mbd, xd->plane[0].eobs[ib],
BLOCK_OFFSET(xd->plane[0].dqcoeff, ib, 16),
dst, xd->plane[0].dst.stride);
}
void vp9_encode_intra16x16mby(VP9_COMMON *const cm, MACROBLOCK *x) {
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment