Use Abseil container algorithms in modules/rtp_rtcp/
Bug: None Change-Id: Ica2e9795ec6195e044403f5ee25e476f6c47cf93 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/129600 Reviewed-by: Danil Chapovalov <danilchap@webrtc.org> Commit-Queue: Steve Anton <steveanton@webrtc.org> Cr-Commit-Position: refs/heads/master@{#27361}
This commit is contained in:
@ -104,6 +104,7 @@ rtc_source_set("rtp_rtcp_format") {
|
|||||||
"../../rtc_base/system:unused",
|
"../../rtc_base/system:unused",
|
||||||
"../../system_wrappers",
|
"../../system_wrappers",
|
||||||
"../video_coding:codec_globals_headers",
|
"../video_coding:codec_globals_headers",
|
||||||
|
"//third_party/abseil-cpp/absl/algorithm:container",
|
||||||
"//third_party/abseil-cpp/absl/strings",
|
"//third_party/abseil-cpp/absl/strings",
|
||||||
"//third_party/abseil-cpp/absl/types:optional",
|
"//third_party/abseil-cpp/absl/types:optional",
|
||||||
"//third_party/abseil-cpp/absl/types:variant",
|
"//third_party/abseil-cpp/absl/types:variant",
|
||||||
@ -232,6 +233,7 @@ rtc_static_library("rtp_rtcp") {
|
|||||||
"../../system_wrappers:metrics",
|
"../../system_wrappers:metrics",
|
||||||
"../remote_bitrate_estimator",
|
"../remote_bitrate_estimator",
|
||||||
"../video_coding:codec_globals_headers",
|
"../video_coding:codec_globals_headers",
|
||||||
|
"//third_party/abseil-cpp/absl/algorithm:container",
|
||||||
"//third_party/abseil-cpp/absl/container:inlined_vector",
|
"//third_party/abseil-cpp/absl/container:inlined_vector",
|
||||||
"//third_party/abseil-cpp/absl/memory",
|
"//third_party/abseil-cpp/absl/memory",
|
||||||
"//third_party/abseil-cpp/absl/strings",
|
"//third_party/abseil-cpp/absl/strings",
|
||||||
@ -266,6 +268,7 @@ rtc_source_set("rtcp_transceiver") {
|
|||||||
"../../rtc_base/task_utils:repeating_task",
|
"../../rtc_base/task_utils:repeating_task",
|
||||||
"../../rtc_base/task_utils:to_queued_task",
|
"../../rtc_base/task_utils:to_queued_task",
|
||||||
"../../system_wrappers",
|
"../../system_wrappers",
|
||||||
|
"//third_party/abseil-cpp/absl/algorithm:container",
|
||||||
"//third_party/abseil-cpp/absl/memory",
|
"//third_party/abseil-cpp/absl/memory",
|
||||||
"//third_party/abseil-cpp/absl/types:optional",
|
"//third_party/abseil-cpp/absl/types:optional",
|
||||||
]
|
]
|
||||||
@ -461,6 +464,7 @@ if (rtc_include_tests) {
|
|||||||
"../../test:test_common",
|
"../../test:test_common",
|
||||||
"../../test:test_support",
|
"../../test:test_support",
|
||||||
"../video_coding:codec_globals_headers",
|
"../video_coding:codec_globals_headers",
|
||||||
|
"//third_party/abseil-cpp/absl/algorithm:container",
|
||||||
"//third_party/abseil-cpp/absl/memory",
|
"//third_party/abseil-cpp/absl/memory",
|
||||||
"//third_party/abseil-cpp/absl/types:optional",
|
"//third_party/abseil-cpp/absl/types:optional",
|
||||||
]
|
]
|
||||||
|
@ -13,9 +13,9 @@
|
|||||||
|
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <algorithm>
|
|
||||||
#include <type_traits>
|
#include <type_traits>
|
||||||
|
|
||||||
|
#include "absl/algorithm/container.h"
|
||||||
#include "api/array_view.h"
|
#include "api/array_view.h"
|
||||||
|
|
||||||
namespace webrtc {
|
namespace webrtc {
|
||||||
@ -33,12 +33,12 @@ bool IsTokenChar(char ch) {
|
|||||||
|
|
||||||
bool IsLegalMidName(absl::string_view name) {
|
bool IsLegalMidName(absl::string_view name) {
|
||||||
return (name.size() <= kMidRsidMaxSize && name.size() > 0 &&
|
return (name.size() <= kMidRsidMaxSize && name.size() > 0 &&
|
||||||
std::all_of(name.data(), name.data() + name.size(), IsTokenChar));
|
absl::c_all_of(name, IsTokenChar));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool IsLegalRsidName(absl::string_view name) {
|
bool IsLegalRsidName(absl::string_view name) {
|
||||||
return (name.size() <= kMidRsidMaxSize && name.size() > 0 &&
|
return (name.size() <= kMidRsidMaxSize && name.size() > 0 &&
|
||||||
std::all_of(name.data(), name.data() + name.size(), isalnum));
|
absl::c_all_of(name, isalnum));
|
||||||
}
|
}
|
||||||
|
|
||||||
StreamDataCounters::StreamDataCounters() : first_packet_time_ms(-1) {}
|
StreamDataCounters::StreamDataCounters() : first_packet_time_ms(-1) {}
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
|
|
||||||
|
#include "absl/algorithm/container.h"
|
||||||
#include "modules/include/module_common_types_public.h"
|
#include "modules/include/module_common_types_public.h"
|
||||||
#include "modules/rtp_rtcp/include/rtp_rtcp_defines.h"
|
#include "modules/rtp_rtcp/include/rtp_rtcp_defines.h"
|
||||||
#include "modules/rtp_rtcp/source/byte_io.h"
|
#include "modules/rtp_rtcp/source/byte_io.h"
|
||||||
@ -380,9 +381,8 @@ void ForwardErrorCorrection::UpdateCoveringFecPackets(
|
|||||||
const RecoveredPacket& packet) {
|
const RecoveredPacket& packet) {
|
||||||
for (auto& fec_packet : received_fec_packets_) {
|
for (auto& fec_packet : received_fec_packets_) {
|
||||||
// Is this FEC packet protecting the media packet |packet|?
|
// Is this FEC packet protecting the media packet |packet|?
|
||||||
auto protected_it = std::lower_bound(fec_packet->protected_packets.begin(),
|
auto protected_it = absl::c_lower_bound(
|
||||||
fec_packet->protected_packets.end(),
|
fec_packet->protected_packets, &packet, SortablePacket::LessThan());
|
||||||
&packet, SortablePacket::LessThan());
|
|
||||||
if (protected_it != fec_packet->protected_packets.end() &&
|
if (protected_it != fec_packet->protected_packets.end() &&
|
||||||
(*protected_it)->seq_num == packet.seq_num) {
|
(*protected_it)->seq_num == packet.seq_num) {
|
||||||
// Found an FEC packet which is protecting |packet|.
|
// Found an FEC packet which is protecting |packet|.
|
||||||
|
@ -8,12 +8,12 @@
|
|||||||
* be found in the AUTHORS file in the root of the source tree.
|
* be found in the AUTHORS file in the root of the source tree.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <algorithm>
|
|
||||||
#include <iterator>
|
#include <iterator>
|
||||||
#include <list>
|
#include <list>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <set>
|
#include <set>
|
||||||
|
|
||||||
|
#include "absl/algorithm/container.h"
|
||||||
#include "absl/memory/memory.h"
|
#include "absl/memory/memory.h"
|
||||||
#include "api/call/transport.h"
|
#include "api/call/transport.h"
|
||||||
#include "api/transport/field_trial_based_config.h"
|
#include "api/transport/field_trial_based_config.h"
|
||||||
@ -189,14 +189,11 @@ class RtpRtcpRtxNackTest : public ::testing::Test {
|
|||||||
|
|
||||||
bool ExpectedPacketsReceived() {
|
bool ExpectedPacketsReceived() {
|
||||||
std::list<uint16_t> received_sorted;
|
std::list<uint16_t> received_sorted;
|
||||||
std::copy(media_stream_.sequence_numbers_.begin(),
|
absl::c_copy(media_stream_.sequence_numbers_,
|
||||||
media_stream_.sequence_numbers_.end(),
|
std::back_inserter(received_sorted));
|
||||||
std::back_inserter(received_sorted));
|
|
||||||
received_sorted.sort();
|
received_sorted.sort();
|
||||||
return received_sorted.size() ==
|
return absl::c_equal(received_sorted,
|
||||||
transport_.expected_sequence_numbers_.size() &&
|
transport_.expected_sequence_numbers_);
|
||||||
std::equal(received_sorted.begin(), received_sorted.end(),
|
|
||||||
transport_.expected_sequence_numbers_.begin());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void RunRtxTest(RtxMode rtx_method, int loss) {
|
void RunRtxTest(RtxMode rtx_method, int loss) {
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
|
|
||||||
#include <utility>
|
#include <utility>
|
||||||
|
|
||||||
|
#include "absl/algorithm/container.h"
|
||||||
#include "absl/memory/memory.h"
|
#include "absl/memory/memory.h"
|
||||||
#include "api/call/transport.h"
|
#include "api/call/transport.h"
|
||||||
#include "api/video/video_bitrate_allocation.h"
|
#include "api/video/video_bitrate_allocation.h"
|
||||||
@ -103,7 +104,7 @@ void RtcpTransceiverImpl::AddMediaReceiverRtcpObserver(
|
|||||||
uint32_t remote_ssrc,
|
uint32_t remote_ssrc,
|
||||||
MediaReceiverRtcpObserver* observer) {
|
MediaReceiverRtcpObserver* observer) {
|
||||||
auto& stored = remote_senders_[remote_ssrc].observers;
|
auto& stored = remote_senders_[remote_ssrc].observers;
|
||||||
RTC_DCHECK(std::find(stored.begin(), stored.end(), observer) == stored.end());
|
RTC_DCHECK(!absl::c_linear_search(stored, observer));
|
||||||
stored.push_back(observer);
|
stored.push_back(observer);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -114,7 +115,7 @@ void RtcpTransceiverImpl::RemoveMediaReceiverRtcpObserver(
|
|||||||
if (remote_sender_it == remote_senders_.end())
|
if (remote_sender_it == remote_senders_.end())
|
||||||
return;
|
return;
|
||||||
auto& stored = remote_sender_it->second.observers;
|
auto& stored = remote_sender_it->second.observers;
|
||||||
auto it = std::find(stored.begin(), stored.end(), observer);
|
auto it = absl::c_find(stored, observer);
|
||||||
if (it == stored.end())
|
if (it == stored.end())
|
||||||
return;
|
return;
|
||||||
stored.erase(it);
|
stored.erase(it);
|
||||||
|
@ -8,10 +8,10 @@
|
|||||||
* be found in the AUTHORS file in the root of the source tree.
|
* be found in the AUTHORS file in the root of the source tree.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <algorithm>
|
|
||||||
#include <list>
|
#include <list>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
|
#include "absl/algorithm/container.h"
|
||||||
#include "modules/rtp_rtcp/source/byte_io.h"
|
#include "modules/rtp_rtcp/source/byte_io.h"
|
||||||
#include "modules/rtp_rtcp/source/fec_test_helper.h"
|
#include "modules/rtp_rtcp/source/fec_test_helper.h"
|
||||||
#include "modules/rtp_rtcp/source/flexfec_header_reader_writer.h"
|
#include "modules/rtp_rtcp/source/flexfec_header_reader_writer.h"
|
||||||
@ -148,14 +148,10 @@ void RtpFecTest<ForwardErrorCorrectionType>::ReceivedPackets(
|
|||||||
|
|
||||||
template <typename ForwardErrorCorrectionType>
|
template <typename ForwardErrorCorrectionType>
|
||||||
bool RtpFecTest<ForwardErrorCorrectionType>::IsRecoveryComplete() {
|
bool RtpFecTest<ForwardErrorCorrectionType>::IsRecoveryComplete() {
|
||||||
// We must have equally many recovered packets as original packets.
|
// We must have equally many recovered packets as original packets and all
|
||||||
if (recovered_packets_.size() != media_packets_.size()) {
|
// recovered packets must be identical to the corresponding original packets.
|
||||||
return false;
|
return absl::c_equal(
|
||||||
}
|
media_packets_, recovered_packets_,
|
||||||
|
|
||||||
// All recovered packets must be identical to the corresponding
|
|
||||||
// original packets.
|
|
||||||
auto cmp =
|
|
||||||
[](const std::unique_ptr<ForwardErrorCorrection::Packet>& media_packet,
|
[](const std::unique_ptr<ForwardErrorCorrection::Packet>& media_packet,
|
||||||
const std::unique_ptr<ForwardErrorCorrection::RecoveredPacket>&
|
const std::unique_ptr<ForwardErrorCorrection::RecoveredPacket>&
|
||||||
recovered_packet) {
|
recovered_packet) {
|
||||||
@ -167,9 +163,7 @@ bool RtpFecTest<ForwardErrorCorrectionType>::IsRecoveryComplete() {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
};
|
});
|
||||||
return std::equal(media_packets_.cbegin(), media_packets_.cend(),
|
|
||||||
recovered_packets_.cbegin(), cmp);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Define gTest typed test to loop over both ULPFEC and FlexFEC.
|
// Define gTest typed test to loop over both ULPFEC and FlexFEC.
|
||||||
|
@ -13,6 +13,7 @@
|
|||||||
#include <memory>
|
#include <memory>
|
||||||
#include <numeric>
|
#include <numeric>
|
||||||
|
|
||||||
|
#include "absl/algorithm/container.h"
|
||||||
#include "test/gmock.h"
|
#include "test/gmock.h"
|
||||||
#include "test/gtest.h"
|
#include "test/gtest.h"
|
||||||
|
|
||||||
@ -36,13 +37,13 @@ int EffectivePacketsSizeDifference(
|
|||||||
// Account for larger last packet header.
|
// Account for larger last packet header.
|
||||||
sizes.back() += limits.last_packet_reduction_len;
|
sizes.back() += limits.last_packet_reduction_len;
|
||||||
|
|
||||||
auto minmax = std::minmax_element(sizes.begin(), sizes.end());
|
auto minmax = absl::c_minmax_element(sizes);
|
||||||
// MAX-MIN
|
// MAX-MIN
|
||||||
return *minmax.second - *minmax.first;
|
return *minmax.second - *minmax.first;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Sum(const std::vector<int>& sizes) {
|
int Sum(const std::vector<int>& sizes) {
|
||||||
return std::accumulate(sizes.begin(), sizes.end(), 0);
|
return absl::c_accumulate(sizes, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(RtpPacketizerSplitAboutEqually, AllPacketsAreEqualSumToPayloadLen) {
|
TEST(RtpPacketizerSplitAboutEqually, AllPacketsAreEqualSumToPayloadLen) {
|
||||||
|
@ -11,9 +11,9 @@
|
|||||||
#include "modules/rtp_rtcp/source/tmmbr_help.h"
|
#include "modules/rtp_rtcp/source/tmmbr_help.h"
|
||||||
|
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
#include <algorithm>
|
|
||||||
#include <limits>
|
#include <limits>
|
||||||
|
|
||||||
|
#include "absl/algorithm/container.h"
|
||||||
#include "rtc_base/checks.h"
|
#include "rtc_base/checks.h"
|
||||||
|
|
||||||
namespace webrtc {
|
namespace webrtc {
|
||||||
@ -33,10 +33,10 @@ std::vector<rtcp::TmmbItem> TMMBRHelp::FindBoundingSet(
|
|||||||
size_t num_candidates = candidates.size();
|
size_t num_candidates = candidates.size();
|
||||||
|
|
||||||
// 1. Sort by increasing packet overhead.
|
// 1. Sort by increasing packet overhead.
|
||||||
std::sort(candidates.begin(), candidates.end(),
|
absl::c_sort(candidates,
|
||||||
[](const rtcp::TmmbItem& lhs, const rtcp::TmmbItem& rhs) {
|
[](const rtcp::TmmbItem& lhs, const rtcp::TmmbItem& rhs) {
|
||||||
return lhs.packet_overhead() < rhs.packet_overhead();
|
return lhs.packet_overhead() < rhs.packet_overhead();
|
||||||
});
|
});
|
||||||
|
|
||||||
// 2. For tuples with same overhead, keep the one with the lowest bitrate.
|
// 2. For tuples with same overhead, keep the one with the lowest bitrate.
|
||||||
for (auto it = candidates.begin(); it != candidates.end();) {
|
for (auto it = candidates.begin(); it != candidates.end();) {
|
||||||
|
Reference in New Issue
Block a user