Scalable Video Coding (SVC)
Imagine you are in a group video conferencing call with many people with different devices, such as desktops, laptops, tablets, and phones, and other network capabilities like slow or high-speed internet and limited bandwidth. Since the call participants have different devices and capabilities, some may have better internet, and others may have challenging networks.
The video conferencing app you use, Zoom or Google Meet, may rely on an advanced video compression mechanism like SVC to ensure a high-quality calling experience for all participants. High-quality video is possible because SVC checks the participants with high-speed internet, for example, and sends them full video streams. For those with challenging network issues or bandwidth limitations on mobile devices, SVC delivers a lower-resolution version of the video streams to prevent dropped calls and ensure a smooth calling experience.
What is SVC?
SVC is an advanced video coding technique that allows sending a single stream of multiple resolutions for an Selective Forwarding Unit (SFU) to decide which of the various layers to forward to users. It helps to improve data transmission efficiency across varying network conditions and devices with different capabilities.
How does Scalable Video Coding Work?
Layers in SVC
SVC is an extension to the WebRTC API and consists of three main components: a publisher, SFU, and playback devices. SVC consists of the following layers.
- Temporal: A simple layer that adjusts the frame rate of the previous layer and increases it for the next layer. For example, if a layer begins with 15fps, the subsequent layers will be increased to 24fps, 30fps, etc.
- Spatial: The spatial layer is based on resolution. It adjusts the resolution of the previous layer and increases it for the one that follows.
- Signal to Noise Ratio (SNR): This layer helps increase the quality of previous layers.
SVC supports a combination of the above layers and protects them for the best quality of service.
As illustrated in the figure above, the publisher transports a single media stream (with multiple video layers) to the SFU in SVC. The function of the SFU is to examine the single stream and the layers inside it selectively encode it into multiple layers of high and low bitrates, and distribute them accordingly to the media playback devices. Based on the media playback device's network limitations and available bandwidth, the SFU decides the suitability of the streams to be distributed.
Benefits of SVC
- SVC is useful in VoIP applications, where you can simultaneously send data to multiple participants.
- SVC is helpful in video conferencing, ensuring and providing the best video and audio quality for multiple participants based on their CPU capabilities and those with network problems such as low bandwidth and poor internet connection.
- Unlike simulcast in WebRTC which requires more network and CPU, SVC uses optimal bandwidth for video streams. It reduces the need for more bandwidth while ensuring the best available quality of streams for end users.
- SVC can detect and fix errors quickly by attaching additional information to packets without more overheads.
Application Areas of SVC
SVC is commonly used in live videos to be delivered to larger groups, such as the TV industry, multi-party video conferencing, and streaming applications like Zoom, Google Meet, Microsoft Teams, YouTube, and Twitch.
Frequently Asked Questions
Where can SVC be used?
Livestreaming applications can use SVC to provide better video quality for end users with different bandwidth limitations. SVC can be incorporated into video conferencing solutions and services to ensure a seamless participant experience.
What are the disadvantages of SVC over Simulcast?
Using SVC for video encoding can be more complex than Simulcast. However, the complexity comes as a result of its flexibility.