30static constexpr float Q = 0.5f;
31static constexpr float beta = 0.95f;
33static constexpr float ku = 0.004f;
34static constexpr float kd = 0.002f;
64 v.insert(v.end(),
val >> 8);
65 v.insert(v.end(),
val & 0xff);
71 v.insert(v.end(),
val >> 24);
72 v.insert(v.end(), (
val >> 16) & 0xff);
73 v.insert(v.end(), (
val >> 8) & 0xff);
74 v.insert(v.end(),
val & 0xff);
80 if (packet.
fmt != 15 || packet.
pt != 206) {
81 JAMI_ERR(
"Unable to parse REMB packet.");
96 std::vector<uint8_t>
remb;
126 float k = get_gain_k(
Q,
var_n);
128 last_var_p_ = get_sys_var_p(
k,
Q);
129 last_estimate_m_ =
m;
136CongestionControl::get_estimate_m(
float k,
int d_m)
140 return ((1 -
k) * last_estimate_m_) + (
k *
static_cast<float>(
d_m));
144CongestionControl::get_gain_k(
float q,
float dev_n)
147 return (last_var_p_ + q) / (last_var_p_ + q +
dev_n);
151CongestionControl::get_sys_var_p(
float k,
float q)
154 return ((1 -
k) * (last_var_p_ + q));
158CongestionControl::get_var_n(
int d_m)
160 float z = get_residual_z(
d_m);
162 return (
beta * last_var_n_) + ((1.0f -
beta) *
z *
z);
166CongestionControl::get_residual_z(
int d_m)
169 return (
static_cast<float>(
d_m) - last_estimate_m_);
176 if (std::fabs(
m) < last_thresh_y_)
180 float res = last_thresh_y_ + ((
static_cast<float>(
deltaT) *
ky) * (std::fabs(
m) - last_thresh_y_));
181 last_thresh_y_ =
res;
188 return last_thresh_y_;
196 if (
not overuse_counter_) {
197 t0_overuse = clock::now();
202 time_point
now = clock::now();
205 overuse_counter_ = 0;
210 overuse_counter_ = 0;
213 overuse_counter_ = 0;
float kalmanFilter(int gradiant_delay)
std::vector< uint8_t > createREMB(uint64_t bitrate_bps)
uint64_t parseREMB(const rtcpREMBHeader &packet)
BandwidthUsage get_bw_state(float estimation, float thresh)
float update_thresh(float m, int deltaT)
static void insert2Byte(std::vector< uint8_t > &v, uint16_t val)
void emitSignal(Args... args)
static constexpr float beta
static constexpr uint32_t uniqueIdentifier
static constexpr uint8_t packetType
static void insert4Byte(std::vector< uint8_t > &v, uint32_t val)
static constexpr uint8_t packetFMT
static constexpr float kd
static constexpr uint8_t packetVersion
static constexpr float ku
constexpr auto OVERUSE_THRESH