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

Unified Diff: webrtc/modules/rtp_rtcp/source/rtcp_packet/transport_feedback.h

Issue 2579613003: Add TransportFeedbackPacketLossTracker. (Closed)
Patch Set: rebase 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
« no previous file with comments | « webrtc/modules/rtp_rtcp/mocks/mock_transport_feedback.h ('k') | webrtc/test/fuzzers/BUILD.gn » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/modules/rtp_rtcp/source/rtcp_packet/transport_feedback.h
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet/transport_feedback.h b/webrtc/modules/rtp_rtcp/source/rtcp_packet/transport_feedback.h
index 9f2071174ddb13e316111f71a7159c7345080650..0a603294d5b71cc3be330c60fcb0a668a13447e4 100644
--- a/webrtc/modules/rtp_rtcp/source/rtcp_packet/transport_feedback.h
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet/transport_feedback.h
@@ -19,9 +19,31 @@
namespace webrtc {
namespace rtcp {
+
+class TransportFeedbackInterface {
minyue-webrtc 2017/01/19 11:11:45 Hi Erik, I would like you take a look at my way o
+ public:
+ virtual ~TransportFeedbackInterface() = default;
+ enum class StatusSymbol {
+ kNotReceived,
+ kReceivedSmallDelta,
+ kReceivedLargeDelta,
+ };
+ virtual void SetBase(uint16_t base_sequence, int64_t ref_timestamp_us) = 0;
+ virtual void SetFeedbackSequenceNumber(uint8_t feedback_sequence) = 0;
+ virtual bool AddReceivedPacket(uint16_t sequence_number,
+ int64_t timestamp_us) = 0;
+ virtual uint16_t GetBaseSequence() const = 0;
+ virtual std::vector<StatusSymbol> GetStatusVector() const = 0;
+ virtual std::vector<int16_t> GetReceiveDeltas() const = 0;
+ virtual int64_t GetBaseTimeUs() const = 0;
+ virtual std::vector<int64_t> GetReceiveDeltasUs() const = 0;
+};
+
class CommonHeader;
-class TransportFeedback : public Rtpfb {
+// TODO(minyue): Update PacketCounter so that TransportFeedback can become a
+// final class.
+class TransportFeedback : public Rtpfb, public TransportFeedbackInterface {
public:
class ReceivedPacket {
public:
@@ -48,28 +70,23 @@ class TransportFeedback : public Rtpfb {
TransportFeedback();
~TransportFeedback() override;
- void SetBase(uint16_t base_sequence, // Seq# of first packet in this msg.
- int64_t ref_timestamp_us); // Reference timestamp for this msg.
- void SetFeedbackSequenceNumber(uint8_t feedback_sequence);
+ void SetBase(uint16_t base_sequence, // Seq# of first packet in this msg.
+ int64_t ref_timestamp_us) // Reference timestamp for this msg.
+ override;
+ void SetFeedbackSequenceNumber(uint8_t feedback_sequence) override;
// NOTE: This method requires increasing sequence numbers (excepting wraps).
- bool AddReceivedPacket(uint16_t sequence_number, int64_t timestamp_us);
- const std::vector<ReceivedPacket>& GetReceivedPackets() const;
-
- enum class StatusSymbol {
- kNotReceived,
- kReceivedSmallDelta,
- kReceivedLargeDelta,
- };
+ bool AddReceivedPacket(uint16_t sequence_number,
+ int64_t timestamp_us) override;
- uint16_t GetBaseSequence() const;
- std::vector<TransportFeedback::StatusSymbol> GetStatusVector() const;
- std::vector<int16_t> GetReceiveDeltas() const;
+ uint16_t GetBaseSequence() const override;
+ std::vector<StatusSymbol> GetStatusVector() const override;
+ std::vector<int16_t> GetReceiveDeltas() const override;
// Get the reference time in microseconds, including any precision loss.
- int64_t GetBaseTimeUs() const;
+ int64_t GetBaseTimeUs() const override;
// Convenience method for getting all deltas as microseconds. The first delta
// is relative the base time.
- std::vector<int64_t> GetReceiveDeltasUs() const;
+ std::vector<int64_t> GetReceiveDeltasUs() const override;
bool Parse(const CommonHeader& packet);
static std::unique_ptr<TransportFeedback> ParseFrom(const uint8_t* buffer,
@@ -77,6 +94,7 @@ class TransportFeedback : public Rtpfb {
// Pre and postcondition for all public methods. Should always return true.
// This function is for tests.
bool IsConsistent() const;
+ const std::vector<ReceivedPacket>& GetReceivedPackets() const;
protected:
bool Create(uint8_t* packet,
« no previous file with comments | « webrtc/modules/rtp_rtcp/mocks/mock_transport_feedback.h ('k') | webrtc/test/fuzzers/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698