| 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
|
|
|