Enc options for jnt, masked, interintra compound
Allows turning these tools on/off from the command line.
Change-Id: I062c99b0945c64b64690b0325c3689c0acac0339
diff --git a/aom/aomcx.h b/aom/aomcx.h
index 0c116be..b41de2d 100644
--- a/aom/aomcx.h
+++ b/aom/aomcx.h
@@ -747,6 +747,24 @@
*/
AV1E_SET_ALLOW_REF_FRAME_MVS,
+ /*!\brief Codec control function to turn on / off masked compound usage
+ * for a sequence.
+ *
+ * This will enable or disable usage of wedge and diff-wtd compound
+ * modes. The default value is 1.
+ *
+ */
+ AV1E_SET_ENABLE_MASKED_COMP,
+
+ /*!\brief Codec control function to turn on / off interintra compound
+ * for a sequence.
+ *
+ * This will enable or disable usage of inter-intra compound modes.
+ * The default value is 1.
+ *
+ */
+ AV1E_SET_ENABLE_INTERINTRA_COMP,
+
/*!\brief Codec control function to turn on / off global motion usage
* for a sequence.
*
@@ -1052,6 +1070,12 @@
AOM_CTRL_USE_TYPE(AV1E_SET_ALLOW_REF_FRAME_MVS, unsigned int)
#define AOM_CTRL_AV1E_SET_ALLOW_REF_FRAME_MVS
+AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_MASKED_COMP, unsigned int)
+#define AOM_CTRL_AV1E_SET_ENABLE_MASKED_COMP
+
+AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_INTERINTRA_COMP, unsigned int)
+#define AOM_CTRL_AV1E_SET_ENABLE_INTERINTRA_COMP
+
AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_GLOBAL_MOTION, unsigned int)
#define AOM_CTRL_AV1E_SET_ENABLE_GLOBAL_MOTION
diff --git a/apps/aomenc.c b/apps/aomenc.c
index b69f788..025e519 100644
--- a/apps/aomenc.c
+++ b/apps/aomenc.c
@@ -437,6 +437,18 @@
ARG_DEF(NULL, "enable-restoration", 1,
"Enable the loop restoration filter (0: false, "
"1: true (default))");
+static const arg_def_t enable_jnt_comp =
+ ARG_DEF(NULL, "enable-dist-wtd-comp", 1,
+ "Enable distance-weighted compound "
+ "(0: false, 1: true (default))");
+static const arg_def_t enable_masked_comp =
+ ARG_DEF(NULL, "enable-masked-comp", 1,
+ "Enable masked (wedge/diff-wtd) compound "
+ "(0: false, 1: true (default))");
+static const arg_def_t enable_interintra_comp =
+ ARG_DEF(NULL, "enable-interintra-comp", 1,
+ "Enable interintra compound "
+ "(0: false, 1: true (default))");
static const arg_def_t enable_global_motion =
ARG_DEF(NULL, "enable-global-motion", 1,
"Enable global motion "
@@ -646,6 +658,9 @@
&lossless,
&enable_cdef,
&enable_restoration,
+ &enable_jnt_comp,
+ &enable_masked_comp,
+ &enable_interintra_comp,
&enable_global_motion,
&enable_warped_motion,
&disable_trellis_quant,
@@ -706,6 +721,9 @@
AV1E_SET_LOSSLESS,
AV1E_SET_ENABLE_CDEF,
AV1E_SET_ENABLE_RESTORATION,
+ AV1E_SET_ENABLE_JNT_COMP,
+ AV1E_SET_ENABLE_MASKED_COMP,
+ AV1E_SET_ENABLE_INTERINTRA_COMP,
AV1E_SET_ENABLE_GLOBAL_MOTION,
AV1E_SET_ENABLE_WARPED_MOTION,
AV1E_SET_DISABLE_TRELLIS_QUANT,
@@ -742,7 +760,6 @@
AV1E_SET_ENABLE_REF_FRAME_MVS,
AV1E_SET_ENABLE_DF,
AV1E_SET_ENABLE_ORDER_HINT,
- AV1E_SET_ENABLE_JNT_COMP,
AV1E_SET_ENABLE_SUPERRES,
0 };
#endif // CONFIG_AV1_ENCODER
diff --git a/av1/av1_cx_iface.c b/av1/av1_cx_iface.c
index b386cfc..e7d3d45 100644
--- a/av1/av1_cx_iface.c
+++ b/av1/av1_cx_iface.c
@@ -95,11 +95,13 @@
unsigned int cdf_update_mode;
int enable_order_hint;
int enable_jnt_comp;
- int enable_ref_frame_mvs; // sequence level
- int allow_ref_frame_mvs; // frame level
- int enable_global_motion; // enable global motion usage for sequence
- int enable_warped_motion; // sequence level
- int allow_warped_motion; // frame level
+ int enable_ref_frame_mvs; // sequence level
+ int allow_ref_frame_mvs; // frame level
+ int enable_masked_comp; // enable masked compound for sequence
+ int enable_interintra_comp; // enable interintra compound for sequence
+ int enable_global_motion; // enable global motion usage for sequence
+ int enable_warped_motion; // sequence level
+ int allow_warped_motion; // frame level
int enable_superres;
#if CONFIG_DENOISE
float noise_level;
@@ -172,6 +174,8 @@
1, // jnt_comp
1, // enable_ref_frame_mvs sequence level
1, // allow ref_frame_mvs frame level
+ 1, // enable masked compound at sequence level
+ 1, // enable interintra compound at sequence level
1, // enable_global_motion usage
1, // enable_warped_motion at sequence level
1, // allow_warped_motion at frame level
@@ -665,6 +669,8 @@
oxcf->enable_order_hint = extra_cfg->enable_order_hint;
oxcf->enable_jnt_comp =
extra_cfg->enable_jnt_comp & extra_cfg->enable_order_hint;
+ oxcf->enable_masked_comp = extra_cfg->enable_masked_comp;
+ oxcf->enable_interintra_comp = extra_cfg->enable_interintra_comp;
oxcf->enable_ref_frame_mvs =
extra_cfg->enable_ref_frame_mvs & extra_cfg->enable_order_hint;
@@ -1045,6 +1051,21 @@
return update_extra_cfg(ctx, &extra_cfg);
}
+static aom_codec_err_t ctrl_set_enable_masked_comp(aom_codec_alg_priv_t *ctx,
+ va_list args) {
+ struct av1_extracfg extra_cfg = ctx->extra_cfg;
+ extra_cfg.enable_masked_comp = CAST(AV1E_SET_ENABLE_MASKED_COMP, args);
+ return update_extra_cfg(ctx, &extra_cfg);
+}
+
+static aom_codec_err_t ctrl_set_enable_interintra_comp(
+ aom_codec_alg_priv_t *ctx, va_list args) {
+ struct av1_extracfg extra_cfg = ctx->extra_cfg;
+ extra_cfg.enable_interintra_comp =
+ CAST(AV1E_SET_ENABLE_INTERINTRA_COMP, args);
+ return update_extra_cfg(ctx, &extra_cfg);
+}
+
static aom_codec_err_t ctrl_set_enable_global_motion(aom_codec_alg_priv_t *ctx,
va_list args) {
struct av1_extracfg extra_cfg = ctx->extra_cfg;
@@ -1798,6 +1819,8 @@
{ AV1E_SET_ENABLE_JNT_COMP, ctrl_set_enable_jnt_comp },
{ AV1E_SET_ENABLE_REF_FRAME_MVS, ctrl_set_enable_ref_frame_mvs },
{ AV1E_SET_ALLOW_REF_FRAME_MVS, ctrl_set_allow_ref_frame_mvs },
+ { AV1E_SET_ENABLE_MASKED_COMP, ctrl_set_enable_masked_comp },
+ { AV1E_SET_ENABLE_INTERINTRA_COMP, ctrl_set_enable_interintra_comp },
{ AV1E_SET_ENABLE_GLOBAL_MOTION, ctrl_set_enable_global_motion },
{ AV1E_SET_ENABLE_WARPED_MOTION, ctrl_set_enable_warped_motion },
{ AV1E_SET_ALLOW_WARPED_MOTION, ctrl_set_allow_warped_motion },
diff --git a/av1/encoder/encoder.c b/av1/encoder/encoder.c
index 870a7ad..56d83b2 100644
--- a/av1/encoder/encoder.c
+++ b/av1/encoder/encoder.c
@@ -1140,8 +1140,8 @@
seq->enable_cdef = oxcf->enable_cdef;
seq->enable_restoration = oxcf->enable_restoration;
seq->enable_warped_motion = oxcf->enable_warped_motion;
- seq->enable_interintra_compound = 1;
- seq->enable_masked_compound = 1;
+ seq->enable_interintra_compound = oxcf->enable_interintra_comp;
+ seq->enable_masked_compound = oxcf->enable_masked_comp;
seq->enable_intra_edge_filter = 1;
seq->enable_filter_intra = 1;
diff --git a/av1/encoder/encoder.h b/av1/encoder/encoder.h
index cb4559a..53c74e9 100644
--- a/av1/encoder/encoder.h
+++ b/av1/encoder/encoder.h
@@ -325,6 +325,8 @@
int enable_jnt_comp;
int enable_ref_frame_mvs;
unsigned int allow_ref_frame_mvs;
+ int enable_masked_comp;
+ int enable_interintra_comp;
int enable_global_motion;
int enable_warped_motion;
int allow_warped_motion;