]> granicus.if.org Git - libvpx/commitdiff
Fix partition selection in speed features for arf overlay frame.
authorMarco <marpan@google.com>
Fri, 29 Sep 2017 21:54:56 +0000 (14:54 -0700)
committerMarco <marpan@google.com>
Fri, 29 Sep 2017 22:02:28 +0000 (15:02 -0700)
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

vp9/encoder/vp9_speed_features.c

index f49d8e4109de91c88cfccff8bdd4b577765d719d..c9821dec3773c892fc8462ead74b9678234afc19 100644 (file)
@@ -529,10 +529,7 @@ static void set_rt_speed_feature_framesize_independent(
     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 @@ static void set_rt_speed_feature_framesize_independent(
     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),