| 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..47c11366e358bbf0acc2dd5f21f1fdb32c0a744a 100644
|
| --- a/webrtc/modules/rtp_rtcp/source/rtcp_packet/transport_feedback.h
|
| +++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet/transport_feedback.h
|
| @@ -25,11 +25,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;
|
| @@ -60,23 +61,6 @@ class TransportFeedback : public Rtpfb {
|
| 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);
|
| - }
|
| -
|
| protected:
|
| bool Create(uint8_t* packet,
|
| size_t* position,
|
| @@ -86,30 +70,32 @@ 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_;
|
| + using DeltaSize = uint8_t;
|
| + 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;
|
| + };
|
| + // Pre and postcondition for all public methods.
|
| + bool IsConsistent() const;
|
| +
|
| + // 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_;
|
| + std::vector<uint16_t> chunks_;
|
| + const std::unique_ptr<LastChunk> last_chunk_;
|
| + size_t size_bytes_;
|
|
|
| RTC_DISALLOW_COPY_AND_ASSIGN(TransportFeedback);
|
| };
|
|
|