shithub: libvpx

Download patch

ref: c8f6e7b99efc8e873ef3ef9cfa5232ff1ee596bb
parent: f2c3d0a7a3ac5d4eb844b50da386142e9610ee24
author: Marco <marpan@google.com>
date: Fri Sep 29 10:54:56 EDT 2017

Fix partition selection in speed features for arf overlay frame.

For real-time mode. Move the switch to fixed partition
for is_src_frame_alt_ref so all speeds may use it
if use_altref_onepass is set.

Improves metrics by ~2% for ytlive set at speed 4
(where use_altref_onepass is currently used).

Change-Id: I033240386598c9dbd0364da89ccbcca64bc663ee

--- a/vp9/encoder/vp9_speed_features.c
+++ b/vp9/encoder/vp9_speed_features.c
@@ -529,10 +529,7 @@
     sf->partition_search_type = VAR_BASED_PARTITION;
     if (cpi->oxcf.rc_mode == VPX_VBR && cpi->oxcf.lag_in_frames > 0 &&
         !is_keyframe) {
-      if (cpi->rc.is_src_frame_alt_ref) {
-        sf->partition_search_type = FIXED_PARTITION;
-        sf->always_this_block_size = BLOCK_64X64;
-      } else if (sf->use_altref_onepass && cpi->refresh_alt_ref_frame) {
+      if (sf->use_altref_onepass && cpi->refresh_alt_ref_frame) {
         sf->partition_search_type = REFERENCE_PARTITION;
       }
     }
@@ -640,6 +637,10 @@
     sf->use_simple_block_yrd = 1;
   }
   if (sf->use_altref_onepass) {
+    if (cpi->rc.is_src_frame_alt_ref && cm->frame_type != KEY_FRAME) {
+      sf->partition_search_type = FIXED_PARTITION;
+      sf->always_this_block_size = BLOCK_64X64;
+    }
     if (cpi->count_arf_frame_usage == NULL)
       cpi->count_arf_frame_usage =
           (uint8_t *)vpx_calloc((cm->mi_stride >> 3) * ((cm->mi_rows >> 3) + 1),