Remove rtcp::TransportFeedback::GetStatusVector/GetReceiveDeltas
in favor of GetPacketStatusCount/GetReceivedPackets BUG=webrtc:5565 Review-Url: https://codereview.webrtc.org/2822153002 Cr-Commit-Position: refs/heads/master@{#17792}
This commit is contained in:
parent
714e5cd6c6
commit
c1b693c7a8
@ -122,20 +122,12 @@ std::vector<PacketFeedback> TransportFeedbackAdapter::GetPacketFeedbackVector(
|
||||
}
|
||||
last_timestamp_us_ = timestamp_us;
|
||||
|
||||
auto received_packets = feedback.GetReceivedPackets();
|
||||
std::vector<PacketFeedback> packet_feedback_vector;
|
||||
if (received_packets.empty()) {
|
||||
if (feedback.GetPacketStatusCount() == 0) {
|
||||
LOG(LS_INFO) << "Empty transport feedback packet received.";
|
||||
return packet_feedback_vector;
|
||||
}
|
||||
const uint16_t last_sequence_number =
|
||||
received_packets.back().sequence_number();
|
||||
const size_t packet_count =
|
||||
1 + ForwardDiff(feedback.GetBaseSequence(), last_sequence_number);
|
||||
packet_feedback_vector.reserve(packet_count);
|
||||
// feedback.GetStatusVector().size() is a less efficient way to reach what
|
||||
// should be the same value.
|
||||
RTC_DCHECK_EQ(packet_count, feedback.GetStatusVector().size());
|
||||
packet_feedback_vector.reserve(feedback.GetPacketStatusCount());
|
||||
|
||||
{
|
||||
rtc::CritScope cs(&lock_);
|
||||
@ -143,7 +135,7 @@ std::vector<PacketFeedback> TransportFeedbackAdapter::GetPacketFeedbackVector(
|
||||
int64_t offset_us = 0;
|
||||
int64_t timestamp_ms = 0;
|
||||
uint16_t seq_num = feedback.GetBaseSequence();
|
||||
for (const auto& packet : received_packets) {
|
||||
for (const auto& packet : feedback.GetReceivedPackets()) {
|
||||
// Insert into the vector those unreceived packets which precede this
|
||||
// iteration's received packet.
|
||||
for (; seq_num != packet.sequence_number(); ++seq_num) {
|
||||
|
||||
@ -376,41 +376,10 @@ uint16_t TransportFeedback::GetBaseSequence() const {
|
||||
return base_seq_no_;
|
||||
}
|
||||
|
||||
std::vector<TransportFeedback::StatusSymbol>
|
||||
TransportFeedback::GetStatusVector() const {
|
||||
std::vector<TransportFeedback::StatusSymbol> symbols;
|
||||
uint16_t seq_no = GetBaseSequence();
|
||||
for (const auto& packet : packets_) {
|
||||
for (; seq_no != packet.sequence_number(); ++seq_no)
|
||||
symbols.push_back(StatusSymbol::kNotReceived);
|
||||
if (packet.delta_ticks() >= 0x00 && packet.delta_ticks() <= 0xff) {
|
||||
symbols.push_back(StatusSymbol::kReceivedSmallDelta);
|
||||
} else {
|
||||
symbols.push_back(StatusSymbol::kReceivedLargeDelta);
|
||||
}
|
||||
++seq_no;
|
||||
}
|
||||
return symbols;
|
||||
}
|
||||
|
||||
std::vector<int16_t> TransportFeedback::GetReceiveDeltas() const {
|
||||
std::vector<int16_t> deltas;
|
||||
for (const auto& packet : packets_)
|
||||
deltas.push_back(packet.delta_ticks());
|
||||
return deltas;
|
||||
}
|
||||
|
||||
int64_t TransportFeedback::GetBaseTimeUs() const {
|
||||
return static_cast<int64_t>(base_time_ticks_) * kBaseScaleFactor;
|
||||
}
|
||||
|
||||
std::vector<int64_t> TransportFeedback::GetReceiveDeltasUs() const {
|
||||
std::vector<int64_t> us_deltas;
|
||||
for (const auto& packet : packets_)
|
||||
us_deltas.push_back(packet.delta_us());
|
||||
return us_deltas;
|
||||
}
|
||||
|
||||
// De-serialize packet.
|
||||
bool TransportFeedback::Parse(const CommonHeader& packet) {
|
||||
RTC_DCHECK_EQ(packet.type(), kPacketType);
|
||||
|
||||
@ -54,21 +54,13 @@ class TransportFeedback : public Rtpfb {
|
||||
bool AddReceivedPacket(uint16_t sequence_number, int64_t timestamp_us);
|
||||
const std::vector<ReceivedPacket>& GetReceivedPackets() const;
|
||||
|
||||
enum class StatusSymbol {
|
||||
kNotReceived,
|
||||
kReceivedSmallDelta,
|
||||
kReceivedLargeDelta,
|
||||
};
|
||||
|
||||
uint16_t GetBaseSequence() const;
|
||||
std::vector<TransportFeedback::StatusSymbol> GetStatusVector() const;
|
||||
std::vector<int16_t> GetReceiveDeltas() const;
|
||||
|
||||
// Returns number of packets (including missing) this feedback describes.
|
||||
size_t GetPacketStatusCount() const { return num_seq_no_; }
|
||||
|
||||
// Get the reference time in microseconds, including any precision loss.
|
||||
int64_t GetBaseTimeUs() const;
|
||||
// Convenience method for getting all deltas as microseconds. The first delta
|
||||
// is relative the base time.
|
||||
std::vector<int64_t> GetReceiveDeltasUs() const;
|
||||
|
||||
bool Parse(const CommonHeader& packet);
|
||||
static std::unique_ptr<TransportFeedback> ParseFrom(const uint8_t* buffer,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user