| 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 03a1c4f728ac217d4cce1c0d03add9cb1bef7eb7..a1208293bce0318049f86c123ee04db64893c2da 100644
|
| --- a/webrtc/modules/rtp_rtcp/source/rtcp_packet/transport_feedback.h
|
| +++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet/transport_feedback.h
|
| @@ -11,12 +11,10 @@
|
| #ifndef WEBRTC_MODULES_RTP_RTCP_SOURCE_RTCP_PACKET_TRANSPORT_FEEDBACK_H_
|
| #define WEBRTC_MODULES_RTP_RTCP_SOURCE_RTCP_PACKET_TRANSPORT_FEEDBACK_H_
|
|
|
| -#include <deque>
|
| #include <memory>
|
| #include <vector>
|
|
|
| #include "webrtc/base/constructormagic.h"
|
| -#include "webrtc/base/deprecation.h"
|
| #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/rtpfb.h"
|
|
|
| namespace webrtc {
|
| @@ -25,11 +23,12 @@ class CommonHeader;
|
|
|
| class TransportFeedback : public Rtpfb {
|
| public:
|
| - class PacketStatusChunk;
|
| // TODO(sprang): IANA reg?
|
| static constexpr uint8_t kFeedbackMessageType = 15;
|
| // Convert to multiples of 0.25ms.
|
| static constexpr int kDeltaScaleFactor = 250;
|
| + // Maximum number of packets (including missing) TransportFeedback can report.
|
| + static constexpr size_t kMaxReportedPackets = 0xffff;
|
|
|
| TransportFeedback();
|
| ~TransportFeedback() override;
|
| @@ -59,23 +58,9 @@ class TransportFeedback : public Rtpfb {
|
| bool Parse(const CommonHeader& packet);
|
| static std::unique_ptr<TransportFeedback> ParseFrom(const uint8_t* buffer,
|
| size_t length);
|
| -
|
| - RTC_DEPRECATED
|
| - void WithPacketSenderSsrc(uint32_t ssrc) { SetSenderSsrc(ssrc); }
|
| - RTC_DEPRECATED
|
| - void WithMediaSourceSsrc(uint32_t ssrc) { SetMediaSsrc(ssrc); }
|
| - RTC_DEPRECATED
|
| - void WithBase(uint16_t base_sequence, int64_t ref_timestamp_us) {
|
| - SetBase(base_sequence, ref_timestamp_us);
|
| - }
|
| - RTC_DEPRECATED
|
| - void WithFeedbackSequenceNumber(uint8_t feedback_sequence) {
|
| - SetFeedbackSequenceNumber(feedback_sequence);
|
| - }
|
| - RTC_DEPRECATED
|
| - bool WithReceivedPacket(uint16_t sequence_number, int64_t timestamp_us) {
|
| - return AddReceivedPacket(sequence_number, timestamp_us);
|
| - }
|
| + // Pre and postcondition for all public methods. Should always return true.
|
| + // This function is for tests.
|
| + bool IsConsistent() const;
|
|
|
| protected:
|
| bool Create(uint8_t* packet,
|
| @@ -86,30 +71,34 @@ class TransportFeedback : public Rtpfb {
|
| size_t BlockLength() const override;
|
|
|
| private:
|
| - static PacketStatusChunk* ParseChunk(const uint8_t* buffer, size_t max_size);
|
| -
|
| - int64_t Unwrap(uint16_t sequence_number);
|
| - bool AddSymbol(StatusSymbol symbol, int64_t seq);
|
| - bool Encode(StatusSymbol symbol);
|
| - bool HandleRleCandidate(StatusSymbol symbol,
|
| - int current_capacity,
|
| - int delta_size);
|
| - void EmitRemaining();
|
| - void EmitVectorChunk();
|
| - void EmitRunLengthChunk();
|
| -
|
| - int32_t base_seq_;
|
| - int64_t base_time_;
|
| + // Size in bytes of a delta time in rtcp packet.
|
| + // Valid values are 0 (packet wasn't received), 1 or 2.
|
| + using DeltaSize = uint8_t;
|
| + // Keeps DeltaSizes that can be encoded into single chunk if it is last chunk.
|
| + class LastChunk;
|
| + struct ReceivedPacket {
|
| + ReceivedPacket(uint16_t sequence_number, int16_t delta_ticks)
|
| + : sequence_number(sequence_number), delta_ticks(delta_ticks) {}
|
| + uint16_t sequence_number;
|
| + int16_t delta_ticks;
|
| + };
|
| +
|
| + // Reset packet to consistent empty state.
|
| + void Clear();
|
| +
|
| + bool AddDeltaSize(DeltaSize delta_size);
|
| +
|
| + uint16_t base_seq_no_;
|
| + uint16_t num_seq_no_;
|
| + int32_t base_time_ticks_;
|
| uint8_t feedback_seq_;
|
| - std::vector<PacketStatusChunk*> status_chunks_;
|
| - std::vector<int16_t> receive_deltas_;
|
| -
|
| - int64_t last_seq_;
|
| - int64_t last_timestamp_;
|
| - std::deque<StatusSymbol> symbol_vec_;
|
| - uint16_t first_symbol_cardinality_;
|
| - bool vec_needs_two_bit_symbols_;
|
| - uint32_t size_bytes_;
|
| +
|
| + int64_t last_timestamp_us_;
|
| + std::vector<ReceivedPacket> packets_;
|
| + // All but last encoded packet chunks.
|
| + std::vector<uint16_t> encoded_chunks_;
|
| + const std::unique_ptr<LastChunk> last_chunk_;
|
| + size_t size_bytes_;
|
|
|
| RTC_DISALLOW_COPY_AND_ASSIGN(TransportFeedback);
|
| };
|
|
|