#include "modules/rtp_rtcp/source/rtcp_packet/transport_feedback.h"
#include <algorithm>
#include <cstdint>
#include <numeric>
#include <utility>
#include "absl/algorithm/container.h"
#include "modules/include/module_common_types_public.h"
#include "modules/rtp_rtcp/source/byte_io.h"
#include "modules/rtp_rtcp/source/rtcp_packet/common_header.h"
#include "rtc_base/checks.h"
#include "rtc_base/logging.h"
#include "rtc_base/trace_event.h"
namespace webrtc {
namespace rtcp {
namespace {
constexpr size_t kTransportFeedbackHeaderSizeBytes = …;
constexpr size_t kChunkSizeBytes = …;
constexpr size_t kMaxSizeBytes = …;
constexpr size_t kMinPayloadSizeBytes = …;
constexpr TimeDelta kBaseTimeTick = …;
constexpr TimeDelta kTimeWrapPeriod = …;
}
constexpr uint8_t TransportFeedback::kFeedbackMessageType;
constexpr size_t TransportFeedback::kMaxReportedPackets;
constexpr size_t TransportFeedback::LastChunk::kMaxRunLengthCapacity;
constexpr size_t TransportFeedback::LastChunk::kMaxOneBitCapacity;
constexpr size_t TransportFeedback::LastChunk::kMaxTwoBitCapacity;
constexpr size_t TransportFeedback::LastChunk::kMaxVectorCapacity;
TransportFeedback::LastChunk::LastChunk() { … }
bool TransportFeedback::LastChunk::Empty() const { … }
void TransportFeedback::LastChunk::Clear() { … }
bool TransportFeedback::LastChunk::CanAdd(DeltaSize delta_size) const { … }
void TransportFeedback::LastChunk::Add(DeltaSize delta_size) { … }
void TransportFeedback::LastChunk::AddMissingPackets(size_t num_missing) { … }
uint16_t TransportFeedback::LastChunk::Emit() { … }
uint16_t TransportFeedback::LastChunk::EncodeLast() const { … }
void TransportFeedback::LastChunk::AppendTo(
std::vector<DeltaSize>* deltas) const { … }
void TransportFeedback::LastChunk::Decode(uint16_t chunk, size_t max_size) { … }
uint16_t TransportFeedback::LastChunk::EncodeOneBit() const { … }
void TransportFeedback::LastChunk::DecodeOneBit(uint16_t chunk,
size_t max_size) { … }
uint16_t TransportFeedback::LastChunk::EncodeTwoBit(size_t size) const { … }
void TransportFeedback::LastChunk::DecodeTwoBit(uint16_t chunk,
size_t max_size) { … }
uint16_t TransportFeedback::LastChunk::EncodeRunLength() const { … }
void TransportFeedback::LastChunk::DecodeRunLength(uint16_t chunk,
size_t max_count) { … }
TransportFeedback::TransportFeedback()
: … { … }
TransportFeedback::TransportFeedback(bool include_timestamps)
: … { … }
TransportFeedback::TransportFeedback(const TransportFeedback&) = default;
TransportFeedback::TransportFeedback(TransportFeedback&& other)
: … { … }
TransportFeedback::~TransportFeedback() { … }
void TransportFeedback::SetBase(uint16_t base_sequence,
Timestamp ref_timestamp) { … }
void TransportFeedback::SetFeedbackSequenceNumber(uint8_t feedback_sequence) { … }
bool TransportFeedback::AddReceivedPacket(uint16_t sequence_number,
Timestamp timestamp) { … }
const std::vector<TransportFeedback::ReceivedPacket>&
TransportFeedback::GetReceivedPackets() const { … }
void TransportFeedback::ForAllPackets(
rtc::FunctionView<void(uint16_t, TimeDelta)> handler) const { … }
uint16_t TransportFeedback::GetBaseSequence() const { … }
Timestamp TransportFeedback::BaseTime() const { … }
TimeDelta TransportFeedback::GetBaseDelta(Timestamp prev_timestamp) const { … }
bool TransportFeedback::Parse(const CommonHeader& packet) { … }
std::unique_ptr<TransportFeedback> TransportFeedback::ParseFrom(
const uint8_t* buffer,
size_t length) { … }
bool TransportFeedback::IsConsistent() const { … }
size_t TransportFeedback::BlockLength() const { … }
size_t TransportFeedback::PaddingLength() const { … }
bool TransportFeedback::Create(uint8_t* packet,
size_t* position,
size_t max_length,
PacketReadyCallback callback) const { … }
void TransportFeedback::Clear() { … }
bool TransportFeedback::AddDeltaSize(DeltaSize delta_size) { … }
bool TransportFeedback::AddMissingPackets(size_t num_missing_packets) { … }
}
}