Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(504)

Unified Diff: webrtc/modules/congestion_controller/transport_feedback_adapter.cc

Issue 2638083002: Attach TransportFeedbackPacketLossTracker to ANA (PLR only) (Closed)
Patch Set: Fix UT Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: webrtc/modules/congestion_controller/transport_feedback_adapter.cc
diff --git a/webrtc/modules/congestion_controller/transport_feedback_adapter.cc b/webrtc/modules/congestion_controller/transport_feedback_adapter.cc
index ddffa7219692be1580bb64046779a245bcdb3c79..9fb1af59a2cdea6990ef0f4e430835bbf2c4813e 100644
--- a/webrtc/modules/congestion_controller/transport_feedback_adapter.cc
+++ b/webrtc/modules/congestion_controller/transport_feedback_adapter.cc
@@ -36,19 +36,49 @@ TransportFeedbackAdapter::TransportFeedbackAdapter(const Clock* clock)
local_net_id_(0),
remote_net_id_(0) {}
-TransportFeedbackAdapter::~TransportFeedbackAdapter() {}
+TransportFeedbackAdapter::~TransportFeedbackAdapter() {
+ RTC_DCHECK(observers_.empty());
+}
+
+void TransportFeedbackAdapter::RegisterPacketFeedbackObserver(
+ PacketFeedbackObserver* observer) {
+ rtc::CritScope cs(&observers_lock_);
+ RTC_DCHECK(observer);
+ RTC_DCHECK(std::find(observers_.begin(), observers_.end(), observer) ==
+ observers_.end());
+ observers_.push_back(observer);
+}
+
+void TransportFeedbackAdapter::DeRegisterPacketFeedbackObserver(
+ PacketFeedbackObserver* observer) {
+ rtc::CritScope cs(&observers_lock_);
+ RTC_DCHECK(observer);
+ const auto it = std::find(observers_.begin(), observers_.end(), observer);
+ RTC_DCHECK(it != observers_.end());
+ observers_.erase(it);
+}
-void TransportFeedbackAdapter::AddPacket(uint16_t sequence_number,
+void TransportFeedbackAdapter::AddPacket(uint32_t ssrc,
+ uint16_t sequence_number,
size_t length,
const PacedPacketInfo& pacing_info) {
- rtc::CritScope cs(&lock_);
- if (send_side_bwe_with_overhead_) {
- length += transport_overhead_bytes_per_packet_;
+ {
+ rtc::CritScope cs(&lock_);
+ if (send_side_bwe_with_overhead_) {
+ length += transport_overhead_bytes_per_packet_;
+ }
+ const int64_t creation_time_ms = clock_->TimeInMilliseconds();
+ send_time_history_.AddAndRemoveOld(
+ PacketFeedback(creation_time_ms, sequence_number, length, local_net_id_,
+ remote_net_id_, pacing_info));
+ }
+
+ {
+ rtc::CritScope cs(&observers_lock_);
+ for (auto observer : observers_) {
+ observer->OnPacketAdded(ssrc, sequence_number);
+ }
}
- const int64_t creation_time_ms = clock_->TimeInMilliseconds();
- send_time_history_.AddAndRemoveOld(
- PacketFeedback(creation_time_ms, sequence_number, length, local_net_id_,
- remote_net_id_, pacing_info));
}
void TransportFeedbackAdapter::OnSentPacket(uint16_t sequence_number,
@@ -154,6 +184,12 @@ std::vector<PacketFeedback> TransportFeedbackAdapter::GetPacketFeedbackVector(
void TransportFeedbackAdapter::OnTransportFeedback(
const rtcp::TransportFeedback& feedback) {
last_packet_feedback_vector_ = GetPacketFeedbackVector(feedback);
+ {
+ rtc::CritScope cs(&observers_lock_);
+ for (auto observer : observers_) {
+ observer->OnPacketFeedbackVector(last_packet_feedback_vector_);
+ }
+ }
}
std::vector<PacketFeedback>

Powered by Google App Engine
This is Rietveld 408576698