]> granicus.if.org Git - libvpx/commitdiff
Nearest / Zero Mv default entropy tweak.
authorPaul Wilkins <paulwilkins@google.com>
Wed, 6 Feb 2013 13:02:53 +0000 (13:02 +0000)
committerPaul Wilkins <paulwilkins@google.com>
Fri, 8 Feb 2013 10:16:13 +0000 (10:16 +0000)
Tweak to default mode context to account for the fact
that when there are no non zero motion candidates
Nearest is now the preferred mode for coding a 0,0
vector.

Also resolve duplicate function name and typos.

Change-Id: I76802788d46c84e3d1c771be216a537ab7b12817

vp9/common/vp9_modecont.c
vp9/decoder/vp9_decodemv.c
vp9/encoder/vp9_bitstream.c

index f7f2b901322abb2842b9e83da07764b5eb51948b..73cb5e15e39ec97459588a05741cfacbacc85b53 100644 (file)
@@ -12,7 +12,7 @@
 #include "vp9/common/vp9_entropy.h"
 
 const int vp9_default_mode_contexts[INTER_MODE_CONTEXTS][4] = {
-  {223,     1,     1,    237},  // 0,0 best: Only candidate
+  {1,       223,   1,    237},  // 0,0 best: Only candidate
   {87,      166,   26,   219},  // 0,0 best: non zero candidates
   {89,      67,    18,   125},  // 0,0 best: non zero candidates, split
   {16,      141,   69,   226},  // strong nz candidate(s), no split
index e526262bb4857d8dc479b10d9c76bd0ac0dfb6e6..5d6a4a7174d68de5f27ec482b175c4068112ef1c 100644 (file)
@@ -792,7 +792,7 @@ static void read_mb_modes_mv(VP9D_COMP *pbi, MODE_INFO *mi, MB_MODE_INFO *mbmi,
       }
       */
 
-      // Is the segment level skip mode enabled
+      // If the segment level skip mode enabled
       if (vp9_segfeature_active(xd, mbmi->segment_id, SEG_LVL_SKIP)) {
         mbmi->mode = ZEROMV;
       } else {
index 71109f8f4d9571895603dc8dab5dfc9ce878bc85..0858b291f966e276c16f4c6e2cce90ca7c84a21c 100644 (file)
@@ -221,8 +221,8 @@ static void update_refpred_stats(VP9_COMP *cpi) {
 //
 // 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_mode_probs(VP9_COMMON *cm,
-                              int mode_context[INTER_MODE_CONTEXTS][4]) {
+static void update_inter_mode_probs(VP9_COMMON *cm,
+                                    int mode_context[INTER_MODE_CONTEXTS][4]) {
   int i, j;
   unsigned int (*mv_ref_ct)[4][2];
 
@@ -813,7 +813,7 @@ static void pack_inter_mode_mvs(VP9_COMP *cpi, MODE_INFO *m,
     active_section = 3;
 #endif
 
-    // Is segment skip is not enabled code the mode.
+    // If segment skip is not enabled code the mode.
     if (!vp9_segfeature_active(xd, segment_id, SEG_LVL_SKIP)) {
       if (mi->sb_type) {
         write_sb_mv_ref(bc, mode, mv_ref_p);
@@ -1871,7 +1871,13 @@ void vp9_pack_bitstream(VP9_COMP *cpi, unsigned char *dest,
   if (pc->frame_type != KEY_FRAME) {
     int i, j;
     int new_context[INTER_MODE_CONTEXTS][4];
-    update_mode_probs(pc, new_context);
+    if (!cpi->dummy_packing) {
+      update_inter_mode_probs(pc, new_context);
+    } else {
+      // In dummy pack assume context unchanged.
+      vpx_memcpy(new_context, pc->fc.vp9_mode_contexts,
+                 sizeof(pc->fc.vp9_mode_contexts));
+    }
 
     for (i = 0; i < INTER_MODE_CONTEXTS; i++) {
       for (j = 0; j < 4; j++) {