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