Enable intra_y_mode_mask pruning for real time enc Following my previous CL https://aomedia-review.googlesource.com/c/aom/+/138781 this CL enabled using intra_y_mode_mask to prune intra mode search for real time encoding. This gave huge encoder speedup for speed 5 & 6 without much quality loss. Borg test result: avg_psnr: ovr_psnr: ssim: rtc speed 5 rtc_derf: 0.243 0.385 0.351 rtc speed 6 rtc_derf: 0.434 0.548 0.564 Average encoder speedup over 5 clips are 44.7% for speed 5 and 42.2% for speed 6. STATS_CHANGED Change-Id: I01818a80c6e1d260bcad01587837c6f83faddca7
diff --git a/av1/encoder/speed_features.c b/av1/encoder/speed_features.c index eef1e24..3aeb9cc 100644 --- a/av1/encoder/speed_features.c +++ b/av1/encoder/speed_features.c
@@ -1356,9 +1356,7 @@ sf->inter_sf.inter_mode_rd_model_estimation = 2; for (int i = 0; i < TX_SIZES; ++i) { - // TODO(yunqing): comment this out to keep rt performance unchanged. Will - // explore it further. - // sf->intra_sf.intra_y_mode_mask[i] = INTRA_DC; + sf->intra_sf.intra_y_mode_mask[i] = INTRA_DC; sf->intra_sf.intra_uv_mode_mask[i] = UV_INTRA_DC_CFL; } @@ -1408,6 +1406,12 @@ sf->inter_sf.inter_mode_rd_model_estimation = 2; + // Disable intra_y_mode_mask pruning since the performance at speed 7 isn't + // good. May need more study. + for (int i = 0; i < TX_SIZES; ++i) { + sf->intra_sf.intra_y_mode_mask[i] = INTRA_ALL; + } + sf->lpf_sf.lpf_pick = LPF_PICK_FROM_Q; sf->rt_sf.mode_search_skip_flags |= FLAG_SKIP_INTRA_DIRMISMATCH;
diff --git a/test/rt_end_to_end_test.cc b/test/rt_end_to_end_test.cc index 8590f80..9997339 100644 --- a/test/rt_end_to_end_test.cc +++ b/test/rt_end_to_end_test.cc
@@ -44,7 +44,7 @@ { 8, { { 0, 36.0 }, { 3, 36.5 } } }, { 9, { { 0, 35.5 }, { 3, 36.1 } } } } }, { "niklas_1280_720_30.y4m", - { { 5, { { 0, 34.4 }, { 3, 34.4 } } }, + { { 5, { { 0, 34.4 }, { 3, 34.32 } } }, { 6, { { 0, 34.2 }, { 3, 34.2 } } }, { 7, { { 0, 33.6 }, { 3, 33.6 } } }, { 8, { { 0, 33.48 }, { 3, 33.48 } } },