Chromium Code Reviews| 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, |