]> granicus.if.org Git - libvpx/commitdiff
Fix rate cost calculation for ext-intra
authorhui su <huisu@google.com>
Fri, 10 Jun 2016 17:37:24 +0000 (10:37 -0700)
committerhui su <huisu@google.com>
Tue, 14 Jun 2016 20:46:17 +0000 (13:46 -0700)
It was broken by commit 8ee640f979.

Change-Id: I26b9eba810c74849b0805e64da2d269ab0685cb9

vp10/encoder/rdopt.c

index e8ff020359802861fe64a0a34856dcae0cc44f42..d3b620dab69dc160659e9e0a636f0c558bf4ff4e 100644 (file)
@@ -9033,11 +9033,26 @@ void vp10_rd_pick_inter_mode_sb(VP10_COMP *cpi,
         rate2 += vp10_cost_bit(cm->fc->ext_intra_probs[0],
                                mbmi->ext_intra_mode_info.use_ext_intra_mode[0]);
         if (mbmi->ext_intra_mode_info.use_ext_intra_mode[0]) {
-          EXT_INTRA_MODE ext_intra_mode =
-              mbmi->ext_intra_mode_info.ext_intra_mode[0];
-          rate2 += write_uniform_cost(FILTER_INTRA_MODES, ext_intra_mode);
+          rate2 +=
+              write_uniform_cost(FILTER_INTRA_MODES,
+                                 mbmi->ext_intra_mode_info.ext_intra_mode[0]);
         }
       }
+
+      if (mbmi->uv_mode != DC_PRED && mbmi->uv_mode != TM_PRED) {
+        rate2 += write_uniform_cost(2 * MAX_ANGLE_DELTAS + 1,
+                                    MAX_ANGLE_DELTAS +
+                                    mbmi->angle_delta[1]);
+      }
+
+      if (ALLOW_FILTER_INTRA_MODES && mbmi->mode == DC_PRED) {
+        rate2 += vp10_cost_bit(cpi->common.fc->ext_intra_probs[1],
+                               mbmi->ext_intra_mode_info.use_ext_intra_mode[1]);
+        if (mbmi->ext_intra_mode_info.use_ext_intra_mode[1])
+          rate2 +=
+              write_uniform_cost(FILTER_INTRA_MODES,
+                                 mbmi->ext_intra_mode_info.ext_intra_mode[1]);
+      }
 #endif  // CONFIG_EXT_INTRA
       if (this_mode != DC_PRED && this_mode != TM_PRED)
         rate2 += intra_cost_penalty;