This new API from Liblinphone, our library, is designed to centrally receive event reports concerning several problems linked to audio/video and the network quality. This API is available in C++, C#, Swift and Java (Android). Binaries from the master branch currently carry version 5.3.x-alpha, and you can find the full documentation for this API here.
We have implemented monitoring for the following events:
- The webcam produces no image.
- The webcam frame rate is low.
- The reception of video packets is blocked for a given duration.
- The packet loss exceeds a given rate for a given duration.
- The Receiver Report indicates a packet loss of a given rate.
- Nack retransmission is ineffective.
- Packets are lost in bursts.
- The estimated bandwidth is below a given threshold.
- The video stream is received with a bandwidth below a given threshold.
- The video definition sent is below a given definition.
- The terminal detects a weak network signal (available only on Android, as this information is not available on iOS).
- The terminal has lost the network signal.
The feedback from these events takes the form of traces in Linphone's logs. They are time-stamped and reference the call-id, as well as the sender and recipient of the SIP call. Some events provide additional data that are useful for interpreting and understanding these events.
When an event is triggered, LinphoneCore is notified via a callback. The various events are checked at regular intervals. If the data fall below the alert threshold again, the alert is notified via a callback stating that the incident has ended.
All thresholds and check intervals can be set in the liblinphone configuration file.
This alert API has a dual purpose: on the one hand, it enables applications to display relevant incident messages to users, in real time. On the other hand, they enable applications to provide a monitoring service with a summary of quality of service incidents that may occur among users. They can then be used to help users who contact the support service, or to create general statistics on service performance, which can be used to identify potential network problems.