Account mode overhead early in handle_intra_mode() Consider the ref_frame cost at the beginning so that encoder can skip RD search earlier in some cases. Coding quality is neural. Encoding complexity drops slightly. STATS_CHANGED Change-Id: Ie63233527dadc38d8f784c0372a767c786a4f5f8
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c index 6120387..5005047 100644 --- a/av1/encoder/rdopt.c +++ b/av1/encoder/rdopt.c
@@ -12554,7 +12554,8 @@ MB_MODE_INFO *const mbmi = xd->mi[0]; assert(mbmi->ref_frame[0] == INTRA_FRAME); const PREDICTION_MODE mode = mbmi->mode; - const int mode_cost = x->mbmode_cost[size_group_lookup[bsize]][mode]; + const int mode_cost = + x->mbmode_cost[size_group_lookup[bsize]][mode] + ref_frame_cost; const int intra_cost_penalty = av1_get_intra_cost_penalty( cm->base_qindex, cm->y_dc_delta_q, cm->seq_params.bit_depth); const int skip_ctx = av1_get_skip_context(xd); @@ -12728,10 +12729,6 @@ rd_stats->rate += intra_cost_penalty; } - // Estimate the reference frame signaling cost and add it - // to the rolling cost variable. - rd_stats->rate += ref_frame_cost; - // Intra block is always coded as non-skip rd_stats->skip = 0; rd_stats->dist = rd_stats_y->dist + rd_stats_uv->dist;