Fix/cleanup encoder frame_id_numbers_present_flag

frame_id_numbers_present_flag was being set in a variety of places to
conflicting values.  Furthermore, a combination of these meant that the
encoder could never actually produce a bitstream with this flag enabled.

I have cleaned this up so the flag is set only once.  The flag is
enabled if the error_resilient_mode setting is enabled in the
encoder (unless large-scale-tile or reduced still picture headers are
enabled, in which case the flag is disabled).

Using constant-quality and error-resilient mode, this patch increases
the output bitstream size but the decode result and PSNR are unchanged.
Using constant-bitrate mode and error-resilient mode, the decode output
is changed (a slight PSNR reduction is to be expected).  With error
resilient mode disabled, the bitstream is unchanged with this patch.
If the increased size in error-resilient mode is undesirable then
frame_id_numbers_present_flag could be controlled separately.
https://arewecompressedyet.com/?job=base%402018-11-28T15%3A04%3A43.665Z&job=test%402018-11-28T18%3A13%3A36.897Z

This forms part of wider restructuring and refactoring in order to
achieve a clean API separation at the entry to the low-level encoder.
BUG=aomedia:2244

STATS_CHANGED

Change-Id: I5ad2a1317fec5b15bc7b2bb5a9b49f2f3123e931
diff --git a/av1/common/onyxc_int.h b/av1/common/onyxc_int.h
index ccd5ebb..117afb6 100644
--- a/av1/common/onyxc_int.h
+++ b/av1/common/onyxc_int.h
@@ -1332,10 +1332,6 @@
   return base_partitions[split_idx];
 }
 
-static INLINE void set_use_reference_buffer(AV1_COMMON *const cm, int use) {
-  cm->seq_params.frame_id_numbers_present_flag = use;
-}
-
 static INLINE void set_sb_size(SequenceHeader *const seq_params,
                                BLOCK_SIZE sb_size) {
   seq_params->sb_size = sb_size;
diff --git a/av1/encoder/bitstream.c b/av1/encoder/bitstream.c
index 34511dc..df79b79 100644
--- a/av1/encoder/bitstream.c
+++ b/av1/encoder/bitstream.c
@@ -2694,8 +2694,6 @@
 
   /* Placeholder for actually writing to the bitstream */
   if (!seq_params->reduced_still_picture_hdr) {
-    seq_params->frame_id_numbers_present_flag =
-        cm->large_scale_tile ? 0 : cm->error_resilient_mode;
     seq_params->frame_id_length = FRAME_ID_LENGTH;
     seq_params->delta_frame_id_length = DELTA_FRAME_ID_LENGTH;
 
diff --git a/av1/encoder/encoder.c b/av1/encoder/encoder.c
index ef98c3f..75d1d49 100644
--- a/av1/encoder/encoder.c
+++ b/av1/encoder/encoder.c
@@ -402,7 +402,6 @@
     cpi->refresh_alt_ref_frame = 1;
     av1_zero(cpi->interp_filter_selected);
     set_sb_size(&cm->seq_params, select_sb_size(cpi));
-    set_use_reference_buffer(cm, 0);
   } else if (frame_is_sframe(cm)) {
     cpi->refresh_golden_frame = 1;
     cpi->refresh_alt_ref_frame = 1;
@@ -1082,10 +1081,11 @@
   seq->force_screen_content_tools = 2;
   seq->force_integer_mv = 2;
   seq->order_hint_info.enable_order_hint = oxcf->enable_order_hint;
-  seq->frame_id_numbers_present_flag = oxcf->large_scale_tile;
+  seq->frame_id_numbers_present_flag =
+      !(seq->still_picture && seq->reduced_still_picture_hdr) &&
+      !oxcf->large_scale_tile && oxcf->error_resilient_mode;
   if (seq->still_picture && seq->reduced_still_picture_hdr) {
     seq->order_hint_info.enable_order_hint = 0;
-    seq->frame_id_numbers_present_flag = 0;
     seq->force_screen_content_tools = 2;
     seq->force_integer_mv = 2;
   }
@@ -5038,7 +5038,6 @@
 
   cm->large_scale_tile = cpi->oxcf.large_scale_tile;
   cm->single_tile_decoding = cpi->oxcf.single_tile_decoding;
-  if (cm->large_scale_tile) seq_params->frame_id_numbers_present_flag = 0;
 
   cm->allow_ref_frame_mvs &= frame_might_allow_ref_frame_mvs(cm);
   // cm->allow_ref_frame_mvs needs to be written into the frame header while
@@ -6838,10 +6837,8 @@
   cm->min_qmlevel = cpi->oxcf.qm_minlevel;
   cm->max_qmlevel = cpi->oxcf.qm_maxlevel;
 
-  if (cm->seq_params.frame_id_numbers_present_flag) {
-    if (*time_stamp == 0) {
-      cpi->common.current_frame_id = -1;
-    }
+  if (cm->seq_params.frame_id_numbers_present_flag && *time_stamp == 0) {
+    cpi->common.current_frame_id = -1;
   }
 
   cpi->cur_poc++;