Skip unnecessary calculations in ext-intra

Around 5% speedup.

Change-Id: I1c552e4e58fbf5637c0b5a97dd2cc4f83a1ca201
diff --git a/vp10/encoder/rdopt.c b/vp10/encoder/rdopt.c
index 31bf7b0..adaed0d 100644
--- a/vp10/encoder/rdopt.c
+++ b/vp10/encoder/rdopt.c
@@ -2426,7 +2426,9 @@
                                          TX_TYPE *best_tx_type,
                                          INTRA_FILTER *best_filter,
                                          BLOCK_SIZE bsize, int rate_overhead,
-                                         int64_t *best_rd) {
+                                         int64_t *best_rd,
+                                         uint8_t zcoeff_blk[][MAX_MIB_SIZE *
+                                                            MAX_MIB_SIZE * 4]) {
   int this_rate, this_rate_tokenonly, s;
   int64_t this_distortion, this_rd;
   MB_MODE_INFO *mbmi = &x->e_mbd.mi[0]->mbmi;
@@ -2448,6 +2450,9 @@
     *rate_tokenonly     = this_rate_tokenonly;
     *distortion         = this_distortion;
     *skippable          = s;
+    memcpy(zcoeff_blk[mbmi->tx_size], x->zcoeff_blk[mbmi->tx_size],
+           sizeof(zcoeff_blk[mbmi->tx_size][0]) *
+           MAX_MIB_SIZE * MAX_MIB_SIZE * 4);
   }
 }
 
@@ -2464,9 +2469,10 @@
   const int intra_filter_ctx = vp10_get_pred_context_intra_interp(xd);
   INTRA_FILTER filter, best_filter = INTRA_FILTER_LINEAR;
   const double rd_adjust = 1.2;
-  int64_t this_distortion, this_rd, sse_dummy;
+  int64_t this_distortion, this_rd;
   TX_SIZE best_tx_size = mic->mbmi.tx_size;
   TX_TYPE best_tx_type = mbmi->tx_type;
+  uint8_t zcoeff_blk[TX_SIZES][MAX_MIB_SIZE * MAX_MIB_SIZE * 4];
 
   if (ANGLE_FAST_SEARCH) {
     int deltas_level1[3] = {0, -2, 2};
@@ -2513,6 +2519,9 @@
           *rate_tokenonly     = this_rate_tokenonly;
           *distortion         = this_distortion;
           *skippable          = s;
+          memcpy(zcoeff_blk[mbmi->tx_size], x->zcoeff_blk[mbmi->tx_size],
+                 sizeof(zcoeff_blk[mbmi->tx_size][0]) *
+                 MAX_MIB_SIZE * MAX_MIB_SIZE * 4);
         }
       }
     }
@@ -2534,7 +2543,7 @@
                                        rate_overhead +
                                        cpi->intra_filter_cost
                                        [intra_filter_ctx][filter],
-                                       &best_rd);
+                                       &best_rd, zcoeff_blk);
         }
       }
     }
@@ -2556,7 +2565,7 @@
                                      rate_overhead +
                                      cpi->intra_filter_cost
                                      [intra_filter_ctx][filter],
-                                     &best_rd);
+                                     &best_rd, zcoeff_blk);
       }
     }
   }
@@ -2573,7 +2582,8 @@
                                      &best_angle_delta, &best_tx_size,
                                      &best_tx_type, &best_filter, bsize,
                                      rate_overhead + cpi->intra_filter_cost
-                                     [intra_filter_ctx][filter], &best_rd);
+                                     [intra_filter_ctx][filter], &best_rd,
+                                     zcoeff_blk);
       }
     }
   }
@@ -2582,14 +2592,10 @@
   mbmi->angle_delta[0] = best_angle_delta;
   mic->mbmi.intra_filter = best_filter;
   mbmi->tx_type = best_tx_type;
-
-  if (*rate_tokenonly < INT_MAX) {
-    txfm_rd_in_plane(x,
-                     cpi,
-                     &this_rate_tokenonly, &this_distortion, &s,
-                     &sse_dummy, INT64_MAX, 0, bsize, mbmi->tx_size,
-                     cpi->sf.use_fast_coef_costing);
-  }
+  if (*rate_tokenonly < INT_MAX)
+    memcpy(x->zcoeff_blk[mbmi->tx_size], zcoeff_blk[mbmi->tx_size],
+           sizeof(zcoeff_blk[mbmi->tx_size][0]) *
+           MAX_MIB_SIZE * MAX_MIB_SIZE * 4);
 
   return best_rd;
 }
@@ -2806,9 +2812,10 @@
       super_block_yrd(cpi, x, &this_rate_tokenonly, &this_distortion,
                       &s, NULL, bsize, best_rd);
     }
-#endif  // CONFIG_EXT_INTRA
+#else
     super_block_yrd(cpi, x, &this_rate_tokenonly, &this_distortion,
                     &s, NULL, bsize, best_rd);
+#endif  // CONFIG_EXT_INTRA
 
     if (this_rate_tokenonly == INT_MAX)
       continue;
@@ -3958,9 +3965,6 @@
   }
 
   mbmi->angle_delta[1] = best_angle_delta;
-  if (*rate_tokenonly != INT_MAX)
-    super_block_uvrd(cpi, x, &this_rate_tokenonly,
-                     &this_distortion, &s, &this_sse, bsize, INT64_MAX);
   return *rate_tokenonly != INT_MAX;
 }
 #endif  // CONFIG_EXT_INTRA