Remove vestiges of large tx sizes in sub8x8 code.
Change-Id: I27015ed57b4c4390cfde3d0eecd82c3e76fd3786
This commit is contained in:
@@ -2267,7 +2267,7 @@ static void store_coding_context(MACROBLOCK *x, PICK_MODE_CONTEXT *ctx,
|
|||||||
int_mv *ref_mv,
|
int_mv *ref_mv,
|
||||||
int_mv *second_ref_mv,
|
int_mv *second_ref_mv,
|
||||||
int64_t comp_pred_diff[REFERENCE_MODES],
|
int64_t comp_pred_diff[REFERENCE_MODES],
|
||||||
int64_t tx_size_diff[TX_MODES],
|
const int64_t tx_size_diff[TX_MODES],
|
||||||
int64_t best_filter_diff[SWITCHABLE_FILTER_CONTEXTS]) {
|
int64_t best_filter_diff[SWITCHABLE_FILTER_CONTEXTS]) {
|
||||||
MACROBLOCKD *const xd = &x->e_mbd;
|
MACROBLOCKD *const xd = &x->e_mbd;
|
||||||
|
|
||||||
@@ -3768,8 +3768,7 @@ int64_t vp9_rd_pick_inter_mode_sub8x8(VP9_COMP *cpi, MACROBLOCK *x,
|
|||||||
VP9_ALT_FLAG };
|
VP9_ALT_FLAG };
|
||||||
int64_t best_rd = best_rd_so_far;
|
int64_t best_rd = best_rd_so_far;
|
||||||
int64_t best_yrd = best_rd_so_far; // FIXME(rbultje) more precise
|
int64_t best_yrd = best_rd_so_far; // FIXME(rbultje) more precise
|
||||||
int64_t best_tx_rd[TX_MODES];
|
static const int64_t best_tx_diff[TX_MODES] = { 0 };
|
||||||
int64_t best_tx_diff[TX_MODES];
|
|
||||||
int64_t best_pred_diff[REFERENCE_MODES];
|
int64_t best_pred_diff[REFERENCE_MODES];
|
||||||
int64_t best_pred_rd[REFERENCE_MODES];
|
int64_t best_pred_rd[REFERENCE_MODES];
|
||||||
int64_t best_filter_rd[SWITCHABLE_FILTER_CONTEXTS];
|
int64_t best_filter_rd[SWITCHABLE_FILTER_CONTEXTS];
|
||||||
@@ -3781,10 +3780,10 @@ int64_t vp9_rd_pick_inter_mode_sub8x8(VP9_COMP *cpi, MACROBLOCK *x,
|
|||||||
int64_t best_inter_rd = INT64_MAX;
|
int64_t best_inter_rd = INT64_MAX;
|
||||||
MV_REFERENCE_FRAME best_inter_ref_frame = LAST_FRAME;
|
MV_REFERENCE_FRAME best_inter_ref_frame = LAST_FRAME;
|
||||||
INTERP_FILTER tmp_best_filter = SWITCHABLE;
|
INTERP_FILTER tmp_best_filter = SWITCHABLE;
|
||||||
int rate_uv_intra[TX_SIZES], rate_uv_tokenonly[TX_SIZES];
|
int rate_uv_intra, rate_uv_tokenonly;
|
||||||
int64_t dist_uv[TX_SIZES];
|
int64_t dist_uv;
|
||||||
int skip_uv[TX_SIZES];
|
int skip_uv;
|
||||||
MB_PREDICTION_MODE mode_uv[TX_SIZES] = { 0 };
|
MB_PREDICTION_MODE mode_uv = DC_PRED;
|
||||||
int intra_cost_penalty = 20 * vp9_dc_quant(cm->base_qindex, cm->y_dc_delta_q);
|
int intra_cost_penalty = 20 * vp9_dc_quant(cm->base_qindex, cm->y_dc_delta_q);
|
||||||
int_mv seg_mvs[4][MAX_REF_FRAMES];
|
int_mv seg_mvs[4][MAX_REF_FRAMES];
|
||||||
b_mode_info best_bmodes[4];
|
b_mode_info best_bmodes[4];
|
||||||
@@ -3806,12 +3805,9 @@ int64_t vp9_rd_pick_inter_mode_sub8x8(VP9_COMP *cpi, MACROBLOCK *x,
|
|||||||
|
|
||||||
for (i = 0; i < REFERENCE_MODES; ++i)
|
for (i = 0; i < REFERENCE_MODES; ++i)
|
||||||
best_pred_rd[i] = INT64_MAX;
|
best_pred_rd[i] = INT64_MAX;
|
||||||
for (i = 0; i < TX_MODES; i++)
|
|
||||||
best_tx_rd[i] = INT64_MAX;
|
|
||||||
for (i = 0; i < SWITCHABLE_FILTER_CONTEXTS; i++)
|
for (i = 0; i < SWITCHABLE_FILTER_CONTEXTS; i++)
|
||||||
best_filter_rd[i] = INT64_MAX;
|
best_filter_rd[i] = INT64_MAX;
|
||||||
for (i = 0; i < TX_SIZES; i++)
|
rate_uv_intra = INT_MAX;
|
||||||
rate_uv_intra[i] = INT_MAX;
|
|
||||||
|
|
||||||
*returnrate = INT_MAX;
|
*returnrate = INT_MAX;
|
||||||
|
|
||||||
@@ -3845,7 +3841,6 @@ int64_t vp9_rd_pick_inter_mode_sub8x8(VP9_COMP *cpi, MACROBLOCK *x,
|
|||||||
int rate2 = 0, rate_y = 0, rate_uv = 0;
|
int rate2 = 0, rate_y = 0, rate_uv = 0;
|
||||||
int64_t distortion2 = 0, distortion_y = 0, distortion_uv = 0;
|
int64_t distortion2 = 0, distortion_y = 0, distortion_uv = 0;
|
||||||
int skippable = 0;
|
int skippable = 0;
|
||||||
int64_t tx_cache[TX_MODES];
|
|
||||||
int i;
|
int i;
|
||||||
int this_skip2 = 0;
|
int this_skip2 = 0;
|
||||||
int64_t total_sse = INT_MAX;
|
int64_t total_sse = INT_MAX;
|
||||||
@@ -3968,9 +3963,6 @@ int64_t vp9_rd_pick_inter_mode_sub8x8(VP9_COMP *cpi, MACROBLOCK *x,
|
|||||||
xd->plane[i].pre[1] = yv12_mb[second_ref_frame][i];
|
xd->plane[i].pre[1] = yv12_mb[second_ref_frame][i];
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < TX_MODES; ++i)
|
|
||||||
tx_cache[i] = INT64_MAX;
|
|
||||||
|
|
||||||
#ifdef MODE_TEST_HIT_STATS
|
#ifdef MODE_TEST_HIT_STATS
|
||||||
// TEST/DEBUG CODE
|
// TEST/DEBUG CODE
|
||||||
// Keep a rcord of the number of test hits at each size
|
// Keep a rcord of the number of test hits at each size
|
||||||
@@ -3986,21 +3978,18 @@ int64_t vp9_rd_pick_inter_mode_sub8x8(VP9_COMP *cpi, MACROBLOCK *x,
|
|||||||
rate2 += intra_cost_penalty;
|
rate2 += intra_cost_penalty;
|
||||||
distortion2 += distortion_y;
|
distortion2 += distortion_y;
|
||||||
|
|
||||||
if (rate_uv_intra[TX_4X4] == INT_MAX) {
|
if (rate_uv_intra == INT_MAX) {
|
||||||
choose_intra_uv_mode(cpi, ctx, bsize, TX_4X4,
|
choose_intra_uv_mode(cpi, ctx, bsize, TX_4X4,
|
||||||
&rate_uv_intra[TX_4X4],
|
&rate_uv_intra,
|
||||||
&rate_uv_tokenonly[TX_4X4],
|
&rate_uv_tokenonly,
|
||||||
&dist_uv[TX_4X4], &skip_uv[TX_4X4],
|
&dist_uv, &skip_uv,
|
||||||
&mode_uv[TX_4X4]);
|
&mode_uv);
|
||||||
}
|
}
|
||||||
rate2 += rate_uv_intra[TX_4X4];
|
rate2 += rate_uv_intra;
|
||||||
rate_uv = rate_uv_tokenonly[TX_4X4];
|
rate_uv = rate_uv_tokenonly;
|
||||||
distortion2 += dist_uv[TX_4X4];
|
distortion2 += dist_uv;
|
||||||
distortion_uv = dist_uv[TX_4X4];
|
distortion_uv = dist_uv;
|
||||||
mbmi->uv_mode = mode_uv[TX_4X4];
|
mbmi->uv_mode = mode_uv;
|
||||||
tx_cache[ONLY_4X4] = RDCOST(x->rdmult, x->rddiv, rate2, distortion2);
|
|
||||||
for (i = 0; i < TX_MODES; ++i)
|
|
||||||
tx_cache[i] = tx_cache[ONLY_4X4];
|
|
||||||
} else {
|
} else {
|
||||||
int rate;
|
int rate;
|
||||||
int64_t distortion;
|
int64_t distortion;
|
||||||
@@ -4163,10 +4152,6 @@ int64_t vp9_rd_pick_inter_mode_sub8x8(VP9_COMP *cpi, MACROBLOCK *x,
|
|||||||
distortion2 += distortion_uv;
|
distortion2 += distortion_uv;
|
||||||
skippable = skippable && uv_skippable;
|
skippable = skippable && uv_skippable;
|
||||||
total_sse += uv_sse;
|
total_sse += uv_sse;
|
||||||
|
|
||||||
tx_cache[ONLY_4X4] = RDCOST(x->rdmult, x->rddiv, rate2, distortion2);
|
|
||||||
for (i = 0; i < TX_MODES; ++i)
|
|
||||||
tx_cache[i] = tx_cache[ONLY_4X4];
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4324,23 +4309,6 @@ int64_t vp9_rd_pick_inter_mode_sub8x8(VP9_COMP *cpi, MACROBLOCK *x,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* keep record of best txfm size */
|
|
||||||
tx_cache[ALLOW_8X8] = tx_cache[ONLY_4X4];
|
|
||||||
tx_cache[ALLOW_16X16] = tx_cache[ALLOW_8X8];
|
|
||||||
tx_cache[ALLOW_32X32] = tx_cache[ALLOW_16X16];
|
|
||||||
if (!mode_excluded && this_rd != INT64_MAX) {
|
|
||||||
for (i = 0; i < TX_MODES && tx_cache[i] < INT64_MAX; i++) {
|
|
||||||
int64_t adj_rd = INT64_MAX;
|
|
||||||
if (ref_frame > INTRA_FRAME)
|
|
||||||
adj_rd = this_rd + tx_cache[i] - tx_cache[cm->tx_mode];
|
|
||||||
else
|
|
||||||
adj_rd = this_rd;
|
|
||||||
|
|
||||||
if (adj_rd < best_tx_rd[i])
|
|
||||||
best_tx_rd[i] = adj_rd;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (early_term)
|
if (early_term)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -4355,14 +4323,12 @@ int64_t vp9_rd_pick_inter_mode_sub8x8(VP9_COMP *cpi, MACROBLOCK *x,
|
|||||||
if (cpi->sf.use_uv_intra_rd_estimate) {
|
if (cpi->sf.use_uv_intra_rd_estimate) {
|
||||||
// Do Intra UV best rd mode selection if best mode choice above was intra.
|
// Do Intra UV best rd mode selection if best mode choice above was intra.
|
||||||
if (vp9_ref_order[best_mode_index].ref_frame[0] == INTRA_FRAME) {
|
if (vp9_ref_order[best_mode_index].ref_frame[0] == INTRA_FRAME) {
|
||||||
TX_SIZE uv_tx_size;
|
|
||||||
*mbmi = best_mbmode;
|
*mbmi = best_mbmode;
|
||||||
uv_tx_size = get_uv_tx_size(mbmi);
|
rd_pick_intra_sbuv_mode(cpi, x, ctx, &rate_uv_intra,
|
||||||
rd_pick_intra_sbuv_mode(cpi, x, ctx, &rate_uv_intra[uv_tx_size],
|
&rate_uv_tokenonly,
|
||||||
&rate_uv_tokenonly[uv_tx_size],
|
&dist_uv,
|
||||||
&dist_uv[uv_tx_size],
|
&skip_uv,
|
||||||
&skip_uv[uv_tx_size],
|
BLOCK_8X8, TX_4X4);
|
||||||
BLOCK_8X8, uv_tx_size);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4424,15 +4390,8 @@ int64_t vp9_rd_pick_inter_mode_sub8x8(VP9_COMP *cpi, MACROBLOCK *x,
|
|||||||
}
|
}
|
||||||
if (cm->interp_filter == SWITCHABLE)
|
if (cm->interp_filter == SWITCHABLE)
|
||||||
assert(best_filter_diff[SWITCHABLE_FILTERS] == 0);
|
assert(best_filter_diff[SWITCHABLE_FILTERS] == 0);
|
||||||
for (i = 0; i < TX_MODES; i++) {
|
|
||||||
if (best_tx_rd[i] == INT64_MAX)
|
|
||||||
best_tx_diff[i] = 0;
|
|
||||||
else
|
|
||||||
best_tx_diff[i] = best_rd - best_tx_rd[i];
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
vp9_zero(best_filter_diff);
|
vp9_zero(best_filter_diff);
|
||||||
vp9_zero(best_tx_diff);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
set_ref_ptrs(cm, xd, mbmi->ref_frame[0], mbmi->ref_frame[1]);
|
set_ref_ptrs(cm, xd, mbmi->ref_frame[0], mbmi->ref_frame[1]);
|
||||||
|
Reference in New Issue
Block a user