Allow compound mode when order hint isn't available
BUG=aomedia:1570
Change-Id: Ibd0c5cf2ae8b408ff2d4c791ef06c72c1a9ebfad
diff --git a/av1/common/mvref_common.h b/av1/common/mvref_common.h
index d6b666c..b414a78 100644
--- a/av1/common/mvref_common.h
+++ b/av1/common/mvref_common.h
@@ -285,34 +285,6 @@
return 0;
}
-static INLINE int av1_is_compound_reference_allowed(const AV1_COMMON *cm) {
- if (frame_is_intra_only(cm)) return 0;
- // Check whether two different reference frames exist.
- int ref, ref_offset0;
- int is_comp_allowed = 0;
-
- for (ref = 0; ref < INTER_REFS_PER_FRAME; ++ref) {
- const int buf_idx = cm->frame_refs[ref].idx;
- if (buf_idx == INVALID_IDX) continue;
- ref_offset0 = cm->buffer_pool->frame_bufs[buf_idx].cur_frame_offset;
- ref++;
- break;
- }
-
- for (; ref < INTER_REFS_PER_FRAME; ++ref) {
- const int buf_idx = cm->frame_refs[ref].idx;
- if (buf_idx == INVALID_IDX) continue;
- const int ref_offset =
- cm->buffer_pool->frame_bufs[buf_idx].cur_frame_offset;
- if (ref_offset != ref_offset0) {
- is_comp_allowed = 1;
- break;
- }
- }
-
- return is_comp_allowed;
-}
-
static INLINE int av1_refs_are_one_sided(const AV1_COMMON *cm) {
assert(!frame_is_intra_only(cm));
diff --git a/av1/decoder/decodeframe.c b/av1/decoder/decodeframe.c
index 9c429f2..59de549 100644
--- a/av1/decoder/decodeframe.c
+++ b/av1/decoder/decodeframe.c
@@ -89,10 +89,10 @@
static REFERENCE_MODE read_frame_reference_mode(
const AV1_COMMON *cm, struct aom_read_bit_buffer *rb) {
- if (av1_is_compound_reference_allowed(cm)) {
- return aom_rb_read_bit(rb) ? REFERENCE_MODE_SELECT : SINGLE_REFERENCE;
- } else {
+ if (frame_is_intra_only(cm)) {
return SINGLE_REFERENCE;
+ } else {
+ return aom_rb_read_bit(rb) ? REFERENCE_MODE_SELECT : SINGLE_REFERENCE;
}
}
diff --git a/av1/encoder/encodeframe.c b/av1/encoder/encodeframe.c
index 37258c6..9a1b6fe 100644
--- a/av1/encoder/encodeframe.c
+++ b/av1/encoder/encodeframe.c
@@ -4418,7 +4418,7 @@
(void)num_planes;
#endif
- cpi->allow_comp_inter_inter = av1_is_compound_reference_allowed(cm);
+ cpi->allow_comp_inter_inter = !frame_is_intra_only(cm);
if (cpi->sf.frame_parameter_update) {
int i;