LCEVC in WebRTC
This section describes how MPEG-5 LCEVC enhancement can be deployed in products and solutions using WebRTC.
Note: The WebRTC build integrated with V-Nova LCEVC is a fork from the WebRTC open source project. The integration is currently still in beta and is not aligned with all versions of the main project. Please contact us for more details if you are interested in deploying with your solution.
With WebRTC, you can add real-time communication capabilities to your application that works on top of an open standard. It enables video, voice, and generic data to be sent between peers, allowing developers to build powerful voice- and video-communication solutions. The technology is available on all modern browsers as well as on native clients for all major platforms. The technologies behind WebRTC are implemented as an open web standard and available as regular JavaScript APIs in all major browsers. For native clients, like Android and iOS applications, a library is available that provides the same functionality. (source)
The official project page is https://webrtc.org/ which provides information about the project, design documents, getting the code, and build guides.
Design Overview
The WebRTC open source project comes with software implementations of the supported codecs, VP8, VP9 and H264. But the application can provide its own additional codecs when creating a PeerConnection, injecting encoder/decoder factories as dependencies. Also, it can query the available codecs and modify them (order of preference or support, and inject them back).
SDP - Negotiation process
The Session Descriptor Protocol (SDP) is used by WebRTC to negotiate the parameters used between each client in the call. Each part of the call creates an offer that lists the available codecs for sending and receiving audio and video. This list is ordered by codec preference.
With the addition of LCEVC support, several new codec names ahave been added to WebRTC to make them available in the negotiation process:
LCEVCVP8
LCEVCVP9
LCEVCH264
These are included with the internal factories and are therefore available for any application using this integration.
The integration makes use of the included codecs and adds the logics to wrap them inside the enhancement process.
The following figure shows the design of the unmodified versus LCEVC-enhanced video encoding pipeline.
The following figure shows the design of the unmodified versus LCEVC-enhanced video decoding pipeline.
Supported formats
The V-Nova LCEVC WebRTC integration adds support for;
LCEVC H264
LCEVC VP8
LCEVC VP9
Components
The V-Nova LCEVC WebRTC integration affects the following modules:
Internal decoder/encoder factory: provides the list of supported codecs, and builds the decoder/encoder of the requested type.
LCEVC Video Encoder/Decoder: making use of the base encoder/decoders and adds the logic to use the V-Nova LCEVC EIL (Encoder Integration Layer) to create enhanced stream and DIL (Decoder Integration Layer) to decode those streams.
Usage
This integration is a fork from the WebRTC open source project. The solution provides a way to statically load the LCEVC libraries. These libraries should be available in the following manner:
Windows: the DLLs must be located in the executable directory or available through the PATH environment path
Linux: Add the .so files location to the LD_LIBRARY_PATH environment variable.
WebRTC is intended to be used as a third-party library by other applications (like a web browser), and the LCEVC-enhanced version is no different. To make use of it you need to verify that the host application is compatible with the provided enhanced version and replace the standard version of WebRTC with the modified one.
To use the LCEVC codecs, the application should set the codecs preference, by ordering the list of codecs during the SDP codec negotiation. Please note, that both sides of the communication must use a LCEVC WebRTC application to successfully negotiate the use of the new codecs.
Supported Operating Systems
Windows 10
Linux: Ubuntu 18.04, Ubuntu 20.04
Last updated