]> granicus.if.org Git - libvpx/commitdiff
Don't let GOLDEN_FRAME turn off LAST_FRAME as a reference when GOLDEN_FRAME is disabled.
authorAlex Converse <aconverse@google.com>
Thu, 27 Feb 2014 00:46:21 +0000 (16:46 -0800)
committerAlex Converse <aconverse@google.com>
Thu, 27 Feb 2014 00:46:21 +0000 (16:46 -0800)
There was a bug in the previous code that if GOLDEN was better than
LAST neither would be used. LAST would get turned off due to superior
GOLDEN quality then all GOLDEN modes would get skipped.

Change-Id: I173f3720451707dab7b2cbbe8b8e6a047089bde7

vp9/encoder/vp9_onyx_if.c

index 33f588fa196efbb54d8ef4b565f7ff65f37a42d7..ccf726b31cb5699f5ac4c82d8e54f8b3efd57eba 100644 (file)
@@ -491,18 +491,6 @@ static void set_rd_speed_thresholds(VP9_COMP *cpi) {
   sf->thresh_mult[THR_D207_PRED] += 2500;
   sf->thresh_mult[THR_D63_PRED] += 2500;
 
-  // disable using golden frame modes if golden frames are not being used
-  if (cpi->rc.frames_till_gf_update_due == INT_MAX) {
-    sf->thresh_mult[THR_NEARESTG ] = INT_MAX;
-    sf->thresh_mult[THR_ZEROG    ] = INT_MAX;
-    sf->thresh_mult[THR_NEARG    ] = INT_MAX;
-    sf->thresh_mult[THR_NEWG     ] = INT_MAX;
-    sf->thresh_mult[THR_COMP_ZEROGA   ] = INT_MAX;
-    sf->thresh_mult[THR_COMP_NEARESTGA] = INT_MAX;
-    sf->thresh_mult[THR_COMP_NEARGA   ] = INT_MAX;
-    sf->thresh_mult[THR_COMP_NEWGA    ] = INT_MAX;
-  }
-
   /* disable frame modes if flags not set */
   if (!(cpi->ref_frame_flags & VP9_LAST_FLAG)) {
     sf->thresh_mult[THR_NEWMV    ] = INT_MAX;
@@ -3072,6 +3060,9 @@ static void get_ref_frame_flags(VP9_COMP *cpi) {
   if (cpi->gold_is_last)
     cpi->ref_frame_flags &= ~VP9_GOLD_FLAG;
 
+  if (cpi->rc.frames_till_gf_update_due == INT_MAX)
+    cpi->ref_frame_flags &= ~VP9_GOLD_FLAG;
+
   if (cpi->alt_is_last)
     cpi->ref_frame_flags &= ~VP9_ALT_FLAG;