Before this CL, a SACK was generated from scratch based on information about each received fragment, to generate correct gap-ack-blocks. When there was a lot of data in the data tracker (due to packet loss), this took considerate time, as generating a SACK was O(N), where N is the amount of fragments in the data tracker. By instead having precomputed gap-ack-blocks that are continuously updated, generating a SACK is much faster and the memory usage goes down a bit as well. Bug: webrtc:12799 Change-Id: I924752c1d6d31f06d27246e10b595e9ccb19320f Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/220763 Commit-Queue: Victor Boivie <boivie@webrtc.org> Reviewed-by: Harald Alvestrand <hta@webrtc.org> Cr-Commit-Position: refs/heads/master@{#34171}
123 lines
3.2 KiB
Plaintext
123 lines
3.2 KiB
Plaintext
# Copyright (c) 2021 The WebRTC project authors. All Rights Reserved.
|
|
#
|
|
# Use of this source code is governed by a BSD-style license
|
|
# that can be found in the LICENSE file in the root of the source
|
|
# tree. An additional intellectual property rights grant can be found
|
|
# in the file PATENTS. All contributing project authors may
|
|
# be found in the AUTHORS file in the root of the source tree.
|
|
|
|
import("../../../webrtc.gni")
|
|
|
|
rtc_library("data_tracker") {
|
|
deps = [
|
|
"../../../api:array_view",
|
|
"../../../rtc_base",
|
|
"../../../rtc_base:checks",
|
|
"../../../rtc_base:rtc_base_approved",
|
|
"../common:sequence_numbers",
|
|
"../packet:chunk",
|
|
"../packet:data",
|
|
"../timer",
|
|
]
|
|
sources = [
|
|
"data_tracker.cc",
|
|
"data_tracker.h",
|
|
]
|
|
absl_deps = [
|
|
"//third_party/abseil-cpp/absl/algorithm:container",
|
|
"//third_party/abseil-cpp/absl/strings",
|
|
"//third_party/abseil-cpp/absl/types:optional",
|
|
]
|
|
}
|
|
|
|
rtc_source_set("reassembly_streams") {
|
|
deps = [
|
|
"../../../api:array_view",
|
|
"../common:sequence_numbers",
|
|
"../packet:chunk",
|
|
"../packet:data",
|
|
"../public:types",
|
|
]
|
|
sources = [ "reassembly_streams.h" ]
|
|
absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
|
|
}
|
|
|
|
rtc_library("traditional_reassembly_streams") {
|
|
deps = [
|
|
":reassembly_streams",
|
|
"../../../api:array_view",
|
|
"../../../rtc_base",
|
|
"../../../rtc_base:checks",
|
|
"../../../rtc_base:rtc_base_approved",
|
|
"../common:sequence_numbers",
|
|
"../packet:chunk",
|
|
"../packet:data",
|
|
"../public:types",
|
|
]
|
|
sources = [
|
|
"traditional_reassembly_streams.cc",
|
|
"traditional_reassembly_streams.h",
|
|
]
|
|
absl_deps = [
|
|
"//third_party/abseil-cpp/absl/algorithm:container",
|
|
"//third_party/abseil-cpp/absl/strings",
|
|
"//third_party/abseil-cpp/absl/types:optional",
|
|
]
|
|
}
|
|
|
|
rtc_library("reassembly_queue") {
|
|
deps = [
|
|
":reassembly_streams",
|
|
":traditional_reassembly_streams",
|
|
"../../../api:array_view",
|
|
"../../../rtc_base",
|
|
"../../../rtc_base:checks",
|
|
"../../../rtc_base:rtc_base_approved",
|
|
"../common:internal_types",
|
|
"../common:sequence_numbers",
|
|
"../common:str_join",
|
|
"../packet:chunk",
|
|
"../packet:data",
|
|
"../packet:parameter",
|
|
"../public:types",
|
|
]
|
|
sources = [
|
|
"reassembly_queue.cc",
|
|
"reassembly_queue.h",
|
|
]
|
|
absl_deps = [
|
|
"//third_party/abseil-cpp/absl/strings",
|
|
"//third_party/abseil-cpp/absl/types:optional",
|
|
]
|
|
}
|
|
|
|
if (rtc_include_tests) {
|
|
rtc_library("dcsctp_rx_unittests") {
|
|
testonly = true
|
|
|
|
deps = [
|
|
":data_tracker",
|
|
":reassembly_queue",
|
|
":reassembly_streams",
|
|
":traditional_reassembly_streams",
|
|
"../../../api:array_view",
|
|
"../../../rtc_base:checks",
|
|
"../../../rtc_base:gunit_helpers",
|
|
"../../../rtc_base:rtc_base_approved",
|
|
"../../../test:test_support",
|
|
"../common:sequence_numbers",
|
|
"../packet:chunk",
|
|
"../packet:data",
|
|
"../public:types",
|
|
"../testing:data_generator",
|
|
"../timer",
|
|
]
|
|
absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
|
|
sources = [
|
|
"data_tracker_test.cc",
|
|
"reassembly_queue_test.cc",
|
|
"traditional_reassembly_streams_test.cc",
|
|
]
|
|
}
|
|
}
|