Introduce DecodedFramesHistory class and use it in FrameBuffer

This is a space efficient way to store more records about decoded frames,
which is needed for long term references.

Bug: webrtc:9710
Change-Id: I051d59d34a966d48db011142466d9cd15304b7d9
Reviewed-on: https://webrtc-review.googlesource.com/c/116792
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26240}
diff --git a/modules/video_coding/BUILD.gn b/modules/video_coding/BUILD.gn
index 188b624..470f5b0 100644
--- a/modules/video_coding/BUILD.gn
+++ b/modules/video_coding/BUILD.gn
@@ -23,7 +23,6 @@
     "../../api/video:video_frame_i420",
     "../../modules:module_api",
     "../../modules:module_api_public",
-    "../../modules/video_coding:video_coding_utility",
     "../../rtc_base:checks",
     "../../rtc_base:rtc_base_approved",
     "../../rtc_base/experiments:alr_experiment",
@@ -249,6 +248,8 @@
 rtc_source_set("video_coding_utility") {
   visibility = [ "*" ]
   sources = [
+    "utility/decoded_frames_history.cc",
+    "utility/decoded_frames_history.h",
     "utility/default_video_bitrate_allocator.cc",
     "utility/default_video_bitrate_allocator.h",
     "utility/frame_dropper.cc",
@@ -278,6 +279,7 @@
     ":video_codec_interface",
     "..:module_api",
     "../..:webrtc_common",
+    "../../api/video:encoded_frame",
     "../../api/video:encoded_image",
     "../../api/video:video_bitrate_allocation",
     "../../api/video:video_bitrate_allocator",
@@ -862,6 +864,7 @@
       "test/stream_generator.cc",
       "test/stream_generator.h",
       "timing_unittest.cc",
+      "utility/decoded_frames_history_unittest.cc",
       "utility/default_video_bitrate_allocator_unittest.cc",
       "utility/frame_dropper_unittest.cc",
       "utility/framerate_controller_unittest.cc",