New FrameBuffer3.

FrameBuffer3 keep track of order, decodability and continuity of the inserted frames. Compared to FrameBuffer2 which schedule frames for decoding and is thread safe, FrameBuffer3 does not schedule decoding and is thread unsafe.

Change-Id: Ic3bd540c4f69cec26fce53a40425f3bcd9afe085
Bug: webrtc:13343
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/238985
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Reviewed-by: Evan Shrubsole <eshr@webrtc.org>
Commit-Queue: Philip Eliasson <philipel@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35494}
This commit is contained in:
philipel
2021-12-07 18:13:09 +01:00
committed by WebRTC LUCI CQ
parent 913b34e589
commit ceac5d560e
6 changed files with 831 additions and 0 deletions

View File

@ -148,6 +148,26 @@ rtc_library("h264_packet_buffer") {
absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
}
rtc_library("frame_buffer") {
sources = [
"frame_buffer3.cc",
"frame_buffer3.h",
]
deps = [
":video_coding_utility",
"../../api/units:timestamp",
"../../api/video:encoded_frame",
"../../rtc_base:logging",
"../../rtc_base:rtc_numerics",
"../../system_wrappers:field_trial",
]
absl_deps = [
"//third_party/abseil-cpp/absl/algorithm:container",
"//third_party/abseil-cpp/absl/container:inlined_vector",
"//third_party/abseil-cpp/absl/types:optional",
]
}
rtc_library("video_coding") {
visibility = [ "*" ]
sources = [
@ -206,6 +226,7 @@ rtc_library("video_coding") {
deps = [
":codec_globals_headers",
":encoded_frame",
":frame_buffer",
":packet_buffer",
":video_codec_interface",
":video_coding_utility",
@ -1011,6 +1032,7 @@ if (rtc_include_tests) {
"decoding_state_unittest.cc",
"fec_controller_unittest.cc",
"frame_buffer2_unittest.cc",
"frame_buffer3_unittest.cc",
"frame_dependencies_calculator_unittest.cc",
"generic_decoder_unittest.cc",
"h264_packet_buffer_unittest.cc",
@ -1057,6 +1079,7 @@ if (rtc_include_tests) {
":chain_diff_calculator",
":codec_globals_headers",
":encoded_frame",
":frame_buffer",
":frame_dependencies_calculator",
":h264_packet_buffer",
":nack_requester",