]> granicus.if.org Git - libvpx/commitdiff
Further improvement on compound inter-intra expt
authorDeb Mukherjee <debargha@google.com>
Thu, 24 Jan 2013 23:22:57 +0000 (15:22 -0800)
committerDeb Mukherjee <debargha@google.com>
Tue, 29 Jan 2013 08:21:29 +0000 (00:21 -0800)
Adds a special combination mode specific to intra prediciton
mode D45.

Current results with the compound inter/intra experiment:
derf: 0.2%
yt: 0.55%
std-hd: 0.75%
hd: 0.74%

Change-Id: I8976bdf3b9b0b66ab8c5c628bbc62c14fc72ca86

vp9/common/vp9_reconintra.c

index 2828d0373f35469ff71be0aa18e0f1eba4432884..9ee89d5cff2652defc063e3a7b9ce096658af607 100644 (file)
@@ -393,6 +393,7 @@ static void combine_interintra(MB_PREDICTION_MODE mode,
      70,  70,  69,  69,  69,  69,  68,  68,
      68,  68,  68,  67,  67,  67,  67,  67,
   };
+
   int size_scale = (size >= 64 ? 1:
                     size == 32 ? 2 :
                     size == 16 ? 4 :
@@ -469,8 +470,21 @@ static void combine_interintra(MB_PREDICTION_MODE mode,
       break;
 
     case D45_PRED:
-    case DC_PRED:
+      for (i = 0; i < size; ++i) {
+        for (j = 0; j < size; ++j) {
+          int k = i * interstride + j;
+          int scale = (weights1d[i * size_scale] +
+                       weights1d[j * size_scale]) >> 1;
+          interpred[k] =
+              ((scale_max - scale) * interpred[k] +
+               scale * intrapred[i * intrastride + j] + scale_round)
+              >> scale_bits;
+        }
+      }
+      break;
+
     case TM_PRED:
+    case DC_PRED:
     default:
       // simple average
       for (i = 0; i < size; ++i) {