VVC (Versatile Video Coding) also known as H.266 is successor of HEVC video compression with two main goals: improve compression quality up to 30-50% for the same bitrate and the support for a wide range of applications(like High Definition, HDR, immersive media such as 360 video). JVET and MPEG working groups has released VVC on 6 July 2020. This article is a high level overview of VVC (H.266) bitstream syntax. In the article we will describe main syntax elements of VVC video. To analyze VVC video we will use Virinext Bitstream Analyzer. You can download the evaluation version on the download page. For license acquiring please check the Buy license page.
High level VVC video bitstream overview
At the high level the VVC video is the sequence of NAL Units (Network Abstraction Layer Units). The first 2 bytes of NAL Unit is a NAL Unit header that contains an indication of the NAL unit type.
There are following types of NAL Units:
- Video Parameter Set (VPS), Sequence Parameter Set (SPS), Adaptation Parameter Set (APS) and Picture Parameter Set (PPS), Picture Header (PH) – contain the basic video coding parameters;
- Slice – stores coded data of frame or part of frame;
- Supplemental Enhancement Information messages (SEI) – contain different type of metadata;
- Access unit delimiter – notifies about the ending of current frame or field;
- End Of Stream – notifies about the end of coded stream;
- End Of Sequence – indicates that the following NAL Unit can be decoded independently from previous data;
- Filler Data – contains padding bytes for bitrate smoothing.
VPS, SPS, APS, PPS and PH contain general video parameters. They provide a robust mechanism for conveying data that is essential to the decoding process. They can be either a part of bitstream or can be stored separately.
Slice NAL unit contains data from encoded video frame. It can contain a full frame or its part. Decoders can independently decode each slice, meaning they do not rely on information from any other slice. Thereby, slices can be used as a tool for enabling parallel decoding and encoding.
Access unit delimiter can be used for video frame start signaling.
Filler Data can be used for bitrate smoothing.
SEI messages provide a tool for transferring different types of metadata. It includes picture timing, color space information, etc.
Video Parameter Set, Sequence Parameter Set and Picture Parameter Set, Adaptation Parameter Set
Video Parameter Set, when present, describes most common encoding parameters.
Sequence Parameter Set contains coding parameters which apply to a series of consecutive coded video pictures. These parameters include profile and level, frame size, maximum GOP size, etc.
Picture Parameter Set contains coding parameters which apply to the decoding of one or more individual pictures within a coded video sequence. These parameters describe entropy coding method, deblock filtering and other picture related parameters.
Adaptation Parameter Set contains syntax elements that apply to zero or more following slices.
Picture Header
Picture Header contains coding parameters which apply to the to all slices of a coded picture.
Slice
A Slice NAL Unit can contain data from one coded frame or field, either as a full frame or a part of it. A sequence of slices can be used for encoding frame.
There are following slice types:
- I-slice – slice with only intra prediction;
- P-slice – slice with inter prediction from one I or P slices;
- B-slice – slice with inter prediction from some I, P or B slices.
I-slice exploits spatial redundancy only. P-slice and B-slice can use intra prediction as well as inter prediction (exploits spatial redundancy between frames).
One special slice type, known as IDR-slice (instantaneous decoding refresh), signals that there are no references from slices after it to slices before it. Decoding can start from IDR-slice without access to any previous slices.
Conclusion
In this article, we have explored the VVC video compression standard. We have examining details of standard and exploring VVC bitstream sytax elements such as NAL Units, various slice types, and metadata messages. By analyzing VVC video with Virinext Bitstream Analyzer you can gain insights of the low level encoding details and optimize quality and performance. Virinext Bitstream Analyzer offers both in-depth and high-level analysis for various encoding standards, including VVC, making it a valuable tool for researchers and developers. If you interested in exploring further, we are offering you to try free evaluation version of Virinext Bitstream Analyzer. Virinext Bitstream Analyzer is a GUI tool for both in-depth and high-level analysis for many encoding standards including VVC.