bitrate_controller.h 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #ifndef __bitrate_controller_h_
  2. #define __bitrate_controller_h_
  3. #include "sender_bandwidth_estimator.h"
  4. #include "../cc/razor_api.h"
  5. /*发送端码率控制器,会根据REMB/base delay和网络反馈报文调节和控制发送带宽*/
  6. typedef struct
  7. {
  8. int64_t last_bitrate_update_ts;
  9. int64_t notify_ts; /*定时通告上层*/
  10. uint32_t reserved_bitrate_bps;
  11. uint32_t last_bitrate_bps;
  12. uint8_t last_fraction_loss;
  13. uint32_t last_rtt;
  14. uint32_t last_reserved_bitrate_bps;
  15. sender_estimation_t* est;
  16. void* trigger;
  17. bitrate_changed_func trigger_func;
  18. }bitrate_controller_t;
  19. bitrate_controller_t* bitrate_controller_create(void* trigger, bitrate_changed_func func);
  20. void bitrate_controller_destroy(bitrate_controller_t* ctrl);
  21. /*获取可用码率*/
  22. uint32_t bitrate_controller_available_bandwidth(bitrate_controller_t* ctrl);
  23. /*设置起始码率*/
  24. void bitrate_controller_set_start_bitrate(bitrate_controller_t* ctrl, uint32_t start_bitrate);
  25. void bitrate_controller_set_conf_bitrate(bitrate_controller_t* ctrl, uint32_t min_bitrate, uint32_t max_bitrate);
  26. void bitrate_controller_set_bitrates(bitrate_controller_t* ctrl, uint32_t bitrate, uint32_t min_bitrate, uint32_t max_bitrate);
  27. void bitrate_controller_reset_bitrates(bitrate_controller_t* ctrl, uint32_t bitrate, uint32_t min_bitrate, uint32_t max_bitrate);
  28. void bitrate_controller_set_reserved(bitrate_controller_t* ctrl, uint32_t reserved);
  29. int bitrate_controller_get_parameter(bitrate_controller_t* ctrl, uint32_t* bitrate, uint8_t* fraction_loss, uint32_t* rtt);
  30. void bitrate_controller_on_basedelay_result(bitrate_controller_t* ctrl, int update, int probe, uint32_t target_bitrate, int state);
  31. void bitrate_controller_heartbeat(bitrate_controller_t* ctrl, int64_t cur_ts, uint32_t acked_bitrate);
  32. void bitrate_controller_on_report(bitrate_controller_t* ctrl, uint32_t rtt, int64_t cur_ts, uint8_t fraction_loss, int packets_num, uint32_t acked_bitrate);
  33. void bitrate_controller_on_remb(bitrate_controller_t* ctrl, uint32_t bitrate);
  34. #endif