Linphone has now a brand-new algorithm to adapt the audio and video codec bitrates to the available bandwidth, and hence optimize audio and video quality.
During a call, the audio and video quality mostly depends on the encoder's output bitrate. A high quality video stream will always request more bitrate, and then more network bandwidth than a low-quality video stream.
It is then important that the encoding quality is chosen in such a way that the resulting output bitrate is compatible with the network bandwidth capacity available between the participants of a call.
However, the available bandwidth is not something known in advance by the applications, and it can vary during the call, for example it depends on network usage made by other apps and signal strength of wireless networks. When the network bandwidth is not sufficient, the streams will be received damaged, with variable delay and loss of data.
The two objectives of our brand new adaptive bitrate algorithm are then to :
- Detect network congestion, so that the output bitrate of the encoder can quickly be reduced, which allows to recover an optimal latency and stop video artefacts caused by packet losses
- Detect the bandwidth capacity available, so that the output bitrate of the encoder can be increased dynamically up to this capacity in order to offer the best possible audio and video experience to the users.
Our algorithm operates by doing at receiver side some statistical analysis of timings of arrivals of audio & video packets, and send target bitrate commands to the remote audio and video encoders.
You can learn more about how does adaptive bitrate algorithm work on our Wiki.
This enhanced algorithm is already available in Linphone-android 3.3. and will be integrated in other platforms in the coming weeks.