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
This commit is contained in:
Zoe Liu 2016-07-27 17:24:42 -07:00
Родитель 445274d962
Коммит cdd4eb0291
2 изменённых файлов: 5 добавлений и 5 удалений

Просмотреть файл

@ -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] =

Просмотреть файл

@ -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 {