59 lines
1.9 KiB
C++
59 lines
1.9 KiB
C++
/*
|
|
* Copyright (c) 2015 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_PACKET_LOSS_STATS_H_
|
|
#define MODULES_RTP_RTCP_SOURCE_PACKET_LOSS_STATS_H_
|
|
|
|
#include <stdint.h>
|
|
|
|
#include <set>
|
|
|
|
namespace webrtc {
|
|
|
|
// Keeps track of statistics of packet loss including whether losses are a
|
|
// single packet or multiple packets in a row.
|
|
class PacketLossStats {
|
|
public:
|
|
PacketLossStats();
|
|
~PacketLossStats();
|
|
|
|
// Adds a lost packet to the stats by sequence number.
|
|
void AddLostPacket(uint16_t sequence_number);
|
|
|
|
// Queries the number of packets that were lost by themselves, no neighboring
|
|
// packets were lost.
|
|
int GetSingleLossCount() const;
|
|
|
|
// Queries the number of times that multiple packets with sequential numbers
|
|
// were lost. This is the number of events with more than one packet lost,
|
|
// regardless of the size of the event;
|
|
int GetMultipleLossEventCount() const;
|
|
|
|
// Queries the number of packets lost in multiple packet loss events. Combined
|
|
// with the event count, this can be used to determine the average event size.
|
|
int GetMultipleLossPacketCount() const;
|
|
|
|
private:
|
|
std::set<uint16_t> lost_packets_buffer_;
|
|
std::set<uint16_t> lost_packets_wrapped_buffer_;
|
|
int single_loss_historic_count_;
|
|
int multiple_loss_historic_event_count_;
|
|
int multiple_loss_historic_packet_count_;
|
|
|
|
void ComputeLossCounts(int* out_single_loss_count,
|
|
int* out_multiple_loss_event_count,
|
|
int* out_multiple_loss_packet_count) const;
|
|
void PruneBuffer();
|
|
};
|
|
|
|
} // namespace webrtc
|
|
|
|
#endif // MODULES_RTP_RTCP_SOURCE_PACKET_LOSS_STATS_H_
|