High Efficiency Video Coding (HEVC / H.265 / MPEG-H Part 2)¶
HEVC (High Efficiency Video Coding), also known as H.265 or MPEG-H Part 2, is a video compression standard designed to improve upon H.264/AVC. It delivers approximately twice the data compression ratio at the same video quality, or significantly improved video quality at the same bit rate.
Key features of H.265/HEVC include:
Superior Compression - Achieves up to 50% better compression than H.264/AVC at the same quality level
Support for Higher Resolutions - Designed for 4K, 8K, and even 16K video content
Flexible Block Structure - Uses Coding Tree Units (CTUs) up to 64x64 pixels, compared to H.264’s 16x16 maximum
Improved Predictive Coding - More efficient intra and inter prediction modes with 35 directional modes vs H.264’s 9
Hardware Acceleration - Supported by modern GPUs including NVIDIA NVENC/NVDEC and Apple Video Toolbox
HEVC is used in 4K UHD broadcasting, streaming services (Apple TV+, Amazon Prime Video), video conferencing, and next-generation video storage.
HEVC Stream Formats¶
HEVC video can be stored in different formats, with the two most common being:
Annex B Format¶
Start code format - NAL units are separated by start codes (0x000001 or 0x00000001)
Used in streams - Elementary streams, MPEG-TS, broadcasting, and real-time transmission
Self-contained - VPS/SPS/PPS are embedded in the stream itself
Stream-friendly - Can be decoded directly without additional metadata
HEVC1 (HEVCC Format)¶
Length-prefixed format - Each NAL unit is prefixed with its length (typically 4 bytes)
Used in containers - MP4, MOV, MKV, and other container formats
Requires extradata - VPS/SPS/PPS (Video/Sequence/Picture Parameter Sets) are stored separately in the container header
Not self-contained - Cannot be decoded without the extradata from the container
The choice between formats depends on the application: HEVC1 for file storage and containers, Annex B for streaming and broadcasting.
HEVC Encoding¶
HEVC / H.265 Annex B Encoder (Run) - Encode a raw YUV file to HEVC Annex B elementary stream using
Transcoder::run
HEVC Decoding¶
HEVC / H.265 Annex B Decoder (Run) - Decode an HEVC Annex B elementary stream to a raw YUV file using
Transcoder::run