Some fixes on enable_jnt_comp
Change-Id: I493c3b66d637d7b59a1c31eddb71179ffd374959
diff --git a/av1/decoder/decodemv.c b/av1/decoder/decodemv.c
index 4c1f325..63ae357 100644
--- a/av1/decoder/decodemv.c
+++ b/av1/decoder/decodemv.c
@@ -1673,7 +1673,7 @@
}
if (mbmi->comp_group_idx == 0) {
- if (cm->seq_params.enable_jnt_comp) {
+ if (cm->seq_params.enable_jnt_comp && !cm->error_resilient_mode) {
const int comp_index_ctx = get_comp_index_context(cm, xd);
mbmi->compound_idx = aom_read_symbol(
r, ec_ctx->compound_index_cdf[comp_index_ctx], 2, ACCT_STR);
diff --git a/av1/encoder/bitstream.c b/av1/encoder/bitstream.c
index 131429c..8c5073a 100644
--- a/av1/encoder/bitstream.c
+++ b/av1/encoder/bitstream.c
@@ -1199,7 +1199,7 @@
if (mbmi->compound_idx)
assert(mbmi->interinter_compound_type == COMPOUND_AVERAGE);
- if (cm->seq_params.enable_jnt_comp) {
+ if (cm->seq_params.enable_jnt_comp && !cm->error_resilient_mode) {
const int comp_index_ctx = get_comp_index_context(cm, xd);
aom_write_symbol(w, mbmi->compound_idx,
ec_ctx->compound_index_cdf[comp_index_ctx], 2);
diff --git a/av1/encoder/encoder.c b/av1/encoder/encoder.c
index 7d2af9e..9f7f6e4 100644
--- a/av1/encoder/encoder.c
+++ b/av1/encoder/encoder.c
@@ -1041,12 +1041,6 @@
cm->time_scale = oxcf->time_scale;
cm->equal_picture_interval = oxcf->equal_picture_interval;
cm->num_ticks_per_picture = oxcf->num_ticks_per_picture;
- cm->seq_params.enable_dual_filter = oxcf->enable_dual_filter;
- cm->seq_params.enable_order_hint = oxcf->enable_order_hint;
- cm->seq_params.enable_jnt_comp = oxcf->enable_jnt_comp;
- cm->seq_params.enable_jnt_comp &= cm->seq_params.enable_order_hint;
- // disable jnt_comp at sequence header for error resilient mode
- cm->seq_params.enable_jnt_comp &= !oxcf->error_resilient_mode;
cm->width = oxcf->width;
cm->height = oxcf->height;
set_sb_size(&cm->seq_params,
@@ -2578,6 +2572,10 @@
#if CONFIG_EXPLICIT_ORDER_HINT
cm->seq_params.order_hint_bits = DEFAULT_EXPLICIT_ORDER_HINT_BITS;
#endif // CONFIG_EXPLICIT_ORDER_HINT
+ cm->seq_params.enable_dual_filter = oxcf->enable_dual_filter;
+ cm->seq_params.enable_order_hint = oxcf->enable_order_hint;
+ cm->seq_params.enable_jnt_comp = oxcf->enable_jnt_comp;
+ cm->seq_params.enable_jnt_comp &= cm->seq_params.enable_order_hint;
}
AV1_COMP *av1_create_compressor(AV1EncoderConfig *oxcf,
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c
index 5ff808d..a259438 100644
--- a/av1/encoder/rdopt.c
+++ b/av1/encoder/rdopt.c
@@ -7416,7 +7416,8 @@
int64_t early_terminate = 0;
int comp_idx;
- const int search_jnt_comp = is_comp_pred & cm->seq_params.enable_jnt_comp;
+ const int search_jnt_comp = is_comp_pred && cm->seq_params.enable_jnt_comp &&
+ !cm->error_resilient_mode;
// If !search_jnt_comp, we need to force mbmi->compound_idx = 1.
for (comp_idx = !search_jnt_comp; comp_idx < 2; ++comp_idx) {
compmode_interinter_cost = 0;