Update packetsLost and jitter stats any time a packet is received.
Before this CL, the packetsLost and jitter stats (as returned by
GetStats, at the API level) were only being updated when an RTCP SR or
RR is generated. According to the stats spec, "local" stats like this
should be updated any time a packet is received.
This CL also fixes some minor issues with the calculation of packetsLost
(and fractionLost):
* Packets weren't being count as lost if lost over a sequence number
rollover.
* Temporary periods of "negative" loss (caused by duplicate or out of
order packets) weren't being accumulated into the cumulative loss
counter. Example:
Period 1: Received packets 1, 2, 4
Loss over that period: 1 (expected 4 packets, got 3)
Reported cumulative loss: 1
Period 2: Received packets 3, 5
Loss over that period: -1 (expected 1 packet, got 2)
Reported cumulative loss: 1 (should be 0!)
Landing with NOTRY because Android compile bots are broken for an
unrelated reason.
NOTRY=True
Bug: webrtc:8804
Change-Id: I840ba34de8957b1276f6bdaf93718f805629f5c8
Reviewed-on: https://webrtc-review.googlesource.com/50020
Commit-Queue: Taylor Brandstetter <deadbeef@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Oskar Sundbom <ossu@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23731}
This commit is contained in:
committed by
Commit Bot
parent
111fdfd732
commit
84916937b7
@ -37,7 +37,17 @@ class StreamStatistician {
|
||||
public:
|
||||
virtual ~StreamStatistician();
|
||||
|
||||
virtual bool GetStatistics(RtcpStatistics* statistics, bool reset) = 0;
|
||||
// If |update_fraction_lost| is true, |fraction_lost| will be recomputed
|
||||
// between now and the last time |update_fraction_lost| was true. Otherwise
|
||||
// the last-computed value of |fraction_lost| will be returned.
|
||||
//
|
||||
// |update_fraction_lost| should be true any time an RTCP SR or RR is being
|
||||
// generated, since RFC3550 defines it as the fraction of packets lost since
|
||||
// the previous SR or RR packet was sent.
|
||||
//
|
||||
// Aside from |fraction_lost|, every other value will be freshly computed.
|
||||
virtual bool GetStatistics(RtcpStatistics* statistics,
|
||||
bool update_fraction_lost) = 0;
|
||||
virtual void GetDataCounters(size_t* bytes_received,
|
||||
uint32_t* packets_received) const = 0;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user