#include "modules/rtp_rtcp/source/ulpfec_generator.h"
#include <string.h>
#include <cstdint>
#include <memory>
#include <utility>
#include "modules/rtp_rtcp/include/rtp_rtcp_defines.h"
#include "modules/rtp_rtcp/source/byte_io.h"
#include "modules/rtp_rtcp/source/forward_error_correction.h"
#include "modules/rtp_rtcp/source/forward_error_correction_internal.h"
#include "rtc_base/checks.h"
#include "rtc_base/synchronization/mutex.h"
namespace webrtc {
namespace {
constexpr size_t kRedForFecHeaderLength = …;
constexpr int kMaxExcessOverhead = …;
constexpr size_t kMinMediaPackets = …;
constexpr uint8_t kHighProtectionThreshold = …;
constexpr float kMinMediaPacketsAdaptationThreshold = …;
constexpr uint32_t kUnknownSsrc = …;
}
UlpfecGenerator::Params::Params() = default;
UlpfecGenerator::Params::Params(FecProtectionParams delta_params,
FecProtectionParams keyframe_params)
: … { … }
UlpfecGenerator::UlpfecGenerator(const Environment& env,
int red_payload_type,
int ulpfec_payload_type)
: … { … }
UlpfecGenerator::UlpfecGenerator(const Environment& env,
std::unique_ptr<ForwardErrorCorrection> fec)
: … { … }
UlpfecGenerator::~UlpfecGenerator() = default;
void UlpfecGenerator::SetProtectionParameters(
const FecProtectionParams& delta_params,
const FecProtectionParams& key_params) { … }
void UlpfecGenerator::AddPacketAndGenerateFec(const RtpPacketToSend& packet) { … }
bool UlpfecGenerator::ExcessOverheadBelowMax() const { … }
bool UlpfecGenerator::MinimumMediaPacketsReached() const { … }
const FecProtectionParams& UlpfecGenerator::CurrentParams() const { … }
size_t UlpfecGenerator::MaxPacketOverhead() const { … }
std::vector<std::unique_ptr<RtpPacketToSend>> UlpfecGenerator::GetFecPackets() { … }
DataRate UlpfecGenerator::CurrentFecRate() const { … }
int UlpfecGenerator::Overhead() const { … }
void UlpfecGenerator::ResetState() { … }
}