Skip to content
Adam Wieckowski edited this page Nov 3, 2023 · 70 revisions
Build Usage
Compiling, installing and developing for VVdeC
Using VVdeC

VVdeC, the Fraunhofer Versatile Video Decoder

Introduction

In July 2020 the Joint Video Experts Team (JVET), a collaborative project of the ITU-T Video Coding Experts Group (VCEG) and ISO/IEC Moving Picture Experts Group (MPEG), has finalized a new video coding standard called Versatile Video Coding (VVC) 12. VVC is the successor of the High Efficiency Video Coding (HEVC) standard 34 and has been published by ITU-T as H.266 and by ISO/IEC as MPEG-I Part 3 (ISO/IEC 23090-3). The new standard targets a 50% bit-rate reduction over HEVC at the same visual quality. In addition, VVC proves to be truly versatile by including tools for efficient coding of video content in emerging applications, e.g. high dynamic range (HDR), adaptive streaming, computer generated content as well as immersive applications like 360-degree video and augmented reality (AR).

VVdeC development was initiated to provide a publicly available and fast VVC decoder implementation. The VVdeC software is based on VVC Test Model (VTM), with optimizations including software redesign to mitigate performance bottlenecks, extensive SIMD optimizations and extensive multi-threading support to exploit parallelization.

VVdeC can decode raw bitstreams created by any VVC standard compliant encoder, e.g. the VTM-14.0 reference software encoder or the Fraunhofer Versatile Video Encoder (VVenC) 6. More information on the decoder can be found in 7. VVdeC is a standalone core decoding library. To enable VVC in applications, a framework integration is required. For more information on available integrations and use cases please refer to 8.

Feature overview

All features of VVC Main10 profile are supported by VVdeC.

Supported architectures

Windows Linux MacOS X Android iOS Browser (WASM)
Win32 ✔️ x86 ✔️ Edge ✔️
x64 ✔️ x86_64 ✔️ x64 ✔️ Firefox ✔️
armv7 🔲 armv7 🔲 armv7 armv7 🔲 Chrome ✔️
aarch64 🔲 aarch64 ✔️ arm64 ✔️ aarch64 ✔️ arm64 🔲 Safari

✔️ tested and works 🔲 needs testing (might already work) ❌ does not work

  • Support for armv7, aarch64, and arm64 by using SIMD everywhere
  • Browser (WASM) support through Emscripten compilation to WebAssembly
  • Safari: WebKit does not support required WebAssembly features

The decoder has also been externally tested and reported to work on alternative systems and architectures. This includes FreeBSD with architectures mentioned above as well as powerpc, powerpc64(le) and riscv64 architectures. Those are not officially supported though, because of the lack of appropriate hardware for testing.

Performance history

VVdeC performance over time

Figure 1: VVdeC encoder performance over time. The dates of the major releases are marked. The results are obtained by decoding the VTM-10.0 encoded JVET CTC test sequences at standard QPs. ClassA is a union of ClassA1 and ClassA2. The tests were performed on a Linux system running on a Xeon W-2155 @ 3.3 GHz CPU workstation, using 20 threads (default: all cores).

Publications

For general referencing of VVdeC feel free to cite:

  • A. Wieckowski el al., “Towards a Live Software Decoder Implementation for the Upcoming Versatile Video Coding (VVC) Codec,” IEEE International Conference on Image Processing (ICIP 2020), Virtual Conference, 2020.

Other publications can be found in the Publications section.

Contributing

Feel free to contribute. To do so:

  • Fork the current-most state of the master branch
  • Apply the desired changes
  • Put your name in AUTHORS.md
  • Create a pull-request to the upstream repository

References

  • [1] B. Bross, Y.-K. Wang, Yan Ye, S. Liu, J. Chen, G. J. Sullivan and J.-R. Ohm, “Overview of the Versatile Video Coding (VVC) Standard and its Applications,” IEEE Transactions on Circuits and Systems for Video Technology, 2021, doi: 10.1109/TCSVT.2021.3101953.

  • [2] ITU-T and ISO/IEC JTC 1, Versatile Video Coding, Rec. ITU-T H.266 and ISO/IEC 23090-3 (VVC), July 2020.

  • [3] G. J. Sullivan, J.-R. Ohm, W.-J. Han, and T. Wiegand, “Overview of the High Efficiency Video Coding (HEVC) Standard,” IEEE Transactions on Circuits and Systems for Video Technology, vol. 22, no. 12, pp. 1649–1668, 2012.

  • [4] ITU-T and ISO/IEC JTC 1, High Efficiency Video Coding, Rec. ITU-T H.265 and ISO/IEC 23008-2 (HEVC), Apr. 2013 (and subsequent editions).

  • [5] VTM software repository, version VTM-10.0. Available online: https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM

  • [6] VVenC software repository. Available online: https://github.com/fraunhoferhhi/vvenc

  • [7] A. Wieckowski el al., “Towards a Live Software Decoder Implementation for the Upcoming Versatile Video Coding (VVC) Codec,” IEEE International Conference on Image Processing (ICIP 2020), Virtual Conference, 2020.

  • [8] A. Wieckowski et al., “A Complete End-To-End Open Source Toolchain for the Versatile Video Coding (VVC) Standard.” in Proceedings of 29th ACM International Conference on Multimedia (MM’21), Virtual Event, China, 2020.

  • [9] J. Boyce, E. Alshina, F. Bossen, K. Kawamura, I. Moccagatta, and W. Wan, “Conformance testing for versatile video coding (Draft 6),” document JVET-U2008, Joint Video Experts Team (JVET), Jan. 2021.

  • [10] F. Bossen, J. Boyce, X. Li, V. Seregin, and K. Suehring, “JVET common test conditions and software reference configurations for SDR video,” document JVET-N1010, Joint Video Experts Team (JVET), Apr. 2019.

Clone this wiki locally