| Version 2 (modified by , 3 years ago) ( diff ) |
|---|
Introduction
This page shows the results from the student projects that were part of GSoC 2023.
Projects
VVC Decoder Improvements
Description:
At the time of the project, FFmpeg's native VVC decoder was not yet merged. The objective of the project was to assist in developing the decoder by improving it in two ways: implementing some of the remaining features of the standard and improving its performance by writing SIMD assembly optimisations.
Results:
Support for the higher bit depths enabled by the 04/22 revision of the standard was implemented. This required implementing the Range Extension feature, which enables increasing the precision of stored transform coefficients. This involved changes to a range of the code, including the inverse transforms and CABAC.
In the process of implementing the Range Extension, a bug was discovered in the chroma intra mode derivation. Research revealed this to be a bug not in FFmpeg's decoder but in the standard itself, and so a ticket was raised with the standards group which has resulted in a correction being issued in the 09/23 revision of the standard. This fix was implemented in the decoder.
Future Work:
It was initially planned to adapt AVX-2 optimisations from dav1d for the inverse transforms. This proved impossible however as the lower precision of the transform coefficients in VVC means they do not satisfy the trigonometric identities needed for the algorithm dav1d uses for its inverse transforms. An attempt was then made to port the AVX-2 inverse transform optimisations from FFmpeg's native HEVC decoder however this also ran into issues, due to the large number of transform sizes in VVC. Some work has been done on writing custom AVX-2 transform optimisations specifically for the VVC decoder. These are composable like dav1d's transforms however use 1-D transform algorithms suitable for VVC. Larger sizes need to be implemented before these optimisations can be merged.
Mentor: Nuo Mi
Contributor: Frank Plowman (post@frankplowman.com)


