razor_api.c 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. #include "razor_api.h"
  2. #include "sender_congestion_controller.h"
  3. #include "receiver_congestion_controller.h"
  4. static void razor_sender_heartbeat(razor_sender_t* sender)
  5. {
  6. if (sender != NULL)
  7. sender_cc_heartbeat((sender_cc_t*)sender);
  8. }
  9. static void razor_sender_set_bitrates(razor_sender_t* sender, uint32_t min_bitrate, uint32_t start_bitrate, uint32_t max_bitrate)
  10. {
  11. if (sender != NULL)
  12. sender_cc_set_bitrates((sender_cc_t*)sender, min_bitrate, start_bitrate, max_bitrate);
  13. }
  14. static int razor_sender_add_packet(razor_sender_t* sender, uint32_t packet_id, int retrans, size_t size)
  15. {
  16. if (sender != NULL)
  17. return sender_cc_add_pace_packet((sender_cc_t*)sender, packet_id, retrans, size);
  18. else
  19. return -1;
  20. }
  21. static void razor_sender_on_send(razor_sender_t* sender, uint16_t transport_seq, size_t size)
  22. {
  23. if (sender != NULL)
  24. sender_on_send_packet((sender_cc_t*)sender, transport_seq, size);
  25. }
  26. static void razor_sender_on_feedback(razor_sender_t* sender, uint8_t* feedback, int feedback_size)
  27. {
  28. if (sender != NULL)
  29. sender_on_feedback((sender_cc_t*)sender, feedback, feedback_size);
  30. }
  31. static void razor_sender_update_rtt(razor_sender_t* sender, int32_t rtt)
  32. {
  33. if (sender != NULL)
  34. sender_cc_update_rtt((sender_cc_t*)sender, rtt);
  35. }
  36. static int razor_sender_get_pacer_queue_ms(razor_sender_t* sender)
  37. {
  38. if (sender != NULL)
  39. return (int)sender_cc_get_pacer_queue_ms((sender_cc_t*)sender);
  40. else
  41. return -1;
  42. }
  43. static int64_t razor_sender_get_first_ts(razor_sender_t* sender)
  44. {
  45. if (sender != NULL)
  46. return sender_cc_get_first_packet_ts((sender_cc_t*)sender);
  47. else
  48. return -1;
  49. }
  50. razor_sender_t* razor_sender_create(int type, int padding, void* trigger, bitrate_changed_func bitrate_cb, void* handler, pace_send_func send_cb, int queue_ms)
  51. {
  52. sender_cc_t* cc;
  53. cc = sender_cc_create(trigger, bitrate_cb, handler, send_cb, queue_ms);
  54. cc->sender.heartbeat = razor_sender_heartbeat;
  55. cc->sender.add_packet = razor_sender_add_packet;
  56. cc->sender.on_send = razor_sender_on_send;
  57. cc->sender.set_bitrates = razor_sender_set_bitrates;
  58. cc->sender.update_rtt = razor_sender_update_rtt;
  59. cc->sender.get_pacer_queue_ms = razor_sender_get_pacer_queue_ms;
  60. cc->sender.on_feedback = razor_sender_on_feedback;
  61. cc->sender.get_first_timestamp = razor_sender_get_first_ts;
  62. cc->sender.type = type;
  63. cc->sender.padding = padding;
  64. return (razor_sender_t*)cc;
  65. }
  66. void razor_sender_destroy(razor_sender_t* sender)
  67. {
  68. if (sender != NULL){
  69. sender_cc_destroy((sender_cc_t*)sender);
  70. }
  71. }
  72. /**********************************************************************************/
  73. static void razor_receiver_heartbeat(razor_receiver_t* receiver)
  74. {
  75. if (receiver != NULL)
  76. receiver_cc_heartbeat((receiver_cc_t*)receiver);
  77. }
  78. static void razor_receiver_on_received(razor_receiver_t* receiver, uint16_t transport_seq, uint32_t timestamp, size_t size, int remb)
  79. {
  80. if (receiver != NULL)
  81. receiver_cc_on_received((receiver_cc_t*)receiver, transport_seq, timestamp, size, remb);
  82. }
  83. static void razor_receiver_set_min_bitrate(razor_receiver_t* receiver, uint32_t bitrate)
  84. {
  85. if (receiver != NULL)
  86. receiver_cc_set_min_bitrate((receiver_cc_t*)receiver, bitrate);
  87. }
  88. static void razor_receiver_set_max_bitrate(razor_receiver_t* receiver, uint32_t bitrate)
  89. {
  90. if (receiver != NULL)
  91. receiver_cc_set_max_bitrate((receiver_cc_t*)receiver, bitrate);
  92. }
  93. static void razor_receiver_cc_update_rtt(razor_receiver_t* receiver, int32_t rtt)
  94. {
  95. if (receiver != NULL && rtt > 0)
  96. receiver_cc_update_rtt((receiver_cc_t*)receiver, rtt);
  97. }
  98. razor_receiver_t* razor_receiver_create(int type, int min_bitrate, int max_bitrate, int packet_header_size, void* handler, send_feedback_func cb)
  99. {
  100. receiver_cc_t* cc;
  101. cc = receiver_cc_create(min_bitrate, max_bitrate, packet_header_size, handler, cb);
  102. cc->receiver.heartbeat = razor_receiver_heartbeat;
  103. cc->receiver.on_received = razor_receiver_on_received;
  104. cc->receiver.set_max_bitrate = razor_receiver_set_max_bitrate;
  105. cc->receiver.set_min_bitrate = razor_receiver_set_min_bitrate;
  106. cc->receiver.update_rtt = razor_receiver_cc_update_rtt;
  107. cc->receiver.type = type;
  108. return (razor_receiver_t *)cc;
  109. }
  110. void razor_receiver_destroy(razor_receiver_t* receiver)
  111. {
  112. if (receiver != NULL){
  113. receiver_cc_destroy((receiver_cc_t*)receiver);
  114. }
  115. }