shithub: libvpx

Download patch

ref: 6ea6f4d2539d907003438f4f60fc6e5bafeefd1f
parent: 21595f8e38771c283fae6b39fe4a7be3d19d72f3
parent: 580d29bdbb97c2ba862cadd12a7af093ab87f806
author: Ronald S. Bultje <rbultje@google.com>
date: Thu May 30 16:58:13 EDT 2013

Merge "Remove one (unused) entry from mvref tables." into experimental

--- a/vp9/common/vp9_entropymode.c
+++ b/vp9/common/vp9_entropymode.c
@@ -178,7 +178,7 @@
 void vp9_accum_mv_refs(VP9_COMMON *pc,
                        MB_PREDICTION_MODE m,
                        const int context) {
-  unsigned int (*mv_ref_ct)[4][2] = pc->fc.mv_ref_ct;
+  unsigned int (*mv_ref_ct)[VP9_MVREFS - 1][2] = pc->fc.mv_ref_ct;
 
   if (m == ZEROMV) {
     ++mv_ref_ct[context][0][0];
@@ -201,8 +201,8 @@
 #define MVREF_MAX_UPDATE_FACTOR 128
 void vp9_adapt_mode_context(VP9_COMMON *pc) {
   int i, j;
-  unsigned int (*mv_ref_ct)[4][2] = pc->fc.mv_ref_ct;
-  int (*mode_context)[4] = pc->fc.vp9_mode_contexts;
+  unsigned int (*mv_ref_ct)[VP9_MVREFS - 1][2] = pc->fc.mv_ref_ct;
+  int (*mode_context)[VP9_MVREFS - 1] = pc->fc.vp9_mode_contexts;
 
   for (j = 0; j < INTER_MODE_CONTEXTS; j++) {
     for (i = 0; i < 4; i++) {
--- a/vp9/common/vp9_modecont.c
+++ b/vp9/common/vp9_modecont.c
@@ -11,12 +11,12 @@
 
 #include "vp9/common/vp9_entropy.h"
 
-const int vp9_default_mode_contexts[INTER_MODE_CONTEXTS][4] = {
-  {2,       173,   34,   229},  // 0 = both zero mv
-  {7,       145,   85,   225},  // 1 = one zero mv + one a predicted mv
-  {7,       166,   63,   231},  // 2 = two predicted mvs
-  {7,       94,    66,   219},  // 3 = one predicted/zero and one new mv
-  {8,       64,    46,   213},  // 4 = two new mvs
-  {17,      81,    31,   231},  // 5 = one intra neighbour + x
-  {25,      29,    30,   246},  // 6 = two intra neighbours
+const int vp9_default_mode_contexts[INTER_MODE_CONTEXTS][VP9_MVREFS - 1] = {
+  {2,       173,   34},  // 0 = both zero mv
+  {7,       145,   85},  // 1 = one zero mv + one a predicted mv
+  {7,       166,   63},  // 2 = two predicted mvs
+  {7,       94,    66},  // 3 = one predicted/zero and one new mv
+  {8,       64,    46},  // 4 = two new mvs
+  {17,      81,    31},  // 5 = one intra neighbour + x
+  {25,      29,    30},  // 6 = two intra neighbours
 };
--- a/vp9/common/vp9_modecont.h
+++ b/vp9/common/vp9_modecont.h
@@ -13,6 +13,6 @@
 
 #include "vp9/common/vp9_entropy.h"
 
-extern const int vp9_default_mode_contexts[INTER_MODE_CONTEXTS][4];
+extern const int vp9_default_mode_contexts[INTER_MODE_CONTEXTS][VP9_MVREFS - 1];
 
 #endif  // VP9_COMMON_VP9_MODECONT_H_
--- a/vp9/common/vp9_onyxc_int.h
+++ b/vp9/common/vp9_onyxc_int.h
@@ -79,8 +79,8 @@
   vp9_prob switchable_interp_prob[VP9_SWITCHABLE_FILTERS + 1]
                                  [VP9_SWITCHABLE_FILTERS - 1];
 
-  int vp9_mode_contexts[INTER_MODE_CONTEXTS][4];
-  unsigned int mv_ref_ct[INTER_MODE_CONTEXTS][4][2];
+  int vp9_mode_contexts[INTER_MODE_CONTEXTS][VP9_MVREFS - 1];
+  unsigned int mv_ref_ct[INTER_MODE_CONTEXTS][VP9_MVREFS - 1][2];
 } FRAME_CONTEXT;
 
 typedef enum {
--- a/vp9/decoder/vp9_decodframe.c
+++ b/vp9/decoder/vp9_decodframe.c
@@ -1076,7 +1076,7 @@
   if (!keyframe) {
     int i, j;
     for (i = 0; i < INTER_MODE_CONTEXTS; ++i)
-      for (j = 0; j < 4; ++j)
+      for (j = 0; j < VP9_MVREFS - 1; ++j)
         if (vp9_read(&header_bc, 252))
           pc->fc.vp9_mode_contexts[i][j] = vp9_read_prob(&header_bc);
   }
--- a/vp9/encoder/vp9_bitstream.c
+++ b/vp9/encoder/vp9_bitstream.c
@@ -321,15 +321,15 @@
 // The branch counts table is re-populated during the actual pack stage and in
 // the decoder to facilitate backwards update of the context.
 static void update_inter_mode_probs(VP9_COMMON *cm,
-                                    int mode_context[INTER_MODE_CONTEXTS][4]) {
+    int mode_context[INTER_MODE_CONTEXTS][VP9_MVREFS - 1]) {
   int i, j;
-  unsigned int (*mv_ref_ct)[4][2] = cm->fc.mv_ref_ct;
+  unsigned int (*mv_ref_ct)[VP9_MVREFS - 1][2] = cm->fc.mv_ref_ct;
 
   vpx_memcpy(mode_context, cm->fc.vp9_mode_contexts,
              sizeof(cm->fc.vp9_mode_contexts));
 
   for (i = 0; i < INTER_MODE_CONTEXTS; i++) {
-    for (j = 0; j < 4; j++) {
+    for (j = 0; j < VP9_MVREFS - 1; j++) {
       int new_prob, old_cost, new_cost;
 
       // Work out cost of coding branches with the old and optimal probability
@@ -1640,7 +1640,7 @@
   // changes in the bitstream.
   if (pc->frame_type != KEY_FRAME) {
     int i, j;
-    int new_context[INTER_MODE_CONTEXTS][4];
+    int new_context[INTER_MODE_CONTEXTS][VP9_MVREFS - 1];
     if (!cpi->dummy_packing) {
       update_inter_mode_probs(pc, new_context);
     } else {
@@ -1650,7 +1650,7 @@
     }
 
     for (i = 0; i < INTER_MODE_CONTEXTS; i++) {
-      for (j = 0; j < 4; j++) {
+      for (j = 0; j < VP9_MVREFS - 1; j++) {
         if (new_context[i][j] != pc->fc.vp9_mode_contexts[i][j]) {
           vp9_write(&header_bc, 1, 252);
           vp9_write_prob(&header_bc, new_context[i][j]);
--- a/vp9/encoder/vp9_onyx_if.c
+++ b/vp9/encoder/vp9_onyx_if.c
@@ -537,7 +537,7 @@
 
   // Add in the values for this frame
   for (i = 0; i < INTER_MODE_CONTEXTS; i++) {
-    for (j = 0; j < 4; j++) {
+    for (j = 0; j < VP9_MVREFS - 1; j++) {
       mv_ref_stats[i][j][0] += (int64_t)mv_ref_ct[i][j][0];
       mv_ref_stats[i][j][1] += (int64_t)mv_ref_ct[i][j][1];
     }
@@ -554,12 +554,13 @@
   int i, j;
 
   fprintf(f, "#include \"vp9_entropy.h\"\n");
-  fprintf(f, "const int vp9_mode_contexts[INTER_MODE_CONTEXTS][4] =");
+  fprintf(f,
+          "const int vp9_mode_contexts[INTER_MODE_CONTEXTS][VP9_MVREFS - 1] =");
   fprintf(f, "{\n");
   for (j = 0; j < INTER_MODE_CONTEXTS; j++) {
     fprintf(f, "  {/* %d */ ", j);
     fprintf(f, "    ");
-    for (i = 0; i < 4; i++) {
+    for (i = 0; i < VP9_MVREFS - 1; i++) {
       int this_prob;
       int64_t count = cpi->mv_ref_stats[j][i][0] + cpi->mv_ref_stats[j][i][1];
       if (count)
--- a/vp9/encoder/vp9_onyx_int.h
+++ b/vp9/encoder/vp9_onyx_int.h
@@ -88,8 +88,8 @@
   vp9_prob switchable_interp_prob[VP9_SWITCHABLE_FILTERS + 1]
                                  [VP9_SWITCHABLE_FILTERS - 1];
 
-  int mv_ref_ct[INTER_MODE_CONTEXTS][4][2];
-  int vp9_mode_contexts[INTER_MODE_CONTEXTS][4];
+  int mv_ref_ct[INTER_MODE_CONTEXTS][VP9_MVREFS - 1][2];
+  int vp9_mode_contexts[INTER_MODE_CONTEXTS][VP9_MVREFS - 1];
 
 } CODING_CONTEXT;
 
@@ -615,7 +615,7 @@
 #endif
 
 #ifdef ENTROPY_STATS
-  int64_t mv_ref_stats[INTER_MODE_CONTEXTS][4][2];
+  int64_t mv_ref_stats[INTER_MODE_CONTEXTS][VP9_MVREFS - 1][2];
 #endif
 } VP9_COMP;