1 unstable release
0.1.0 | Jan 7, 2025 |
---|
#83 in Video
113 downloads per month
790KB
16K
SLoC
Google Congestion Control
This crate is a Rust port of the Google Congestion Control (GCC) implementation from the WebRTC project. No more painful linking against libwebrtc.
Google Congestion Control is the congestion control algorithm used in WebRTC. It is a hybrid algorithm that combines the strengths of delay-based and loss-based congestion control. The end goal is minimum latency and to avoid buffer-bloat as much as possible.
All licensing from the original source code is preserved under a BSD-style license. Thanks to the WebRTC project authors for their hard work on this implementation. All I did was port it to Rust.
Notable Changes
NetworkStateEstimator and NetworkStatePredictor have been removed. They are not implemented in the WebRTC source code and are flagged with a "subject to change" comment. I think this is a back-door for Google to tweak the congestion control algorithm?
FieldTrials is a type-safe struct instead of a string. The original implementation uses a string to represent field trials. This was quite error-prone as many trials do not match the cooresponding field name. I decided to create a FieldTrials struct to represent field trials in a type-safe way.
RtcEventLog has been removed. The structured logs are cool, but have been removed for now to simplify the code.
RTC_LOG has been replaced with [tracing]. Use tracing_subscriber to enable and configure the logger.
Dependencies
~305–415KB