Index: webrtc/modules/rtp_rtcp/source/producer_fec.cc |
diff --git a/webrtc/modules/rtp_rtcp/source/producer_fec.cc b/webrtc/modules/rtp_rtcp/source/producer_fec.cc |
index cdd898d733ed7a7399f34f852039f738262b6f60..2a2327cd94ca50e2adb4891f26ba6c9646211d3d 100644 |
--- a/webrtc/modules/rtp_rtcp/source/producer_fec.cc |
+++ b/webrtc/modules/rtp_rtcp/source/producer_fec.cc |
@@ -21,6 +21,8 @@ |
namespace webrtc { |
+namespace { |
+ |
constexpr size_t kRedForFecHeaderLength = 1; |
// This controls the maximum amount of excess overhead (actual - target) |
@@ -47,6 +49,8 @@ constexpr uint8_t kHighProtectionThreshold = 80; |
// |kMinMediaPackets| + 1 packets are sent to the FEC code. |
constexpr float kMinMediaPacketsAdaptationThreshold = 2.0f; |
+} // namespace |
+ |
RedPacket::RedPacket(size_t length) |
: data_(new uint8_t[length]), |
length_(length), |
@@ -101,9 +105,7 @@ ProducerFec::ProducerFec() |
memset(&new_params_, 0, sizeof(new_params_)); |
} |
-ProducerFec::~ProducerFec() { |
- DeleteMediaPackets(); |
-} |
+ProducerFec::~ProducerFec() = default; |
std::unique_ptr<RedPacket> ProducerFec::BuildRedPacket( |
const uint8_t* data_buffer, |
@@ -179,8 +181,7 @@ int ProducerFec::AddRtpPacketAndGenerateFec(const uint8_t* data_buffer, |
num_important_packets_, kUseUnequalProtection, |
params_.fec_mask_type, &generated_fec_packets_); |
if (generated_fec_packets_.empty()) { |
- num_protected_frames_ = 0; |
- DeleteMediaPackets(); |
+ ResetState(); |
} |
return ret; |
} |
@@ -216,7 +217,7 @@ size_t ProducerFec::MaxPacketOverhead() const { |
return fec_->MaxPacketOverhead(); |
} |
-std::vector<std::unique_ptr<RedPacket>> ProducerFec::GetFecPacketsAsRed( |
+std::vector<std::unique_ptr<RedPacket>> ProducerFec::GetUlpfecPacketsAsRed( |
int red_payload_type, |
int ulpfec_payload_type, |
uint16_t first_seq_num, |
@@ -240,18 +241,13 @@ std::vector<std::unique_ptr<RedPacket>> ProducerFec::GetFecPacketsAsRed( |
red_packet->AssignPayload(fec_packet->data, fec_packet->length); |
red_packets.push_back(std::move(red_packet)); |
} |
- // Reset state. |
- DeleteMediaPackets(); |
- generated_fec_packets_.clear(); |
- num_protected_frames_ = 0; |
+ |
+ ResetState(); |
+ |
return red_packets; |
} |
int ProducerFec::Overhead() const { |
- // Overhead is defined as relative to the number of media packets, and not |
- // relative to total number of packets. This definition is inherited from the |
- // protection factor produced by video_coding module and how the FEC |
- // generation is implemented. |
RTC_DCHECK(!media_packets_.empty()); |
int num_fec_packets = |
fec_->NumFecPackets(media_packets_.size(), params_.fec_rate); |
@@ -259,8 +255,10 @@ int ProducerFec::Overhead() const { |
return (num_fec_packets << 8) / media_packets_.size(); |
} |
-void ProducerFec::DeleteMediaPackets() { |
+void ProducerFec::ResetState() { |
media_packets_.clear(); |
+ generated_fec_packets_.clear(); |
+ num_protected_frames_ = 0; |
} |
} // namespace webrtc |