From: Zoe Liu Date: Thu, 28 Jul 2016 00:24:42 +0000 (-0700) Subject: Fix a bug in RATE_FACTOR_LEVEL definition for ext-refs X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=cdd4eb02915ee41554b8ba0e77e6bc0aca7ed978;p=libvpx Fix a bug in RATE_FACTOR_LEVEL definition for ext-refs 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 --- diff --git a/vp10/encoder/ratectrl.c b/vp10/encoder/ratectrl.c index a514a0e9b..c35b7ce66 100644 --- a/vp10/encoder/ratectrl.c +++ b/vp10/encoder/ratectrl.c @@ -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] = diff --git a/vp10/encoder/ratectrl.h b/vp10/encoder/ratectrl.h index f70429bed..520dbeb9c 100644 --- a/vp10/encoder/ratectrl.h +++ b/vp10/encoder/ratectrl.h @@ -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 {