Commit f8c06fb2 authored by Yaowu Xu's avatar Yaowu Xu
Browse files

Disable early exit based on distortion in lossless

In lossless coding, distortion is always 0. Early exit based on this
metric was incorrect.

This CL also changed to use best_rd instead of distortion as the metric
for easly exit as requested by Jim.

Change-Id: I8ef3e407ac03b4abc3283b273f936a68fad5c2ab
parent 6df9ec52
......@@ -1640,7 +1640,8 @@ static void rd_pick_partition(VP9_COMP *cpi, const TileInfo *const tile,
}
sum_rd = RDCOST(x->rdmult, x->rddiv, this_rate, this_dist);
if (sum_rd < best_rd) {
int64_t stop_thresh = 2048;
int64_t stop_thresh = 4096;
int64_t stop_thresh_rd;
best_rate = this_rate;
best_dist = this_dist;
......@@ -1652,9 +1653,10 @@ static void rd_pick_partition(VP9_COMP *cpi, const TileInfo *const tile,
stop_thresh >>= 8 - (b_width_log2_lookup[bsize] +
b_height_log2_lookup[bsize]);
stop_thresh_rd = RDCOST(x->rdmult, x->rddiv, 0, stop_thresh);
// If obtained distortion is very small, choose current partition
// and stop splitting.
if (this_dist < stop_thresh) {
if (!x->e_mbd.lossless && best_rd < stop_thresh_rd) {
do_split = 0;
do_rect = 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