Bugfix for selective_ref_frame speed feature. For speed >=3 this feature was set to level '3'. But at times, it was triggered only at level == 2. We now trigger it for level >= 2 instead. Also, there is nothing special about level 3, so we remove that level. Thanks to Debargha for finding this discrepancy. Faster encoding at speed = 3 and above: - speed 3: ~9% faster - speed 4: ~9.5% faster BDRate (PSNR) is roughly neutral (< +0.1%) on lowres, midres sets for speed 3 and 4. BUG=aomedia:1679 Change-Id: I58cdf1d00abb6558004f3015a20d71e8dfa983bd
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c index 0dbe335..3681095 100644 --- a/av1/encoder/rdopt.c +++ b/av1/encoder/rdopt.c
@@ -9656,7 +9656,7 @@ } if (sf->selective_ref_frame) { - if (sf->selective_ref_frame == 2 || x->cb_partition_scan) { + if (sf->selective_ref_frame >= 2 || x->cb_partition_scan) { if (ref_frame[0] == ALTREF2_FRAME || ref_frame[1] == ALTREF2_FRAME) if (get_relative_dist( cm, cm->cur_frame->ref_frame_offset[ALTREF2_FRAME - LAST_FRAME],
diff --git a/av1/encoder/speed_features.c b/av1/encoder/speed_features.c index c3e169c..2e25e81 100644 --- a/av1/encoder/speed_features.c +++ b/av1/encoder/speed_features.c
@@ -193,7 +193,6 @@ } if (speed >= 3) { - sf->selective_ref_frame = 3; sf->tx_size_search_method = boosted ? USE_FULL_RD : USE_LARGESTALL; sf->less_rectangular_check = 1; sf->mode_skip_start = 10;
diff --git a/av1/encoder/speed_features.h b/av1/encoder/speed_features.h index df15e1b..dc89058 100644 --- a/av1/encoder/speed_features.h +++ b/av1/encoder/speed_features.h
@@ -377,9 +377,9 @@ // Used if partition_search_type = FIXED_SIZE_PARTITION BLOCK_SIZE always_this_block_size; - // Drop less likely picked reference frames in the RD search - // Has three levels for now: 1, 2 and 3, where higher levels are more - // aggressive than lower ones. + // Drop less likely to be picked reference frames in the RD search. + // Has three levels for now: 0, 1 and 2, where higher levels prune more + // aggressively than lower ones. (0 means no pruning). int selective_ref_frame; // Prune extended partition types search