]> granicus.if.org Git - libvpx/commitdiff
Added support for extended partitions with copy_mode
authorPeter de Rivaz <peter.derivaz@gmail.com>
Tue, 23 Jun 2015 11:00:05 +0000 (12:00 +0100)
committerDebargha Mukherjee <debargha@google.com>
Tue, 23 Jun 2015 18:09:34 +0000 (11:09 -0700)
Change-Id: I815374bd89e3faf2bac1b4155dbbe7366f0a1d29

vp9/common/vp9_mvref_common.c
vp9/common/vp9_mvref_common.h
vp9/decoder/vp9_decodeframe.c
vp9/decoder/vp9_decodemv.c
vp9/decoder/vp9_decodemv.h
vp9/encoder/vp9_context_tree.c
vp9/encoder/vp9_context_tree.h
vp9/encoder/vp9_encodeframe.c
vp9/encoder/vp9_rdopt.c
vp9/encoder/vp9_rdopt.h

index 85b1f21b17ef98241faefe834086be6b462dabaa..072b119a504d738790a0f2a96483f172b400cc8d 100644 (file)
@@ -657,7 +657,11 @@ static int check_inside(const TileInfo *const tile, int mi_row, int mi_col) {
          mi_row < tile->mi_row_end && mi_col < tile->mi_col_end;
 }
 
-static int is_right_available(BLOCK_SIZE bsize, int mi_row, int mi_col) {
+static int is_right_available(BLOCK_SIZE bsize,
+#if CONFIG_EXT_PARTITION
+                              PARTITION_TYPE partition,
+#endif
+                              int mi_row, int mi_col) {
   int depth, max_depth = 4 - MIN(b_width_log2_lookup[bsize],
                                  b_height_log2_lookup[bsize]);
   int block[4] = {0};
@@ -679,8 +683,15 @@ static int is_right_available(BLOCK_SIZE bsize, int mi_row, int mi_col) {
     if (block[max_depth] > 0)
       return 0;
   } else {
+#if CONFIG_EXT_PARTITION
+    if (block[max_depth] == 0)
+      return 1;
+    if (block[max_depth] == 2)
+      return partition != PARTITION_VERT_A;
+#else
     if (block[max_depth] == 0 || block[max_depth] == 2)
       return 1;
+#endif
     else if (block[max_depth] == 3)
       return 0;
   }
@@ -708,7 +719,11 @@ static int is_second_rec(int mi_row, int mi_col, BLOCK_SIZE bsize) {
 
 int vp9_construct_ref_inter_list(VP9_COMMON *cm,  MACROBLOCKD *xd,
                                  const TileInfo *const tile,
-                                 BLOCK_SIZE bsize, int mi_row, int mi_col,
+                                 BLOCK_SIZE bsize,
+#if CONFIG_EXT_PARTITION
+                                 PARTITION_TYPE partition,
+#endif
+                                 int mi_row, int mi_col,
                                  MB_MODE_INFO *ref_list[18]) {
   int bw = 4 << b_width_log2_lookup[bsize];
   int bh = 4 << b_height_log2_lookup[bsize];
@@ -771,7 +786,11 @@ int vp9_construct_ref_inter_list(VP9_COMMON *cm,  MACROBLOCKD *xd,
     row_offset = row_offset_cand[i];
     col_offset = col_offset_cand[i];
     if ((col_offset < (bw / 8) ||
-        (col_offset == (bw / 8) && is_right_available(bsize, mi_row, mi_col)))
+        (col_offset == (bw / 8) && is_right_available(bsize,
+#if CONFIG_EXT_PARTITION
+                                                      partition,
+#endif
+                                                      mi_row, mi_col)))
         && check_inside(tile, mi_row + row_offset, mi_col + col_offset)) {
       mi_offset = row_offset * cm->mi_stride + col_offset;
       ref_mbmi = &xd->mi[mi_offset].src_mi->mbmi;
index cdbd4d128d6b9867ac60612162558f1ec9aec0a1..3389bd904bfc154fd28dc7b980f885d561519d40 100644 (file)
@@ -385,7 +385,11 @@ void vp9_append_sub8x8_mvs_for_idx(VP9_COMMON *cm, MACROBLOCKD *xd,
 #if CONFIG_COPY_MODE
 int vp9_construct_ref_inter_list(VP9_COMMON *cm,  MACROBLOCKD *xd,
                                  const TileInfo *const tile,
-                                 BLOCK_SIZE bsize, int mi_row, int mi_col,
+                                 BLOCK_SIZE bsize,
+#if CONFIG_EXT_PARTITION
+                                 PARTITION_TYPE partition,
+#endif
+                                 int mi_row, int mi_col,
                                  MB_MODE_INFO *ref_list[18]);
 #endif  // CONFIG_COPY_MODE
 
index 1c240a5cf6bcd90a46eda3d4914e5a734fefe5d6..2abb85306f37c6bb052c104be9e82fe270915098 100644 (file)
@@ -1583,6 +1583,11 @@ static void decode_block(VP9_COMMON *const cm, MACROBLOCKD *const xd,
                          const TileInfo *const tile,
 #if CONFIG_SUPERTX
                          int supertx_enabled,
+#endif
+#if CONFIG_COPY_MODE
+#if CONFIG_EXT_PARTITION
+                         PARTITION_TYPE partition,
+#endif
 #endif
                          int mi_row, int mi_col,
                          vp9_reader *r, BLOCK_SIZE bsize) {
@@ -1597,10 +1602,22 @@ static void decode_block(VP9_COMMON *const cm, MACROBLOCKD *const xd,
   } else {
     mbmi = set_offsets(cm, xd, tile, bsize, mi_row, mi_col);
   }
-  vp9_read_mode_info(cm, xd, tile, supertx_enabled, mi_row, mi_col, r);
+  vp9_read_mode_info(cm, xd, tile, supertx_enabled,
+#if CONFIG_COPY_MODE
+#if CONFIG_EXT_PARTITION
+                     partition,
+#endif
+#endif
+                     mi_row, mi_col, r);
 #else
   MB_MODE_INFO *mbmi = set_offsets(cm, xd, tile, bsize, mi_row, mi_col);
-  vp9_read_mode_info(cm, xd, tile, mi_row, mi_col, r);
+  vp9_read_mode_info(cm, xd, tile,
+#if CONFIG_COPY_MODE
+#if CONFIG_EXT_PARTITION
+                     partition,
+#endif
+#endif
+                     mi_row, mi_col, r);
 #endif  // CONFIG_SUPERTX
 #if CONFIG_TX_SKIP
   q_idx = vp9_get_qindex(&cm->seg, mbmi->segment_id, cm->base_qindex);
@@ -1765,6 +1782,11 @@ static void decode_partition(VP9_COMMON *const cm, MACROBLOCKD *const xd,
     decode_block(cm, xd, tile,
 #if CONFIG_SUPERTX
                  supertx_enabled,
+#endif
+#if CONFIG_COPY_MODE
+#if CONFIG_EXT_PARTITION
+                 partition,
+#endif
 #endif
                  mi_row, mi_col, r, subsize);
   } else {
@@ -1773,6 +1795,11 @@ static void decode_partition(VP9_COMMON *const cm, MACROBLOCKD *const xd,
         decode_block(cm, xd, tile,
 #if CONFIG_SUPERTX
                      supertx_enabled,
+#endif
+#if CONFIG_COPY_MODE
+#if CONFIG_EXT_PARTITION
+                     partition,
+#endif
 #endif
                      mi_row, mi_col, r, subsize);
         break;
@@ -1780,12 +1807,22 @@ static void decode_partition(VP9_COMMON *const cm, MACROBLOCKD *const xd,
         decode_block(cm, xd, tile,
 #if CONFIG_SUPERTX
                      supertx_enabled,
+#endif
+#if CONFIG_COPY_MODE
+#if CONFIG_EXT_PARTITION
+                     partition,
+#endif
 #endif
                      mi_row, mi_col, r, subsize);
         if (mi_row + hbs < cm->mi_rows)
           decode_block(cm, xd, tile,
 #if CONFIG_SUPERTX
                        supertx_enabled,
+#endif
+#if CONFIG_COPY_MODE
+#if CONFIG_EXT_PARTITION
+                       partition,
+#endif
 #endif
                        mi_row + hbs, mi_col, r, subsize);
         break;
@@ -1793,12 +1830,22 @@ static void decode_partition(VP9_COMMON *const cm, MACROBLOCKD *const xd,
         decode_block(cm, xd, tile,
 #if CONFIG_SUPERTX
                      supertx_enabled,
+#endif
+#if CONFIG_COPY_MODE
+#if CONFIG_EXT_PARTITION
+                     partition,
+#endif
 #endif
                      mi_row, mi_col, r, subsize);
         if (mi_col + hbs < cm->mi_cols)
           decode_block(cm, xd, tile,
 #if CONFIG_SUPERTX
                        supertx_enabled,
+#endif
+#if CONFIG_COPY_MODE
+#if CONFIG_EXT_PARTITION
+                       partition,
+#endif
 #endif
                        mi_row, mi_col + hbs, r, subsize);
         break;
@@ -1824,16 +1871,31 @@ static void decode_partition(VP9_COMMON *const cm, MACROBLOCKD *const xd,
         decode_block(cm, xd, tile,
 #if CONFIG_SUPERTX
                      supertx_enabled,
+#endif
+#if CONFIG_COPY_MODE
+#if CONFIG_EXT_PARTITION
+                     partition,
+#endif
 #endif
                      mi_row,       mi_col,       r, bsize2);
         decode_block(cm, xd, tile,
 #if CONFIG_SUPERTX
                      supertx_enabled,
+#endif
+#if CONFIG_COPY_MODE
+#if CONFIG_EXT_PARTITION
+                     partition,
+#endif
 #endif
                      mi_row,       mi_col + hbs, r, bsize2);
         decode_block(cm, xd, tile,
 #if CONFIG_SUPERTX
                      supertx_enabled,
+#endif
+#if CONFIG_COPY_MODE
+#if CONFIG_EXT_PARTITION
+                     partition,
+#endif
 #endif
                      mi_row + hbs, mi_col, r, subsize);
         break;
@@ -1841,16 +1903,31 @@ static void decode_partition(VP9_COMMON *const cm, MACROBLOCKD *const xd,
         decode_block(cm, xd, tile,
 #if CONFIG_SUPERTX
                      supertx_enabled,
+#endif
+#if CONFIG_COPY_MODE
+#if CONFIG_EXT_PARTITION
+                     partition,
+#endif
 #endif
                      mi_row, mi_col, r, subsize);
         decode_block(cm, xd, tile,
 #if CONFIG_SUPERTX
                      supertx_enabled,
+#endif
+#if CONFIG_COPY_MODE
+#if CONFIG_EXT_PARTITION
+                     partition,
+#endif
 #endif
                      mi_row + hbs, mi_col,       r, bsize2);
         decode_block(cm, xd, tile,
 #if CONFIG_SUPERTX
                      supertx_enabled,
+#endif
+#if CONFIG_COPY_MODE
+#if CONFIG_EXT_PARTITION
+                     partition,
+#endif
 #endif
                      mi_row + hbs, mi_col + hbs, r, bsize2);
         break;
@@ -1858,16 +1935,31 @@ static void decode_partition(VP9_COMMON *const cm, MACROBLOCKD *const xd,
         decode_block(cm, xd, tile,
 #if CONFIG_SUPERTX
                      supertx_enabled,
+#endif
+#if CONFIG_COPY_MODE
+#if CONFIG_EXT_PARTITION
+                     partition,
+#endif
 #endif
                      mi_row,       mi_col,       r, bsize2);
         decode_block(cm, xd, tile,
 #if CONFIG_SUPERTX
                      supertx_enabled,
+#endif
+#if CONFIG_COPY_MODE
+#if CONFIG_EXT_PARTITION
+                     partition,
+#endif
 #endif
                      mi_row + hbs, mi_col,       r, bsize2);
         decode_block(cm, xd, tile,
 #if CONFIG_SUPERTX
                      supertx_enabled,
+#endif
+#if CONFIG_COPY_MODE
+#if CONFIG_EXT_PARTITION
+                     partition,
+#endif
 #endif
                      mi_row, mi_col + hbs, r, subsize);
         break;
@@ -1875,16 +1967,31 @@ static void decode_partition(VP9_COMMON *const cm, MACROBLOCKD *const xd,
         decode_block(cm, xd, tile,
 #if CONFIG_SUPERTX
                      supertx_enabled,
+#endif
+#if CONFIG_COPY_MODE
+#if CONFIG_EXT_PARTITION
+                     partition,
+#endif
 #endif
                      mi_row, mi_col, r, subsize);
         decode_block(cm, xd, tile,
 #if CONFIG_SUPERTX
                      supertx_enabled,
+#endif
+#if CONFIG_COPY_MODE
+#if CONFIG_EXT_PARTITION
+                     partition,
+#endif
 #endif
                      mi_row,       mi_col + hbs, r, bsize2);
         decode_block(cm, xd, tile,
 #if CONFIG_SUPERTX
                      supertx_enabled,
+#endif
+#if CONFIG_COPY_MODE
+#if CONFIG_EXT_PARTITION
+                     partition,
+#endif
 #endif
                      mi_row + hbs, mi_col + hbs, r, bsize2);
         break;
index 95f89a4b0f674dd08c0da70220fd04b978317e2b..5c76ffa1f645e76c6eaca713183673c6c45c5906 100644 (file)
@@ -1289,6 +1289,11 @@ static void read_inter_frame_mode_info(VP9_COMMON *const cm,
                                        const TileInfo *const tile,
 #if CONFIG_SUPERTX
                                        int supertx_enabled,
+#endif
+#if CONFIG_COPY_MODE
+#if CONFIG_EXT_PARTITION
+                                       PARTITION_TYPE partition,
+#endif
 #endif
                                        int mi_row, int mi_col, vp9_reader *r) {
   MODE_INFO *const mi = xd->mi[0].src_mi;
@@ -1308,7 +1313,11 @@ static void read_inter_frame_mode_info(VP9_COMMON *const cm,
 #if CONFIG_COPY_MODE
   if (mbmi->sb_type >= BLOCK_8X8)
     num_candidate = vp9_construct_ref_inter_list(
-        cm, xd, tile, mbmi->sb_type, mi_row, mi_col, inter_ref_list);
+        cm, xd, tile, mbmi->sb_type,
+#if CONFIG_EXT_PARTITION
+        partition,
+#endif
+        mi_row, mi_col, inter_ref_list);
   if (mbmi->sb_type >= BLOCK_8X8 && num_candidate > 0) {
     int ctx = vp9_get_copy_mode_context(xd);
     int is_copy = vp9_read(r, cm->fc.copy_noref_prob[ctx][mbmi->sb_type]);
@@ -1610,6 +1619,11 @@ void vp9_read_mode_info(VP9_COMMON *cm, MACROBLOCKD *xd,
                         const TileInfo *const tile,
 #if CONFIG_SUPERTX
                         int supertx_enabled,
+#endif
+#if CONFIG_COPY_MODE
+#if CONFIG_EXT_PARTITION
+                        PARTITION_TYPE partition,
+#endif
 #endif
                         int mi_row, int mi_col, vp9_reader *r) {
   if (frame_is_intra_only(cm))
@@ -1618,6 +1632,11 @@ void vp9_read_mode_info(VP9_COMMON *cm, MACROBLOCKD *xd,
     read_inter_frame_mode_info(cm, xd, tile,
 #if CONFIG_SUPERTX
                                supertx_enabled,
+#endif
+#if CONFIG_COPY_MODE
+#if CONFIG_EXT_PARTITION
+                               partition,
+#endif
 #endif
                                mi_row, mi_col, r);
 }
index 93ffb88cb04f102fee03649a40dd76451e17d0c2..c741939be19fcdf5efc064ddff5c532a23c4bbf0 100644 (file)
@@ -23,6 +23,11 @@ void vp9_read_mode_info(VP9_COMMON *cm, MACROBLOCKD *xd,
                         const struct TileInfo *const tile,
 #if CONFIG_SUPERTX
                         int supertx_enabled,
+#endif
+#if CONFIG_COPY_MODE
+#if CONFIG_EXT_PARTITION
+                        PARTITION_TYPE partition,
+#endif
 #endif
                         int mi_row, int mi_col, vp9_reader *r);
 
index ff2820f9e78c091802e61c7e664cf89fa1f4d932..9d69b4d39756044803b77b55c9b3f2e9cf8e28c5 100644 (file)
@@ -19,12 +19,17 @@ static const BLOCK_SIZE square[] = {
 };
 
 static void alloc_mode_context(VP9_COMMON *cm, int num_4x4_blk,
+#if CONFIG_EXT_PARTITION
+                               PARTITION_TYPE partition,
+#endif
                                PICK_MODE_CONTEXT *ctx) {
   const int num_blk = (num_4x4_blk < 4 ? 4 : num_4x4_blk);
   const int num_pix = num_blk << 4;
   int i, k;
   ctx->num_4x4_blk = num_blk;
-
+#if CONFIG_EXT_PARTITION
+  ctx->partition = partition;
+#endif
   CHECK_MEM_ERROR(cm, ctx->zcoeff_blk,
                   vpx_calloc(num_4x4_blk, sizeof(uint8_t)));
   for (i = 0; i < MAX_MB_PLANE; ++i) {
@@ -79,6 +84,32 @@ static void free_mode_context(PICK_MODE_CONTEXT *ctx) {
 
 static void alloc_tree_contexts(VP9_COMMON *cm, PC_TREE *tree,
                                 int num_4x4_blk) {
+#if CONFIG_EXT_PARTITION
+  alloc_mode_context(cm, num_4x4_blk, PARTITION_NONE, &tree->none);
+  alloc_mode_context(cm, num_4x4_blk/2, PARTITION_HORZ, &tree->horizontal[0]);
+  alloc_mode_context(cm, num_4x4_blk/2, PARTITION_VERT, &tree->vertical[0]);
+  alloc_mode_context(cm, num_4x4_blk/2, PARTITION_VERT, &tree->horizontal[1]);
+  alloc_mode_context(cm, num_4x4_blk/2, PARTITION_VERT, &tree->vertical[1]);
+
+  alloc_mode_context(cm, num_4x4_blk/4, PARTITION_HORZ_A,
+                     &tree->horizontala[0]);
+  alloc_mode_context(cm, num_4x4_blk/4, PARTITION_HORZ_A,
+                     &tree->horizontala[1]);
+  alloc_mode_context(cm, num_4x4_blk/2, PARTITION_HORZ_A,
+                     &tree->horizontala[2]);
+  alloc_mode_context(cm, num_4x4_blk/2, PARTITION_HORZ_B,
+                     &tree->horizontalb[0]);
+  alloc_mode_context(cm, num_4x4_blk/4, PARTITION_HORZ_B,
+                     &tree->horizontalb[1]);
+  alloc_mode_context(cm, num_4x4_blk/4, PARTITION_HORZ_B,
+                     &tree->horizontalb[2]);
+  alloc_mode_context(cm, num_4x4_blk/4, PARTITION_VERT_A, &tree->verticala[0]);
+  alloc_mode_context(cm, num_4x4_blk/4, PARTITION_VERT_A, &tree->verticala[1]);
+  alloc_mode_context(cm, num_4x4_blk/2, PARTITION_VERT_A, &tree->verticala[2]);
+  alloc_mode_context(cm, num_4x4_blk/2, PARTITION_VERT_B, &tree->verticalb[0]);
+  alloc_mode_context(cm, num_4x4_blk/4, PARTITION_VERT_B, &tree->verticalb[1]);
+  alloc_mode_context(cm, num_4x4_blk/4, PARTITION_VERT_B, &tree->verticalb[2]);
+#else
   alloc_mode_context(cm, num_4x4_blk, &tree->none);
   alloc_mode_context(cm, num_4x4_blk/2, &tree->horizontal[0]);
   alloc_mode_context(cm, num_4x4_blk/2, &tree->vertical[0]);
@@ -87,20 +118,6 @@ static void alloc_tree_contexts(VP9_COMMON *cm, PC_TREE *tree,
    * Figure out a better way to do this. */
   alloc_mode_context(cm, num_4x4_blk/2, &tree->horizontal[1]);
   alloc_mode_context(cm, num_4x4_blk/2, &tree->vertical[1]);
-
-#if CONFIG_EXT_PARTITION
-  alloc_mode_context(cm, num_4x4_blk/4, &tree->horizontala[0]);
-  alloc_mode_context(cm, num_4x4_blk/4, &tree->horizontala[1]);
-  alloc_mode_context(cm, num_4x4_blk/2, &tree->horizontala[2]);
-  alloc_mode_context(cm, num_4x4_blk/2, &tree->horizontalb[0]);
-  alloc_mode_context(cm, num_4x4_blk/4, &tree->horizontalb[1]);
-  alloc_mode_context(cm, num_4x4_blk/4, &tree->horizontalb[2]);
-  alloc_mode_context(cm, num_4x4_blk/4, &tree->verticala[0]);
-  alloc_mode_context(cm, num_4x4_blk/4, &tree->verticala[1]);
-  alloc_mode_context(cm, num_4x4_blk/2, &tree->verticala[2]);
-  alloc_mode_context(cm, num_4x4_blk/2, &tree->verticalb[0]);
-  alloc_mode_context(cm, num_4x4_blk/4, &tree->verticalb[1]);
-  alloc_mode_context(cm, num_4x4_blk/4, &tree->verticalb[2]);
 #endif
 }
 
@@ -147,9 +164,13 @@ void vp9_setup_pc_tree(VP9_COMMON *cm, VP9_COMP *cpi) {
 
   // 4x4 blocks smaller than 8x8 but in the same 8x8 block share the same
   // context so we only need to allocate 1 for each 8x8 block.
+#if CONFIG_EXT_PARTITION
+  for (i = 0; i < leaf_nodes; ++i)
+    alloc_mode_context(cm, 1, PARTITION_NONE, &cpi->leaf_tree[i]);
+#else
   for (i = 0; i < leaf_nodes; ++i)
     alloc_mode_context(cm, 1, &cpi->leaf_tree[i]);
-
+#endif
   // Sets up all the leaf nodes in the tree.
   for (pc_tree_index = 0; pc_tree_index < leaf_nodes; ++pc_tree_index) {
     PC_TREE *const tree = &cpi->pc_tree[pc_tree_index];
index d26e9f2ae25914f1ffd563f51e10b26ff0d03de4..4fd07a00c19d82ccef2d49b53a2d5887fdca7beb 100644 (file)
@@ -69,6 +69,9 @@ typedef struct {
   // search loop
   MV pred_mv[MAX_REF_FRAMES];
   INTERP_FILTER pred_interp_filter;
+#if CONFIG_EXT_PARTITION
+  PARTITION_TYPE partition;
+#endif
 } PICK_MODE_CONTEXT;
 
 typedef struct PC_TREE {
index c0cafd91f3a02265360813243a99f712335bfb99..370af72064526349e9dcdf5b72c84985b4f64c79 100644 (file)
@@ -1483,6 +1483,11 @@ static void rd_pick_sb_modes(VP9_COMP *cpi, const TileInfo *const tile,
         vp9_rd_pick_inter_mode_sb(cpi, x, tile, mi_row, mi_col, rd_cost,
 #if CONFIG_SUPERTX
                                   totalrate_nocoef,
+#endif
+#if CONFIG_COPY_MODE
+#if CONFIG_EXT_PARTITION
+                                  ctx->partition,
+#endif
 #endif
                                   bsize, ctx, best_rd);
       }
index 59d088977a52e810ef42e6fdd728387bbd9a7c92..6b437eeab9aa8d76b9ed57e90a2c50150ccf4451 100644 (file)
@@ -5991,6 +5991,11 @@ void vp9_rd_pick_inter_mode_sb(VP9_COMP *cpi, MACROBLOCK *x,
                                RD_COST *rd_cost,
 #if CONFIG_SUPERTX
                                int *returnrate_nocoef,
+#endif
+#if CONFIG_COPY_MODE
+#if CONFIG_EXT_PARTITION
+                               PARTITION_TYPE partition,
+#endif
 #endif
                                BLOCK_SIZE bsize,
                                PICK_MODE_CONTEXT *ctx,
@@ -6098,8 +6103,11 @@ void vp9_rd_pick_inter_mode_sb(VP9_COMP *cpi, MACROBLOCK *x,
                            &comp_mode_p);
 #if CONFIG_COPY_MODE
   inter_ref_count =
-    vp9_construct_ref_inter_list(cm, xd, tile, bsize, mi_row, mi_col,
-                           inter_ref_list);
+    vp9_construct_ref_inter_list(cm, xd, tile, bsize,
+#if CONFIG_EXT_PARTITION
+                                 partition,
+#endif
+                                 mi_row, mi_col, inter_ref_list);
   mbmi->inter_ref_count = inter_ref_count;
 #endif  // CONFIG_COPY_MODE
 
index f4cbfa7a3c20630a00609335d8c980be7ca3be95..4cca87ba15c1d23315284d1e197a54adad5ca4a3 100644 (file)
@@ -39,6 +39,12 @@ void vp9_rd_pick_inter_mode_sb(struct VP9_COMP *cpi, struct macroblock *x,
 #if CONFIG_SUPERTX
                                int *returnrate_nocoef,
 #endif
+#if CONFIG_COPY_MODE
+#if CONFIG_EXT_PARTITION
+                               PARTITION_TYPE partition,
+#endif
+#endif
+
                                BLOCK_SIZE bsize, PICK_MODE_CONTEXT *ctx,
                                int64_t best_rd_so_far);