| 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
|
|
|