The features list for uvgComm is constantly expanding and here is the detailed description of current features in uvgComm.
SIP is a signaling protocol that enables uvgComm to start, answer or end calls. SIP uses a specific set of messages to initiate the call. SIP messages have a header and a payload section.
uvgComm has been tested to work with Kamailio SIP proxy. Proxy is what enables uvgComm to receive calls from anyone on the internet and makes uvgComm work similarly to any commercial communication software. Using a proxy with uvgComm requires setting up the proxy and creating necessary user accounts. After this, the username and the proxy address can be used together to both register (by sending a REGISTER-message) to the proxy and to call other users via the proxy.
uvgComm can also be used to directly call other computers provided that the TCP connection can be formed. Usually this involves allowing incoming TCP connections on port 5060 on the firewall. Direct calling is mostly meant for testing purposes and any serious usage should consider setting up a SIP proxy.
Specifications
- RFC 3261 SIP: Session Initiation Protocol
- RFC 5626 Managing Client-Initiated Connections in the Session Initiation Protocol (SIP)
- RFC 5627 Obtaining and Using Globally Routable User Agent URIs (GRUUs) in the Session Initiation Protocol (SIP)
- RFC 5923 Connection Reuse in the Session Initiation Protocol (SIP)
- RFC 2617 HTTP Authentication: Basic and Digest Access Authentication
Some SIP messages carry an SDP messages as a payload during call initiation. SDP is used for describing the media parameters wanted for the call and is used to negotiatiate various aspects of the call.
uvgComm has SDP implements forming of a P2P Mesh based conference. Here each participants synchronization sources (SSRC) are negotiated as part of the call negotiations.
Specifications
- RFC 8866 SDP: Session Description Protocol
- RFC 3264 An Offer/Answer Model with the Session Description Protocol (SDP)
- RFC 5576 Source-Specific Media Attributes in SDP
- RFC 5888 The SDP Grouping Framework
When the start of the call has been agreed upon, ICE protocol starts testing various candidates to find the optimal route for the media traversal. ICE candidates are transferred inside the SDP message.
Specifications
- RFC 8445 Interactive Connectivity Establishment (ICE): A Protocol for Network Address Translator (NAT) Traversal
- RFC 5389 Session Traversal Utilities for NAT (STUN)
After the best path for media has been found, uvgComm sets up the delivery using uvgRTP. uvgRTP handles the fragmentation of video frames so they go smoothly through the network.
Specifications See uvgRTP for more details.
For media processing, uvgComm has implemented a filter graph where each filter modifies to media data in a desirable way.
uvgComm uses Kvazaar HEVC encoder to encode the video, uvgRTP to deliver it and OpenHEVC HEVC decoder to decode it.
Opus support is provided by the Opus codec library.
Here is the current list of supported input formats:
- YUV 420 P (also known as I420)
- YUV 422 P (also known as I422)
- NV 12
- NV 21
- YUYV (also known as YUY2)
- UYVY
- ARGB
- BGRX (also known as BGR24)
- BGRA (also known as BGR32)
- ABGR
- RGBA (also known as RGB32)
- RGBX (also known as RGB24)
- Motion JPEG
The support must first be provided by Qt and then uvgComm uses libyuv to convert the format into YUV 420 P that is used by the HEVC encoder Kvazaar. The settings manage the input selection by excluding formats that are not supported from both automatic and user selections.
Coming soon ...
uvgComm uses Qt to provide ability for screen capture by taking screen shots at constant rate.
The statistics window of uvgComm shows 1) the SIP log, 2) the call parameters, 3) statistics for delivery, 4) Filter Graph buffer statuses, and 5) the call performance. The statistics window can be used to verify correct operations and monitor the performance characteristics of uvgComm.
Since uvgComm uses the codecs directly, uvgComm can also offer full control for the codecs directly to user. User can adjust almost any codec parameter to their liking from settings User Interface.
In addition to codec settings, the settings enable changing other aspects of audio and video processing, such as disabling muting audio with incoming audio to avoid audio echo.
To not require user to be fully knowledgeable in codec parameters, uvgComm also tries to guess the optimal parameters for currently used computer. This process is subject to improvements.
uvgComm records the settings to the disk using Qts QSettings class. At startup the settings are loaded both for the software and for the software settings UI.
uvgComm has contact lists where user can add contacts and call them. The contact lists are preserved even if uvgComm is shut down.