Enable new --tune=ssimulacra2 defaults
These new defaults were picked to increase image quality and
consistency, guided by the SSIMULACRA2 metric and subjective
quality checks.
Bug: aomedia:375221136
Change-Id: Ie9f011ed20020689e8a390cfe65230b257fdec8d
diff --git a/aom/aomcx.h b/aom/aomcx.h
index e8595b73ca..e8f8bde 100644
--- a/aom/aomcx.h
+++ b/aom/aomcx.h
@@ -1670,6 +1670,8 @@
* Setting the tuning option to AOM_TUNE_SSIMULACRA2 causes the following
* options to be set (expressed as command-line options):
* * --enable-qm=1
+ * * --sharpness=7
+ * * --enable-cdef=3
*/
typedef enum {
AOM_TUNE_PSNR = 0,
@@ -1685,6 +1687,9 @@
* time.
*/
#define AOM_HAVE_TUNE_SSIMULACRA2 1
+ /* Increases image quality and consistency, guided by the SSIMULACRA2 metric
+ * and subjective quality checks. Shares the rdmult code with AOM_TUNE_SSIM.
+ */
AOM_TUNE_SSIMULACRA2 = 10,
} aom_tune_metric;
diff --git a/av1/av1_cx_iface.c b/av1/av1_cx_iface.c
index 1500047..c715310 100644
--- a/av1/av1_cx_iface.c
+++ b/av1/av1_cx_iface.c
@@ -1788,8 +1788,15 @@
struct av1_extracfg *extra_cfg) {
if (extra_cfg->tuning == AOM_TUNE_SSIMULACRA2) {
if (ctx->cfg.g_usage != AOM_USAGE_ALL_INTRA) return AOM_CODEC_INCAPABLE;
+ // Enable QMs as they've been found to be beneficial for images, when used
+ // with an alternative QM formula (see aom_get_qmlevel_allintra()).
extra_cfg->enable_qm = 1;
- // TODO: bug 375221136 - set other options in extra_cfg.
+ // We can turn on loop filter sharpness, as frames do not have to serve as
+ // references to others.
+ extra_cfg->sharpness = 7;
+ // CDEF_ALL has been found to blur images at high quality QPs, so let's use
+ // a version that adapts on QP.
+ extra_cfg->enable_cdef = CDEF_ADAPTIVE;
}
return AOM_CODEC_OK;
}
@@ -2878,7 +2885,7 @@
if (priv->cfg.g_usage == AOM_USAGE_ALL_INTRA) {
// CDEF has been found to blur images, so it's disabled in all-intra mode
priv->extra_cfg.enable_cdef = 0;
- // These QM min/max values have been found to be optimal for images,
+ // These QM min/max values have been found to be beneficial for images,
// when used with an alternative QM formula (see
// aom_get_qmlevel_allintra()).
// These values could also be beneficial for other usage modes, but