31static constexpr float Q = 0.5f;
32static constexpr float beta = 0.95f;
34static constexpr float ku = 0.004f;
35static constexpr float kd = 0.002f;
65 v.insert(v.end(),
val >> 8);
66 v.insert(v.end(),
val & 0xff);
72 v.insert(v.end(),
val >> 24);
73 v.insert(v.end(), (
val >> 16) & 0xff);
74 v.insert(v.end(), (
val >> 8) & 0xff);
75 v.insert(v.end(),
val & 0xff);
81 if (packet.
fmt != 15 || packet.
pt != 206) {
82 JAMI_ERR(
"Unable to parse REMB packet.");
97 std::vector<uint8_t>
remb;
127 float k = get_gain_k(
Q,
var_n);
129 last_var_p_ = get_sys_var_p(
k,
Q);
130 last_estimate_m_ =
m;
137CongestionControl::get_estimate_m(
float k,
int d_m)
141 return ((1 -
k) * last_estimate_m_) + (
k *
d_m);
145CongestionControl::get_gain_k(
float q,
float dev_n)
148 return (last_var_p_ + q) / (last_var_p_ + q +
dev_n);
152CongestionControl::get_sys_var_p(
float k,
float q)
155 return ((1 -
k) * (last_var_p_ + q));
159CongestionControl::get_var_n(
int d_m)
161 float z = get_residual_z(
d_m);
163 return (
beta * last_var_n_) + ((1.0f -
beta) *
z *
z);
167CongestionControl::get_residual_z(
float d_m)
170 return (
d_m - last_estimate_m_);
177 if (std::fabs(
m) < last_thresh_y_)
181 float res = last_thresh_y_ + ((
deltaT *
ky) * (std::fabs(
m) - last_thresh_y_));
182 last_thresh_y_ =
res;
189 return last_thresh_y_;
197 if (
not overuse_counter_) {
198 t0_overuse = clock::now();
203 time_point
now = clock::now();
206 overuse_counter_ = 0;
211 overuse_counter_ = 0;
214 overuse_counter_ = 0;
float kalmanFilter(uint64_t 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