]> granicus.if.org Git - libvpx/commitdiff
Fix a bug in RATE_FACTOR_LEVEL definition for ext-refs
authorZoe Liu <zoeliu@google.com>
Thu, 28 Jul 2016 00:24:42 +0000 (17:24 -0700)
committerZoe Liu <zoeliu@google.com>
Thu, 11 Aug 2016 16:47:46 +0000 (09:47 -0700)
There was a bug in the original set up for RATE_FACTOR_LEVELS, which
results that rate_factor_deltas for GF_ARF_STD is 2.00, instead of the
intentional value of 1.75, whereas for KF_STD is 0.00, instead of the
intentional value of 2.00.

Nevertheless, if simply fixing the bug as in the first patch, the RD
performance unexpectedly dropped by 0.143% in Avg bitrate using
Overall PSNR, especially for following sequences in lowres:

bridge_close_cif: dropped by 1.468%
container_cif: dropped by 2.140%
husky_cif: dropped by 0.826%
motherdaughter_cif: dropped by 0.798%
rasehorses_240p: dropped by 0.805%
students_cif: dropped by 1.411%

This indicates that we should boost up the value for GF_ARF_STD from
1.75 to at least to 2.00. After doing so, while still keeps 2.00 for
KF_STD, the new patch achieves a small gain of 0.15% for the baseline,
and a smaller gain of 0.06% for the experiment of ext-refs. Most
sequences keep the similar RD performance in lowres, except for the
following ones that obtain a bigger gain:

(1) Baseline:
container_cif: 1.628%
students_cif: 1.015%

(2) ext-refs
tennis_sif: 1.248%

Change-Id: I992f8f6a3e20f1b71ec52a1ddc969af4968b78d5

vp10/encoder/ratectrl.c
vp10/encoder/ratectrl.h

index a514a0e9be4d2e1cf735b805ba1737a8b7a755b9..c35b7ce665cc3a428cae086cb0adb19f394c9972 100644 (file)
@@ -955,12 +955,12 @@ int vp10_frame_type_qdelta(const VP10_COMP *cpi, int rf_level, int q) {
     1.00,  // INTER_NORMAL
 #if CONFIG_EXT_REFS
     0.80,  // INTER_LOW
-    1.25,  // INTER_HIGH
+    1.50,  // INTER_HIGH
 #else
     1.00,  // INTER_HIGH
 #endif  // CONFIG_EXT_REFS
     1.50,  // GF_ARF_LOW
-    1.75,  // GF_ARF_STD
+    2.00,  // GF_ARF_STD
     2.00,  // KF_STD
   };
   static const FRAME_TYPE frame_type[RATE_FACTOR_LEVELS] =
index f70429bedc9c42ffcb64ece183f12348c9617d04..520dbeb9c8b9422c4a3986c22d2ce8da1e4a4266 100644 (file)
@@ -34,9 +34,9 @@ typedef enum {
   INTER_LOW = 1,
   INTER_HIGH = 2,
   GF_ARF_LOW = 3,
-  GF_ARF_STD = 5,
-  KF_STD = 6,
-  RATE_FACTOR_LEVELS = 7
+  GF_ARF_STD = 4,
+  KF_STD = 5,
+  RATE_FACTOR_LEVELS = 6
 } RATE_FACTOR_LEVEL;
 #else
 typedef enum {