18#ifndef MODULES_RTP_RTCP_SOURCE_RTCP_PACKET_REMB_H_
19#define MODULES_RTP_RTCP_SOURCE_RTCP_PACKET_REMB_H_
45 using clock = std::chrono::steady_clock;
46 using time_point = clock::time_point;
48 float get_estimate_m(
float k,
int d_m);
49 float get_gain_k(
float q,
float dev_n);
50 float get_sys_var_p(
float k,
float q);
51 float get_var_n(
int d_m);
52 float get_residual_z(
float d_m);
54 float last_estimate_m_ {0.0f};
55 float last_var_p_ {0.1f};
56 float last_var_n_ {0.0f};
58 float last_thresh_y_ {2.0f};
60 unsigned overuse_counter_;
61 time_point t0_overuse {time_point::min()};
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)
void emitSignal(Args... args)