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.
The official project page is https://webrtc.org/ which provides information about the project, design documents, getting the code, and build guides.
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).
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:
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.
Default and LCEVC-enhanced encoding pipelines in WebRTC
The following figure shows the design of the unmodified versus LCEVC-enhanced video decoding pipeline.
Default and LCEVC-enhanced decoding pipelines in WebRTC
The V-Nova LCEVC WebRTC integration adds support for;
- LCEVC H264
- LCEVC VP8
- LCEVC VP9
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.
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.
- Windows 10
- Linux: Ubuntu 18.04, Ubuntu 20.04