[NORMATIVE] order_hint_bits_minus1
For the adopted EXPLICIT_ORDER_HINT:
* The number of bits for OrderHint is enforced to be 1, hence
order_hint_bits_minus1 is signaled;
* Signaling of order_hint_bits_minus1 depends on the value of
enable_order_hint in the sequence header;
* When enable_order_hint is off, order_hint_bits_minus1 is -1
by default.
BUG=aomedia:1497
Change-Id: I8164fd75f118aae962172ad6fec1f905438ed6ec
diff --git a/av1/encoder/bitstream.c b/av1/encoder/bitstream.c
index b22396d..44a9976 100644
--- a/av1/encoder/bitstream.c
+++ b/av1/encoder/bitstream.c
@@ -2843,7 +2843,8 @@
#endif
#if CONFIG_EXPLICIT_ORDER_HINT
- aom_wb_write_literal(wb, seq_params->order_hint_bits, 3);
+ if (seq_params->enable_order_hint)
+ aom_wb_write_literal(wb, seq_params->order_hint_bits_minus1, 3);
#endif
}
@@ -3072,8 +3073,8 @@
#endif // CONFIG_FRAME_REFS_SIGNALING
#if CONFIG_EXPLICIT_ORDER_HINT
- aom_wb_write_literal(wb, cm->frame_offset, cm->seq_params.order_hint_bits);
- // assert(cm->current_video_frame == cm->frame_offset);
+ aom_wb_write_literal(wb, cm->frame_offset,
+ cm->seq_params.order_hint_bits_minus1 + 1);
#else
if (cm->show_frame == 0) {
int arf_offset = AOMMIN(
diff --git a/av1/encoder/encodeframe.c b/av1/encoder/encodeframe.c
index 80b2e10..0d9c19a 100644
--- a/av1/encoder/encodeframe.c
+++ b/av1/encoder/encodeframe.c
@@ -4382,7 +4382,7 @@
cm->frame_offset = cm->current_video_frame;
}
#if CONFIG_EXPLICIT_ORDER_HINT
- cm->frame_offset %= (1 << cm->seq_params.order_hint_bits);
+ cm->frame_offset %= (1 << (cm->seq_params.order_hint_bits_minus1 + 1));
#endif // CONFIG_EXPLICIT_ORDER_HINT
av1_setup_frame_buf_refs(cm);
if (cpi->sf.selective_ref_frame >= 2) enforce_max_ref_frames(cpi);
diff --git a/av1/encoder/encoder.c b/av1/encoder/encoder.c
index 0005390..0c1a74a 100644
--- a/av1/encoder/encoder.c
+++ b/av1/encoder/encoder.c
@@ -2562,7 +2562,7 @@
cm->allow_filter_intra = 1;
#if CONFIG_EXPLICIT_ORDER_HINT
- cm->seq_params.order_hint_bits = DEFAULT_EXPLICIT_ORDER_HINT_BITS;
+ cm->seq_params.order_hint_bits_minus1 = DEFAULT_EXPLICIT_ORDER_HINT_BITS - 1;
#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;