]> granicus.if.org Git - libvpx/commitdiff
Fix a bug and a function name in EXT_INTRA experiment
authorYue Chen <yuec@google.com>
Tue, 2 Aug 2016 22:18:44 +0000 (15:18 -0700)
committerYue Chen <yuec@google.com>
Tue, 2 Aug 2016 23:12:49 +0000 (16:12 -0700)
(1) Apply ALLOW_FILTER_INTRA_MODES flag to the correct place, otherwise
there are bitstream mismatchs when it is 0.
(2) Rename pick_ext_intra_iframe() to pick_ext_intra_interframe().

Change-Id: Ic88c930de1d3f819750f0892df52bde55ae32a91

vp10/encoder/rdopt.c

index d5a793903e1161861c2c5498ef8727c988858581..63217569d230ed3d5fb1e2dd244e8ebb4e83fd40 100644 (file)
@@ -4077,7 +4077,8 @@ static int64_t rd_pick_intra_sbuv_mode(VP10_COMP *cpi, MACROBLOCK *x,
       this_rate += write_uniform_cost(2 * MAX_ANGLE_DELTAS + 1,
                                       MAX_ANGLE_DELTAS +
                                       mbmi->angle_delta[1]);
-    if (mode == DC_PRED)
+    if (mbmi->sb_type >= BLOCK_8X8 && mode == DC_PRED &&
+        ALLOW_FILTER_INTRA_MODES)
       this_rate += vp10_cost_bit(cpi->common.fc->ext_intra_probs[1], 0);
 #else
     if (!super_block_uvrd(cpi, x, &this_rate_tokenonly,
@@ -8349,25 +8350,18 @@ static void restore_uv_color_map(VP10_COMP *cpi, MACROBLOCK *x) {
 }
 
 #if CONFIG_EXT_INTRA
-static void pick_ext_intra_iframe(VP10_COMP *cpi, MACROBLOCK *x,
-                                  PICK_MODE_CONTEXT *ctx, BLOCK_SIZE bsize,
-                                  int *rate_uv_intra, int *rate_uv_tokenonly,
-                                  int64_t *dist_uv, int *skip_uv,
-                                  PREDICTION_MODE *mode_uv,
-                                  EXT_INTRA_MODE_INFO *ext_intra_mode_info_uv,
-                                  PALETTE_MODE_INFO *pmi_uv,
-                                  int8_t *uv_angle_delta,
-                                  int palette_ctx, int skip_mask,
-                                  unsigned int *ref_costs_single,
-                                  int64_t *best_rd, int64_t *best_intra_rd,
-                                  PREDICTION_MODE *best_intra_mode,
-                                  int *best_mode_index, int *best_skip2,
-                                  int *best_mode_skippable,
+static void pick_ext_intra_interframe(
+    VP10_COMP *cpi, MACROBLOCK *x, PICK_MODE_CONTEXT *ctx, BLOCK_SIZE bsize,
+    int *rate_uv_intra, int *rate_uv_tokenonly, int64_t *dist_uv, int *skip_uv,
+    PREDICTION_MODE *mode_uv, EXT_INTRA_MODE_INFO *ext_intra_mode_info_uv,
+    PALETTE_MODE_INFO *pmi_uv, int8_t *uv_angle_delta, int palette_ctx,
+    int skip_mask, unsigned int *ref_costs_single, int64_t *best_rd,
+    int64_t *best_intra_rd, PREDICTION_MODE *best_intra_mode,
+    int *best_mode_index, int *best_skip2, int *best_mode_skippable,
 #if CONFIG_SUPERTX
-                                  int *returnrate_nocoef,
+    int *returnrate_nocoef,
 #endif  // CONFIG_SUPERTX
-                                  int64_t *best_pred_rd,
-                                  MB_MODE_INFO *best_mbmode, RD_COST *rd_cost) {
+    int64_t *best_pred_rd, MB_MODE_INFO *best_mbmode, RD_COST *rd_cost) {
   VP10_COMMON *const cm = &cpi->common;
   MACROBLOCKD *const xd = &x->e_mbd;
   MB_MODE_INFO *const mbmi = &xd->mi[0]->mbmi;
@@ -8457,7 +8451,7 @@ static void pick_ext_intra_iframe(VP10_COMP *cpi, MACROBLOCK *x,
                                 MAX_ANGLE_DELTAS +
                                 mbmi->angle_delta[1]);
   }
-  if (ALLOW_FILTER_INTRA_MODES && mbmi->mode == DC_PRED) {
+  if (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])
@@ -9899,19 +9893,20 @@ void vp10_rd_pick_inter_mode_sb(VP10_COMP *cpi,
   // TODO(huisu): ext-intra is turned off in lossless mode for now to
   // avoid a unit test failure
   if (!xd->lossless[mbmi->segment_id] &&
+      ALLOW_FILTER_INTRA_MODES &&
       mbmi->palette_mode_info.palette_size[0] == 0 && !dc_skipped &&
       best_mode_index >= 0 && (best_intra_rd >> 1)  < best_rd) {
-    pick_ext_intra_iframe(cpi, x, ctx, bsize, rate_uv_intra,
-                          rate_uv_tokenonly, dist_uv, skip_uv,
-                          mode_uv, ext_intra_mode_info_uv,
-                          pmi_uv, uv_angle_delta, palette_ctx, 0,
-                          ref_costs_single, &best_rd, &best_intra_rd,
-                          &best_intra_mode, &best_mode_index,
-                          &best_skip2, &best_mode_skippable,
+    pick_ext_intra_interframe(cpi, x, ctx, bsize, rate_uv_intra,
+                              rate_uv_tokenonly, dist_uv, skip_uv,
+                              mode_uv, ext_intra_mode_info_uv,
+                              pmi_uv, uv_angle_delta, palette_ctx, 0,
+                              ref_costs_single, &best_rd, &best_intra_rd,
+                              &best_intra_mode, &best_mode_index,
+                              &best_skip2, &best_mode_skippable,
 #if CONFIG_SUPERTX
-                          returnrate_nocoef,
+                              returnrate_nocoef,
 #endif  // CONFIG_SUPERTX
-                          best_pred_rd, &best_mbmode, rd_cost);
+                              best_pred_rd, &best_mbmode, rd_cost);
   }
 #endif  // CONFIG_EXT_INTRA