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

Unified Diff: webrtc/voice_engine/transport_feedback_packet_loss_tracker.h

Issue 2629883003: First-order-FEC recoverability calculation (Closed)
Patch Set: nit Created 3 years, 11 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/voice_engine/transport_feedback_packet_loss_tracker.h
diff --git a/webrtc/voice_engine/transport_feedback_packet_loss_tracker.h b/webrtc/voice_engine/transport_feedback_packet_loss_tracker.h
index 099c20e92feae469c06591eaf578fba10f3d54ce..bf8fcef4664139060b2a96a2485ca0321a0b702c 100644
--- a/webrtc/voice_engine/transport_feedback_packet_loss_tracker.h
+++ b/webrtc/voice_engine/transport_feedback_packet_loss_tracker.h
@@ -26,20 +26,24 @@ class TransportFeedbackPacketLossTracker final {
public:
// Up to |max_window_size| latest packet statuses wil be used for calculating
// the packet loss metrics. When less than |min_window_size| samples are
- // available for making a reliable estimation, GetPacketLossRates() will
- // return false to indicate packet loss metrics are not ready.
+ // available for making a reliable estimation, neither PLR nor RPLR would
+ // be considered validly computable.
+ // When |min_pairs_num_for_rplr| pairs or more are available, RPLR is reliably
+ // computable. This is independent of PLR being computable.
TransportFeedbackPacketLossTracker(size_t min_window_size,
- size_t max_window_size);
+ size_t max_window_size,
+ size_t min_pairs_num_for_rplr);
void OnReceivedTransportFeedback(
const rtcp::TransportFeedbackInterface& feedback);
- // Returns true if packet loss rate and packet loss episode duration are ready
- // and assigns respective values to |*packet_loss_rate| and
- // |*consecutive_packet_loss_rate|. Continuous packet loss rate is defined as
- // the probability of losing two adjacent packets.
- bool GetPacketLossRates(float* packet_loss_rate,
- float* consecutive_packet_loss_rate) const;
+ // Returns the packet loss rate, if the window has enough data to
+ // reliably compute it.
+ rtc::Optional<float> GetPacketLossRate() const;
+
+ // Returns the first-order-FEC recoverable packet loss rate, if the window
+ // has enough data to reliably compute it.
+ rtc::Optional<float> GetRecoverablePacketLossRate() const;
// Verifies that the internal states are correct. Only used for tests.
void Validate() const;
@@ -67,6 +71,7 @@ class TransportFeedbackPacketLossTracker final {
const size_t min_window_size_;
const size_t max_window_size_;
+ const size_t min_pairs_num_for_rplr_;
PacketStatus packet_status_window_;
// |ref_packet_status_| points to the oldest item in |packet_status_window_|.
@@ -74,8 +79,9 @@ class TransportFeedbackPacketLossTracker final {
size_t num_received_packets_;
size_t num_lost_packets_;
- size_t num_consecutive_losses_;
- size_t num_consecutive_old_reports_;
+ size_t num_known_status_pairs_;
+ size_t num_loss_followed_by_reception_pairs_;
+ size_t num_consecutive_old_reports_; // TODO(eladalon): Upcoming CL removes.
};
} // namespace webrtc

Powered by Google App Engine
This is Rietveld 408576698