Speaker
Description
The GStreamer Rust plugins include generic source and sink elements for unidirectional WebRTC communications with no application code necessary in many cases. However, each WebRTC server has its own signalling protocol and to interact with any specific WebRTC implementation, a client must be implemented to perform WebRTC signalling over that protocol. A signalling protocol client as well as both a source and sink element have been implemented that interoperate with the LiveKit WebRTC server.
This presentation will discuss the implementation of both the source and sink elements and the complexities associated with them. Furthermore, it will introduce some extra features specific to LiveKit that have been implemented in addition to basic WebRTC communications.
The first feature added was video simulcasts which allows the sink to send multiple versions of the same video track to the LiveKit server at multiple qualities while the LiveKit server will choose what version to send to each receiver in the same room based on each receiver's network connection quality and preferences. The presentation will discuss how it was implemented as well as the internal design changes needed to support this feature.
Also, support for LiveKit's end-to-end encryption scheme was implemented for use cases that do not trust the key exchange and point-to-point encryption associated with a WebRTC Selective Forwarding Unit. The presentation will discuss the cryptographic filter elements, how they are integrated with the webrtcsrc and webrtcsink elements, and the codec-specific challenges encountered during development of this feature.
Speaker bio | Jordan Yelloz is a Software Engineer at Collabora based in Northern Colorado, USA. He has been developing primarily with GStreamer projects since early 2022 and has previously worked for Amazon Prime Video and a few smaller companies over the years in areas such as digital printing automation and digital audio. |
---|---|
Duration of the talk |