OSUOSL/Nero are experiencing Internet connectivity problems. This affects us as we're hosted with OSUOSL. We apologize for the inconvenience.

Commit e350e3fe authored by Yunqing Wang's avatar Yunqing Wang Committed by Gerrit Code Review

Merge "Modify block transform skipping check"

parents 28a1ee86 e4aac6bb
......@@ -641,13 +641,14 @@ void vp9_init_plane_quantizers(VP9_COMP *cpi, MACROBLOCK *x) {
x->plane[0].quant_shift = quants->y_quant_shift[qindex];
x->plane[0].zbin = quants->y_zbin[qindex];
x->plane[0].round = quants->y_round[qindex];
x->plane[0].quant_thred[0] = cm->y_dequant[qindex][0] *
cm->y_dequant[qindex][0];
x->plane[0].quant_thred[1] = cm->y_dequant[qindex][1] *
cm->y_dequant[qindex][1];
x->plane[0].zbin_extra = (int16_t)((cm->y_dequant[qindex][1] * zbin) >> 7);
xd->plane[0].dequant = cm->y_dequant[qindex];
x->plane[0].quant_thred[0] = (x->plane[0].zbin[0] + x->plane[0].zbin_extra) *
(x->plane[0].zbin[0] + x->plane[0].zbin_extra);
x->plane[0].quant_thred[1] = (x->plane[0].zbin[1] + x->plane[0].zbin_extra) *
(x->plane[0].zbin[1] + x->plane[0].zbin_extra);
// UV
for (i = 1; i < 3; i++) {
x->plane[i].quant = quants->uv_quant[qindex];
......@@ -656,12 +657,15 @@ void vp9_init_plane_quantizers(VP9_COMP *cpi, MACROBLOCK *x) {
x->plane[i].quant_shift = quants->uv_quant_shift[qindex];
x->plane[i].zbin = quants->uv_zbin[qindex];
x->plane[i].round = quants->uv_round[qindex];
x->plane[i].quant_thred[0] = cm->y_dequant[qindex][0] *
cm->y_dequant[qindex][0];
x->plane[i].quant_thred[1] = cm->y_dequant[qindex][1] *
cm->y_dequant[qindex][1];
x->plane[i].zbin_extra = (int16_t)((cm->uv_dequant[qindex][1] * zbin) >> 7);
xd->plane[i].dequant = cm->uv_dequant[qindex];
x->plane[i].quant_thred[0] =
(x->plane[i].zbin[0] + x->plane[i].zbin_extra) *
(x->plane[i].zbin[0] + x->plane[i].zbin_extra);
x->plane[i].quant_thred[1] =
(x->plane[i].zbin[1] + x->plane[i].zbin_extra) *
(x->plane[i].zbin[1] + x->plane[i].zbin_extra);
}
x->skip_block = vp9_segfeature_active(&cm->seg, segment_id, SEG_LVL_SKIP);
......
......@@ -180,7 +180,7 @@ static void model_rd_for_sb(VP9_COMP *cpi, BLOCK_SIZE bsize,
unsigned int sse;
unsigned int var = 0;
unsigned int sum_sse = 0;
const int shift = 8;
const int shift = 6;
int rate;
int64_t dist;
......@@ -212,12 +212,16 @@ static void model_rd_for_sb(VP9_COMP *cpi, BLOCK_SIZE bsize,
sum_sse += sse;
if (!x->select_tx_size) {
if (x->bsse[(i << 2) + block_idx] < p->quant_thred[0] >> shift)
x->skip_txfm[(i << 2) + block_idx] = 1;
else if (var < p->quant_thred[1] >> shift)
// Check if all ac coefficients can be quantized to zero.
if (var < p->quant_thred[1] >> shift) {
x->skip_txfm[(i << 2) + block_idx] = 2;
else
// Check if dc coefficient can be quantized to zero.
if (sse - var < p->quant_thred[0] >> shift)
x->skip_txfm[(i << 2) + block_idx] = 1;
} else {
x->skip_txfm[(i << 2) + block_idx] = 0;
}
}
if (i == 0)
......@@ -484,9 +488,15 @@ static void block_rd_txfm(int plane, int block, BLOCK_SIZE plane_bsize,
vp9_xform_quant_dc(x, plane, block, plane_bsize, tx_size);
args->sse = x->bsse[(plane << 2) + (block >> (tx_size << 1))] << 4;
args->dist = args->sse;
if (!x->plane[plane].eobs[block])
args->dist = args->sse - ((coeff[0] * coeff[0] -
(coeff[0] - dqcoeff[0]) * (coeff[0] - dqcoeff[0])) >> 2);
if (x->plane[plane].eobs[block]) {
int64_t dc_correct = coeff[0] * coeff[0] -
(coeff[0] - dqcoeff[0]) * (coeff[0] - dqcoeff[0]);
if (tx_size != TX_32X32)
dc_correct >>= 2;
args->dist = args->sse - dc_correct;
}
} else {
// skip forward transform
x->plane[plane].eobs[block] = 0;
......
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