[NORMATIVE] Enable OrderHint features when err res
As explicit OrderHint values are now signalled in the bitstream in
error_resilient_mode, we re-enable features (disabled in commits
1609b94 and fc66c6b) that make use of these values.
The specific features/tools that have been re-enabled are:
* frame_sign_bias
* skip_mode
* jnt_comp
Change-Id: Iffdf235fd781f3fd6e34c28b0ff65bac0767dd51
diff --git a/av1/common/mvref_common.c b/av1/common/mvref_common.c
index b34611c..a2bf92a 100644
--- a/av1/common/mvref_common.c
+++ b/av1/common/mvref_common.c
@@ -1060,8 +1060,7 @@
MV_REFERENCE_FRAME ref_frame;
for (ref_frame = LAST_FRAME; ref_frame <= ALTREF_FRAME; ++ref_frame) {
const int buf_idx = cm->frame_refs[ref_frame - LAST_FRAME].idx;
- if (cm->seq_params.enable_order_hint && !cm->error_resilient_mode &&
- buf_idx != INVALID_IDX) {
+ if (cm->seq_params.enable_order_hint && buf_idx != INVALID_IDX) {
const int ref_frame_offset =
cm->buffer_pool->frame_bufs[buf_idx].cur_frame_offset;
cm->ref_frame_sign_bias[ref_frame] =
@@ -1576,8 +1575,8 @@
cm->is_skip_mode_allowed = 0;
cm->ref_frame_idx_0 = cm->ref_frame_idx_1 = INVALID_IDX;
- if (!cm->seq_params.enable_order_hint || cm->error_resilient_mode ||
- frame_is_intra_only(cm) || cm->reference_mode == SINGLE_REFERENCE)
+ if (!cm->seq_params.enable_order_hint || frame_is_intra_only(cm) ||
+ cm->reference_mode == SINGLE_REFERENCE)
return;
RefCntBuffer *const frame_bufs = cm->buffer_pool->frame_bufs;
diff --git a/av1/decoder/decodeframe.c b/av1/decoder/decodeframe.c
index ea6f6f0..6780574 100644
--- a/av1/decoder/decodeframe.c
+++ b/av1/decoder/decodeframe.c
@@ -3062,8 +3062,7 @@
av1_setup_frame_buf_refs(cm);
- if (cm->frame_type != S_FRAME && !cm->error_resilient_mode)
- av1_setup_frame_sign_bias(cm);
+ if (cm->frame_type != S_FRAME) av1_setup_frame_sign_bias(cm);
cm->cur_frame->intra_only = cm->frame_type == KEY_FRAME || cm->intra_only;
cm->cur_frame->frame_type = cm->frame_type;
@@ -3263,7 +3262,6 @@
if (cm->reference_mode != SINGLE_REFERENCE) setup_compound_reference_mode(cm);
av1_setup_skip_mode_allowed(cm);
- assert(cm->error_resilient_mode ? !cm->is_skip_mode_allowed : 1);
cm->skip_mode_flag = cm->is_skip_mode_allowed ? aom_rb_read_bit(rb) : 0;
read_compound_tools(cm, rb);
diff --git a/av1/decoder/decodemv.c b/av1/decoder/decodemv.c
index 4907d1c..69c55fa 100644
--- a/av1/decoder/decodemv.c
+++ b/av1/decoder/decodemv.c
@@ -1562,7 +1562,7 @@
}
if (mbmi->comp_group_idx == 0) {
- if (cm->seq_params.enable_jnt_comp && !cm->error_resilient_mode) {
+ if (cm->seq_params.enable_jnt_comp) {
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 b5f40df..1cc0d06 100644
--- a/av1/encoder/bitstream.c
+++ b/av1/encoder/bitstream.c
@@ -1167,7 +1167,7 @@
if (mbmi->compound_idx)
assert(mbmi->interinter_compound_type == COMPOUND_AVERAGE);
- if (cm->seq_params.enable_jnt_comp && !cm->error_resilient_mode) {
+ if (cm->seq_params.enable_jnt_comp) {
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);
@@ -3331,7 +3331,6 @@
aom_wb_write_bit(wb, use_hybrid_pred);
}
- assert(cm->error_resilient_mode ? !cm->is_skip_mode_allowed : 1);
if (cm->is_skip_mode_allowed) aom_wb_write_bit(wb, cm->skip_mode_flag);
write_compound_tools(cm, wb);
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c
index 6edbf4d..0399b4a 100644
--- a/av1/encoder/rdopt.c
+++ b/av1/encoder/rdopt.c
@@ -7436,8 +7436,7 @@
int64_t early_terminate = 0;
int comp_idx;
- const int search_jnt_comp =
- is_comp_pred & cm->seq_params.enable_jnt_comp & !cm->error_resilient_mode;
+ const int search_jnt_comp = is_comp_pred & cm->seq_params.enable_jnt_comp;
// 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;