Remove the old ContributingSources class.

This change removes the old `ContributingSources` class. It has been replaced by the new `SourceTracker`.

Bug: webrtc:10793
Change-Id: Ibd481cf6584837c46b229b9fc2a071362f07d361
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/147878
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Chen Xing <chxg@google.com>
Cr-Commit-Position: refs/heads/master@{#28756}
This commit is contained in:
Chen Xing
2019-08-05 12:58:51 +02:00
committed by Commit Bot
parent 3d351c6885
commit b56cca3282
5 changed files with 0 additions and 303 deletions

View File

@ -131,8 +131,6 @@ rtc_static_library("rtp_rtcp") {
"include/rtp_header_parser.h",
"include/rtp_rtcp.h",
"include/ulpfec_receiver.h",
"source/contributing_sources.cc",
"source/contributing_sources.h",
"source/dtmf_queue.cc",
"source/dtmf_queue.h",
"source/fec_private_tables_bursty.cc",
@ -388,7 +386,6 @@ if (rtc_include_tests) {
sources = [
"source/byte_io_unittest.cc",
"source/contributing_sources_unittest.cc",
"source/fec_private_tables_bursty_unittest.cc",
"source/flexfec_header_reader_writer_unittest.cc",
"source/flexfec_receiver_unittest.cc",

View File

@ -1,81 +0,0 @@
/*
* Copyright (c) 2018 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.
*/
#include "modules/rtp_rtcp/source/contributing_sources.h"
namespace webrtc {
namespace {
// Allow some stale records to accumulate before cleaning.
constexpr int64_t kPruningIntervalMs = 15 * rtc::kNumMillisecsPerSec;
} // namespace
constexpr int64_t ContributingSources::kHistoryMs;
ContributingSources::ContributingSources() = default;
ContributingSources::~ContributingSources() = default;
void ContributingSources::Update(int64_t now_ms,
rtc::ArrayView<const uint32_t> csrcs,
absl::optional<uint8_t> audio_level,
uint32_t rtp_timestamp) {
Entry entry = {now_ms, audio_level, rtp_timestamp};
for (uint32_t csrc : csrcs) {
active_csrcs_[csrc] = entry;
}
if (!next_pruning_ms_) {
next_pruning_ms_ = now_ms + kPruningIntervalMs;
} else if (now_ms > next_pruning_ms_) {
// To prevent unlimited growth, prune it every 15 seconds.
DeleteOldEntries(now_ms);
}
}
// Return contributing sources seen the last 10 s.
// TODO(nisse): It would be more efficient to delete any stale entries while
// iterating over the mapping, but then we'd have to make the method
// non-const.
std::vector<RtpSource> ContributingSources::GetSources(int64_t now_ms) const {
std::vector<RtpSource> sources;
for (auto& record : active_csrcs_) {
if (record.second.last_seen_ms >= now_ms - kHistoryMs) {
sources.emplace_back(record.second.last_seen_ms, record.first,
RtpSourceType::CSRC, record.second.audio_level,
record.second.rtp_timestamp);
}
}
return sources;
}
// Delete stale entries.
void ContributingSources::DeleteOldEntries(int64_t now_ms) {
for (auto it = active_csrcs_.begin(); it != active_csrcs_.end();) {
if (it->second.last_seen_ms >= now_ms - kHistoryMs) {
// Still relevant.
++it;
} else {
it = active_csrcs_.erase(it);
}
}
next_pruning_ms_ = now_ms + kPruningIntervalMs;
}
ContributingSources::Entry::Entry() = default;
ContributingSources::Entry::Entry(int64_t timestamp_ms,
absl::optional<uint8_t> audio_level_arg,
uint32_t rtp_timestamp)
: last_seen_ms(timestamp_ms),
audio_level(audio_level_arg),
rtp_timestamp(rtp_timestamp) {}
} // namespace webrtc

View File

@ -1,64 +0,0 @@
/*
* Copyright (c) 2018 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.
*/
#ifndef MODULES_RTP_RTCP_SOURCE_CONTRIBUTING_SOURCES_H_
#define MODULES_RTP_RTCP_SOURCE_CONTRIBUTING_SOURCES_H_
#include <stdint.h>
#include <map>
#include <vector>
#include "absl/types/optional.h"
#include "api/array_view.h"
#include "api/rtp_receiver_interface.h" // For RtpSource
#include "rtc_base/time_utils.h" // For kNumMillisecsPerSec
namespace webrtc {
class ContributingSources {
public:
// Set by the spec, see
// https://www.w3.org/TR/webrtc/#dom-rtcrtpreceiver-getcontributingsources
static constexpr int64_t kHistoryMs = 10 * rtc::kNumMillisecsPerSec;
ContributingSources();
~ContributingSources();
void Update(int64_t now_ms,
rtc::ArrayView<const uint32_t> csrcs,
absl::optional<uint8_t> audio_level,
uint32_t rtp_timestamp);
// Returns contributing sources seen the last 10 s.
std::vector<RtpSource> GetSources(int64_t now_ms) const;
private:
struct Entry {
Entry();
Entry(int64_t timestamp_ms,
absl::optional<uint8_t> audio_level,
uint32_t rtp_timestamp);
int64_t last_seen_ms;
absl::optional<uint8_t> audio_level;
uint32_t rtp_timestamp;
};
void DeleteOldEntries(int64_t now_ms);
// Indexed by csrc.
std::map<uint32_t, Entry> active_csrcs_;
absl::optional<int64_t> next_pruning_ms_;
};
} // namespace webrtc
#endif // MODULES_RTP_RTCP_SOURCE_CONTRIBUTING_SOURCES_H_

View File

@ -1,154 +0,0 @@
/*
* Copyright (c) 2018 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.
*/
#include "modules/rtp_rtcp/source/contributing_sources.h"
#include "rtc_base/time_utils.h"
#include "test/gmock.h"
#include "test/gtest.h"
namespace webrtc {
namespace {
using ::testing::UnorderedElementsAre;
constexpr uint32_t kCsrc1 = 111;
constexpr uint32_t kCsrc2 = 222;
constexpr uint32_t kCsrc3 = 333;
constexpr uint32_t kRtpTimestamp1 = 314;
constexpr uint32_t kRtpTimestamp2 = 315;
constexpr uint32_t kRtpTimestamp3 = 316;
} // namespace
TEST(ContributingSourcesTest, RecordSources) {
ContributingSources csrcs;
constexpr uint32_t kCsrcs[] = {kCsrc1, kCsrc2};
constexpr int64_t kTime1 = 10;
csrcs.Update(kTime1, kCsrcs, absl::nullopt, kRtpTimestamp1);
EXPECT_THAT(
csrcs.GetSources(kTime1),
UnorderedElementsAre(RtpSource(kTime1, kCsrc1, RtpSourceType::CSRC,
absl::nullopt, kRtpTimestamp1),
RtpSource(kTime1, kCsrc2, RtpSourceType::CSRC,
absl::nullopt, kRtpTimestamp1)));
}
TEST(ContributingSourcesTest, UpdateSources) {
ContributingSources csrcs;
// TODO(nisse): When migrating to absl::Span, the named constant arrays should
// be replaced by unnamed literals where they are passed to csrcs.Update(...).
constexpr uint32_t kCsrcs1[] = {kCsrc1, kCsrc2};
constexpr uint32_t kCsrcs2[] = {kCsrc2, kCsrc3};
constexpr int64_t kTime1 = 10;
constexpr int64_t kTime2 = kTime1 + 5 * rtc::kNumMillisecsPerSec;
csrcs.Update(kTime1, kCsrcs1, absl::nullopt, kRtpTimestamp1);
EXPECT_THAT(
csrcs.GetSources(kTime1),
UnorderedElementsAre(RtpSource(kTime1, kCsrc1, RtpSourceType::CSRC,
absl::nullopt, kRtpTimestamp1),
RtpSource(kTime1, kCsrc2, RtpSourceType::CSRC,
absl::nullopt, kRtpTimestamp1)));
csrcs.Update(kTime2, kCsrcs2, absl::nullopt, kRtpTimestamp2);
EXPECT_THAT(
csrcs.GetSources(kTime2),
UnorderedElementsAre(RtpSource(kTime1, kCsrc1, RtpSourceType::CSRC,
absl::nullopt, kRtpTimestamp1),
RtpSource(kTime2, kCsrc2, RtpSourceType::CSRC,
absl::nullopt, kRtpTimestamp2),
RtpSource(kTime2, kCsrc3, RtpSourceType::CSRC,
absl::nullopt, kRtpTimestamp2)));
}
TEST(ContributingSourcesTest, ReturnRecentOnly) {
ContributingSources csrcs;
constexpr uint32_t kCsrcs1[] = {kCsrc1, kCsrc2};
constexpr uint32_t kCsrcs2[] = {kCsrc2, kCsrc3};
constexpr int64_t kTime1 = 10;
constexpr int64_t kTime2 = kTime1 + 5 * rtc::kNumMillisecsPerSec;
constexpr int64_t kTime3 = kTime1 + 12 * rtc::kNumMillisecsPerSec;
csrcs.Update(kTime1, kCsrcs1, absl::nullopt, kRtpTimestamp1);
EXPECT_THAT(
csrcs.GetSources(kTime1),
UnorderedElementsAre(RtpSource(kTime1, kCsrc1, RtpSourceType::CSRC,
absl::nullopt, kRtpTimestamp1),
RtpSource(kTime1, kCsrc2, RtpSourceType::CSRC,
absl::nullopt, kRtpTimestamp1)));
csrcs.Update(kTime2, kCsrcs2, absl::nullopt, kRtpTimestamp2);
EXPECT_THAT(
csrcs.GetSources(kTime3),
UnorderedElementsAre(RtpSource(kTime2, kCsrc2, RtpSourceType::CSRC,
absl::nullopt, kRtpTimestamp2),
RtpSource(kTime2, kCsrc3, RtpSourceType::CSRC,
absl::nullopt, kRtpTimestamp2)));
}
TEST(ContributingSourcesTest, PurgeOldSources) {
ContributingSources csrcs;
constexpr uint32_t kCsrcs1[] = {kCsrc1, kCsrc2};
constexpr uint32_t kCsrcs2[] = {kCsrc2, kCsrc3};
constexpr int64_t kTime1 = 10;
constexpr int64_t kTime2 = kTime1 + 10 * rtc::kNumMillisecsPerSec;
constexpr int64_t kTime3 = kTime1 + 20 * rtc::kNumMillisecsPerSec;
csrcs.Update(kTime1, kCsrcs1, absl::nullopt, kRtpTimestamp1);
EXPECT_THAT(
csrcs.GetSources(kTime2),
UnorderedElementsAre(RtpSource(kTime1, kCsrc1, RtpSourceType::CSRC,
absl::nullopt, kRtpTimestamp1),
RtpSource(kTime1, kCsrc2, RtpSourceType::CSRC,
absl::nullopt, kRtpTimestamp1)));
csrcs.Update(kTime2, kCsrcs2, absl::nullopt, kRtpTimestamp2);
EXPECT_THAT(
csrcs.GetSources(kTime2),
UnorderedElementsAre(RtpSource(kTime1, kCsrc1, RtpSourceType::CSRC,
absl::nullopt, kRtpTimestamp1),
RtpSource(kTime2, kCsrc2, RtpSourceType::CSRC,
absl::nullopt, kRtpTimestamp2),
RtpSource(kTime2, kCsrc3, RtpSourceType::CSRC,
absl::nullopt, kRtpTimestamp2)));
csrcs.Update(kTime3, kCsrcs2, absl::nullopt, kRtpTimestamp3);
EXPECT_THAT(
csrcs.GetSources(kTime3),
UnorderedElementsAre(RtpSource(kTime3, kCsrc2, RtpSourceType::CSRC,
absl::nullopt, kRtpTimestamp3),
RtpSource(kTime3, kCsrc3, RtpSourceType::CSRC,
absl::nullopt, kRtpTimestamp3)));
// Query at an earlier time; check that old sources really have been purged
// and don't reappear.
EXPECT_THAT(
csrcs.GetSources(kTime2),
UnorderedElementsAre(RtpSource(kTime3, kCsrc2, RtpSourceType::CSRC,
absl::nullopt, kRtpTimestamp3),
RtpSource(kTime3, kCsrc3, RtpSourceType::CSRC,
absl::nullopt, kRtpTimestamp3)));
}
TEST(ContributingSourcesTest, AudioLevel) {
ContributingSources csrcs;
constexpr uint32_t kCsrcs[] = {kCsrc1, kCsrc2};
constexpr int64_t kTime1 = 10;
csrcs.Update(kTime1, kCsrcs, 47, kRtpTimestamp1);
EXPECT_THAT(
csrcs.GetSources(kTime1),
UnorderedElementsAre(
RtpSource(kTime1, kCsrc1, RtpSourceType::CSRC, 47, kRtpTimestamp1),
RtpSource(kTime1, kCsrc2, RtpSourceType::CSRC, 47, kRtpTimestamp1)));
constexpr uint32_t kCsrcsSubset[] = {kCsrc1};
csrcs.Update(kTime1 + 1, kCsrcsSubset, absl::nullopt, kRtpTimestamp2);
EXPECT_THAT(
csrcs.GetSources(kTime1 + 1),
UnorderedElementsAre(
RtpSource(kTime1 + 1, kCsrc1, RtpSourceType::CSRC, absl::nullopt,
kRtpTimestamp2),
RtpSource(kTime1, kCsrc2, RtpSourceType::CSRC, 47, kRtpTimestamp1)));
}
} // namespace webrtc

View File

@ -30,7 +30,6 @@
#include "modules/rtp_rtcp/include/rtp_header_extension_map.h"
#include "modules/rtp_rtcp/include/rtp_rtcp.h"
#include "modules/rtp_rtcp/include/rtp_rtcp_defines.h"
#include "modules/rtp_rtcp/source/contributing_sources.h"
#include "modules/video_coding/h264_sps_pps_tracker.h"
#include "modules/video_coding/loss_notification_controller.h"
#include "modules/video_coding/packet_buffer.h"