]> granicus.if.org Git - libvpx/commitdiff
Added more LAST2 modes for INTERINTRA
authorZoe Liu <zoeliu@google.com>
Fri, 11 Sep 2015 23:55:24 +0000 (16:55 -0700)
committerZoe Liu <zoeliu@google.com>
Tue, 15 Sep 2015 18:57:18 +0000 (11:57 -0700)
Turning on all the other experiments, compared the RD performance
between with and without the use of LAST2_FRAME, on derflr testset,
on Average PSNR:

8-bit: +0.653% (All positive except one,
max: mobile_cif: 2.019%; min: paris_cif: -0.081%)
12-bit HBD: +0.735% (All positive,
max: bridge_far_cif: 2.416%; min: bowing_cif: 0.132%)

Change-Id: Ia0a375667e228c8ba3d2e223abff608206f2f545

vp9/encoder/vp9_rd.c
vp9/encoder/vp9_rd.h
vp9/encoder/vp9_rdopt.c

index 86b7ff6792604f0233c9b3c29e072cccb3943895..c936869f92782ecea5234a306c28e151e95b1ec0 100644 (file)
@@ -737,21 +737,33 @@ void vp9_set_rd_speed_thresholds(VP9_COMP *cpi) {
 
 #if CONFIG_INTERINTRA
   rd->thresh_mult[THR_COMP_INTERINTRA_ZEROL   ] += 1500;
+#if CONFIG_MULTI_REF
+  rd->thresh_mult[THR_COMP_INTERINTRA_ZEROL2  ] += 1500;
+#endif  // CONFIG_MULTI_REF
   rd->thresh_mult[THR_COMP_INTERINTRA_ZEROG   ] += 1500;
   rd->thresh_mult[THR_COMP_INTERINTRA_ZEROA   ] += 1500;
 
   rd->thresh_mult[THR_COMP_INTERINTRA_NEARESTL] += 1500;
+#if CONFIG_MULTI_REF
+  rd->thresh_mult[THR_COMP_INTERINTRA_NEARESTL2] += 1500;
+#endif  // CONFIG_MULTI_REF
   rd->thresh_mult[THR_COMP_INTERINTRA_NEARESTG] += 1500;
   rd->thresh_mult[THR_COMP_INTERINTRA_NEARESTA] += 1500;
 
   rd->thresh_mult[THR_COMP_INTERINTRA_NEARL   ] += 1500;
+#if CONFIG_MULTI_REF
+  rd->thresh_mult[THR_COMP_INTERINTRA_NEARL2  ] += 1500;
+#endif  // CONFIG_MULTI_REF
   rd->thresh_mult[THR_COMP_INTERINTRA_NEARG   ] += 1500;
   rd->thresh_mult[THR_COMP_INTERINTRA_NEARA   ] += 1500;
 
   rd->thresh_mult[THR_COMP_INTERINTRA_NEWL    ] += 2000;
+#if CONFIG_MULTI_REF
+  rd->thresh_mult[THR_COMP_INTERINTRA_NEWL2   ] += 2000;
+#endif  // CONFIG_MULTI_REF
   rd->thresh_mult[THR_COMP_INTERINTRA_NEWG    ] += 2000;
   rd->thresh_mult[THR_COMP_INTERINTRA_NEWA    ] += 2000;
-#endif
+#endif  // CONFIG_INTERINTRA
 }
 
 void vp9_set_rd_speed_thresholds_sub8x8(VP9_COMP *cpi) {
index 65f7de7ae7b07796417aa8ef78c54fc5f1ba2dc9..d2330cff7582c0579ef5a8200d14a277fe860f1d 100644 (file)
@@ -40,7 +40,7 @@ extern "C" {
 #if CONFIG_NEW_INTER
 
 #if CONFIG_INTERINTRA
-#define MAX_MODES 69
+#define MAX_MODES 73
 #else  // CONFIG_INTERINTRA
 #define MAX_MODES 57
 #endif  // CONFIG_INTERINTRA
@@ -48,7 +48,7 @@ extern "C" {
 #else   // CONFIG_NEW_INTER
 
 #if CONFIG_INTERINTRA
-#define MAX_MODES 50
+#define MAX_MODES 54
 #else  // CONFIG_INTERINTRA
 #define MAX_MODES 38
 #endif  // CONFIG_INTERINTRA
@@ -187,6 +187,13 @@ typedef enum {
   THR_COMP_INTERINTRA_NEARL,
   THR_COMP_INTERINTRA_NEWL,
 
+#if CONFIG_MULTI_REF
+  THR_COMP_INTERINTRA_ZEROL2,
+  THR_COMP_INTERINTRA_NEARESTL2,
+  THR_COMP_INTERINTRA_NEARL2,
+  THR_COMP_INTERINTRA_NEWL2,
+#endif  // CONFIG_MULTI_REF
+
   THR_COMP_INTERINTRA_ZEROG,
   THR_COMP_INTERINTRA_NEARESTG,
   THR_COMP_INTERINTRA_NEARG,
index 583af9c5534082961341464526b9d1d07992c348..d4d542037440699d7fab8b15b96fca963b13a970 100644 (file)
@@ -227,6 +227,13 @@ static const MODE_DEFINITION vp9_mode_order[MAX_MODES] = {
   {NEARMV,    {LAST_FRAME,   INTRA_FRAME}},
   {NEWMV,     {LAST_FRAME,   INTRA_FRAME}},
 
+#if CONFIG_MULTI_REF
+  {ZEROMV,    {LAST2_FRAME,  INTRA_FRAME}},
+  {NEARESTMV, {LAST2_FRAME,  INTRA_FRAME}},
+  {NEARMV,    {LAST2_FRAME,  INTRA_FRAME}},
+  {NEWMV,     {LAST2_FRAME,  INTRA_FRAME}},
+#endif  // CONFIG_MULTI_REF
+
   {ZEROMV,    {GOLDEN_FRAME, INTRA_FRAME}},
   {NEARESTMV, {GOLDEN_FRAME, INTRA_FRAME}},
   {NEARMV,    {GOLDEN_FRAME, INTRA_FRAME}},